ゆとり日記

心にゆとりを持って生きたいプログラマーの雑記です。気が向いたら書きます。

PHPerKaigi 2021でDIの話をしてきました

phperkaigi.jp

3/26〜28の3日間で開催されたPHPerKaigiにCFPを通すことができたので登壇してきました。

今回のネタ

今回はDependency Injectionに焦点をあてて、今こそ理解するDI(Dependency Injection)というタイトルにしました。TimeTableを改めて見てみると、僕以外にもDIの話をされる方がいらしたので、そんな中で採択されたのはとても嬉しかったです。

テーマをDIにした理由

  • CakePHPにDIコンテナが実験的に導入されるにあたって、DIを正確に理解しておきたかった。
  • PHPに限定した話にしたくなかった。

理由は2つあります。

1つめはCakePHPにDIコンテナが実験的に導入されるにあたって、DIを正確に学んでおきたかったからです。

book.cakephp.org

僕は元々Java畑でプログラミングに入門した人間です。Seasar2やSpringを使ったこともあるので、自分でも知らないうちにDIを使っていたとは思うのですが、人に言葉で説明できるほどの理解をしていませんでした。なので、CakePHPにDIが実験的に導入されると耳にした時、学びなおすチャンスだと思ったのです。

2つめは広めなテーマで話をしたかったからです。

僕は去年のPHPカンファレンスではPHPに限定した話でCFPを通すことができました。

今こそ理解する PHPの日時計算 / Understand date manipulation of PHP - Speaker Deck

その流れに乗るつもりで、今回もPHPに限定した話でネタを練っていましたが、PHPに限定しない話をしたい気持ちもありました。特に設計やデザインパターンにまつわる話に興味があったので、DIはCFPのテーマとしてマッチしていたというわけです。

録画収録の感想

PHPerKaigiのトークは事前収録だったので、本番の2週間前には収録を終えていました。

枠は20分と決まっているので、20分ジャストで終われるように事前練習を何回かおこないました。初回の事前練習では、余計な小話をしたせいで26分程度かかっていましたが、話す内容を絞り、話す速度を調整することでなんとか形にできました。

個人的に意外だったのは、トークを事前に収録してあっても、本番で自分のトークが始まる前は緊張してしまうことでした。Ask the Speakerでちゃんと受け答えができるか不安だったんですかね・・?

まとめ

トークの準備はかなり大変でしたが、話す側でイベントに参加すると本当に勉強になりますね。Ask the Speakerの時間で理解を更に深められた気がします。

  • 「GoにはInterfaceがないが、InterfaceがないとDIはやれないのか?」
  • 「一般的なデザインパターン(Factory Method等)とDIの使い分けはどうすればいいのか?」

この辺りは自分の中でも新たな課題として残ったところなので、PHPerKaigiの登壇で満足せずに深堀りを続けていきます。

Amazon | Head First Design Patterns | Freeman, Eric, Robson, Elisabeth, Sierra, Kathy, Bates, Bert | Software Development

「Head First Design Patterns (リンクは2nd edition)」が参考文献としてすごく良いらしいんですが、632ページもあるうえに英語なので途中で挫折する気がしてなりません(´・ω・`)。

Amazon | Dependency Injection Principles, Practices, and Patterns | Seemann, Mark, Deursen, Steven van | Software Development

僕の登壇資料の根っこになっている「Dependency Injection Principles, Practices」も良書なんですが、日本語版がないので誰かに翻訳してほしいなって100回くらい思ってます。