これはなに?
PHPで新規開発する際にどういう構成だったりフレームワークにしていくかなというメモです。
PHPの特徴
- ゆるふわで書けるので開発スピードが早い。
- 学習コストが低く直感的なので誰でもすぐに書ける。
- 利用者が多くライブラリが充実している。
PHPの欠点
- ゆるふわなのでしっかり意思統一して書いていかないとぐちゃぐちゃになりやすい。多人数で開発する際には注意が必要。
PHPで開発するにあたり
WebフレームワークはLaravelほぼ一択。
- GraphQL - React を採用するか
- REST API(with Open API)- Vue.js を採用するか
といった選択肢があると思う。(もちろん GraphQL - Vue や REST - GraphQL でもいい)
React and GraphQL
- ReactとGraphQLは相性がいい
- LaravelとLitghthousを組み合わせるとGraphQL APIがいい感じにできる
- クライアントサイドは React + TypeScript + Apollo な感じで。React使うなら型はつけたい。
REST API with Open API and Vue
こっちはGraphQLよりはちょっとゆるふわ個人開発向け。Open API は入れても入れなくてもいいが、入れると少しかっちりする。
Open APIはREST APIの使用記述言語とその周りのミドルウェアたち。API仕様をYAMLで書くとクライアントサイド向けのAPIクライアントや、サーバーサイドのモデリング(PHPのJsonSerializable的な)くらいはできるはず。これでサーバーサイドとクライアントサイドのモデリングの統一ができる。
チーム開発だったらOpen APIくらいは導入しないとくちゃくちゃになりそうだが、OpenAPIの導入コストはそれなりに高いので、個人開発だったら簡単かも。APIが複雑になると恩恵が大きい気がする。
まとめ
これらの組み合わせを使って何かを開発したいが、どっちも時間がかかる...
- GraphQL + Reactは最近の流行りなので触っておきたい。
- Vueの方は、とりあえずLaravel + DDD(ui/usecase/domain/infra)で依存性の逆転あたりの概念を導入しつつ、物ができたらリファクタリングでOpenAPI導入みたいな感じでやると、リリースまでの速度も担保できそうな気がする。