2019年PHPカンファレンス全国登壇行脚まとめ

本記事は、サムザップ [Advent Calendar 2019 #1](https://qiita.com/advent-calendar/2019/sumzap1) の12/09の記事です

# はじめに
2019、今年も全国でPHPカンファレンスが開催されました
参照先：[2019年に開催される全国のPHPカンファレンスのまとめ](https://qiita.com/akase244/items/d74316f6ee8fa464cfa3)

今年一年のPHPカンファレンス全国登壇を振り返ってみます

# PHPカンファレンス仙台 - 2019/1/26
会場にいってみると、スタンプラリーの台紙がありました
<a data-flickr-embed="true" href="https://www.flickr.com/photos/koyhoge/49035851933" title="全国PHPイベントスタンプラリーもあと2つ。12/1 の PHP Conference 2019 がゴールです。スタンプ1つにつき、象ぬい大が1000円引きになります。 #cakefest2019"><img src="https://live.staticflickr.com/65535/49035851933_2300065ec3.jpg" width="500" height="281" alt="全国PHPイベントスタンプラリーもあと2つ。12/1 の PHP Conference 2019 がゴールです。スタンプ1つにつき、象ぬい大が1000円引きになります。 #cakefest2019"></a><script async src="//embedr.flickr.com/assets/client-code.js" charset="utf-8"></script>
画像の引用元：[こいほげさんのブログ](https://koyhogetech.hatenablog.com/entry/20191126/elephpant)

今年は８回開催されることをその時知りました
（Laravel JP Conferenceの申し込みはもう間に合わなかったです）

去年のPHPカンファレンスではなしたネタのSwooleを引き続き追いかけたネタを発表しました
去年の発表内容から説明します
![phpcon2018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67626/e23aad05-a99e-3f8d-80d8-78f77163ef94.png)
去年のPHPカンファレンス発表資料：[ISUCON8で予選落ちしたので、Swoole（easyswoole）で書き換えて、感想戦でベンチ走らせてみた話](https://speakerdeck.com/sgeengineer/isucon8deyu-xuan-luo-tisitafalsede-swoole-easyswoole-deshu-kihuan-ete-gan-xiang-zhan-debentizou-rasetemitahua)

Swooleとは、PHPでイベント駆動の非同期&コルーチンベースの並行処理を実現したエンジンです

そもそも、PHPerKaigi2018の[uzullaさんの発表](https://uzulla.hateblo.jp/entry/2018/03/10/103237)できっかけでSwooleを知りましたが、PHPの未来に大きな可能性を感じたのを覚えています。そこからSwooleを追っかけはじめました

とはいえ、実用的なのか？が疑問だったので、Swooleを使用したフレームワークの使い勝手を調査してみました

仙台で発表したのは[Swoft](https://en.swoft.org/)というフレームワークの使い勝手についてです
Swoftをつかってサンプルアプリケーションをつくり、使い勝手を解説しました
![phpconsen2019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67626/0faa39fd-98ee-0a76-6a21-48a0c4ab83e7.png)
PHPカンファレンス仙台発表資料：[SwooleをつかったフレームワークSwoftをたのしむ](https://speakerdeck.com/sgeengineer/swoolewotukatutahuremuwakuswoftwotafalsesimu)
サンプルコード:[Google-BookShelf-swoft](https://github.com/shirai-suguru/Google-Bookshelf-swoft)
ISUCON8のSwoft版サンプルコード：[isucon8-swoft](https://github.com/shirai-suguru/isucon8-swoft)

フレムワークの使い勝手を判断するには実際に動くアプリを書いてみるのが一番よくわかる、と思っています
Google-Bookshelfは、GCPのAppEngineなどのチュートリアルで用いられるサンプルアプリケーションです。ファイルアップロード含め色々な機能が網羅されており、フレームワークの機能を理解するのには最適なサンプルアプリケーションです
また、もう一つ実装したISUCONのアプリケーションは、ちょうど良いサイズのアプリケーションで、実業務でぶちあたる問題と同じようにボトルネックに直面するので、実用的かどうか判断する時の材料になります

フレームワークを調査する時に、自分自身、サンプルコードがほしくなるので、他の人の参考になればと思い、Swoftで実装したソースをGitHubにアップしています

# PHPerKaigi2019 - 3/31
Swooleを使用したフレームワークを調べてみて、そろそろSwooleを使用したフレームワークの一番を決めたくなってきたタイミングです
そこで、Swooleのフレームワークをくらべてみました
これも実は、Laravel-Swooleがあるらしい、と小耳に挟んだので、ためしてみたくなったのでいろいろ調査してみました
![phperkaigi2019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67626/08d4e73d-4101-08be-cb35-fc1a6f3792b2.png)
PHPerKaigi2019発表資料：[Swooleのフレームワークをくらべてみた](https://speakerdeck.com/sgeengineer/swoolefalsehuremuwakuwokurabetemita)

前回と同様に動くソースがあってなんぼ、と思っていたので、ISUCONのソースをそれぞれのフレームワークで実装しなおしてみてベンチマークをとってみました
・[Laravel-Swoole](https://github.com/shirai-suguru/isucon8-laravel-swoole)
・[Laravel](https://github.com/shirai-suguru/isucon8-laravel)
・[Swoft](https://github.com/shirai-suguru/isucon8-swoft)
・[EasySwoole(v3)](https://github.com/shirai-suguru/isucon8-easyswoole-v3)
・[EasySwoole(v2)](https://github.com/shirai-suguru/isucon8-easyswoole)
の5つを比較しています

ベンチマークの結果は、意外な結果になりましたが、これだけでフレームワークの良し悪しは判断できないですが、想像と違っていたので、とにかく計測は大事だな、と改めて思いました

# PHPカンファレンス福岡 - 6/29
スポンサーセッションで登壇させていただきました
技術系のネタではなく、社内文化のはなしをさせてもらいました

# PHPカンファレンス北海道 - 9/21
スポンサーセッションでサムザップの紹介をさせてもらいました！
![ロールアップバナー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67626/dbc41b3a-2fc7-bed5-cf20-e72efe5523fc.png)
登壇脇にあるロールアップバナーにみなさんお気づきでしたでしょうか？

きちんとLT枠で技術ネタも話ができました
![phpcondo2019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67626/9583ff3a-e52d-bdb6-5036-b65558f5dde3.png)
PHPカンファレンス北海道発表資料：[pharによるワンバイナリアプリケーションの可能性を探ってみた](https://speakerdeck.com/sgeengineer/pharniyoruwanbainariapurikesiyonfalseke-neng-xing-wotan-tutemita)

Goにくらべて、PHPのアプリのデプロイがだるいなとおもっていたので、１ファイルだけデプロイすれば良い状態にしたい、と思いpharが実用的かどうか検証した内容です
イメージしていたのは、Goにひけをとらないようなデプロイフローになることです。そのため、アプリケーションのフレームワークは、Swooleベースのフレームワークで構築したアプリケーションを想定しています
伝えたかったことは「GoでできることはPHPでもできる」です

# PHPカンファレンス沖縄 - 10/12
沖縄にいけたらいいな！とおもって、プロポーザルをその時に思いつくネタで応募したら通りました
社内でいま推進している文化づくりネタで発表しました
![phpconokinawa2019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67626/0c4878f3-02d9-5bb4-2beb-275c66f0722e.png)
PHPカンファレンス沖縄発表資料:[エンジニアの文化の作り方 〜社内Podcastのススメ〜](https://speakerdeck.com/sgeengineer/enziniafalsewen-hua-falsezuo-rifang-she-nei-podcastfalsesusume)
困った時には文化づくり系のネタでしゃべっていることに気づきました・・・
ちなみに、沖縄でSwooleの話をきくことができました（台湾の方の英語の発表）。Swooleはどうやら、"*スウォール*"ではなく"*スウール*"、の発音らしいです

# PHPカンファレンス - 12/1
今年最後のしめくくりは東京のPHPカンファレンス
毎回プロポーザルが通るかどきどきします
gRPCのネタがLTに採択され発表してきました
![phpcon2019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67626/51db3f8d-6a5e-6d27-d184-b31292f1ea31.png)
PHPカンファレンス発表資料：[PHPでgRPCって どこまでいけるの？](https://speakerdeck.com/sgeengineer/phpdegrpctute-dokomadeikerufalse)

マイクロサービスを真剣に導入しようと考えた時、マイクロサービス間のレイテンシーは気になります。
ゲームはとくにユーザの体感が大事なので、いかにユーザにレスポンスを早く返すか追求したいものです

そこでPHPでマイクロサービスをgRPCで構築するのはどれだけ現実的かどうかを見極めるために、PHPのgRPCサーバの実現性について調べました
マイクロサービス間のレイテンシーをさげるためにはstreamingのサーバが実現できれば、効率よくデータのやりとりができそうです

と思って調べてみたものの、まだ、フレームワーク側でgRPCのstreamingができるサーバは準備できていなかったです（Swooleをそのままつかって頑張ればできそうですが・・）

# まとめ
この一年は、**「GoでできることはPHPでもできる」**を実証すべく技術検証し、カンファレンスで結果を発表する、ということをしてきました。

が、まだ自分が描く最終形までいたりませんでした

ただ、今年一年、PHPという名がつくカンファレンスに全て参加できて（Laravel JPとCake Festは参加できませんでした）やりきった感がでたので満足です（ほんと、しんどかったし、プロポーザル毎回とおるか、ドキドキしてました）

結果、今年の登壇時間合計は、64分でした！

（しかし、上には上がいるものです。BASEの東口さん2019年の登壇時間が300分をこえたらしいです）

# 最後に
最後に心残りは、スタンプラリーのスタンプ台紙をPHPカンファレンス東京でもってくるのわすれ、スタンプをおしわすれたことです・・・

ちなみにおしそこねたスタンプ画像
![スタンプラリー.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67626/6997c7ee-7453-9356-629f-bd926acd076a.jpeg)



明日は @arima_moto さんの2本目の記事です