PHPerKaigi 2019 トーク一覧
15分で分かった気になるGraphQL

Facebookが公開し、GitHubのAPI v4にも採用されたことでも知られるGraphQL。旧来のRESTfulな形式のAPIを爆発的に置き換えていっている!とは言えませんが最近少しずつ国内でも採用事例を聞くようになりました。
このトークではGraphQLの魅力について話し懇親会で話のネタに出来るくらいに分かった気になるトークをしたいと思います。
PHP でも Raspberry Pi がしたい!

Raspberry Pi でLEDを光らせたりするのは、Python / C だけだと思っていませんか。
このトークでは電子工作の基礎から、PHP から Raspberry Pi の GPIO を制御する方法や、OSS のライブラリを紹介します。
- Python / C をあまり良くわからないけど Raspberry Pi 触ってみたいPHPer
- Webから制御できる電子工作を気軽にやりたいPHPer
そんな方の背中を少しでも押せたらいいなと思います。
PHPでJVMに入門する

Java Virtual Machine Specificationを読み解きながら、PHPでJavaのバイトコードを解釈し実際にJVMがどのようにして動いているのかを感じてもらいつつ、30億のデバイスで走るJavaの気持ちになれるようなトークをします。
PHPでJavaを動かすことによってPHPもまた、30億のデバイスで走る言語の一つとなります。
「質」の良いユニットテストを書くためのプラクティス

ユニットテストを書くにあたり、テスト初級者と中級者・上級者ではユニットテストの「質」が異なるでしょう。テスト初級者の書くユニットテストはすぐに破綻し開発体験を良くないものにしてしまいます。
これは、私自身がユニットテスト初心者を脱するために、改めてまとめることを試みた、よりよいであろうと調べ考えた方法と逆のアンチパターンについてです。
フレームワークを作りながらLaravelのアーキテクチャを学ぶ

PHP界隈で最も普及したフルスタックフレームワークであるLaravel。
便利なフレームワークが持つ豊富な機能に”甘い”魅力を感じる一方で「なぜLaravelではファサードを採用しているのか?」、「なぜEloquent を採用しているのか?」と言った疑問を考えた事はあるでしょうか?
「“How” ages faster than “Why”(手段は本質よりも早く廃れる)」と言う言葉があるように、Laravelでのメソッドの呼び出し方は他のPHPのFWでは通用しませんし、他の言語でも意味をなさないもしれません。しかし、Laravelで採用されている技術やアーキテクチャは言語の壁を超えて流用ができると考えています。
この発表では0からフレームワークを作りながらLaravelで採用されているアーキテクチャが「なぜ良いのか?」っと言った視点で発表をしたいと思います。
PhpStorm30分集中超絶技巧

リファクタリング、ナビゲーション、ファイルの移動、PhpStormをマウスを使って操作していませんか?
マウス、トラックパッドは窓から投げ捨ててしまいましょう。
マウスフリーになるPhpStormの知ってトクするショートカット、並びに便利技100選を紹介します。
このセッションを受講すれば明日から開発速度が100倍くらいになる!かもしれません。
PHPゆるふわCI入門

PHPアプリケーションを持続的にメンテナンスし成長させるためには人手によるテストには限界があり、機械的な自動検査をすることが有効です。テスト機能を提供するフレームワークを利用していないコードベースであってもテスト可能にするための基本的な考えかたについて業務での事例を交えて紹介します。PHPUnitなどを使ったユニットテストの導入やPHPStan・Phanを使った静的解析、プロジェクト固有のローカルルールを検査するための正規表現ベースのチェッカーなどを扱います。
抽象化って何?

「抽象」という言葉に抵抗を感じるプログラマは多くいると思います。抽象的=フワっとしていて理解しづらいという抵抗や、抽象化=プログラムを分かりづらくするという抵抗など。では、プログラムを書く上で、抽象化は不要なのでしょうか?
この講演では、私達人間にとっての抽象化と、プログラミングにおける抽象化について掘り下げ、プログラミングにおいて役立つ抽象化がどのようなものなのかをお話します。
ランチセッション: 「Take Off The Colored Glasses」
株式会社オウケイウェイヴ さまによるランチセッションです
PHPの現場 公開収録

PHPの現場の公開収録です。
phperkaigi #b に加えて #phpgenba ハッシュタグを付けてご参加ください。
収録した内容は以下URLで公開されています。
https://php-genba.shin1x1.com/28
MySQLにWEBアプリのログを保存しているケースの8割くらいが幸せになる方法

- あなたがログをINSERTしたのは、この金のMySQLですか? 銀のMySQLですか?
- MySQLというかRDBMSにログを記録するのは絶対悪ではないんですが、それなりのデメリットがあってメリットもあります。
- メリットを残しつつデメリットを克服する方法を考えて幸せになりたい
設計力を上げるバリエーションの見極め術

昨年のベストトーク賞「SOLIDの原則ってどういうふうに使うの?」でも話題になったとおり、設計の難度を上げるのは「バリエーション」です。
そのバリエーションの発生パターンの見極め・予測法こそがプログラマーとしての経験値と言っても過言ではないと思います。
いざバリエーションが発生してから「しまった…!」とならないように、発生しうるバリエーションの予測精度を上げるには設計時にどこに注目・注意すればいいか?のコツをお伝えします。
たった1人のAPI開発 BEAR.Sundayで解決した課題たち

社内ベンチャーやスタートアップでは少ない人的リソースで高速にプロダクトを開発していくのが重要です
しかしながら、大きなピボットや急な仕様変更の可能性も高く、こういった状況でのAPI開発は様々な課題があらわれます
- 大きなピボットや急な仕様変更の可能性を踏まえて、どういう設計にするべきか
- アプリエンジニアとスムーズに連携するにはどうすればいいのか
- なにを大事にして、なにを後回しにするのか
このセッションでは上記の課題にどういう解決策を考え、BEAR.Sundayでどういったかたちで解決していったのか
そして、少し珍しいフレームワークであるBEAR.Sundayでの実務例をご紹介いたします
モバイルアプリ向けAPI開発を通じて学んだこと

モバイルアプリ向けのAPI開発、今となっては当たり前の開発要件です。しかし、一般的なWebアプリケーション開発しか経験が無かった我々にとっては難しい課題でした。
プロジェクト開始から1年、ホームページ作成サービスグーペのiOSアプリは、2019年1月中旬にリリースする運びとなりました。初めてのRESTful API, 技術選定, 既存サービス向けのモバイルアプリ開発ゆえの課題, クラス設計, セキュリティ対策, プッシュ通知, 認証, チームコミュニケーションなど様々な課題がありました。
本セッションでは我々が経験した課題をどのように解決し何を学んだのか、プロジェクト全体を通じてご紹介したいと思います。特に今後新規でモバイルアプリを開発されるAPI開発者におすすめです。
RESTの力

HTTPはRPCではなく、RESTはHTTP上のCRUDシステムではありません。RESTはハイパーメディアアフォーダンスという発見性を持ち、進化可能性(evolvability)、スケーラビリティ、自己記述性、といったアプリケーションをパワフルにする力を持ちます。このトークでは、RESTの本来の力がアプリケーションにどのようにパワーとパフォーマンスを与え、アプリケーションアーキテクチャとどう作用できるのかフレームワーク製作者の視点を交えてお話します。
3ヶ月でphp5.5から7.2にバージョンアップした現在と今後の向き合い方

3ヶ月でphp5.5のサイトを7.2へバージョンアップリリースした過程の記録と現在のサイトの変化、そこから得た今後の対策についての3つの点からお話しします。
・phpバージョンアップでのプロジェクト体制や取り決めたルールと開発過程での数々のハマった課題を掘り下げリリースまでこぎつけた記録についての紹介。
・リリース後のサイトの品質やパフォーマンスの変化、当時同様にphpバージョンアップをしていた姉妹サイトとの比較や事例紹介。
・php7.3や今後のphpバージョンアップを見据えてやったこと、事前にやりたかったことの共有。
ゼロから始める自作ファミコンエミュレータ生活

この数ヶ月、Rust版、PHP版ファミコンエミュレータを読み、Go言語に移植しています。
PHP版を元に、PHPでどのようにファミコンエミュレータを実装しているのか、Goで再実装した時に見えた違いなどを解説。
そもそも2019年にもなって何でファコミンエミュレータなのか、何が楽しいのか、魅惑のエミュレータワールドを通して体験できたコンピュータの世界をご紹介。
サーバーレスPHP

去年の11月にAWS LambdaでCustom Runtimeがサポートされることが発表されました。
PHPでは "PHP Layer for AWS Lambda" を利用して、サーバーレスなPHP実行環境を構築することができるようになりました。
そんなサーバーレスPHPの概要や環境構築手順、Symfonyなどのフレームワークを利用する際のTipsなどをご紹介したいと思います。
Swooleでフレームワークを高速化 - もう動作が遅いなんて言わせない!

今話題のSwooleはPHPにイベント形式の非同期処理をエクステンションという形で導入することができます。これを利用することで、PHPのフレームワークを高速化してみようと試みます。一般に、フレームワークや外部ライブラリを利用していると、それらのソースファイルを読み込むために多くの時間がかかるようで、Swooleを使ってイベント形式のサーバを建てることで、この読み込みコストをほぼゼロにできると期待できます。今回はLaravelを例に取り、Swooleによる高速化の導入、及び、Swooleによってどれだけ高速化できたかを、apacheやfpmなどの別の形式のサーバと比較します。また、Swooleの導入によって発生する問題についても言及します。
ネットワークのことを知るためソフトウェアルータを自作した話

日ごろからお世話になっているインターネット。
そのインターネットはネットワーク同士を接続した巨大なネットワークです。
そのネットワーク内でルータがどう動いているのか、ネットワークをつなげるためルータがどれだけ頑張っているのかを少しでも理解したいと思い、ソフトウェアルータを自作しました。
コアな部分はErlangで実装し、追加のモジュール部分はElixirで実装しました。
内容はL2、L3の実装、ルーティングの実装を行い、さらにL4以上をコントロールするためのモジュール実装をどのように行ったのかを話せればと思います。
ネットワークはアプリケーションにない面白いところが沢山あります。
あまり意識することのないネットワークに焦点を当ててみてはどうですか。
少しでもネットワークのことに興味を持ってもらえると嬉しいです。