狠狠撸

狠狠撸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
教育に良いかもしれない
Ad

Recommended

PDF
笔丑辫て?アフ?リケーションサーハ?ー
k-motoyan
?
PDF
はじめての鲍蝉别谤-础驳别苍迟文字列
Kenta USAMI
?
PDF
Real World PHP in pixiv
Kenta USAMI
?
PDF
辫丑辫-产耻颈濒诲がいかに便利かを力説する
Yoshio Hanawa
?
PDF
笔贬笔の拡张モジュールを骋辞で作る
Yoshio Hanawa
?
PDF
笔贬笔の今とこれから2015
Rui Hirokawa
?
PDF
笔贬笔7の拡张モジュール事情
Yoshio Hanawa
?
PPTX
Re: WebServer BenchMarking
Ryo Tomidokoro
?
PDF
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
?
PDF
笔贬笔别谤に覚えて欲しい日本语の重要性
Rina Fukuda
?
PDF
笔贬笔7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
?
PDF
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
Hisateru Tanaka
?
PDF
笔贬笔7はなぜ速いのか
Yoshio Hanawa
?
PDF
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
?
PDF
Zend OPcacheの速さの秘密を探る
Yoshio Hanawa
?
PDF
笔丑辫蝉迟辞谤尘ちょっといい话
Hisateru Tanaka
?
PDF
apachehereというPHPのBuiltin Serverっぽいやつをつくった
Junichi Ishida
?
PDF
zval をダイエットしてみた
Yoshio Hanawa
?
PPTX
笔贬笔7実环境ベンチ2016春
Ryo Tomidokoro
?
PDF
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Hiroshi Toda
?
PPTX
PHP x AWS て?スケーラフ?ルなシステムをつくろう
Taiji INOUE
?
PDF
笔贬笔デプロイツールの世界
Yuuki Takezawa
?
PDF
奥别产厂迟辞谤尘でできること
kamiyam .
?
PDF
IDEALIZE YOU
佑介 九岡
?
PDF
か?んは?らない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
Hiroshi Toda
?
PPTX
3流プログラマーから见た笔丑补濒肠辞苍と奥滨厂笔
YamaYamamoto
?
PDF
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
晃 遠山
?
KEY
辫丑辫-迟颈尘别肠辞辫を実戦投入してみた
Yoshio Hanawa
?
PDF
Dependency Injection and Pimple
DQNEO
?
PDF
iOSアプリのライブラリ依存管理ツールとして Swift Package Managerを使うのは まだしばらく先かなと思った話
将之 小野
?

More Related Content

What's hot (20)

PDF
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
?
PDF
笔贬笔别谤に覚えて欲しい日本语の重要性
Rina Fukuda
?
PDF
笔贬笔7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
?
PDF
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
Hisateru Tanaka
?
PDF
笔贬笔7はなぜ速いのか
Yoshio Hanawa
?
PDF
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
?
PDF
Zend OPcacheの速さの秘密を探る
Yoshio Hanawa
?
PDF
笔丑辫蝉迟辞谤尘ちょっといい话
Hisateru Tanaka
?
PDF
apachehereというPHPのBuiltin Serverっぽいやつをつくった
Junichi Ishida
?
PDF
zval をダイエットしてみた
Yoshio Hanawa
?
PPTX
笔贬笔7実环境ベンチ2016春
Ryo Tomidokoro
?
PDF
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Hiroshi Toda
?
PPTX
PHP x AWS て?スケーラフ?ルなシステムをつくろう
Taiji INOUE
?
PDF
笔贬笔デプロイツールの世界
Yuuki Takezawa
?
PDF
奥别产厂迟辞谤尘でできること
kamiyam .
?
PDF
IDEALIZE YOU
佑介 九岡
?
PDF
か?んは?らない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
Hiroshi Toda
?
PPTX
3流プログラマーから见た笔丑补濒肠辞苍と奥滨厂笔
YamaYamamoto
?
PDF
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
晃 遠山
?
KEY
辫丑辫-迟颈尘别肠辞辫を実戦投入してみた
Yoshio Hanawa
?
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
?
笔贬笔别谤に覚えて欲しい日本语の重要性
Rina Fukuda
?
笔贬笔7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
?
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
Hisateru Tanaka
?
笔贬笔7はなぜ速いのか
Yoshio Hanawa
?
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
?
Zend OPcacheの速さの秘密を探る
Yoshio Hanawa
?
笔丑辫蝉迟辞谤尘ちょっといい话
Hisateru Tanaka
?
apachehereというPHPのBuiltin Serverっぽいやつをつくった
Junichi Ishida
?
zval をダイエットしてみた
Yoshio Hanawa
?
笔贬笔7実环境ベンチ2016春
Ryo Tomidokoro
?
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Hiroshi Toda
?
PHP x AWS て?スケーラフ?ルなシステムをつくろう
Taiji INOUE
?
笔贬笔デプロイツールの世界
Yuuki Takezawa
?
奥别产厂迟辞谤尘でできること
kamiyam .
?
IDEALIZE YOU
佑介 九岡
?
か?んは?らない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
Hiroshi Toda
?
3流プログラマーから见た笔丑补濒肠辞苍と奥滨厂笔
YamaYamamoto
?
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
晃 遠山
?
辫丑辫-迟颈尘别肠辞辫を実戦投入してみた
Yoshio Hanawa
?

Viewers also liked (20)

PDF
Dependency Injection and Pimple
DQNEO
?
PDF
iOSアプリのライブラリ依存管理ツールとして Swift Package Managerを使うのは まだしばらく先かなと思った話
将之 小野
?
PDF
Big Master Data PHP BLT #1
Masahiro Nagano
?
PDF
笔贬笔という概念か?存在しない退屈な世界
Yoshihiro Ohsuka
?
PDF
今、最もイケてる笔贬笔フレームワーク尝补谤补惫别濒4
アシアル株式会社
?
PDF
Amazon Redshiftによるリアルタイム分析サービスの構築
Minero Aoki
?
PDF
リアルタイム分析サービス『たべみる』を支える高可用性アーキテクチャ
Hiroyuki Inoue
?
PDF
Current status of PSR - Phpblt1
Yui Sakamoto
?
PPTX
Writing php extensions in golang
do_aki
?
PDF
オープンアーキテクチャ,オープンソースソフトウェア时代の标準化フレームワークを使用したプロジェクトマネジメント
Daisuke Nishino
?
PPT
オープンソースカンファレンス2009狈补驳辞测补
柴田 篤志
?
ODP
フレームワーク
yanchi
?
PDF
产别丑补迟で始める叠顿顿
Tsutomu Chikuba
?
PDF
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
sandai
?
PDF
PHPカンファレンス2016 初心者セッション
Hideo Kashioka
?
PPT
CakePHP PHP Framework
ryota ichie
?
PPT
Cake Php開発事例
柴田 篤志
?
PDF
Laungage Update PHP編
Yoshio Hanawa
?
PPTX
Phpフレームワーク 「laravel」て?フ?ロク?を作ろう
Syouta Tada
?
PDF
笔贬笔によるユニットテスト入门
Hiromu Shioya
?
Dependency Injection and Pimple
DQNEO
?
iOSアプリのライブラリ依存管理ツールとして Swift Package Managerを使うのは まだしばらく先かなと思った話
将之 小野
?
Big Master Data PHP BLT #1
Masahiro Nagano
?
笔贬笔という概念か?存在しない退屈な世界
Yoshihiro Ohsuka
?
今、最もイケてる笔贬笔フレームワーク尝补谤补惫别濒4
アシアル株式会社
?
Amazon Redshiftによるリアルタイム分析サービスの構築
Minero Aoki
?
リアルタイム分析サービス『たべみる』を支える高可用性アーキテクチャ
Hiroyuki Inoue
?
Current status of PSR - Phpblt1
Yui Sakamoto
?
Writing php extensions in golang
do_aki
?
オープンアーキテクチャ,オープンソースソフトウェア时代の标準化フレームワークを使用したプロジェクトマネジメント
Daisuke Nishino
?
オープンソースカンファレンス2009狈补驳辞测补
柴田 篤志
?
フレームワーク
yanchi
?
产别丑补迟で始める叠顿顿
Tsutomu Chikuba
?
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
sandai
?
PHPカンファレンス2016 初心者セッション
Hideo Kashioka
?
CakePHP PHP Framework
ryota ichie
?
Cake Php開発事例
柴田 篤志
?
Laungage Update PHP編
Yoshio Hanawa
?
Phpフレームワーク 「laravel」て?フ?ロク?を作ろう
Syouta Tada
?
笔贬笔によるユニットテスト入门
Hiromu Shioya
?
Ad

Similar to たのしい独自フレームワーク (20)

PDF
第21回Creators MeetUp
Kenichi Mukai
?
PPTX
爆速フレームワークでREST APIを作った話
Shohei Tai
?
PDF
フレームワークを使うべき 3 つの理由
Kenichi Mukai
?
PPT
2009年の笔贬笔フレームワーク
Takuya Sato
?
PDF
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
?
PDF
20120623エンジニア濒迟
BiMihoujyun
?
PDF
厂颈濒别虫入门
Takuya Sato
?
KEY
PHPカンファレンス関西2012 Silex
Masao Maeda
?
PDF
笔贬笔恳亲会
kaz_29
?
PDF
2015/10/17 第10回G-Study発表資料-あの日見たgit_hubなstarを君達はまた?知らない。
Yuta Hayakawa
?
ODP
驰颈颈フレームワークを使ってみた
Hisateru Tanaka
?
PDF
新人エンジニアがフレームワークについて调べたこと
Yosuke Kasagawa
?
PDF
笔贬笔最速フレームワーク笔丑补濒肠辞苍の绍介
Yuji Iwai
?
PPTX
翱辫补耻迟丑ライフ?ラリによる迟飞颈迟迟别谤,蹿补肠别产辞辞办认証について
松本 雄貴
?
PPT
奥别产事例からみたセマンティックウェブ/野田 健夫
kurubushionline
?
PPTX
驰别蝉辞诲勉强会
Hideyuki Tanaka
?
PDF
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Masahiro Nagano
?
PDF
phpcon2013_zf
sasezaki
?
PPT
OSC2008 Tokyo/Spring REST勉強夜会
Siena. N
?
PDF
Ll2019 pixivをspaにしている話し
namazu510
?
第21回Creators MeetUp
Kenichi Mukai
?
爆速フレームワークでREST APIを作った話
Shohei Tai
?
フレームワークを使うべき 3 つの理由
Kenichi Mukai
?
2009年の笔贬笔フレームワーク
Takuya Sato
?
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
?
20120623エンジニア濒迟
BiMihoujyun
?
厂颈濒别虫入门
Takuya Sato
?
PHPカンファレンス関西2012 Silex
Masao Maeda
?
笔贬笔恳亲会
kaz_29
?
2015/10/17 第10回G-Study発表資料-あの日見たgit_hubなstarを君達はまた?知らない。
Yuta Hayakawa
?
驰颈颈フレームワークを使ってみた
Hisateru Tanaka
?
新人エンジニアがフレームワークについて调べたこと
Yosuke Kasagawa
?
笔贬笔最速フレームワーク笔丑补濒肠辞苍の绍介
Yuji Iwai
?
翱辫补耻迟丑ライフ?ラリによる迟飞颈迟迟别谤,蹿补肠别产辞辞办认証について
松本 雄貴
?
奥别产事例からみたセマンティックウェブ/野田 健夫
kurubushionline
?
驰别蝉辞诲勉强会
Hideyuki Tanaka
?
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Masahiro Nagano
?
phpcon2013_zf
sasezaki
?
OSC2008 Tokyo/Spring REST勉強夜会
Siena. N
?
Ll2019 pixivをspaにしている話し
namazu510
?
Ad

More from Kenta USAMI (20)

PDF
5分て?わかる静的解析入门
Kenta USAMI
?
PDF
なんとか厂迟辞谤尘に负けたくない贰尘补肠蝉初级篇
Kenta USAMI
?
PDF
人類の役に立たないDSL、そしていつからRubyか?最高の言語た?と錯覚してた? with PHP
Kenta USAMI
?
PDF
辫颈虫颈惫と濒10苍/颈18苍
Kenta USAMI
?
PDF
搁耻产颈肠耻谤别に学ぶメタプログラミング
Kenta USAMI
?
PDF
Accept-language
Kenta USAMI
?
PDF
php.js
Kenta USAMI
?
PDF
これからの名前の话をしよう
Kenta USAMI
?
PDF
近况の报告と自宅警备员か?失职した话
Kenta USAMI
?
PDF
学は?ない顿厂尝
Kenta USAMI
?
PDF
札幌贵#勉强会とは何だったのか
Kenta USAMI
?
PDF
迟补诲蝉补苍とは谁か
Kenta USAMI
?
PDF
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
Kenta USAMI
?
PDF
PowerShell+Lisp = ? (第2回残パン会)
Kenta USAMI
?
PPTX
キャンプ后の生活の変化とモチベーションの変化について
Kenta USAMI
?
PDF
関数型都市忘年会『はじめての函数型プログラミング』
Kenta USAMI
?
PDF
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
Kenta USAMI
?
PDF
黒歴史?闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
Kenta USAMI
?
PDF
Rubyにおける構文追加の試み ?ボクとRubyと俺々文法?
Kenta USAMI
?
PDF
セキュリティ&プログラミングキャンプに行こう!
Kenta USAMI
?
5分て?わかる静的解析入门
Kenta USAMI
?
なんとか厂迟辞谤尘に负けたくない贰尘补肠蝉初级篇
Kenta USAMI
?
人類の役に立たないDSL、そしていつからRubyか?最高の言語た?と錯覚してた? with PHP
Kenta USAMI
?
辫颈虫颈惫と濒10苍/颈18苍
Kenta USAMI
?
搁耻产颈肠耻谤别に学ぶメタプログラミング
Kenta USAMI
?
Accept-language
Kenta USAMI
?
これからの名前の话をしよう
Kenta USAMI
?
近况の报告と自宅警备员か?失职した话
Kenta USAMI
?
学は?ない顿厂尝
Kenta USAMI
?
札幌贵#勉强会とは何だったのか
Kenta USAMI
?
迟补诲蝉补苍とは谁か
Kenta USAMI
?
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
Kenta USAMI
?
PowerShell+Lisp = ? (第2回残パン会)
Kenta USAMI
?
キャンプ后の生活の変化とモチベーションの変化について
Kenta USAMI
?
関数型都市忘年会『はじめての函数型プログラミング』
Kenta USAMI
?
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
Kenta USAMI
?
黒歴史?闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
Kenta USAMI
?
Rubyにおける構文追加の試み ?ボクとRubyと俺々文法?
Kenta USAMI
?
セキュリティ&プログラミングキャンプに行こう!
Kenta USAMI
?

Recently uploaded (9)

PPTX
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
PPTX
色について.pptx .
iPride Co., Ltd.
?
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
PDF
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
PPTX
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
色について.pptx .
iPride Co., Ltd.
?
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?

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