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

2009-05-26

[][] symfonyで開発を行うための環境構築チュートリアル

"Getting Started with symfony" is part of the official symfony documentation.

This tutorial is the best way to get started with symfony. It explains everything you need to know about symfony installation. In a matter of minutes, you will be ready to use symfony and start your next project.

Getting Started with symfony | symfony | Web PHP Framework

symfonyに、また新しいドキュメントが用意されました。

それが「Getting Started with symfony」です。

symfonyの特徴にもふれつつ、サーバー(環境)の設定から、ファイル構造や定番のコマンドについて簡単に説明されています。

symfonyを使い始めるために必要な最初のステップ部分について書かれているので、これからsymfonyを学んでみようという方や、symfonyがどういった特徴なのかを調べようとしている方にはちょうど良いのではないでしょうか。

その中でSkyepのsymfonyのチャットルームでも触れられていたsymfonyらしいなぁというところは、サーバーの設定内容(phpのバージョンや設定から、APCなどの設定の有無など)を確認するスクリプトが用意されているところです。

Then, download the symfony configuration checker script at the following URL:

http://sf-to.org/1.2/check.php

Save the script somewhere under your current web root directory.

Launch the configuration checker script from the command line:

$ php check_configuration.php

If there is a problem with your PHP current configuration, the output of the command will give you hints on what to fix and how to fix it.

You should also execute the checker from a browser and fix the issues it might discover. That's because PHP can have a distinct php.ini configuration file for these two environments, with different settings.

Getting Started with symfony | Prerequisites | symfony | Web PHP Framework

開発環境と本番環境が異なっていたりするとアプリケーションが動かなかったり、動作しない原因がアプリ側なのかサーバーの設定なのか切り分けに時間がかかったりしますが、こういった確認用スクリプトを実行すれば原因の切り分けを容易にできますしね。

2009-05-24

[][][][]CakePHPを使った事が無い人は使ってみるべき

第4回CakePHP勉強会に参加してきました。

場所を提供してくださったグリーさん、スタッフの皆様ありがとうございました。

勉強会の内容の素晴らしさについては他の人がupしてくれていますので、フレームワークについて色々思った事を独り言してみます。

PHPはフレームワークが乱立しているのではなく選択肢が多いというメリットに気づくべき

PHPは簡単なことをやるには学習コストが低い言語(?)です。

そして、Webアプリを作成するために、より楽できるようにルールを決めてくれているのがPHPのフレームワークの役割です。

よく聞かれる質問の1つに「何時間で使えるようになるの?」ってことなのですが、完全に使いこなすのはどれも時間がかかります。

しかし、とりあえず動作させるために必要な初期コストには違いがあります。

その中で初期学習コストが低いのはCakePHPです。セットアップなんていうほどの作業はFTPによるアップロードだけです。コマンドを叩くことは必須ではありませんし、最初はファイルが不足していればエラー画面に表示される指示に従ってファイルを用意すれば良いだけです。そして、何より日本語のフォーラムが活発です。また、勉強会の盛り上がりも国内では一番です。日本語の書籍が充実しているのも大きいですね。

それに対して初期学習コストが一番高いのはsymfonyだと思います。Jobeet(Askeet)というチュートリアルがありますが、24日分 = 24時間以上 という結構なボリュームがあることからもわかりますし、公式ドキュメント量ではダントツで一番多いのもsymfonyです。*1

そして、フレームワークを拡張をする場合ではCakePHPでもsymfonyでもフックポイントは用意されていますし、更に複雑なことをしようとすると悩むのは同じです。ただ、symfonyでは機能が多いのでがっつりと拡張するような状況はCakePHPよりは少なくなると思います。

個人的な感想としては、どちらのフレームワークも優れていますし、目指している方向が異なります。そのため、色々な要因によってフレームワークを選択できるのがPHPの良いところだと思っています。

とりあえずCakePHPを使ってみる

で、PHPのフレームワークでCakePHPを使った事がない人へのメッセージです。

CakePHPは簡単に導入できるフレームワークです。CakePHPしか使った事が無い人にzfやsymfonyを勧めるのは躊躇しますが、symfonyを使ったことがある場合はCakePHPを使ってみることをオススメします。

CakePHPもsymfonyもRoRの影響を少なからず受けていますし、MVCという基本的な考え方は共通なので、ほとんど苦労することはないでしょう。ヘルパーなんてメソッド名や引数が同じだったりするものもあります。また、簡単にざっくりと作れてしまうCakePHPの気楽さはsymfonyでアプリを作っていれば余計に実感できると思います。

そして、CakePHPの良い部分も悪い部分もsymfonyを知っているから見えてくる部分があります。

フレームワークに使われない

フレームワークを1つに絞ったほうが、ライブラリの再利用といった点でもメリットがあります。でも、無理に特定のフレームワークに拘ってしまったがためにフレームワークに振り回されてしまっていませんか?

単発のアンケートフォームの開発で共用サーバーでFTPしかできない。。なんて案件だとsymfonyだと面倒です。

CakePHPを知っていれば簡単に作れるのはすぐにわかります。

また、symfonyを知っていればその知識を活かしてCakePHPをより使いやすくすることができます。

たとえば、簡単にテストを行いたいのでlimeを使ったり、アプリの設定定数をphp内に書きたくないのでsfYamlを利用したり、CakePHPのfile.phpだと機能が乏しいのでsfFinderを持ってきて使いやすくしたりといったことは難しくないですからね。

サポート、コア開発体制には気をつける

PHPの全てのフレームワークはマイナーなものも含めると非常に多くあります。どれでも良いのかというと注意点もあります。

それは"長期でサポートされることが保証されているフレームワークでないと駄目"という点だと思います。

これは、Mojaviを使ってきた苦い経験から言えることですね。。

そういう意味ではCakePHP, symfony, Zend Frameworkは安心して使えるフレームワークです。

CakePHP勉強会とは直接関係のないような内容になってしまいましたが、PHPでフレームワークというのは難しいものではなく一般的なものになったんだなと改めて実感した勉強会でした。

*1:日本語の情報をあまり見ないだけです

2009-05-20

[][][]【戯れ言】symfonyCakePHPよりは大規模向けです

例えば、フレームワーク比較で良く目にする違いとして「Symfonyは大規模向け、CakePHPは中小規模向け」というのがある。これはいったい何なのだろう? よく読むと、大抵は「Symfonyはプラグイン機能があるため、大規模向け」という書き方がされている。これは本当にそうなのだろうか?

まず簡単なツッコミをさせていただくと、CakePHPは、既にプラグイン機能を装備している。Symfonyとほぼ同じように、一連機能を持った仕組みを簡単に入れたり抜いたり出来る。つまり、この定義でいけば、CakePHPは十分に大規模向けだ。

.. (略) ..

そしてプラグインは、私はむしろ逆の、中小規模向けのものと考える。何故なら、第三者の制作したものを、手っ取り早く自分のものに出来るというのが実質的なところであり、そういった用途のものは中小規模向けに書かれているものが多いからだ。

【戯れ言】あえてCakePHPをヨイショしてみる | ECWorks Blog

まず前提として、プラグインという機能はsymfonyでもCakePHPでも、大規模向けのためにある機能ではなく、再利用性を高めるための機能であり、規模は関係ないと思います。

もう1点。

symfonyのプラグインはコマンドでアップグレードなど管理が行えたり、名前空間の衝突を気にしなくてよかったり、プラグインを拡張するためのフックポイントが用意されていたりと、より複雑なことができるので、単純に機能をプラグインとして切り出したというレベル以上のことができるように標準で考慮されています。

というわけで、プラグインという機能をもつこれら2つのフレームワークは使いこなせればより開発効率を上げることができるということだと思います。

そして、symfonyでもCakePHPでも大規模開発はできます。

ただし、symfonyのほうがCakePHPよりは標準で大規模開発を考慮しています。

ここでは、その理由の1つであるディレクトリ構造の違いで説明します。

それは「アプリケーション」「モジュール」という2段階構造を持つsymfonyに対してCakePHPは「コントローラー」というフラットな構造になっている点です。

CakePHPではフラットな構造なので管理画面だけ別にしたい場合などは、標準だとCAKE_ADMINを利用するのが一般的だと思います。ただし、ファイルの置き場所は他のコントローラーと同じですし、CAKE_ADMINを使うパターンしか考慮されていないとも言えます。*1

symfonyではアプリケーションで切り分けることができるのでもっと柔軟に対応できます。

他にも比較できるポイントはあると思いますが、ちゃんと違いがありますよってことで。

ただ、symfonyでもCakePHPでもやりたいことはできます。

「正しい方を選ばないとできない。失敗だ。」なんてことはありません。

どちらを選んでも、フレームワークが提供していないことをやろうとすると苦労する点は同じです。

このネタちゃんとまとめてどこかで発表するかな。。

[追記]

id:yandodさんが以前にCakePHPとsymfonyの比較について発表したスライドがあるんでした。

どちらかのフレームワークを使った事があれば違いが分かると思いますのでオススメです。

http://puyo2.upper.jp/cake/files/20080627cakephpstudy_symfony.pdf

[さらに追記]

id:yandodさんからコメント頂きましたが、CakePHPでも設定を書けば、ディレクトリを分離させることができるそうです。*2

CakePHPでコントローラーを複数のディレクトリに整理する方法 - yandodの日記

*1:ちょっとしたアプリなら、これぐらい考慮されていれば十分でしょうけど

*2:名前の衝突など考慮しなくてはならない点もあるようですが

2009-05-16

[][]symfonyのイベント

f:id:brtRiver:20090516180921p:image

5/18にsymfony勉強会があり、イベントという機能について発表してきました。

symfonyのイベント(sfEventDispatcher)はsymfony1.1以降から利用できるsymfonyのコア部分を拡張するための手段で、1.0のころに用意されていたMixinという機能に取って代わるものです。

コアクラスが用意しているイベント発生時に、自前のメソッドを呼び出すように登録ができ*1、登録したメソッドを順次実行するのがイベントディスパッチャという機能になります。

どのようなイベントが用意されているかは - Symfonyに一覧があるので簡単に確認できます。

また、この話を聞いて「なんだObserverパターンではないか」と思われた方。正解です。

別にsymfonyだけが持っている機能というわけではなく、ごく一般的にOberserパターンとして知られている実装になります。

なので、PEARError 404を使えば同じことがPHPでできます。

って発表してたのですが、本家ブログにタイムリーな記事が!

というのも、symfony2.0で提供される機能をフレームワーク外で利用できるようにPHPのライブラリとして提供するためのサイトを作成しているようです。

Symfony Components

そして、この中にEventDispatcherがあるので、PEARを使っても良いですし、このコンポーネントを使えばsymfonyを使っていないプロジェクトでも利用可能になるようです。

たとえば、CakePHP+EventDispatcher(from symfony)なんてのも可能ですね。

そして、各ライブラリにキャラクターが用意されるようで、この記事の最初のキャラクターがDispatcherに書かれていたタコ?です。

というわけで、発表のスライドは以下で参照できます。

http://www.slideshare.net/brtriver/symfony-study-090518

スライドだけでは説明不足なところもあると思いますが、雰囲気は伝わると思います。

いつもながらディノさんありがとうございました。また、参加者の皆様おつかれさまでした。

*1:これをリスナーという

2009-05-10

[][] 久しぶりのsymfony勉強会&懇親会

symfony勉強会/懇親会を開催します。

参加費用: MAX2000円程度 (懇親会費用実費回収)

日時: 2009年5月15日(金) 19:00~22:00

events.php.gr.jp - symfony勉強会/懇親会

詳細はこれから追記されると思いますが、久しぶりのsymfony勉強会が今週末にあります。

日本国内ではCakePHPぺちぱーには大人気で押されっぱなしですが、symfonyの情報を日本語であまり見ないってことが要因の1つかと思います。

こういう機会に参加すれば経験者に直接話を聞く事ができるので、気になる方は参加されてみてはいかがでしょうか?

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