Endo Tech Blog

Techブログと言う名のただのブログです。

PHPerKaigi 2019で「フレームワークを作りながらLaravelのアーキテクチャを学ぶ」について発表しました

f:id:kikuchi1201:20190403234424j:plain

 

PHPerKaigi 2019で「フレームワークを作りながらLaravelのアーキテクチャを学ぶ」というタイトルで登壇してきました。

 

phperkaigi.jp

 

 

発表内容について

 

発表資料はこちらです。

 

speakerdeck.com

 

 

内容を見てもらえればわかりますが、前半ではパーフェクトPHPの第7章を参考にしたMVCフレームワークを作りそのアプリケーションの流れの解説をして、後半でLaravelに基本的なアーキテクチャを学んでLaravelにMVCを適用させた例と、前半作成したフレームワークのMVCとは何が違うのか?、何が良くなったのか?と言った事を話す内容になっております。

 

フレームワークを作るだけの話だけでもかなりのボリュームなのですが、更にLaravelのアーキテクチャの話も入れて、最終的には149枚という致命的な数字になり、とても30分では収まらないと思ってたのですが本番ではなんとかやりきりました。

 

 

 

30分でこの内容は早すぎて伝わったか正直不安だったのですが、TLで感想を見た所、「DIコンテナ完全に理解しました!」とか、「HowではなくWhy、これ重要」とか呟いている方がいて「おぉ。。!僕が言いたかった事伝わってる...!」という気持ちになりました。改めて当日聞いて頂いた皆様ありがとうございました!

 

 

発表テーマについて

 

今回PHPerKaigi 2019のCFPを提出した際の説明では以下の内容で提出しました。

 

「“How” ages faster than “Why”(手段は本質よりも早く廃れる)」と言う言葉があるように、Laravelでのメソッドの呼び出し方は他のPHPのFWでは通用しませんし、他の言語でも意味をなさないかもしれません。しかし、Laravelで採用されている技術やアーキテクチャは言語の壁を超えて流用ができると考えています。

 

ここで言う、「“How” ages faster than “Why”」という言葉は以前自分が翻訳した以下の記事が原案となっています。

 

www.fendo181.me

 

このブログの最後でRedditのユーザが翻訳元になった「“How” ages faster than “Why”」 に反応したコメントとして、以下の内容を述べていました。

 

6ヶ月だろうが60年だろうが、常に技術は出てきたり消えたりするものだ。 言語やフレームワークの小さな癖を学ぶことは時間の問題だよ。

エキスパートがアマチュアと違う所は、その知識が言語やフレームワークを超えて流用できるから、なぜその方法で行われたかを理解できるんだ。

常に簡単にテストを自動化する必要がある。

常にコードを再利用可能にする必要がある。

常にコードを冗長性の少ないものにする必要がある。

これらはフレームワークが助ける目的のほんの一部であって、それらを達成するためにどのように役立つかを理解することは、はるかに長期的に有用であり良いプログラマになれる。

 

まさにこれが自分が今回の発表で伝えたかった一番のテーマでした。

 

要するにLaravelというのは、フレームワークであり、ツールであり、手段の1つでしかないので、そのフレームワークに依存した方法(How)を学ぶ事も大事だけど、Laravelで使われているアーキテクチャ(Why)を学ぶ方が長期的に見てもっと有用である事を伝えたかったのです。

 

今回の発表で紹介したMVCデザインパターン、そしてLaravelのアーキテクチャで採用されている、DIDIコンテナの基本的な概念や役割は特定のフレームワークや、言語に依存しない本質(Why)な部分であり、今後のエンジニアのキャリアを考えた際に良いエンジニアになれる一歩である事を伝えたかったので、それがあの発表で伝わっていれば自分の中では目的が達成できたと思っております。

 

ただ、勿論他の方の意見として、ファサードが実行される際の流れや、ファサード警察に怒られない為に、ファサードを使わない実装パターンも紹介できれば良かったですが、時間の都合で本番では紹介出来なかったので、もし興味がある方は「PHPフレームワーク Laravel Webアプリケーション開発」のchapter2の章や、以下の記事で解説しているので見てみて下さい。

 

laraweb.net

 

ファサードを使われない例に関しては@ytakeさんのこちらの記事で解説しているので、こちらも良ければご覧下さい。

 

blog.ytake.jp.net

 

 

PHPerKaigi について

自分の登壇した話はこれぐらいにして、PHPerKaigi 2019について語らせて下さい。

PHPerKaigi自体は去年も参加してました。

 

www.fendo181.me

 

PHPerKaigiというのは、発表後に登壇者に質問をするAsk The Speakerや、個別のIRT(Interactive Round Table)の時間を設けており、ただ聞いて終わるのではなく積極的に参加者同士の交流を促す取り組みが随所で行なわれています。

 

これこそが自分がPHPerKaigiに参加する理由であり、好きな理由でもあるのですが、それを最も表してたのが3日目の郡山さんのIRTの発表でした。

 

 

 

f:id:kikuchi1201:20190404083728j:plain

 

郡山さんがIRTでREST API (Hypermedia API)開発について熱弁する姿に、参加者一同が必死に郡山さんの言葉に耳を傾けている様子です。この光景を見た際に「いいなぁ」と純粋に感動したのを覚えています。

 

このようにPHPerKaigiでは参加者が興味関心がある内容について学ぼうと思えば、その分野のスペシャリストがすぐ近くにいて「直接話せる」と言う素晴らしい機会を提供している事がわかると思います。

 

なので参加者にとっては学びしかないのですが、これは登壇する側にも言える事だとPHPerKaigiに参加して思いました。

 

例えば自分の場合ですと発表が終わった後に何名かとDIやDIコンテナの内容について「テストコードを絡めて話すとよりメリットが理解できるのでは?」と意見を言ってくれた方がいたり、「ファサードはどのタイミングで使うのがベストなのか?」とアドバイスを求めてくる方がいたり等自身にとっても見えてなかった視点が気づけて勉強になるなと思いました。

 

他の方の発表について

3日目の @uzulla さんの「帰ってきた!平成最後のオレオレフレームワークの作り方」は楽しみにしてた発表の1つでした。

 

speakerdeck.com

 

というのも、自分が「フレームワークを作るぞっ!」というきっかけになったのが、@uzullaさんの伝説的なスライドだったので、「これは絶対聴きたい!」と思っており、当日は最前列で聞いてましたが、発表はさながらライブを見てる感じでした。

とりあえず、それぐらい盛り上がってた事が伝わればと良いと思います。

 

内容は非常にオレオレの、オレオレによる、オレオレの為の、オレオレフレームワークを語る発表でした。そうです。オレオレは主観でいかないといけないと...他の人がどう思うが、オレが思う最高ってのを作らなければならない....ただし自己責任でという、原点を思い出させてくれた、素晴らしいライブでした。

 

それと、もう一つ大事な事を思い出させてくれました。

 

発表後に自分が @uzulla さんに「最近はPHPから入るのではなく、Laravelから入る人が多いと感じている。そうなった時にLaravelから入った子にフレームワークではなくPHPの魅力を伝えるにはどうしたら良いか?」と質問をしました。

  

返答としては

「どちらでもいい。フレームワークから入ろうが、PHPが入ろうが、モチベーションがある方がいい。教育はモチベーションの維持が大事。」

といった内容の返答をもらったのを覚えてます。

 

 

この返答された時に自分がPHPが好きな理由を思いだしました。

それは「とりあえず動く」からです。

 

基本的なPHPとHTMLさえ知っていれば簡単なフォーム画面が作れたり、BBS(一言掲示板)が作れたり等、雑なWebアプリケーションだったら1時間ぐらでできてしまう手軽さと、出来たアプリケーションが自分のモチベーションだった事を思いだしました。

 

なので、僕自身発表ではHow(手段)よりもWhy(本質)を学ぶ事が大事だと言ったのですが、それはモチベーションがあっての話で、いきなり初心者に対して「よし!じゃぁフレームワークを作ろう!」とは言えないなと後から気付かせて貰いました。

 

それだったらとりあえずLaravelで動く物を作って興味をもたせた方が入り口としては、モチベーションが維持しやすいと感じました。

 

という事でこの質問に対する@uzulla さんの返答が、僕が今回のPHPerKaigi2019での最大の学びでした。

ありがとうございました。

 

まとめ

 

めっちゃ長々と語ってきたのですが、まとめるとですね

 

PHPerKaigiは良いぞ!

 

という、ありきたりな感想になります。はい。

上記で述べたように、参加者は勿論、登壇者にも大きな学びが得られる良いカンファレンスだと思いうので、もしまだ「参加した事がないー!」という方は是非ですね、多分来年も開催されると思うので参加してみて下さい。

 

最後に改めて素晴らしいカンファレンスを準備をして頂いた長谷川さんを始め、コアスタッフ、当日スタッフの皆様ありがとうございました〜!

 

おわり! 

 

 

独習PHP 第3版

独習PHP 第3版

 

 

 

PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応

PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応

  • 作者: 竹澤有貴,栗生和明,新原雅司,大村創太郎,丸山弘詩
  • 出版社/メーカー: ソシム
  • 発売日: 2018/09/26
  • メディア: 単行本
  • この商品を含むブログを見る