3/26〜28の3日間で開催されたPHPerKaigiにCFPを通すことができたので登壇してきました。
今回のネタ
今回はDependency Injectionに焦点をあてて、今こそ理解するDI(Dependency Injection)というタイトルにしました。TimeTableを改めて見てみると、僕以外にもDIの話をされる方がいらしたので、そんな中で採択されたのはとても嬉しかったです。
テーマをDIにした理由
理由は2つあります。
1つめはCakePHPにDIコンテナが実験的に導入されるにあたって、DIを正確に学んでおきたかったからです。
僕は元々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の登壇で満足せずに深堀りを続けていきます。
「Head First Design Patterns (リンクは2nd edition)」が参考文献としてすごく良いらしいんですが、632ページもあるうえに英語なので途中で挫折する気がしてなりません(´・ω・`)。
僕の登壇資料の根っこになっている「Dependency Injection Principles, Practices」も良書なんですが、日本語版がないので誰かに翻訳してほしいなって100回くらい思ってます。