Upload
go-nakanishi
View
3.323
Download
0
Embed Size (px)
Citation preview
こわくないSymfony2 - 業務で使って気づいた7つの良いところ
2015/10/03 phpcon2015
株式会社VOYAGE GROUP
中西 豪
自己紹介
• なかにしごう a.k.a gomachan46
• 株式会社VOYAGE GROUP エンジニア
• https://twitter.com/gomachan46 • https://www.facebook.com/gomachan46 • https://github.com/gomachan46
今日 話したいこと
Symfony2の 良いところを 伝えます!
Symfony2というと…
• フルスタックフレームワーク
• 恐ろしく巨大
• すごく昔からある
こわそう
こわくないよ! Symfony2
今日話したいこと
• Symfony2の良いところを伝えます!
• 意外とこわくないとっても良い奴です
• 他フレームワークとの比較はしません
• その他逆にハマったところ等は懇親会でw
業務では 何をやっていたか
システムフルリプレース
システム
• 築8年
• PHP 5.3系
• symfony 1系
• 他サービスが同居
他サービスが同居
共存していることによる弊害
• 別サービスなのに影響を受ける
• 権限の適切な切り分けができない
• PeX
• デジタルギフトオンデマンドサービス
• ギフト券の取り扱い
システムフルリプレース
というわけで今日は Symfony2の 良いところを お伝えします
Symfony2の良いところ• しっかりとしたメンテナンス
• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い
• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用
• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能
Chapter.1
• しっかりとしたメンテナンスChapter.1しっかりとしたメンテナンス
こわい• 突然のサポート終了
• 突然の新バージョンリリース
• 突然の後方互換性なし
Symfony2なら こわくないよ!
Symfony2の良いところ• しっかりとしたメンテナンス
• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い
• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用
• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能
良いところ①リリースプロセスがしっかりしている
マイナーバージョンは 6ヶ月おき 5月と11月
検証
6/3
12/3
6/1
11/29
5/30
信頼と実績の安心感
スケジュールのたてやすさ
Symfony2の良いところ• しっかりとしたメンテナンス
• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い
• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用
• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能
良いところ②後方互換性への配慮が手厚い
後方互換性への配慮が手厚い
• セマンティックバージョニングの採用
• アップデートのフォローが充実
• @deprecatedアノテーションを用いたコード上での通知
• 非推奨機能を使用している場合に警告を行ってくれる
アップデートのフォローが充実
アップデートのフォローが充実
@deprecatedアノテーションを用いたコード上での通知
非推奨機能を使用している場合に警告を行ってくれる
非推奨機能を使用している場合に警告を行ってくれる
Symfony2は 円滑なアップグレードを
最重要視
しっかりとメンテナンスされていて アップデートのフォローも充実
安心して背中を預けて 開発に集中できる
Chapter.2徹底した疎結合設計
Chapter.2徹底した疎結合設計
こわい• フレームワークの敷いたレールから脱線すると途端にきつくなる
• フレームワークから受ける縛りが強くチームに合った方向に育てて行きづらい
• 依存が強くテスト時に簡単に差し替えられなくて困る
Symfony2なら こわくないよ!
Symfony2の良いところ• しっかりとしたメンテナンス
• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い
• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用
• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能
良いところ③単体利用可能なコンポーネントが集まってできている
単体利用可能なコンポーネントが集まってできている• Symfony2は小さなコンポーネント群が組み合わさって一つのフレームワークを形成している
• まさに疎結合
• 柔軟さをもって開発できる
Symfony2の良いところ• しっかりとしたメンテナンス
• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い
• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用
• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能
良いところ④自由度が高くチームに合った構成が組める
自由度が高くチームに合った構成が組める• 基本的にレールがない
• 作るもの・必要性に合わせて自由に拡張していける
• 設計をフレームワークに縛られることがない
Symfony2の良いところ• しっかりとしたメンテナンス
• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い
• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用
• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能
良いところ⑤DIコンテナの標準採用
DIコンテナの標準採用
• DIがベースにあり差し替え可能な設計にしやすい
• DIコンテナに登録するには設定ファイルに記述するだけ
DIベースの疎結合設計で柔軟
設計の自由さがあり フレームワークに振り回されない
Chapter.3便利な構造や機能
つらい
• (例えば)複数コントローラーの実行前に共通処理を行いたいからといってコピペ
• 効率の良い開発を行うためのサポートツールがない
Symfony2なら つらくないよ!
Symfony2の良いところ• しっかりとしたメンテナンス
• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い
• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用
• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能
良いところ⑥超強力で便利なEventListener
超強力で便利なEventListener
• 色々なイベントに対して処理を挟み込めるフックポイントが用意されている
• 共通処理はEventListenerにまかせて見通しの良いコードを書ける
イベント
• kernel.request
• kernel.controller
• kernel.view
• kernel.response
• …etc
リクエストされた時の IPアドレスを
ログに落としてみる
例
ログ見てみる
[2015-10-01 16:51:46] app.NOTICE: 試しにclientIpでも出してみる ip: 192.168.34.1 [] []
Symfony2の良いところ• しっかりとしたメンテナンス
• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い
• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用
• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能
良いところ⑦開発時に重宝するプロファイラー
開発時に重宝するプロファイラー
• 実行されたSQLを見れる
• explainも見れる
• 吐き出されたログも見れる
• 送信したformの内容も見れる
• …etc
DEMO
EventListenerを活用して 綺麗に共通処理を
プロファイラーを活用して 効率の良い開発を
まとめ
• しっかりとしたメンテナンス
• 徹底した疎結合設計
• 便利な構造や機能
まとめ• しっかりとしたメンテナンス
• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い
• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用
• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能
こわくない 良いところたくさんの
Symfony2で 快適で自由な開発を
こわくないよ! Symfony2