Upgrade to Pro — share decks privately, control downloads, hide ads and more …

陽気なギャングが「行けたら行くぜ」って言ってたよ #23grads / Building a php framework

陽気なギャングが「行けたら行くぜ」って言ってたよ #23grads / Building a php framework

B05baacb6000fe55fe558ce75aa9bc74?s=128

Haruki Tazoe

July 17, 2021
Tweet

Transcript

  1. 陽気なギャングが 「行けたら行くぜ」って 言ってたよ 田添春樹 @jdkfx

  2. 田添春樹 広島工業大学・情報学部 趣味: プログラミング,ツーリング,レース観戦, 読書,映画鑑賞,音楽鑑賞など… @jdkfx jdkfx

  3. None
  4. 最近の活動 • 物理CPUの構築

  5. 最近の活動 • 自作フレームワークの作成 https://github.com/jdkfx/phrame 今日の話題

  6. 質問

  7. Q.フレームワークはお好きですか?

  8. A.はい,大好きです.

  9. Q.フレームワークの 内部構造理解してますか?

  10. A.いや,ちょっと…汗

  11. アジェンダ • 自作フレームワークを作ってみる • Model,View,Controllerについて理解を深めてみる • GoFのデザインパターンを使って,よりよいフレームワークへ • 今後の展望

  12. アジェンダ • 自作フレームワークを作ってみる • Model,View,Controllerについて理解を深めてみる • GoFのデザインパターンを使って,よりよいフレームワークへ • 今後の展望

  13. 自作フレームワークを作ってみる

  14. 動機 • フレームワークの内部構造への理解 • オブジェクト指向への理解 • 自身の”phper力”を鍛えるため • フレームワークを作っている人への憧れ •

    なんかカッコいいから
  15. 作る前の僕 • Laravelのアプリケーションコードはよく書いていた • phpでのフルスクラッチ開発経験は特になし • オブジェクト指向,まあまあワカル

  16. 何から始めようか問題 • フレームワークが提供する機能はとにかく多い • Laravelを例にすると… Eloquent ORM,Façade,DI,サービスコンテナ…

  17. 何から始めようか問題 • やることは多いけれど, それが最終形態であって最初のコミットはみんな”phpinfo();” • とにかく簡単なことから手を動かしていきます

  18. https://speakerdeck.com/uzulla/gui-tutekita-ping-cheng-zui-hou-falseoreorehuremuwakufalsezuo-rifang

  19. None
  20. • .htaccessとdocker-compose.ymlでドキュメントルートの設定 index.phpで終わらせない

  21. GETとindex.php • この時点では,index.phpが後述のコントローラーの役割担当

  22. GETとindex.php index.phpの抜粋 Blog.php https://github.com/jdkfx/phrame/commit/e6 5dbcdcc75a23cc24c5858c6a342727a59c95c1

  23. アジェンダ • 自作フレームワークを作ってみる • Model,View,Controllerについて理解を深めてみる • GoFのデザインパターンを使って,よりよいフレームワークへ • 今後の展望

  24. Model,View,Controllerについて 理解を深めてみる

  25. Modelとは • 選び抜かれてシンプルにされ,意図的に組み立てられた知識の 表現形式 • 個人の持つメンタルモデルが概念モデルを経て, ドメインモデルへと変換されたもの • ドメインモデルとはドメイン(目的)を 情報処理システム(手段)によってモデル化したもの

  26. https://speakerdeck.com/tenjuu99/what-mvc-is

  27. https://speakerdeck.com/tenjuu99/what-mvc-is

  28. Modelとは • 具体的な処理 • アプリケーションのドメインに関する部分の担当 • 送信されたデータの保存や更新,削除などの処理を行う

  29. View,Controllerとは • Viewの具体的な処理 • 表示部分やフォームなどの入出力を担当 • Modelに保存されているデータを表示 • Controllerの具体的な処理 •

    ModelとViewの間で仲介役のような役割を行う • Modelにリクエストされたデータを受け渡し, レスポンスされたデータをViewに受け渡す
  30. https://speakerdeck.com/tenjuu99/what-mvc-is

  31. https://folk.universitetetioslo.no/trygver/themes/mvc/mvc-index.html

  32. https://speakerdeck.com/tenjuu99/what-mvc-is

  33. フレームワークのリファクタリング

  34. index.php

  35. Router

  36. Model

  37. Controller

  38. https://jdkfx.com/blog/building-a-php-framework

  39. アジェンダ • 自作フレームワークを作ってみる • Model,View,Controllerについて理解を深めてみる • GoFのデザインパターンを使って,よりよいフレームワークへ • 今後の展望

  40. GoFのデザインパターンを使って よりよいフレームワークへ

  41. GoFのデザインパターン • 開発者による「経験」や「内的な蓄積」としてのパターン • Erich Gamma, Richard Helm, Ralph Johnson,

    John Vlissides のthe Gang of Fourによって整理されたもの • タイトルの陽気なギャングはこのことなんですね…(小声) Java言語で学ぶデザインパターン入門
  42. フレームワークに使用される デザインパターン • Laravelを例にすると… • Eloquent ORM – Active Recordパターン

    • Façade – Proxyパターン • サービスコンテナ – Dependency Injectionパターン (スライド16枚目から再掲)
  43. 自作フレームワークへの導入 • 自作フレームワークへデザインパターンを導入をしてみる つもりでしたが…

  44. 自作フレームワークへの導入 • 実装量が少なくて,デザインパターンを導入するメリットが 見つからないため,今回は諦めました • 陽気なギャングは来てくれませんでした

  45. アジェンダ • 自作フレームワークを作ってみる • Model,View,Controllerについて理解を深めてみる • GoFのデザインパターンを使って,よりよいフレームワークへ • 今後の展望

  46. 今後の展望

  47. フレームワークの充実 • DI”風”コンテナ • テンプレートエンジン • CSRF Tokenなどのセキュリティ • Sessionの活用

    • 高度な検索などのDB操作を行う処理
  48. デザインパターンの導入 • Façadeパターン • Proxyパターン • この辺あたりから導入を目指していこう • 今度こそは陽気なギャングが来てくれると信じて…

  49. 最後に • 今年の夏は自作フレームワークの夏にしませんか?

  50. ありがとうございました