HTML生成: npx @marp-team/marp-cli --no-stdin phperkaigi2026/slides.md --html -o phperkaigi2026/slides.html
「pikaです。デジタルサーカスでエンジニアをしています。プログラミング歴は3年半です」
「趣味で、LINEのオープンチャットの評判をユーザーが自由に投稿できるサービスを作りたくて」
「最初はWordPressとプラグインを組み合わせてやってみたんですが、思いどおりのカスタマイズができませんでした」
「自分で作るしかないと思って、Progateで基本を学びました」
「一応動くものは作れたんですが、コンストラクタに処理を全部詰め込んでいて、機能を追加するたびにコードがどんどん複雑になり開発が困難になっていきました」
一拍
「どこに何を書けばいいか、分からなかったんです」
黙る。読ませる。
「何度も最初からやり直しました」
★急がない
「関数やクラスに切り出してみたんですが、いろんな箇所から参照されるようになって、変更すると何が壊れるか分からなくなりました」
「クラスが増えてくると、newで全部自分で繋がないといけなくなりました」
「どう整理すればいいか調べたら、Laravelの記事ばかり出てきたんです」
「でも当時は既存のフレームワークやライブラリを使いたくない、謎の厨二病にかかっていたんです。Laravelは一見して複雑そうで覚えるのがめんどくさそうだと思っていました。今はLaravelの良さもわかりますが、当時はそう思っていました」
「そこでLaravelのコントローラを見たら、引数に型を書くだけでクラスが使えるようになっていたんです。これは便利だなと」
「だからLaravelの書き方だけ真似して、裏側は全部自分で作ることにしました」
「ルーティングも自動インスタンス化もセキュリティ対策も、欲しい機能はすべて原理を調べて一から実装しました」
「で、できました」
止まる。読ませる。「外部依存ゼロ」は口で言わない。
「こう定義すると、このコントローラが呼ばれます。クラスは自動でインスタンス化されて、値はバリデーション済み。やりたいことだけ書けばいい」
一拍
「決められた場所に決められた書き方で置けば動く。これは設定より規約と呼ばれていました」
「クラスを手動でインスタンス化して渡していた問題の答えは、依存性の注入と呼ばれていました」
淡々と
「問題を持っていたから、設計に辿り着けたんです」
一拍。「問題が、設計を導いた」はっきり。★2回目
「このフレームワークでオプチャグラフを作って公開しました。今も動いています」
「問題を持っていれば、答えに辿り着けます。皆さんもぜひ自分の手で作ってみてください。ありがとうございました」