2013-05-19
■[Symfony] Symfony をしんふぉにゃん化 (2.3対応版)
2年前にかいてたこの記事のアップデートです。
Symfony2のエラーページのカスタマイズ - ぷぎがぽぎ
composerでインストールできるようになりました。
そして地味にまだリリースされていない2.3に対応すべくRC1で確認済みです。
ゆるふわ Symfony化
開発環境のエラーページ
production環境でのエラーページ
welcomeページは @tdakak さんが描いてくれたしんふぉにゃんがお出迎え
参照: https://twitter.com/tdakak/status/332021029830533120
デモページ
welcomeページ右下には日本語ドキュメントへのリンク付き
composer でしんふぉにゃん化
あなたの Symfonyプロジェクトの composer.json に以下の1行を追加し composer.phar install するだけ
"require": {
....
"symfonyan/acme-symfonyan-bundle": "dev-master"
}
AppKernel.phpでAcmeSymfonyanBundleを有効にする
if (in_array($this->getEnvironment(), array('dev', 'test'))) { .... $bundles[] = new Acme\SymfonyanBundle\AcmeSymfonyanBundle(); // <= 追加 }
symfonyanコマンドでインストール
$ ./app/console symfonyan:exception-install $ ./app/console symfonyan:welcome-install
prod環境で反映されないとかはキャッシュが原因の可能性が高いので php app/console ca:c --env=prod を試してみましょう。
2012-12-01
■[Symfony] Symfony を楽しむためのポイント - Symfony Advent Calender 2012 1日目 -
この記事は Symfony Advent Calender 2012 の1日目の記事です。
全体のカレンダーは Symfony Advent Calender 2012で見ることができます。
Symfonyの基礎
まず最初に、Symfonyをあまり知らない方のために簡単に特徴をまとめます。
Symfony はフランス Sensio Labs社 が開発するオープンソースのPHPウェブアプリケーションフレームワークソフトウェアです。 2007年にバージョン1.0が公開されて以降、大規模なサイトを含む多数のウェブサイト、E-コマースサイトで利用されてきました。2012年12月1日現在の最新版は 2.1.4 です。
日本国内では日本Symfonyユーザー会で翻訳や勉強会を行なっています。
Symfony の開発は github で開発が行われており、PHPに分類された世界中のリポジトリの中では hiphop-php の次に2番目に注目を集めているリポジトリです。
とはいえ日本語の情報をあまり見ないので、その部分もふくめて Symfony を楽しむポイントを書いて行きたいと思います。
Symfonyはモデルには無関心
SymfonyはWebアプリケーションフレームワークです。関心があるのは、コントローラとビュー *だけ* です。
あなたが開発しようとしているドメイン部分(モデル)については全くもって関心はありません。
ドメイン部分については自分の好きなように開発することができます。
他のよくあるPHPのフルスタックフレームワークはモデル部分を作成しようとすると、class User extends FrameworkModel のようにフレームワークに依存したコードになってしまったりしますが、Symfonyではそもそもモデルは関与しないので、フレームワークに依存せずに、ドメイン部分を育てていくことが自然にできます。
この部分はテストでも地味に影響してきます。たとえば、モデルにテストコードを書くことを考えてみましょう。さきほどのような extends が必須なモデルクラスのテストコードを書くことはフレームワークの基底モデルクラス(FrameworkModel)に依存しているので、本来気にしなくてもよいフレームワークのクラスをテストとの依存を何らかの方法で解決しなければなりません。
ドメイン部分をアジャリティに開発したい場合は Symfony はとても優れているとおもいます。
逆にいうと、ドメイン部分はあなたが正しく設計していかないと、簡単に廃れてしまいます。そのための知識が要求されるということになりますが、この知識はフレームワーク限定の知識ではありませんし、これからのエンジニアとして必要とされる知識なので、Symfony を使ってフレームワークに限定されないエンジニアとして必要な知識も勉強できるとも言えます。
Symfony Componentの存在
SymfonyはSymfony Component を組み合わせたフルスタックフレームワークです。Symfony Componentとは単なるライブラリ群です。
Webアプリケーションで必ず必要となるRequestやResponseをオブジェクトで扱えるようにしたHTTP Foundationや
コンソールアプリをPHPで作るときに便利なConsoleなどがあります。
自分が見ているOSSの中ではテストコードも比較的しっかり書かれつつコミュニティベースで開発されているライブラリだと思います。
実際に、Symfonyそのものではなく、Symfony Componentの一部を使って別のフレームワークを開発しているプロジェクトもあります。
その代表的なのがSilexという、RubyのSinatra風にアプリケーションをPHPで構築できるフレームワークです。
私自身もCodeIgniterの既存プロジェクト内でSymfony Componentを組み合わせて使っていたりもします。
これらのコンポーネントのドキュメントから読み始めてみるのも面白いとおもいます。
とりあえず十分すぎるドキュメント
本家の公式ドキュメントはPDFでダウンロードできるのですが900ページ以上あります。なので、ググる前にPDF内検索することで大体やりたいことを見つけることができます。
how to 的なブログが少ないのもその影響があるのかもしれません。
また、日本語訳は全然追いつけていませんが、それでも多くのドキュメントやチュートリアルがオンラインで見ることができます。
海外ではカンファレンスも多く開催されており、そのときのセッションの多くが動画で見れるようになっています。
自分自身も全部を読み切れていない充実ぶりです。
また、翻訳作業については随時募集していますので、読むだけではなくコントリビューターとしても楽しむこともできます。興味がある方は日本Symfonyユーザー会のMLに声をかえてください。
難しいと感じるかわかりやすいと感じるか
SymfonyでWebアプリケーションを開発するときに、DDD(ドメイン駆動設計)に関する知識が必要になってきます。
また、普通にDIも使うことになります。
でも、このあたりの知識が不足しているものはアプリケーションが *ただ動く* だけで、ドメイン領域を反映できていないものになり、結果として普通のテストすらも書けなくなってしまいます。
PHPは歯ブラシですが、偉大な先人たちの経験を活かした普通のWebアプリケーションをPHPでも書くことができるのです。
デザインパターンを勉強した結果、チームが「ここはシングルトンパターンで...」というだけで共通認識を持てるのと同じですよね。「Userはエンティティだから...」というだけで共通認識が持てて開発できるのですから。
覚えることは多いかもしれませんが、フレームワークを使う以上フレームワークの知識が必要なのは避けれませんし、それはどのフレームワークでも必要な初期コストです。
どうせ勉強するなら今後も自身のキャリアで活かすことができる領域について勉強していきたいですよね。Symfonyはそういったエンジニアの方が楽しめるフレームワークだと思います。
とはいえ、Symfony自体の設計でまだまだイケていない部分もありますが、そういった部分と向き合いながらSymfonyにフィードバックをしてSymfonyを進化させることをコントリビューターとして楽しむというのが究極の楽しみ方かもしれません。
2012-04-24
■[php][Symfony] 4/25(水) 20:30〜 Symfonyしゃべりば - 春ですね - をust放送
春ですねー!開発してますかー?
唐突ですが、明日夜に久しぶりにSymfonyしゃべりばUst放送をやります。
Symfonyしゃべりば - 春ですね - | Facebook
Symfonyしゃべりばとは、Symfonyのことも話ながらお酒のみながらゆるーい会話をただ流すだけのUst番組です。過去5回ほど?やってますが半年ぶりぐらいになります。
今考えいてるお題は以下の感じ
- Symfonyの最新情報
- Symfony関西勉強会はどうだったの?
- PHPカンファレンス北海道はどうだったの?
- 話題のPHPメンターズ主催の「Symfony2によるWebアプリケーション開発入門」とは?
- 待望のSymfony本発売!?
- Home | Symfony Live Paris 2012
- その他
- Packagist(Composer)って使ってます?
- Silexのちょっといい話(PHPカンファレンス関西情報)
- Symfony温泉企画
- Symfony勉強会TOKYOの企画しますか
- Symfonyハッカソン企画
今のところ、私(@brtriver)と@ganchikuが渋谷某所から飲みながらダラダラ放送する予定です。そうです。これまでのようなSkypeだけでのオンライン居酒屋とちょと違います。とはいえ、いつものようにSkypeで会話に参加もできるようにしたいし、どうせなら某所に飛び入り参加してもらってもOK。
あ、いつもは朝まで延長線で放送してたりしましたが、多分今回は2時間程度で終わるはず。多分。
というわけで、明日の夜時間がある人はいっしょに楽しみましょー!!
2011-05-26
■[php][symfony] symfony 1.4 で簡単メンテナンスモード
inspired by
- CodeIgniterで簡単メンテナンスモード - localdisk
- Pinocoで簡単メンテナンスモード - なんたらノート第三期ベータ
- Silex で簡単メンテナンスモード - ぷぎがぽぎ
- CakePHPで簡単メンテナンスモード @ php-tips
- Zend Frameworkで簡易メンテナンスモード|プログラム|Nullyのぶろぐ
流行に乗っかって symfony 1.4 でもやってみます。
メンテナンス画面を用意する
プロジェクトルート/config/unavailable.php にHTMLファイルを用意します。
拡張子はphpになっていますが、素のHTMLとして書いた方がいいです。
./config/unavailable.php
<!DOCTYPE HTML> <html lang="ja-JP"> <body> <h1>メンテナンス中</h1> </body> </html>
設定でロック機能を有効にする
標準の設定だと、このunavailable.phpを利用する機能は無効になっています。
なので、以下のようにアプリケーションに設定を書いておきます。
apps/アプリケーション名/config/settings.yml
all: check_lock: true
コマンドで切り替える
あとは、コマンドを叩くだけです。
メンテナンス画面に切り替える場合
$ ./symfony project:disable prod
タスクに渡す引数は環境名です。通常は本番環境だと思うので、標準だとprodになります。
また、環境名の後にアプリケーション名を渡せば特定のアプリケーションだけメンテナンス画面にすることもできます。
メンテナンス画面を終わる場合
$ ./symfony project:enable prod
これでunavailable.phpを呼び出さなくなります。
ドキュメントでは
あたりが参考になります。
フレームワーク側で用意されているので簡単すぎます。
この仕組みを知っているかどうかというところだけですw
時間指定でメンテナンス画面に切り替える
CakePHPのメンテナンスプラグインは時間指定できて便利だと思ったのでsymfonyで同じことを簡単に実装する方法を追記です。
といっても、タスクが用意されているのでこのタスクをコンソールから指定時間にたたいてくれるようにatコマンドを使うだけです。
$ /PATH_TO_SF_PROJECT/symfony project:disable prod |at 21:00 12/31/2011
こうしておけば、指定時間にメンテナンス画面に自動的に切り替わります。symfonyは直接関係ないですがタスクで用意されているのでできる便利機能ですね。
[追記] ドキュメントへのリンクと説明を追加しました。
[追記2] この機能を有効にするためにsettings.ymlへの設定が必要だったのを忘れていたので追記しました。Thanks to @jiskanulo
[追加3] CakePHPの場合へのリンクと指定時間にメンテナンス画面にする方法を追加
2011-04-24
■[php][Symfony2][symfony]Symfony しゃべりば(仮) #1 は 4/27(水) 22:00〜
日本Symfonyユーザー会では@hidenorigotoさんが中心となってIRC集会を不定期に開催していましたが、さらに気軽に参加できるようなことができないかということでラジオ番組のようなUstream番組として一度配信してみることにしました。
Ustream Symfonyしゃべり場(仮) (4/27)のご案内 | 日本Symfonyユーザー会
番組詳細
番組名:「Symfony しゃべりば(仮) on Ustream」
日時: 4/27(水) 22:00 ~ 23:30 (予定)
URL: http://www.ustream.tv/channel/sfbeer
ハッシュタグ: #sfbeer
話す人たち: @hidenorigoto, @HIROCAST, @shishi4tw, @brtriver
ネタ
ちょうど時期的にネタも多く
・Symfony2のβ版が出そう
・symfony1.4本がようやく出版されたよね
・そういえば日本Symfonyユーザー会ってもうすぐ1周年だよね
・symfony1.4勉強会もうすぐだよね
・Symfony2勉強会が内容濃すぎだよね
・SilexとかSismoとか何かでてきてるよね
などなど、気になるところを4人で話してみたいと思います。
参加方法
ラジオのように聞くだけでもいろいろ情報が聞けるので楽しいと思いますが、Ustreamのページからtwitterなどのアカウントでログインし、チャットに参加してみてください。できるだけ発言内容を番組内で拾いたいと思います。
また、発言された内容は「ついまる」という愛らしいガジェットがクールな発音で読み上げてくれます。
4/28 追記
無事に第1回の放送が終わりました。ちょっと飲み過ぎてしまいましたが楽しく放送できました。
MAXで35人ぐらいの方が同時視聴数だったような記憶があります。
2回目以降も企画したいと思いますのでよろしくおねがいしますー
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |






