最近話題のPHPフレームワーク「FuelPHP」を試してみました記念でエントリー。

私は、ずっと素のPHPか、CakePHPを利用してWebアプリやらサイトやらを作っていたわけなのですが、結構重めのサイトを作る機会が増え、さらにGoogleがサイトの表示速度がSEOに影響すると明言したこともあり、Webアプリ・サイト側の軽量化に取り組んでいました。

CakePHPは、1.3から利用していて、2.0になってだいぶパフォーマンスが改善したのですが、それにしてもやっぱり遅くて、速度の改善ばかりに時間をとられ、機能追加できないわ、イライラするわでした。そんな中、いくつかのアプリが、ちょうどリファクタリングの時期かなとも思っていたので、FuelPHPを試してみた次第です。

試してみた感じ:CakePHPからの移行について

CakePHPとは違うなと感じさせられる反面、MVCモデルという基本構造は同じなので、CakePHPで得た理解が役に立ちます。とはいえ、CakePHPで当然だったことが当然じゃなかったりもして、調べるのに時間を食ってしまうこともあります。

下で紹介している書籍2冊を読みつつ、実際に弄ってみて、全体をおぼろげながら理解してみると、「あぁ、そういうことだったんだ」と納得することが多いです。その段階にいたって、改めて考えると、全体として構成が素直だなと感じることが多いです。

素直なのは理解もしやすいですし、実行速度・開発速度の両方に帰依しているということでしょうか。

FuelPHPの簡単な感想

まず速いですね。これがホントに素敵。余計なものが一切ないという印象。まだやっと全体の構成がつかめた程度なので、なんとも言えないところがあるのですが、全体を理解してみた感じ、とても素直な構成で、ところどころ気が利いてるという感じ。

例えば、CakePHPですとアプリ部分(ROOT/App)とリソース部分(ROOT/App/webroot)が一つのディレクトリ下にあり、オープンなサーバーに設置する際には、public_html以下にwebroot、public_htmlと同位もしくは上位ディレクトリにAppフォルダをとするには、いくつかの手順を踏まなければなりません。まぁ、そんなに大変ではないので別にどっちでもいいのですが、FuelPHPは、最初からアプリ部分とリソース部分が分かれていたりします。合理的でシンプルです。

ただ、やっぱりドキュメントの多さや機能の豊富さでは、Cakeに軍配が上がります。これはしょうがないところなのですが、CakePHPにあったCryptable.Behavior的なものが無いのが困ったところです。ormの設定でなんとか簡単に出来ればよいのですが、そこまではまだ試せてない感じです。

FuelPHPの使い所は?

まぁ、まだ堪能してるわけではないのですが、簡単なアプリから中規模アプリなら、CakePHPよりFuelPHPの方が断然いいと思います。なにより速いので、安いサーバーでもストレスなく動くというのがとても良いです。

MVCの使い方についても、CakePHPを使っている時には、最初結構フリーダムな感じで「お前らのMVCはダメだ」的なエントリーを見て考えなおして変えて…みたいなことをしたりもしていましたが、FuelPHPを利用していると、またMVCモデルというものに対して考えるきっかけになりそうです。

参考になったスライド

最近、僕がハマったFuelPHPの紹介 from Naoto Mawatari

参考になった書籍

以下の2つの書籍がとても参考になりました。というか、他に書籍あるんでしょうか?

FuelPHP入門
FuelPHP入門
posted with amazlet at 13.02.07
早川 聖司
ソーテック社
売り上げランキング: 25,016

満を持して発売された紙の書籍。入門の名にふさわしくインストールから利用まで、とてもわかり易く書かれている。oilコマンドの使い方なども、書いてある通りやってみて「なるほど」と思えることがあって、FuelPHPの便利さが実感できた。CakePHPのコンソールを全然使ってなかったので、ちゃんと使ってみようと思ったりもした。

ただ、Controller_Templateの使い方が、この本やネットだとよくわからず、下の電子書籍も読んでみた。

はじめてのフレームワークとしてのFuelPHP
鈴木憲治
達人出版会
発行日: 2012-07-02
対応フォーマット: EPUB, PDF

上記紙の書籍を読んで、いろいろいじくってからこの電子書籍を読むと、するすると頭に入ってきた。Controller_Templateの所はこっちのほうが記載が豊富で、やっと理解(ちゃんと動作させることが)できた。まぁ、元ソースを読めという話でもあり、ここらへんは楽をしたい私の性分のせい。それ以外の記述も充実しており、購入者限定のメーリングリストなどもあるようなので、気になる方は上記のリンクから「達人出版会」のページへ。(決済はPaypalのみ。)

最近、もっぱらHTML/CSS/JS/PHPを利用して、サイトを作成したり、リニューアルしたり、管理画面を作ったり、コンテンツを作ったりという仕事が多いです。仕事場でも家でもそんな仕事をしています。

そんな中で、ある程度の量のWebコンテンツページを作成していく際に、効率的に作成できる思考過程を簡単にまとめたいと思います。とはいえ、あくまで自分用です。

1.最初の段階

最初からいきなり描き始めて良いのは、1ページで完結するようなコンテンツくらい。私の場合、それ以上の分量のコンテンツだと破綻したり取りこぼしたりする。

まずは、漠然としたイメージを作る。そして、完成形というか、どの程度のレベルのコンテンツを作るのかを検討する。
ここでいう「レベル」は、「プロが作成した集客(CV)を前提にしたコンテンツ」とか「ブログの閲覧数を増やしたいコンテンツ」とか、そういうコンテンツに必要とされる完成度を指す。

この段階を満たすためには、ライバルサイトがあるならまずそれらを片っ端から参照する。また書籍などがあれば、それらも合わせて通読していく。

2.コンテンツに何が必要かを決める

全体像を設定する。目的とレベルが明確になっていて、そのコンテンツについてそれなりの知識がついたら、そのコンテンツの目的に合わせて、「これについての記述は必要か不要か」の区別が付くはず。

そこで、自分のサイトコンテンツに、「何が必要か」をまずピックアップしてまとめる。書籍で言うと、目次を最初に作るイメージ。

こうすることで、サイトコンテンツの全体像を把握できるし、完成形をより具体的にイメージすることが出来る。
この段階では個別のコンテンツについて深くは突っ込んで書かない。書いてもポイントだけ。

この段階で内容を書かずに、「何を書くのかを明確にした上で、全体像を把握しているという状態」を作り出すのが重要。この状態でしばらく通勤時間やトイレなどの時間に考えたりすることで、思考がより深く「ポイント」となる部分をえぐり出せる。

3.コンテンツを埋める

前回までの段階で作成した目次・ポイントまとめに従って、個別のコンテンツを埋めていく。

という感じで進めていくと、私の場合、効率的かつ頭のメモリーと時間を無駄に使うこと無く作成ができます。

今年は、二つの言語をマスターしたいと思っている。それは、「C言語」と「英語」である。
英語は、学生時代一番得意な科目だったが、大学に入ると同時にほとんど目にしなくなってしまった。英語の勉強は好きだったが、それ以上に専門科目の勉強に時間を割いていたので、英語には時間を割けなかった。

いつでも勉強できる、と思っていたこともある。そして、その「いつ」は、今年にしようと思っている。今年は、自分の専門科目ではない部分の勉強を一気にやろうと思っているので、その一環である。

このソフトで、とりあえず楽しみながら英語の感覚を思い出していきたいと思っている。いきなり英語力判定テストを受けてみたが、TOEIC500点レベルらしい。こんなもんか。単語力が著しく落ちているようなので、単語力強化をしばらく行う。
私は、学生時代堀江さんみたいに単語力を武器にするタイプではなく、文法その他総合力で勝負するタイプだった。
というのも、「暗記=めんどくさい」というタイプで、めんどくさいことは極力したくなかったというのがある。ついでにいうと、入る大学はどこでもよかったというのもある。(今となっては少し後悔しているが)

ただ、ちょいちょい英語にふれてきた身としては、やはり単語力がものを言う場面はかなり多い。単語力は重要だ。すくなくとも、上記DSソフトに収録されている2000語くらいは完璧にしたいと思っている。また、「地球はlotateしている」などの記憶法も活用し、どんどん単語力をつけていきたい。

プログラミングを趣味にしようと奮闘中。
基礎の基礎らしいので、分かっていることもあるだろうが、安かったのと、併行読書には違う分野が良いという指摘もあったので試してみる。

1/9読了

読了した。全体的に文系にもおすすめできるプログラミング入門本だと感じた。理解しづらい概念も、なるべくイメージしやすく書かれているように思う。いわゆる専門用語も極力使用しないようにも配慮されているようだ。

それでいて、プログラミングに必要と思われることのほとんどを全体的に押さえて解説してくれている。基本的にプログラミング言語の解説書は、CUIプログラミングの解説が主になるが、CUIでのプログラミングを学んでいくと、「これがどうやってGUIのプログラムになるのだろう?」という疑問が常に頭にあったが、この本ですっきりした。

というわけで、とりあえずプログラミングの全体像を把握したいという場合には最適な書と思える。全体的に平易でわかりづらい・イメージしづらい部分も見あたらなかった。ただ、「たとえばデータベースをイメージするとわかりやすいだろうか」というような例えが稀にでてきており、こういう部分が分かりづらい人もいるだろう。(こういう部分は稀だったので、そういう部分が不安な人にもお勧めできる本である)

次は、以下の本でC言語を学ぶ予定。すでに読書・演習中。
いきなり、C言語?という人もいるかもしれないが、私はC言語と決めていた。PerlやRuby、Java、C#などの選択肢もあるが、私はC言語を学びたい。