laravel.shibuya #4 IRTまとめ
IRT1 -- Laravel Track
フレームワーク規定のもの以外のモジュール構成(名前空間、クラス名)をどうするか
- 意図
- app下にフラットに置いてる人いる??
- あまりいない
- 「appの兄弟に置く派」が結構多い
- Laravel非依存のものを置く
- POPOとか
- Eloquentとかに依存するやつはapp
- composerで入れる
- appの兄弟にlibとかpackagesとか置く
- 別のrepositoryにするほどではないもの
- Laravel非依存のものを置く
- Laravelの機能を使うものもapp外に置く派
- パッケージルートにServiceProviderを置く
- 試行錯誤中
- 切り方はコンテキスト別にしている
- メリデメ
- メリット
- Clean Architectureを実践しやすい気がする
- 逆に、コンテキスト別で切らないと変更があちこちに跳ねる
- デメリット
- 手間増える
- 共通処理をどこに置くか悩ましい
- Logとか
- メリット
- サフィックス/プレフィックスどうする
- ケースバイケース
- 「Laravel由来系はつける」派
- XxxEventとかXxxControllerとか
- みんながわかる
- 付けないと、検索したときに同名のものがいっぱい出てきて不便
- ものによっては付けない派
- Modelとかにはつけない派
- UseCaseにもつけない
- Eventは?
- 公式はModelCreatedとか過去分詞
- 【補】JavaScriptなんかもこれ
- 付けなくても名前衝突しなそう
- Notificationとかが名前衝突しちゃう
- でもListenerとしか紐付かないから問題ない説
- 「Laravel由来系はつける」派
- ケースバイケース
レスポンス速度改善
- そもそもパフォチューをどれくらい気にしてる?
- DB抜きで、純粋なPHP部分
- あまりいない
- パフォチューのモチベーション
- FargateのCPUが高いので、できる限り何もさせたくない
- やってること例1
- やってること例2
- キューイングによる処理の分離
- 完了を待つ必要性の薄いもの
- メール
- ログ
- 完了を待つ必要性の薄いもの
IRT2 -- PHP Track
手が遅い。何をして手が早くなったり業務に対して自信を付けられたりしたか
- 背景
- 機能の実装は問題ない
- 迷うポイントがいろいろ
- あまり良いコードとは思えない
- 書き方
- 責務の分割できてない
- 手続き型になっちゃってる
- あまり良いコードとは思えない
- イケてるコードを早く書きたい
- ドメイン知識が重要説
- プロジェクトにJOINしたばかりでは、速度は出ないしミスも多いもの
- 「書く前に何を書きたいかが脳内で決まってて、あとは書き出すだけ」が理想
- 「ここにこれを生やすのはナイ」という勘所がわかるようになる
- まずは計測
- 何か真似してみる
- そもそもイケてるコードって何
- 局所的なコードと設計全体とでまた違うよね
- 即効性のあるもの: 共通語彙を使うと「伝わる」コードになる
- start/stop, begin/endとか
- Readable Code的な思想
- DDDのユビキタス言語もこれ
- 「悩んで何も書いていない時間」が遅くなる一番の原因
- ルールを決めて悩む時間を減らす
- 自分のルール
- フォーマッティング等はツールに任せる
- 【所感】CIで取り締まれますね
- ある種の宗教論争もある
- 三項演算子 or if文とか
- 【所感】そもそも前者は「式」、後者は「文」だから同列のものではない
- 三項演算子 or if文とか
- ルールを決めて悩む時間を減らす
- デザパタ学ぶべき?
- オブジェクト指向は手段にすぎない
- 手続き型でもテストとか全然できる
- 手段が目的にならぬよう
IRT3 -- PHP Track
APIのメジャーバージョン切る?
- 切らない
- URLの変更を伝えなくてすむ
開発環境(IDE,エディタ)
- 宗教戦争
- 自分を信用しない。機械的に怒ってもらう
- 静的解析
- PHPStanとか
- 静的解析
- lightning test
- 書き換えたら即テスト
ORMとの付き合い方
- 裏で何が起きているか意識するのがつらい
- 道具は使いどころ
- 自分は守ればいいとして、他人をどう縛る
- 文化や仕組み
- レビュー
- CI
- 文化や仕組み
- 自分は守ればいいとして、他人をどう縛る
後
- 局所最適よりも一貫性