Rails 使いが FuelPHP(1.5) を使ってみた1 プロジェクト作成編

普段は Rails を主に使っていて、rails のジェネレータやマイグレーションがすばらっすぎてもう Rails 以外で開発なんてしたくなくなる身体になりつつありますが。

php のリハビリをする必要が出てきたので、最近話題の FuelPHP を使ってみる事にしました。

なぜ FuelPHP か

小耳に挟んだ話、Rails のようなジェネレータやマイグレーションをもっている、というのが魅力的でした。

以前、cakePHP や Symfony を使ってみた時も、ジェネレータのようなものはあったのですがいまいち使いこな(すほどの力もなく)せず、ゴリゴリ書いていたのですが、Rails 力のそれなりに付いた今ならできそうだと思ったからです。

なので、Rails を使ってて、もう Rails じゃないと開発なんてできない!けど php を使うことを強いられているんだ!という人が FuelPHP で幸せになれるといいなーと思ってこの記事を書きます。

ちなみに、1.5.3 を使用してみました。

セットアップ

ではまず、セットアップを始めましょう。

FuelPHP の公式を開くと、「Download x.x.x Now!」が見えるのでクリックしそうになりますが、まずは華麗にスルーして、ヘッダーメニューから「Docs」を開きます。

すると、Quick Installation の項目のコードを使って、oil コマンドをインストールします。

curl get.fuelphp.com/oil | sh

一応、シェルが何をして・どこにインストールするのかくらいは確認したほうがいいと思うので、見てみました。

6行目で、installer.sh をダウンロードして、/usr/bin/oil としてリダイレクトで保存しているようです。

installer.sh は oil コマンドとして保存され、oil create {project_name} のように使うと、github のリポジトリから fuelPHP のセットをダウンロードしてセットアップしてくれるコマンドとして働きます。

oil コマンドをアンインストールしたい場合は単純に /usr/bin/oil を削除するだけで良さそうです。

プロジェクト生成

というわけで、oil のインストールがすんだら早速コマンドを実行してプロジェクトを初期化してみます。

チュートリアル通り、blog プロジェクトを作ってみます。Rails なら rails new blog とするところを oil create blog とします。

oil create blog
cd blog

すると git の clone が開始され、もろもろのファイルがダウンロードされ、FuelPHP アプリの生成が完了します。

注意点として、Gem のインストール時にだけネット接続が必要な Rails と違って、毎回 github からクローンしてくるので、プロジェクトを生成するときはかならずネットにつながっている必要があります。

毎回そうゆうわけにもいかないという人は、oil コマンドはインストールせず、さっきスルーした Download からファイル一式の入ったアーカイブを展開することでもプロジェクトのひな形を準備できます。

oil でクローンしたプロジェクトとアーカイブを展開したプロジェクトのファイル構成に違いは無いようです(ただし比較時に github 上のソースにコミットがあったようで、ファイルに若干違いが見られました)

なので、oil コマンドを入れたくない・入れられないというひとは、アーカイブを展開しても同様の結果は得られます。

ただしインストールしない場合、プロジェクトディレクトリ内で oil コマンドを叩くときに、php oil とする必要があります。

これは、oil コマンドがカレントディレクトリに oil(プロジェクトディレクトリに入っているほう)がある場合は php oil として実行しているため、/usr/bin/oil がない場合は、php スクリプトとしてきちんと実行してあげる必要があるからです。(なんだかちょっとややこしいですね)

話がそれましたが、出来上がったら、blog/ へ入ってみます。ここで、oil refine install というコマンドを覚えましょう。

このコマンドは、fuelPHP の動作に適切なパーミッションにセットしてくれるコマンドです。

oil create {project_name} の場合は最後に実行してくれているので実行不要ですが、アーカイブ展開の場合は実行して、適切なパーミッションに変更してもらいましょう。

ディレクトリ構成

プロジェクトのルートから見てみました。*.md はマークダウン形式のライセンス周りのドキュメントなのでスキップします。

build.xml

中身を見てみましたがちょっと用途がわかりません…。

oil

先にインストールした oil とはまた違う oil スクリプトです。

さっきの oil refine で実行した oil コマンドもこのプロジェクトに入っている oil です。

最初の oil はプロジェクトを github からクローンするだけで、プロジェクト内にある oil はジェネレータやコンソールを呼び出す、rails コマンドのようなものです。

アプリを作る時に使うのはこの oil コマンドなので、実は最初にインストールした oil コマンドは必須ではないですが、入れていない場合は php oil で呼ぶ必要があります。

fuel/

アプリに必要なファイルが格納されています。Rails の app/ に当たるのが、fuel/app/ として配置されています。

docs/

FuelPHP のドキュメントが格納されています。

html 形式でオフラインですぐ確認できるので便利そうです。

public/

ドキュメントルートに当たるディレクトリです。

index.php と .htaccess がフロントコントローラーとして働き、FuelPHP を動作させます。

Apache設定

Rails なら webrick が最初から入っているので、rails server でサーバをたちあげて、localhost:3000 にアクセスすればすぐに画面を拝めるのですが、php だとそうは行かないので、Apache で public/ をドキュメントルートに設定してあげます。

XAMPP でもいいし、バーチャルホストで設定してもいいし、その設定は省略しますが、 なんとなくサブディレクトリに設置すると面倒そうなので、ドキュメントルートに接地してアクセスできるように設定しました。

もうすこし細かい条件(mod_rewrite が有効だとかなんとか)もあるんですが、Apache についての問題なので別途解決してください。

Welcomeページ

設定が済んだらアクセスしてみましょう。仮に、http://localhost/ がプロジェクトの public/ にドキュメントルートが設定されているとします。

するとどうでしょう“Welcome!” のメッセージの入った、TwitterBootstrap っぽい感じの画面が表示されればおkです。

一応ルーティングを確認しておきましょう。

{Rails.root}/config/routes.rb に当たるルーティングは fuel/app/config/routes.php です。

開くと、雰囲気でそれっぽいルートがあります。

今はドキュメントルートにアクセスしたので、

'_root_'  => 'welcome/index'

が実行されました。welcome コントローラーの index アクションが root ですね。

ふとちょっと下を見ると、

'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'),

という定義があるので、

http://localhost/hello/yourname

でアクセスすると、パラメータを使ったデモが確認できます。

ひとまずプロジェクトを生成するまでをやってみました。

oil create project_name と rails new project_name のようにプロジェクトがジェネレートできました。

Webrick のような仕組みが無いのが残念ですが、Apache のモジュールで php を組み込んでいるのだから仕方ないですよね…。

(5.4 でビルドインサーバ?が導入されたとかなんとか。これで似たようなことができるのかしら?)

こんなやり方もあるようですがなんだか面倒そうで結局取り掛かってません。.htaccess を使うとなると nginx でそのままつかえないし。

一度セットアップすると便利になるかもしれませんが。

ディレクトリ構成こそ Rails とは似ても似つきませんが、MVC フレームワークなので、それほど違いはない…と期待しつつ、次の記事では実装を開始していきます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする