Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

たのしい独自フレームワーク

7,367 views

Published on

PHP BLT #1で発表しました
http://phpblt.connpass.com/event/21929/

Published in: Technology
  • Be the first to comment

たのしい独自フレームワーク

  1. 1. たのしい独自フレームワーク 2015-11-24 PHP BLT #1 Enjoy your own PHP framework!
  2. 2. うさみけんた 獨自腐麗夢輪惡 2012年からピクシブ株式会社 自宅警備してたときはRuby書いてた 好きなリスプはEmacs Lispです お前誰よ
  3. 3. 独自フレームワークへの道
  4. 4. 2012年頃 (私が入社する前…) PHPとActiveResourceを繋ぐAPI OAuth認証で利用できるAPI Silexが遅いからフレームワーク作る …って話があったらしい (bokkoさんの方が詳しい) (前史)pixiv Private/PublicAPI
  5. 5. 2015年4月1日にリリース 対象プラットフォームは
 i-mode/EZweb/Yahoo!ケータイ(勝手サイト) 旧ピクモバと交代のかたちでリニューアル シンプルなサービスを設計したかった (現代)pixiv小説モバイル
  6. 6. URLからわかる通り外部フレームワークに 乗らないプレーンなPHP セッション及びDBアクセスする層などは、
 PC版・スマートフォン版・APIなどで共通化 フルスタックフレームワークに載せると、 あきらかにちぐはぐな点が生じる pixivの事情
  7. 7. .php
  8. 8.        |    \  __  / ピコーン    _ (m) _  そうだ、独自フレームワーク作ろう       |ミ|     /  `´  \      ('A`)      ノヽノヽ        くく
  9. 9. pixivはフレームワークを利用しないPHP
 なので、抽象度の低いコードが多め ボイラープレートを減らしたかった 正直言って、既存フレームワークは
 ぴんとこなかったところもある なぜフレームワークか
  10. 10. はじめにPackagistでライブラリ探した XHTMLを吐くしTwigでいいよね Monologからpixivのロガーに流しこむ 副作用のないルーターが良いのないお… 車輪の再発明は避ける
  11. 11. 次にシンプルなルーターを作った https://github.com/BaguettePHP/simple-routing 異常に遅くなければ特に問題はない とは言ってもボトルネックじゃないだけで
 速くはないので、ちゃんと高速化する フレームワーク設計
  12. 12. フレームワークのコアは小さく https://github.com/BaguettePHP/Baguette 上に載るアーキテクチャを規定しない モデル?とかコントローラ?とか干渉しない フレームワーク設計
  13. 13. 状態はApplicationクラスに集約する $_SERVER, $_GET, $_POST, date()など パラメータの取り出しは罠が多いので
 この部分は素のPHPでは書きたくなかった 文字列だと期待して配列を渡せるとか フレームワーク設計
  14. 14. あとは適当に層を用意してく MVC2のControllerっぽい層 HTTP Request/Responseを抽象化する層 Twigなどをラップして抽象化するView層 フレームワーク設計
  15. 15. 今回書いたアプリケーションでは、
 アーキテクチャMVC2だとは明言しない 手続き型っぽく開き直って書いて良い 責務はできるだけ分けるが潔癖にならない 拘りすぎないことで気が楽になる フレームワーク設計
  16. 16. 良いこと 既存のフレームワークが怖くなくなる 用途にあった抽象度のコードは見通し良い 問題がおこったら自分で即応できる フレームワーク設計
  17. 17. 悪いこと 『独自フレームワーク』と口にしただけで
 怪訝な顔でウッとされる 副作用を分離してテスタブルな構造にした 割に、余裕がなくてあまり書かなかった フレームワーク設計
  18. 18. 薄いフレームワークを読めば、
 PHPがブラックボックスじゃなくなる? そう思ったのでインターンシップの
 提出課題にしてみた https://github.com/pixiv/intern2015w 教育に良いかもしれない

×