82
こわくないSymfony2 - 業務で使って気づいた7つの良いところ 2015/10/03 phpcon2015 株式会社VOYAGE GROUP 中西

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

Embed Size (px)

Citation preview

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

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

2015/10/03 phpcon2015

株式会社VOYAGE GROUP

中西 豪

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

自己紹介

• なかにしごう a.k.a gomachan46

• 株式会社VOYAGE GROUP エンジニア

• https://twitter.com/gomachan46 • https://www.facebook.com/gomachan46 • https://github.com/gomachan46

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

今日 話したいこと

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

Symfony2の 良いところを 伝えます!

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

Symfony2というと…

• フルスタックフレームワーク

• 恐ろしく巨大

• すごく昔からある

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

こわそう

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

こわくないよ! Symfony2

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

今日話したいこと

• Symfony2の良いところを伝えます!

• 意外とこわくないとっても良い奴です

• 他フレームワークとの比較はしません

• その他逆にハマったところ等は懇親会でw

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

業務では 何をやっていたか

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

システムフルリプレース

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

システム

• 築8年

• PHP 5.3系

• symfony 1系

• 他サービスが同居

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

他サービスが同居

Page 14: こわくないSymfony2 - 業務で使って気づいた7つの良いところ
Page 15: こわくないSymfony2 - 業務で使って気づいた7つの良いところ
Page 16: こわくないSymfony2 - 業務で使って気づいた7つの良いところ
Page 17: こわくないSymfony2 - 業務で使って気づいた7つの良いところ

共存していることによる弊害

• 別サービスなのに影響を受ける

• 権限の適切な切り分けができない

• PeX

• デジタルギフトオンデマンドサービス

• ギフト券の取り扱い

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

システムフルリプレース

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

というわけで今日は Symfony2の 良いところを お伝えします

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

Symfony2の良いところ• しっかりとしたメンテナンス

• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い

• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用

• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能

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

Chapter.1

• しっかりとしたメンテナンスChapter.1しっかりとしたメンテナンス

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

こわい• 突然のサポート終了

• 突然の新バージョンリリース

• 突然の後方互換性なし

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

Symfony2なら こわくないよ!

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

Symfony2の良いところ• しっかりとしたメンテナンス

• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い

• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用

• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能

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

良いところ①リリースプロセスがしっかりしている

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

マイナーバージョンは 6ヶ月おき 5月と11月

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

検証

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

6/3

12/3

6/1

11/29

5/30

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

信頼と実績の安心感

スケジュールのたてやすさ

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

Symfony2の良いところ• しっかりとしたメンテナンス

• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い

• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用

• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能

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

良いところ②後方互換性への配慮が手厚い

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

後方互換性への配慮が手厚い

• セマンティックバージョニングの採用

• アップデートのフォローが充実

• @deprecatedアノテーションを用いたコード上での通知

• 非推奨機能を使用している場合に警告を行ってくれる

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

アップデートのフォローが充実

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

アップデートのフォローが充実

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

@deprecatedアノテーションを用いたコード上での通知

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

非推奨機能を使用している場合に警告を行ってくれる

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

非推奨機能を使用している場合に警告を行ってくれる

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

Symfony2は 円滑なアップグレードを

最重要視

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

しっかりとメンテナンスされていて アップデートのフォローも充実

安心して背中を預けて 開発に集中できる

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

Chapter.2徹底した疎結合設計

Chapter.2徹底した疎結合設計

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

こわい• フレームワークの敷いたレールから脱線すると途端にきつくなる

• フレームワークから受ける縛りが強くチームに合った方向に育てて行きづらい

• 依存が強くテスト時に簡単に差し替えられなくて困る

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

Symfony2なら こわくないよ!

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

Symfony2の良いところ• しっかりとしたメンテナンス

• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い

• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用

• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能

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

良いところ③単体利用可能なコンポーネントが集まってできている

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

単体利用可能なコンポーネントが集まってできている• Symfony2は小さなコンポーネント群が組み合わさって一つのフレームワークを形成している

• まさに疎結合

• 柔軟さをもって開発できる

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

Symfony2の良いところ• しっかりとしたメンテナンス

• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い

• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用

• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能

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

良いところ④自由度が高くチームに合った構成が組める

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

自由度が高くチームに合った構成が組める• 基本的にレールがない

• 作るもの・必要性に合わせて自由に拡張していける

• 設計をフレームワークに縛られることがない

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

Symfony2の良いところ• しっかりとしたメンテナンス

• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い

• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用

• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能

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

良いところ⑤DIコンテナの標準採用

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

DIコンテナの標準採用

• DIがベースにあり差し替え可能な設計にしやすい

• DIコンテナに登録するには設定ファイルに記述するだけ

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

DIベースの疎結合設計で柔軟

設計の自由さがあり フレームワークに振り回されない

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

Chapter.3便利な構造や機能

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

つらい

• (例えば)複数コントローラーの実行前に共通処理を行いたいからといってコピペ

• 効率の良い開発を行うためのサポートツールがない

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

Symfony2なら つらくないよ!

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

Symfony2の良いところ• しっかりとしたメンテナンス

• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い

• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用

• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能

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

良いところ⑥超強力で便利なEventListener

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

超強力で便利なEventListener

• 色々なイベントに対して処理を挟み込めるフックポイントが用意されている

• 共通処理はEventListenerにまかせて見通しの良いコードを書ける

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

イベント

• kernel.request

• kernel.controller

• kernel.view

• kernel.response

• …etc

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

リクエストされた時の IPアドレスを

ログに落としてみる

Page 70: こわくないSymfony2 - 業務で使って気づいた7つの良いところ
Page 71: こわくないSymfony2 - 業務で使って気づいた7つの良いところ
Page 72: こわくないSymfony2 - 業務で使って気づいた7つの良いところ
Page 73: こわくないSymfony2 - 業務で使って気づいた7つの良いところ

ログ見てみる

[2015-10-01 16:51:46] app.NOTICE: 試しにclientIpでも出してみる ip: 192.168.34.1 [] []

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

Symfony2の良いところ• しっかりとしたメンテナンス

• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い

• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用

• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能

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

良いところ⑦開発時に重宝するプロファイラー

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

開発時に重宝するプロファイラー

• 実行されたSQLを見れる

• explainも見れる

• 吐き出されたログも見れる

• 送信したformの内容も見れる

• …etc

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

DEMO

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

EventListenerを活用して 綺麗に共通処理を

プロファイラーを活用して 効率の良い開発を

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

まとめ

• しっかりとしたメンテナンス

• 徹底した疎結合設計

• 便利な構造や機能

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

まとめ• しっかりとしたメンテナンス

• リリースプロセスがしっかりしている • 後方互換性への配慮が手厚い

• 徹底した疎結合設計 • 単体利用可能なコンポーネントが集まってできている • 自由度が高くチームに合った構成が組める • DIコンテナの標準採用

• 便利な構造や機能の提供 • 超強力で便利なEventListener層 • 開発時に重宝するプロファイラー機能

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

こわくない 良いところたくさんの

Symfony2で 快適で自由な開発を

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

こわくないよ! Symfony2