こわくないSymfony2 - 業務で使って気づいた7つの良いところ

Preview:

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