Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

3,568 views

Published on

10/03に開催されたPHPカンファレンス2015にて登壇した際に発表したものです。

動画: https://www.youtube.com/watch?v=CqMILKp3Ens&feature=youtu.be&t=23m50s

===

みなさんSymfony2使ってますか?

初めてのリリースから4年が経過し、2つ目のLTSバージョンとなるSymfony2.7も今年リリースされ、ますます注目が高まっています。

私はSymfony1系で稼働していたシステムの一部を切り出しSymfony2でゼロから構築したり、新規サービスをSymfony2で構築したりとそれなりに使っています。

このセッションでは実際に業務で使ってきて良いなと感じたところを、初心者の方でも「便利そうだな」と思ってもらえるように紹介していきたいと思います。

Published in: Technology
  • Be the first to comment

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

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

×