SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
symfony開発見学ツアー+symfony 1.3 ってなんなんだー KousukeEbihara <ebihara@tejimaya.com>
仕事が忙しいと 「なんなんだー」の発表でお茶を濁すことに定評のある海老原です。
本日のテーマ 身近な OSS、symfonyの開発プロセスを見学してみる(全員向け) symfony開発の基本背景の紹介 symfony 1.3 開発の課程を紹介 氷山の一角が見えはじめたSymfony 2 について軽く触れてみる symfony 1.3 のトピックを知り、少なくとも心だけは準備をしておく(OpenPNE3系プログラマ向け)
symfony開発見学ツアー
symfonyって? Sensio Labsの CEO、Fabien Potencier氏が作った PHP フレームワーク 顧客の要求駆動でしか機能を付け加えないというポリシー 明確なメンテナンス期間の提示
symfonyの各バージョン http://www.symfony-project.org/installationで、各バージョンの違いが明確に説明されている
symfonyの各バージョン symfony 1.0 : 2007年から2010年の3年間バグ修正が続けられる旧安定版 symfony 1.1 :  1.2 への移行準備用のバージョン。PHP 5.1 以前で動く最終バージョン。2009 年 6 月までの1 年間保守がおこなわれた。セキュリティフィックスは 2010 年まで。 symfony 1.2 : フォームフレームワークや Propel 1.3 へのバージョンアップ、 Doctrine のサポートなど、  1.0 との差異が大きい。このバージョン以降、1.x はPHP 5.2 以上必須に。 symfony 1.3 :  1.2 との互換性を意識した機能改善バージョン。デフォルトの ORM が Propel から Doctrine になる。現在開発中。
symfonyプラグイン http://www.symfony-project.org/plugins/ The plugin section lists 640 symfony plugins developed by 279 contributors.
symfonyプラグイン http://www.symfony-project.org/plugins/sfFormExtraPlugin プラグインの個別のページには、 ,[object Object]
対応バージョン
ライセンス情報
開発者情報
バグ作成チケットへのリンク
Readme
ダウンロード可能なパッケージ一覧
チェンジログ
参加方法の案内が示されている
symfonyのドキュメント http://www.symfony-project.org/doc/1_2/ Practical symfony - Jobeet tutorial 1 日1時間、 24 日間でsymfony 1.2 を使ってサイトを作成するチュートリアル ブログに連載されたもの The Definitive Guide to symfony 500 ページ近くあるリファレンス symfony Forms in Action symfony 1.1 の新機能、フォームフレームワークに関するリファレンス 1, 2, 3, 4, 8, 11 章までできあがっている
symfonyのドキュメント http://www.symfony-project.org/doc/1_2/ symfony and Doctrine SymfonyでDoctrineを使用するときのリファレンス 7章まである The Cookbook Tips集(28個) TheAPIDocumentation APIドキュメント
symfonyのチュートリアル http://www.symfony-project.org/doc/1_2/ Getting Started symfonyのセットアップまでのチュートリアル 最近できた What's new? チュートリアル……? My First Project モデルから自動生成したモジュールに味付けをしていく感じで進めていくチュートリアル
symfonyのコミュニティ http://www.symfony-project.org/community で、コミュニティの動向が追える メーリングリスト symfony-users symfony-devs Wiki更新履歴 フォーラム更新履歴 Snippets更新履歴 symfonyについて言及しているブログのフィード
symfonyのコミュニティ Wiki http://trac.symfony-project.org/wiki This is the symfony community wiki. It contains user-contributed documentation, tutorials and resources. http://trac.symfony-project.org/wiki#FAQandHowtos HowToや提案などがよくポストされている
symfonyのコミュニティ Snippets http://snippets.symfony-project.org/ ユーザが投稿したTips集 コメントがつけられる たまにコアチームの人々が「これいいねえ」とか「こんなことしなくてもこうすればいいじゃん」とか言っているのを見かける
symfonyのコミュニティ コミュニティを巻き込んだイベントが催されることがある User voice(後述) 1 day = 1 ticket(後述) Askeetチュートリアル連載中の機能提案 Jobeetチュートリアル連載中のデザインコンテスト symfonyキャンプ(symfony1.1のトレーニング) プラグイン開発者の日
symfony 1.3 開発の流れ フェーズ1: Feature brainstorming user voice ページから投票を受け付け、コアチームはそれを参考に新機能を決定するhttp://symfony.uservoice.com/pages/symfony フェーズ2: Development フェーズ3: Release process 機能開発をやめ、 1.3 のリリースに向けてバグを直していく http://www.symfony-project.org/blog/2009/01/25/about-symfony-1-3より
1 day = 1 ticket 一日のわずかな時間で、コントリビュータにチケットを消化してもらうイベント ドキュメントの改善や、リリースサイクルの改善、自動テストのカバレッジ向上と、バグを直していくことでコアチームが機能開発に専念できるようにすることが目的 毎月 3 人を表彰(景品が貰える) symfony本だったり Doctrine 本だったり Amazon のギフト券だったり PHP の T シャツだったり http://www.symfony-project.org/blog/2009/07/01/symfony-community-event-1-day-1-ticketより
Symfony Components
Symfony Components Symfony 2 ではフレームワークを支える部品をSymfonyとは独立して利用できるようにする 現時点でリリース可能なコンポーネントを本体に先駆けてリリースしている それぞれのコンポーネントは、充分すぎるほどのドキュメントとテストと一緒にリリースされている 詳細はhttp://components.symfony-project.org/
symfony 1.3 ってなんなんだー
dev 環境では新しくクラスを追加してもsymfony cc をしなくてよくなった symfonyのオートローディングで見つけられなかったクラスは、sfAutoloadAgainという新しい機構によりもう一度オートロードし直して見つけてくれる dev 環境では設定ファイルの変更も即座に反映されるので、開発時にsymfony cc し忘れてハマるのはルーティングルールの変更時だけになる?(といいね)
generate:appタスクのセキュリティ対策オプションがデフォルトONに いままではescaping_strategyとcsrf_secretをgenerate:appタスク実行時に指定しなければ、 XSS と CSRF に対する防御ができなかった OpenPNE3 は最初からescaping_strategyは設定していたが、csrf_secretが OFF になっていたのは年末まで気づかなかった。危なかった
フォームウィジェットのラベルから _id が消える 自動生成されたフォームは、テーブルのフィールド名に応じて、各ウィジェットのラベル名が自動的に付加される 1.3 からは他テーブルとのリレーションに用いられる ****_id のラベルから _id が取り除かれる
フォームウィジェットのラベルから _id が消える sf 1.2 sf 1.3
使用するフォームフィールドが簡単に指定できるようになった sfForm::useFields() が追加された configure() メソッド内で以下のように記述$this->useFields(array('title', 'body', ‘file’)); 今までは、使用しないフォームフィールドをunset($this[‘id’], $this[‘member_id’], …);とかしていく必要があった この方法だと、モデル側でカラム追加があった場合に、フォームの更新が漏れていると意図しないフォームフィールド(フォームから入力させるべきでない項目など)が表示される場合があった 実際 Doctrine 化のついでにTimestampableを全モデル適用したときに困ったことになった
フォーム系クラスの親子関係が変わった sf1.2 sfForm sfFormDoctrine BaseFormDoctrine Base{Model}Form ※矢印は   だと思ってください>< {Model}Form
フォーム系クラスの親子関係が変わった sf1.3 ← symfonyに特化しないフォームクラス  (sf1.1 からだけど) sfForm ← symfonyに特化したフォームクラス  (イベント通知をおこなう) sfFormSymfony ← プロジェクトに特化したフォームクラス BaseForm ← ?  sfFormObject sfFormDoctrine BaseFormDoctrine Base{Model}Form ※矢印は   だと思ってください>< {Model}Form
フォームが(sfFormSymfonyが)新たなイベントを通知 form.post_configure コンストラクタ内で呼ばれる(sfForm::__construct() をコールした直後) form.filter_values sfForm::doBind() へのバインド前に値の前処理を書ける form.validation_error sfForm::doBind() でのバリデーションでエラーになったら呼ばれる form.method_not_found そういえば川原君が「フォームクラスに Doctrine のビヘイビアみたいな機構がほしい」とかぼやいていた気がする(ニヤニヤ)
テストが諸々改善される --only-failedを指定すると、前回失敗したテストのみ再テストする レスポンスが指定した正規表現にマッチングするかどうかテストできるようになった 携帯用HTMLなど、 XML として適切でない文書でもより正しくテストできるように ProjectConfigurationで設定することで、特定のプラグインのテストを test:* タスクから実行できるようになった
generate:project時にインストーラスクリプトを指定できるようになった --installer オプションを指定することで、タスクのコンテキストで任意の PHP スクリプトが実行できるようになった ので、他のタスクを呼んだりとかできる openpne:installをなくせるかも 何も指定しなくても、 ORM 用プラグインのインストール用スクリプトは自動実行される
generate:project時にインストーラスクリプトを指定できるようになった コマンド 実行結果 /home/co3k/ube.php

Más contenido relacionado

Similar a Introduction of symfony development process & What's symfony 1.3?

Symfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source CodeSymfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source CodeHidenori Goto
 
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaHidenori Goto
 
Symfony2 intro-20111204
Symfony2 intro-20111204Symfony2 intro-20111204
Symfony2 intro-20111204Hidenori Goto
 
EventListener使いこなし術 - Symfony勉強会#10
EventListener使いこなし術 - Symfony勉強会#10EventListener使いこなし術 - Symfony勉強会#10
EventListener使いこなし術 - Symfony勉強会#10Yuichi Okada
 
Using Symfony Templating On Symfony 1
Using Symfony Templating On Symfony 1Using Symfony Templating On Symfony 1
Using Symfony Templating On Symfony 1Kousuke Ebihara
 
20分でSymfony@OSC名古屋
20分でSymfony@OSC名古屋20分でSymfony@OSC名古屋
20分でSymfony@OSC名古屋Shingo Nakamura
 
Symfony勉強会#9 form
Symfony勉強会#9 formSymfony勉強会#9 form
Symfony勉強会#9 formYuichi Okada
 
symfony1.2最新動向 - 第二回symfony勉強会
symfony1.2最新動向 - 第二回symfony勉強会symfony1.2最新動向 - 第二回symfony勉強会
symfony1.2最新動向 - 第二回symfony勉強会tsukimiya
 
20090415 すばらしきSymfonyの世界へようこそ
20090415 すばらしきSymfonyの世界へようこそ20090415 すばらしきSymfonyの世界へようこそ
20090415 すばらしきSymfonyの世界へようこそHiromu Shioya
 
第4回Symfony2勉強会 基礎編ワークショップ.0
第4回Symfony2勉強会 基礎編ワークショップ.0第4回Symfony2勉強会 基礎編ワークショップ.0
第4回Symfony2勉強会 基礎編ワークショップ.0Yusuke Ueno
 
Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)Hidenori Goto
 

Similar a Introduction of symfony development process & What's symfony 1.3? (15)

Symfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source CodeSymfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source Code
 
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
 
Symfony2 intro-20111204
Symfony2 intro-20111204Symfony2 intro-20111204
Symfony2 intro-20111204
 
EventListener使いこなし術 - Symfony勉強会#10
EventListener使いこなし術 - Symfony勉強会#10EventListener使いこなし術 - Symfony勉強会#10
EventListener使いこなし術 - Symfony勉強会#10
 
Using Symfony Templating On Symfony 1
Using Symfony Templating On Symfony 1Using Symfony Templating On Symfony 1
Using Symfony Templating On Symfony 1
 
20分でSymfony@OSC名古屋
20分でSymfony@OSC名古屋20分でSymfony@OSC名古屋
20分でSymfony@OSC名古屋
 
Symfony勉強会#9 form
Symfony勉強会#9 formSymfony勉強会#9 form
Symfony勉強会#9 form
 
Symfony2 workshop-1
Symfony2 workshop-1Symfony2 workshop-1
Symfony2 workshop-1
 
symfony1.2最新動向 - 第二回symfony勉強会
symfony1.2最新動向 - 第二回symfony勉強会symfony1.2最新動向 - 第二回symfony勉強会
symfony1.2最新動向 - 第二回symfony勉強会
 
Symfony事例紹介
Symfony事例紹介Symfony事例紹介
Symfony事例紹介
 
Symfony2 caching
Symfony2 cachingSymfony2 caching
Symfony2 caching
 
20090415 すばらしきSymfonyの世界へようこそ
20090415 すばらしきSymfonyの世界へようこそ20090415 すばらしきSymfonyの世界へようこそ
20090415 すばらしきSymfonyの世界へようこそ
 
第4回Symfony2勉強会 基礎編ワークショップ.0
第4回Symfony2勉強会 基礎編ワークショップ.0第4回Symfony2勉強会 基礎編ワークショップ.0
第4回Symfony2勉強会 基礎編ワークショップ.0
 
Symfony tdd
Symfony tddSymfony tdd
Symfony tdd
 
Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)
 

Más de Kousuke Ebihara

お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのかお前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのかKousuke Ebihara
 
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...Kousuke Ebihara
 
Let's creating your own PHP (tejimaya version)
Let's creating your own PHP (tejimaya version)Let's creating your own PHP (tejimaya version)
Let's creating your own PHP (tejimaya version)Kousuke Ebihara
 
OAuthで気持ちのいい アクセス制御を
OAuthで気持ちのいいアクセス制御をOAuthで気持ちのいいアクセス制御を
OAuthで気持ちのいい アクセス制御をKousuke Ebihara
 
Php5.3ってなんなんだー
Php5.3ってなんなんだーPhp5.3ってなんなんだー
Php5.3ってなんなんだーKousuke Ebihara
 
ルーティングを使って シンプルなアプリケーション開発を
ルーティングを使ってシンプルなアプリケーション開発をルーティングを使ってシンプルなアプリケーション開発を
ルーティングを使って シンプルなアプリケーション開発をKousuke Ebihara
 

Más de Kousuke Ebihara (7)

お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのかお前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
 
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
 
Let's creating your own PHP (tejimaya version)
Let's creating your own PHP (tejimaya version)Let's creating your own PHP (tejimaya version)
Let's creating your own PHP (tejimaya version)
 
Hybrid Onboarding
Hybrid OnboardingHybrid Onboarding
Hybrid Onboarding
 
OAuthで気持ちのいい アクセス制御を
OAuthで気持ちのいいアクセス制御をOAuthで気持ちのいいアクセス制御を
OAuthで気持ちのいい アクセス制御を
 
Php5.3ってなんなんだー
Php5.3ってなんなんだーPhp5.3ってなんなんだー
Php5.3ってなんなんだー
 
ルーティングを使って シンプルなアプリケーション開発を
ルーティングを使ってシンプルなアプリケーション開発をルーティングを使ってシンプルなアプリケーション開発を
ルーティングを使って シンプルなアプリケーション開発を
 

Introduction of symfony development process & What's symfony 1.3?