YYPHP#36「Phalconフレームワーク、AWS･SQSなどクラウドについて、バックエンドの言語としてPHPはどんな立ち位置にいるのか？、CakePHP3のつっこみどころ」 

これは2018年04月27日に開催したPHPerイベント[YYPHP#36]のイベントレポートです。

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

[YYPHP#36]:  https://yyphp.connpass.com/event/84768/
[YYPHP]: https://yyphp.connpass.com/

![](https://qiita-image-store.s3.amazonaws.com/0/889/0051f99f-b555-6064-fcc9-3280e5543a1a.png)

## 参加者 9名

* PHP歴の分布
    * 10年〜: 4名
    * 1年未満: 5名

## Phalconフレームワークを3年使っているので…
* Cで書かれた、PHPの拡張のフレームワーク
* 爆速と言われる
    * [kenjis/php-framework-benchmark: PHP Framework Benchmark](https://github.com/kenjis/php-framework-benchmark)
* PHPのコードが増えてくるのでそんな早いとは感じない
* モデルがつらい
    * ORMにクセがある
    * 場合によってはPDOを直接使ってしまうことがある
* なんでこうなっているか、というデバッグが出来ない
* NodeやGoと比べたらどうなんだろう？
    * 並行処理したり、非同期処理するときはGoとかJava
* バージョンが変わった時
    * PHP5からPHP7にあげた時など
    * ローカルでPhalcon CLIがバージョン違いで動かないことがある
* なぜPhalconにしたか？
    * もともとはZend Frameworkだったが、パフォーマンスが好きなチームだった
* 実装を見ようと思ったらCを読む？
    * PHPっぽい言語の[Zepher](https://github.com/phalcon/zephir)で書かれているから、ソースコードはなんとなく分かる
* 最近そこまで実装を見ることはない
* ビューにvoltというテンプレートがある。Twig的な言語。
    * https://docs.phalconphp.com/id/3.2/volt
* 利点
    * Dockerとの相性がいい
        * バイナリで入るからDockerイメージが小さく収まる

## AWS、SQSなどクラウドについて
* AWSを使い倒してる
* S3便利
* 使っているサーバ
    * さくらVPS
        * エンジニアのためにがんばってくれている会社で、料金も良心的
        * 月額課金なので、ちょっとだけ使いたいという用途には向いていない
* HerokuもVPS？
    * PaaS (Platform as a Service)
    * 自分でサーバを面倒みなくていい
        * VPSはセキュリティアップデートを自分でやったりしないといけない
    * そのかわり自由度はVPSより低い
* Serverlessが流行ってきていると気がするが、実際どうなの？
    * まだこれからな気がする(成長中)
    * 何をやりたいか、うまくのっかるかによる。
    * うちはLambdaをちょいちょい使っている。
        * 部分的に使っている。
        * ユーザがアップロードした画像を縮小する。
        * Lambdaにユーザが直接アクセスして使うというのはイメージしにくい。
    * Function as a Service
        * KubernatesとかでPHPとかGoのスニペットを実行できる環境
    * Firebase
        * Netlify + Nuxtで作っていたが、問い合わせフォームが必要になったので、Firebaseを試している。
        * Googleが買収したBaaS(Backend as a Service)
        * Google Cloud Function
            * メールを送ったりできる
    * AWSはいろいろなサービスが独立しているので、組み合わせ方が難しい
        * Firebaseはパッケージになっているので分かりやすい

## 勉強会でLTする件について
* 5月18日(金) WEBエンジニア勉強会 #07 (東京都, 永田町)
    * https://web-engineer-meetup.connpass.com/event/85964/
    * 言語を絞らず、基礎的なことから、HTTP通信の話などいろいろ
    * 本日YYPHP参加者のkumewataさん、10分くらい発表する予定

## 大規模ECについて
* ECモールに出店するためのバックエンドシステム
* レガシーシステム
    * 1000テーブル超え
    * クラス一切ない
    * ifのネストが5段のテンプレート、
    * インデントもバラバラ
        * Inazuma Template Anti-pattern(⚡)
* そのシステムを作り直した
    * 取り入れたもの
        * DDD(ドメイン駆動設計)
        * MVCフレームワーク
        * PHPUnit
        * Vue
        * Docker
        * Kubernates
    * 6ヶ月くらいで、20人くらいが14万行書いた
* DDDの概念を伝えていったら、みんなが自然とDDDの言葉で話しだした
    * 知ればすぐ使えるようになるんだなと感動した

## バックエンドの言語としてPHPはどんな立ち位置にいるんだろう？
* 実務でやっている人からの意見聞きたい。
* 「Railsは周回遅れ」という発言
* Google TrendでLaravel(トピック)がRuby on Rails(トピック)を2017年3月ごろ追い越した。
* 日本、米国ではRailsが多い
* 中国、インドなど新興国はLaravelが多い
* [インドでのPHP事情 - 日本以外にもPHPが人気な国があるんです。 - Qiita](https://qiita.com/naru0504/items/9bd56998a187d101a777)
* 結論
    * 日本ではRailsが注目されているが、世界ではLaravelのほうが注目されている

## CakePHP3のつっこみどころ
* DIが無いからつらい
* shellでサブコマンドの中にサブコマンドが作れない
* CakePHPの規約を逸脱したNameSpaceを付けてる、大規模なんで
    * チームごとに名前空間を変えたい
* CakePHPの裏技を見つけるためにソースコードを読んでいる
* コントローラを作る振る舞いをイベントディスパッチャーで換装できる
    * ドキュメントを読んだら、ミドルウェアを使えと書いてある！？
* CakePHPでLaravel的な機能を開発してるw
* PHP-DIというものがある
* CakePHPを良くしていく感じでやろうと思ってる
* CakePHPのテストどうしてるか？
    * ドメイン部分はCakePHPに依存していないので、PHPUnitでやってる
* 拡張しづらい
    * フレームワーク感が強い

## 45歳からはじめるPHP
* フィボナッチ数列を再帰で実装
* 来週はカレンダー出力にチャレンジ

[Golympic]: https://golympic.jp/

## YYPHPは毎週やってます

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

最近、Slackや [YYPHP - YouTubeライブ](https://www.youtube.com/watch?v=awAxGz4KFLo&t=4s)での参加者も多くなってきたので次回募集分からオンライン参加枠も作りました！当日現地に来れない方もぜひご参加ください！

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