狠狠撸

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

More Related Content

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