YYPHP#85「皆さんPHPで高負荷の処理はどうしてる?」「サーバレスアーキテクチャについて」「gRPCってみんな使ってる？」「ネームスペースが無いプロジェクトにComposerを組み込むには」

これは2019年5月24日に開催したPHPerイベント[YYPHP#85]のイベントレポートです。

[YYPHP#85]: https://yyphp.connpass.com/event/122136/
[YYPHP]: https://yyphp.connpass.com/

[YYPHP]は一言で「PHPerの部室」です。PHPについて、雑に、ゆるく、ワイワイ話し合う集いです。毎回お題を決めずに雑談を出発点にいろいろなことを突発的にやります。集まった人でコードリーディングをすることもあれば、一緒に開発ツールを触ってみたり、フレームワークについての情報交換をすることもあります。開催はほぼ**毎週**、高田馬場にて。

__今回の配信動画__

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">YYPHP | PHPerの雑談イベント@毎週金曜・高田馬場 <a href="https://t.co/xH5Ec04mQs">https://t.co/xH5Ec04mQs</a></p>&mdash; suin❄️PHPでオブジェクト指向 (@suin) <a href="https://twitter.com/suin/status/1131875847311204353?ref_src=twsrc%5Etfw">2019年5月24日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

__過去回の配信動画__

https://www.youtube.com/playlist?list=PLpOeTEye3Bg6PodrLHHC72jWMJYZz8VbG

## 雑談

### ネームスペースが無いプロジェクトにComposerを組み込む

* WordPressで独自のプラグインを開発納品することがある
* Composerでそのパッケージを管理したい
* WordPressはPSR-4に準拠してない

Composerを入れたい目的

* フォームのバリデーター、SNSのログインなどのパッケージを再利用したい。
* WordPressのプラグインを開発しているが、そこにComposerパッケージを使いたい。

* XOOPS CubeでComposer入れたことがある
    * index.php でAutoLoaderが
    * 複数ある場合、どのindex.phpからでも読み込まれるようにする

### PHPからテンプレートに値を埋めていくのどうやっている？

* Bladeを使っている
* 不動産関係のアプリを作っていて項目が山のようにある
* 効率的に埋める方法を知りたい
* みんなどうやってる？

* 配列にデータ入れて、回したらだめなの?
    * Bladeの良きところに入れたい
    * HTMLとCSSを見直せばバーっと行ける気がする
    * あとで見せます

### PHPで高負荷の処理を皆さんどうやっている?

* データベース
* Laravel
* Eloquentを外しちゃいがちだけど、あえて使いたいと考えている
    * キャッシュをうまく使うのが良いのでは?
* イントランザクションにいる必要がある
    * Writeが多い
* 台数増やす
* 一旦Queueにつむ
    * 結果整合性は保てる
    * 画面には投げたデータで画面を返すか待つしかない
* SSEで待たせるのが一番現実的かも
* Node.jsの方が適してそう
    * PHPはストリーム処理できない

* Queue
    * AWSだったらSQSかRedisが良さそう
* Laravelでないといけない理由はあるか?
    * Lamdaではだめ?
    * Lamdaとかだと見積もりが出しにくい
* PHPに限界を感じた時は?
    * Goで書いたことがある
    * PHPはスレッドが使えない、Goはスレッド化して複数プロセスを実行できる
* GitLabのRunnerまわりのGo実装がチャンネルがちゃんとしている
* PHPerが他の言語を学ぶ
    * Scalaはちょっと時間かかりそう
    * Goは割と学べると思う。だいたい38日間でw
        * [動的言語だけやってた僕が、38日間Go言語を書いて学んだこと - Qiita](https://qiita.com/suin/items/22662f43b6a6e8728798)


### Laravelの権限管理の機能について


* LaravelのMiddlewareで権限チェックするようにできる
    * ルーティングで権限
* Authorizationという仕組みがある
    * [Authorization - Laravel - The PHP Framework For Web Artisans](https://laravel.com/docs/5.8/authorization)
    * [An Introduction to Laravel Authorization Gates - Laravel News](https://laravel-news.com/authorization-gates)
    * [ダッシュボード付きユーザー管理用パッケージ laravel-authentication-acl を試す - Qiita](https://qiita.com/peketamin/items/ea95c5d0a49276367163)

### ぬーぺっとさんのget-member.phpについて質問がある

* データを取ってくるInterfaceの名前ってどんな単語が適切?

collector
fetcher
retriever

```php
$event = new ConnpassEvent($url);
$members = $event->getMembers(); 
```

### サーバレスアーキテクチャについて

* 実際に使ってるのかとか、興味があるのかとかを知りたい
* 使ったことある 3人
* 使っていきたい 6人
* KNative
    * Kubernatesでvendorに依存しないFaaSが作れるやつ
    * 金額が見積もれる
* Lamda
    * 負荷に応じてスケールできる
    * 金額が見積もりづらい
* CloudWatchから通知を受け取るときにLambdaで付加情報を加えるときに使っている
* SAM(Serverless Application Model)

### AWS上で冗長化されてるWordPressをEFSでマウントしてるけど遅いよ!どうしたらいいの!?

* 画面からPluginをインストールしたら1つのサーバにしか配置されない。
* APCとかOPCache？でオンメモリにPHPのファイルがロードされたように設定する
    * この方法の弱点はキャッシュが効くので新しいファイルが反映されない(されにくくなる)
    * キャッシュの期間の設定を工夫
* EFSがびっくりするくらい重い
    * 並行数が1とか2だと遅いのでメリットがでない
    * 大量に読み書きするのに向いている
* 同じVPCだったらNFSを素で使ったほうが速い

### gRPCってみんな使ってる？

* IDLっていいものだと思うので、ライブラリとか使ってるものがあれば聞きたい
* PHPで使ったことない
* [gRPCって何？ - Qiita](https://qiita.com/oohira/items/63b5ccb2bf1a913659d6)

### Pythonのフレームワークについて聞きたい

* PHPのフレームワークと比べて、おすすめのフレームワークはあるか？
* django以外知らない

* [2018年大注目のPython！WEBフレームワーク3つを徹底比較 | 侍エンジニア塾ブログ（Samurai Blog） - プログラミング入門者向けサイト](https://www.sejuku.net/blog/3713)
    * Bottle
        * 
    * Flask
        * Python用のマイクロフレームワーク
    * Django
        * 普通のMVCフレームワーク
* [GitHub - vinta/awesome-python: A curated list of awesome Python frameworks, libraries, software and resources](https://github.com/vinta/awesome-python#web-frameworks)
* わざわざPythonでWebする理由って？
* [GitHub - twisted/twisted: Event-driven networking engine written in Python.](https://github.com/twisted/twisted)


# YYPHPは毎週やってます

PHPについてワイワイ話したい方は、[YYPHPのイベント情報](https://yyphp.connpass.com/)をチェックしてみて下さい。

以上、YYPHPのレポートでした。次回もワイワイやっていきたいと思います！ では、また来週！