Symfonyの学びかた (2014/04/19 講演資料)

  • 23
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

2014/04/19 Symfony 勉強会 #9


自己紹介

t_wada


業界での立ち位置(?)

savannah


監修/監訳した本

プログラマが知るべき97のこと

SQLアンチパターン


プログラマとして

  • Symfony 歴は 2 年くらい(フルタイムではない)
  • Symfony1 時代はほぼ知らない
  • Java, Ruby, JavaScript, elisp, PHP
  • github 上では JavaScript プログラマ?
  • 代表作は power-assert

power-assert


Why Symfony?

  • なぜ Symfony を選んだか
  • 「コードがしっかりしている」
  • メンテ方針がしっかりしている(長期サポート, 後方互換性)
  • DIベースの疎結合設計で自分でアーキテクチャを進化させやすい
  • 中長期的な生産性が高まることを期待できる

Agenda

  • Background of Symfony
  • What is Symfony?
  • How to learn Symfony?

Symfony の背景


Symfony のバックグラウンド

Symfony には三つのバックグラウンドがある

  1. Web
  2. PHP
  3. OOP

Web ── URL, HTTP, HTML(JSON)

webtechbook


PHP

パーフェクトPHP


OOP: Object Oriented Programming

アジャイルソフトウェア開発の奥義 第2版


SOLID 原則

  • Single responsibility principle
    単一責任の原則(SRP)
  • Open/closed principle
    オープン・クローズドの原則(OCP)
  • Liskov substitution principle
    リスコフの置換原則(LSP)
  • Interface segregation principle
    インターフェイス分離の原則(ISP)
  • Dependency inversion principle
    依存関係逆転の原則(DIP)

Agenda

  • Background of Symfony
  • What is Symfony?
  • How to learn Symfony?

Symfony は何者なのか


Java プログラマから見た Symfony

  • ペロッ! これは……SSH!
  • Spring (or Seasar2)
  • SpringMVC (or Struts)
  • Hibernate
  • DI がアーキテクチャの基盤
  • とてもよく似ている
  • 勝手知ったる世界
  • もちろんデメリットも知っている
  • n周目の知見を生かせるか

Rails プログラマから見た Symfony

  • (Symfony1 から見た Symfony2 でもある)
  • 構造も思想も全く異なる(Symfony1は似ていた)
  • Rails に DI は無い
  • Rails は密結合の強力さ
  • Symfony は疎結合の柔軟さ
  • それでも似ているところ
  • フルスタックフレームワーク
  • RESTful, migration, asset pipeline

Symfony is NOT opinionated

  • Symfony にはレールが無い
  • (少なくともレールが無いように見える)
  • 押しが弱い
  • 短期的な生産性も低い
  • そのかわりなんでも乗せられる
  • なんでも共通化できる
  • DDD を突き詰めるも良し
  • シンプルなパラダイムに寄せるも良し

二つの顔


≠ MVC


本当にザックリ理解すると

httpkernel


もう少し倍率を上げると

symfony-request-flow


全体像を掴むためのオススメ資料

The Traveling Symfony Circus


Agenda

  • Background of Symfony
  • What is Symfony?
  • How to learn Symfony?

Symfony の学びかた


English!


Symfony の公式ドキュメント


Symfony 情報収集


Joind.in 便利


2大難関 Component

Form Component を知るなら

Security Component を知るなら


コードを読む

  • PhpStorm, IntelliJ IDEA 超強力
  • (個人的にはこれらが無いと PHP のコードリーディングができない)
  • Type hinting と indexing の使用感は、 Java で Eclipse を使う感じに近づいている
  • Symfony のコードはドキュメントがキッチリ書かれていてテストコードもあるので、適切な道具があれば読みやすい
  • デバッグパネルを見る
  • 自分でテストを書いて動かしてみる

シンプルな物から積み上げて学ぶ


ありがとうございました

今日話したこと

  • Background of Symfony
  • What is Symfony?
  • How to learn Symfony?