ぷぎがぽぎ このページをアンテナに追加 RSSフィード

2013-05-19

[] Symfony をしんふぉにゃん化 (2.3対応版)

2年前にかいてたこの記事のアップデートです。

Symfony2のエラーページのカスタマイズ - ぷぎがぽぎ

composerでインストールできるようになりました。

そして地味にまだリリースされていない2.3に対応すべくRC1で確認済みです。

ゆるふわ Symfony化

開発環境のエラーページ

f:id:brtRiver:20130519141628p:image

production環境でのエラーページ

f:id:brtRiver:20130519141113p:image

welcomeページは @tdakak さんが描いてくれたしんふぉにゃんがお出迎え

f:id:brtRiver:20130519141112p:image

参照: https://twitter.com/tdakak/status/332021029830533120

デモページ

f:id:brtRiver:20130519141109p:image

welcomeページ右下には日本語ドキュメントへのリンク付き

f:id:brtRiver:20130519141110p:image


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 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という、RubySinatra風にアプリケーションを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

[][] 4/25(水) 20:30〜 Symfonyしゃべりば - 春ですね - をust放送

春ですねー!開発してますかー?

f:id:brtRiver:20110425015404p:image

唐突ですが、明日夜に久しぶりにSymfonyしゃべりばUst放送をやります。

Symfonyしゃべりば - 春ですね - | Facebook

Symfonyしゃべりば Ustream

Symfonyしゃべりばとは、Symfonyのことも話ながらお酒のみながらゆるーい会話をただ流すだけのUst番組です。過去5回ほど?やってますが半年ぶりぐらいになります。


今考えいてるお題は以下の感じ

今のところ、私(@brtriver)と@ganchikuが渋谷某所から飲みながらダラダラ放送する予定です。そうです。これまでのようなSkypeだけでのオンライン居酒屋とちょと違います。とはいえ、いつものようにSkypeで会話に参加もできるようにしたいし、どうせなら某所に飛び入り参加してもらってもOK。

あ、いつもは朝まで延長線で放送してたりしましたが、多分今回は2時間程度で終わるはず。多分。

というわけで、明日の夜時間がある人はいっしょに楽しみましょー!!

2011-05-26

[][] symfony 1.4 で簡単メンテナンスモード

inspired by

流行に乗っかって 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を呼び出さなくなります。

ドキュメントでは

タスク (1_4) - Symfony

あたりが参考になります。

フレームワーク側で用意されているので簡単すぎます。

この仕組みを知っているかどうかというところだけです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

[][][]Symfony しゃべりば(仮) #1 は 4/27(水) 22:00〜

f:id:brtRiver:20110425015404p:image

日本Symfonyユーザー会では@hidenorigotoさんが中心となってIRC集会を不定期に開催していましたが、さらに気軽に参加できるようなことができないかということでラジオ番組のようなUstream番組として一度配信してみることにしました。

Ustream Symfonyしゃべり場(仮) (4/27)のご案内 | 日本Symfonyユーザー会


Video streaming by Ustream

番組詳細

番組名:「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回目以降も企画したいと思いますのでよろしくおねがいしますー

2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
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 |