Enviar pesquisa
Carregar
PHP framework Phalcon
•
10 gostaram
•
31,019 visualizações
Masanori Hayashi
Seguir
2013/10/23 社内勉強会の資料
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 30
Baixar agora
Baixar para ler offline
Recomendados
The Perils of Perception in 2016: Ipsos MORI
The Perils of Perception in 2016: Ipsos MORI
Ipsos UK
отчёт Buybrand expo 2012
отчёт Buybrand expo 2012
Victoria Kazakova
クラウドお遍路20161001LT_青木由佳
クラウドお遍路20161001LT_青木由佳
由佳 青木
Glt vol48
Glt vol48
Masanori Hayashi
JAWS-UG開催情報 20170125-8th初心者支部
JAWS-UG開催情報 20170125-8th初心者支部
由佳 青木
IT女子勉強会LT_どうしようもなくてもキャリアを創れ
IT女子勉強会LT_どうしようもなくてもキャリアを創れ
由佳 青木
Symfony meetup-7
Symfony meetup-7
Masanori Hayashi
Glt vol49
Glt vol49
Masanori Hayashi
Mais conteúdo relacionado
Destaque
AWSreinvent2016社内報告yuka_jyotei
AWSreinvent2016社内報告yuka_jyotei
由佳 青木
型超ざっくり入門@ハンズラボ社内勉強会
型超ざっくり入門@ハンズラボ社内勉強会
Yusuke Usui
Pursuing Domain-Driven Design practices in PHP
Pursuing Domain-Driven Design practices in PHP
Giorgio Sironi
Real World PHP in pixiv
Real World PHP in pixiv
Kenta USAMI
Phpstudy98
Phpstudy98
Masanori Hayashi
ハンズラボの考えるIoT Innovation EGG 第6回 『IoT 今と未来』
ハンズラボの考えるIoT Innovation EGG 第6回 『IoT 今と未来』
一成 田部井
フルマネージドのポイントシステム
フルマネージドのポイントシステム
Masayuki Kato
JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習
Masanori Hayashi
MBSハッカソン協賛品_ハンズラボ20170211
MBSハッカソン協賛品_ハンズラボ20170211
由佳 青木
Php blt-vol2
Php blt-vol2
Masanori Hayashi
PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろう
Taiji INOUE
とある小売IT企業での新卒仮想プロジェクト(工具共有サービス)
とある小売IT企業での新卒仮想プロジェクト(工具共有サービス)
Kazuo Murakami
Destaque
(12)
AWSreinvent2016社内報告yuka_jyotei
AWSreinvent2016社内報告yuka_jyotei
型超ざっくり入門@ハンズラボ社内勉強会
型超ざっくり入門@ハンズラボ社内勉強会
Pursuing Domain-Driven Design practices in PHP
Pursuing Domain-Driven Design practices in PHP
Real World PHP in pixiv
Real World PHP in pixiv
Phpstudy98
Phpstudy98
ハンズラボの考えるIoT Innovation EGG 第6回 『IoT 今と未来』
ハンズラボの考えるIoT Innovation EGG 第6回 『IoT 今と未来』
フルマネージドのポイントシステム
フルマネージドのポイントシステム
JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習
MBSハッカソン協賛品_ハンズラボ20170211
MBSハッカソン協賛品_ハンズラボ20170211
Php blt-vol2
Php blt-vol2
PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろう
とある小売IT企業での新卒仮想プロジェクト(工具共有サービス)
とある小売IT企業での新卒仮想プロジェクト(工具共有サービス)
Semelhante a PHP framework Phalcon
俺のセキュリティを超えてゆけ
俺のセキュリティを超えてゆけ
Tsukasa Kato
Javaにおけるモジュラリティ元年
Javaにおけるモジュラリティ元年
Hiroki Kondo
Durable function storage provider
Durable function storage provider
Kazunori Hamamoto
【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入
【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入
Juniper Networks (日本)
コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望
コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望
Yoichi Kawasaki
Micronaut on Azure 試してみた
Micronaut on Azure 試してみた
拓将 平林
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
Hiroki Kondo
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
Salesforce Developers Japan
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
y-uti
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態
npsg
Mk network programmability-03
Mk network programmability-03
Miya Kohno
Pylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイド
Nozomu Kaneko
Azure Cloud Shell
Azure Cloud Shell
ryosuke matsumura
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
DeNA
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
Yusuke Suzuki
5分でわかるPhalconPHP
5分でわかるPhalconPHP
Shohei Tai
5分でわかるphalcon php
5分でわかるphalcon php
Yusaku Kinoshita
Silverlightをあれこれ紹介
Silverlightをあれこれ紹介
mizusawa
20140926 mt cloud_handson_seminar
20140926 mt cloud_handson_seminar
Six Apart
“見てわかる” ファイバーチャネルSAN基礎講座(第4弾)~続・間違わない!FC SAN導入のヒントとコツ~
“見てわかる” ファイバーチャネルSAN基礎講座(第4弾)~続・間違わない!FC SAN導入のヒントとコツ~
Brocade
Semelhante a PHP framework Phalcon
(20)
俺のセキュリティを超えてゆけ
俺のセキュリティを超えてゆけ
Javaにおけるモジュラリティ元年
Javaにおけるモジュラリティ元年
Durable function storage provider
Durable function storage provider
【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入
【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入
コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望
コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望
Micronaut on Azure 試してみた
Micronaut on Azure 試してみた
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態
Mk network programmability-03
Mk network programmability-03
Pylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイド
Azure Cloud Shell
Azure Cloud Shell
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
5分でわかるPhalconPHP
5分でわかるPhalconPHP
5分でわかるphalcon php
5分でわかるphalcon php
Silverlightをあれこれ紹介
Silverlightをあれこれ紹介
20140926 mt cloud_handson_seminar
20140926 mt cloud_handson_seminar
“見てわかる” ファイバーチャネルSAN基礎講座(第4弾)~続・間違わない!FC SAN導入のヒントとコツ~
“見てわかる” ファイバーチャネルSAN基礎講座(第4弾)~続・間違わない!FC SAN導入のヒントとコツ~
Mais de Masanori Hayashi
「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018
「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018
Masanori Hayashi
人のレガシーを笑うな - レガシー感謝の日
人のレガシーを笑うな - レガシー感謝の日
Masanori Hayashi
20180627 phpstudy 長いものに巻かれよう
20180627 phpstudy 長いものに巻かれよう
Masanori Hayashi
20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravel
Masanori Hayashi
ボトルネックを解消せよ
ボトルネックを解消せよ
Masanori Hayashi
Glt vol47
Glt vol47
Masanori Hayashi
俺的世界で一番暑い夏
俺的世界で一番暑い夏
Masanori Hayashi
Soft bank ssl仕様変更について
Soft bank ssl仕様変更について
Masanori Hayashi
20081120 lt11th ace
20081120 lt11th ace
Masanori Hayashi
Mais de Masanori Hayashi
(9)
「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018
「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018
人のレガシーを笑うな - レガシー感謝の日
人のレガシーを笑うな - レガシー感謝の日
20180627 phpstudy 長いものに巻かれよう
20180627 phpstudy 長いものに巻かれよう
20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravel
ボトルネックを解消せよ
ボトルネックを解消せよ
Glt vol47
Glt vol47
俺的世界で一番暑い夏
俺的世界で一番暑い夏
Soft bank ssl仕様変更について
Soft bank ssl仕様変更について
20081120 lt11th ace
20081120 lt11th ace
Último
2024 03 CTEA
2024 03 CTEA
arts yokohama
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
arts yokohama
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
Shumpei Kishi
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
Tetsuya Nihonmatsu
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
ssuser539845
2024 04 minnanoito
2024 04 minnanoito
arts yokohama
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
ssuser370dd7
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
arts yokohama
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
Ayachika Kitazaki
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
Matsushita Laboratory
Último
(11)
2024 03 CTEA
2024 03 CTEA
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
2024 04 minnanoito
2024 04 minnanoito
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
PHP framework Phalcon
1.
PHP Framework Phalcon 2013年10月23日(水) 林 正紀 @m_norii http://norii.hatenablog.com/
2.
自己紹介 • • • • • 2000- NSW (SIer) 2004-
CYBIRD (ガラケー全盛期) 2008- Bit Shift 2011- WINLIGHT (モバグリ・ソシャゲ全盛期) 2013- Trifort • Live in Fujimino, Saitama • Like • Music, Live (especially Mr.Children, Ikimonogakari) • Swimming
3.
Phalcon:特徴 • C拡張での実装→速い/資源効率良い • 豊富な機能と疎結合なクラス群 •
使用する機能の取捨選択ができる • EventManagerとDIコンテナを利用したメインフ ロー • 3種類の構成を選択可能 • Single Module • Multi Module • Micro Framework • ライセンスは New BSD License
4.
動作要件 • PHP5.3以上 • 一部機能はPHP5.4以降で使うとパフォーマンス 面で有利とのこと •
PHP5.3系はすでにEOL迎えているので、新規案件で 適用するなら5.4/5.5系を利用すべき
5.
リリース履歴 日時 Ver 履歴 2012-07-01 0.4 Memcacheによる結果セットのキャッシュ DBメタデータの永続化 PostgreSQLをサポート 正規表現によるルーティング、多言語対応、 仮想外部キー 2012-09-08 0.5.0 Event Manager/DIコンテナの導入 2012-10-31 0.6 MongoDBサポート 2013-03-20 1.0.0 Formビルダー、Validator 2013-07-08 1.2.0 ModelCriteria 機能強化 ORMで多対多関連サポート 2013-07-25 1.2.1 Config/Json、バグフィックス 2013-08-06 1.2.2 バグフィックス、最適化 2013-08-16 1.2.3 (Change
log無し)
6.
導入事例 • RODEO という会社がソーシャルゲーム開発に 使っているらしい •
PHPカンファレンス2013でのフレームワークディス カッション中の発表より • http://www.rodeo.jp.net/ • http://www.slideshare.net/dzeyelid/introductionphalconatphpcon
7.
パフォーマンス比較 1 (秒間処理リクエスト数) 2535 851 354 489 541 568 860 1059 ・いわゆる「Hello World」アプリ ケーションでの比較 ・ベンチ環境 Mac
OS X Lion 10.7.4 Apache2.2.22(mod_rewrite無効) PHP5.3.15 (APC有効) CPU: 2.04GHz Intel Core i5 Memory: 4GB
8.
パフォーマンス比較2 (1リクエスト当たり処理時間 [ms]) 2.82 2.05 1.85 1.37 1.17 1.16 0.99 0.39
9.
パフォーマンス比較3 (読み込みPHPファイル数) 66 46 46 30 27 23 18 4
10.
パフォーマンス比較4 (1Req当たりメモリ使用量 [MB]) 1.75 1.50 1.50 1.25 1.25 1.10 1.00 0.75
11.
爆速なのはわかったが・・・ • 実際に本当に爆速になるか? ・・・は、作るアプリケーションの質にも大き く依る • 投げるSQLがイケてなくて足引っ張ってると か・・・ •
PHP標準関数やクラス/Phalconで提供している機能 をわざわざ再実装してるとか・・・ • なので、Phalconの性能を出し切るようなプロ グラムを心がける必要がある
12.
機能一覧 ACL Events Security Annotations Filter Session CLI Flash ※ Tag Cache Forms Text Config Http Translate Crypt Kernel Validation DI Loader Version Db Logger Debug MVC Dispatcher Paginator Escaper Queue ※Flash はAdobe
Flashではなく、複数リクエストをまたいでメッセージ を受け渡すもの
13.
機能一覧:MVC Application User/Component Controller User/Module Dispatcher User/Plugin Micro View Model View/Engine/PHP Url View/Engine/Volt
14.
機能:モデル(1) <?php $cards = Card::find();//全件取得 $card
= Card::findFirst(5); // ID 5を1件取得 $cards = Card::query() ->where('element = :element:') ->bind(array('element' => 1)) ->order('rarity') ->execute(); // メソッドチェーンによる記法 //複数件帰ってくるメソッドの返値の型は「ResultSet」。Trabarsableなのでforeachで 繰り返し処理ができる foreach($cards as $card){ //do something } //この処理は、Phalconの内部ではDBのカーソルを利用して取得しているのでメモリ をあまり使わない
15.
機能:モデル(2)集約関数 <?php echo Card::count ();//
SELECT count(*) echo Card::sum(attack); echo Card::average(defence); echo Card::maximum(rarity); echo Card::minimum(cost); ・その他、Insert/Update/DeleteはDoctrine(SymfonyのORマッパ)とだいた い同じ ・任意のSQLを投げる機能もあるので、ORマッパとしてのモデルは使わな いという選択もできる
16.
機能:Cache • 標準で選択可能なBackend • • • • • File Memcached APC Mongo Xcache • あれ、Redisは・・・(´・ω・`) •
https://github.com/phalcon/incubator/blob/master/Libr ary/Phalcon/Cache/Backend/Redis.php
17.
機能:テンプレートエンジン (Volt) • Twigライクな記法、Smartyとはちょっと違う • エンジンは差し替え可能。Pure
PHPも選べる • Adapter書けばSmartyにも対応できる • https://github.com/phalcon/incubator/blob/master/Libr ary/Phalcon/Mvc/View/Engine/Smarty.php • でも、テンプレートのParseってコスト高い処理なので、 そこをPHP実装のSmartyでやるのはPhalcon使う意味ある の?な感
18.
機能:テンプレートエンジン (Volt) サンプル コメント書式 {# app/views/products/show.volt #} {%
block last_products %} 制御文書式 {% for product in products %} * Name: {{ product.name|e }} {% if product.status == "Active" %} Price: {{ product.price + product.taxes/100 }} {% endif %} {% endfor %} {% endblock %} 変数出力書式
19.
EventManager • 「フレームワークがC実装だと、フレームワークの 挙動に関わる部分は全く手が入れられないの?」 • EventManagerを介して、フレームワークの各処理 ステージ中に処理を割りこませることができる • • • • • • • beforeDispatchLoop beforeDispatch beforeExecuteRoute initialize afterExecuteRoute beforeNotFoundAction
など http://docs.phalconphp.com/en/latest/reference/dispatching .html • 上記以外、DB関連も細かいイベントが設定されていて、 Listenできる仕掛けになっている
20.
Listenerクラスに通知 Controllerクラスに通知 EventManagerとEvent Bootstrap Routing BeforeDispatchLoopイベント BeforeDispatchイベント Dispatch BeforeExecuteRouteイベント Controller/Action AfterExecuteRouteイベント AfterDispatchイベント AfterDispatchLoopイベント Response
21.
DIコンテナ/サービスロケータ • 複数クラスで使いまわすオブジェクトを管理 • 例:MVC内のRequest/Responseクラス •
動作環境に依存して処理を変える箇所を、外部 から注入することで、疎結合性、テスト可用性 を確保 • 実行環境用とUnitTest用Requestクラス • 開発/テスト/ステージ/商用環境 • http://docs.phalconphp.com/en/latest/reference/di.htm l
22.
3種類の構成 • Single-Module • FuelPHP、CodeIgniterのような
1プロジェクト1アプ リ構成 • Multi-Module • Zend、Symfonyのような1プロジェクト内に複数アプ リの構成 • Micro Framework • Silexのようなシンプルなアプリケーションを素早く 作るためのコンパクトなフレームワーク
23.
Single-Module ディレクトリ構成 single/ app/ controllers/ models/ views/ public/ css/ img/ js/
24.
Multi-Module ディレクトリ構成 multiple/ apps/ frontend/ controllers/ models/ views/ Module.php backend/ controllers/ models/ views/ Module.php public/ css/ img/ js/
25.
Micro Framework ディレクトリ構成 my-rest-api/ models/ Robots.php index.php .htaccess index.php <?php $app =
new PhalconMvcMicro(); $app->get('/api/robots', function() { //Do something }); $app->post('/api/robots', function() { //Do something }); $app->handle();
26.
課題 • 日本語の情報が少ない • 公式サイトも英語のみ •
内部で動作しているか詳細を調べるのが(PHP実 装のフレームワークと比して)難しい • Cソースは公開されているのでそれを読めばいいが • C実装なのでメモリ周りの問題も報告が見受け られる • https://github.com/phalcon/cphalcon/blob/master/CHA NGELOG • 開発自体はそれなりにアクティブなので、patch投 げれば修正してくれるかも
27.
雑感(設計周り) • フルスタックアプリケーションの構成は Zend Framework2に近い •
コントローラ名/アクション名の規則やViewファイ ルの拡張子とか特に • マイクロアプリケーションの構成はSilexっぽい • ORマッパはDoctrineっぽい • テンプレートエンジン(Volt)はTwigっぽい • これらをいいとこどりしてCで実装したみたい なところか
28.
雑感(実装周り:1) • Webアプリに必要な機能はひととおり揃ってい る • 各種IDE用の補完用ファイルは有志が作ってる •
デバッグ用機能がちょっと弱い? • Symfonyとかにあるデバッグツールバー欲しいよ ね? →「PHP Debug Bar」という汎用的なのがあるのでこ れと連携させれば。 http://phpdebugbar.com/ Phalconと連携させてる人もいた http://sankame.github.io/PHPDebugBar/2013/09/23/ph p_debug_bar_install/
29.
雑感(実装周り:2) • いわゆる「開発/テスト/ステージ/商用」環境 別のアプリケーション構築法がデフォルトでは 提供されていない • おそらくDIで外から注入せよという思想だと思われ るが、他Frameworkでもだいたいある機能なので、 最初の導入時にあってもいいのでは。 •
公式ドキュメントどおりに構築していくと、 index.phpの記述がカオスになりそう • ZendのようにBootstrapクラスをちゃんと作って、 index.phpは薄く保つのがいいのではないか。
30.
雑感(まとめ) • Zend/Symfonyの設計思想を受けている印象なの で、世間的に知られているパターンを適用した アプリケーション構築はしやすそう • DDD(Domain
Driven Design) • PofEAA(Patern of Enterprise Application Architecture) • フレームワークの機能をフルに活かして、 KISS(Keep It Simple & Small) DRY(Don't Repeat Yourself) YAGNI(You Aren't Gonna Need It) なアプリケーションを構築すれば、 真に爆速なサービスを提供できる
Baixar agora