Laravel3とPHP教育
PHP教育にLaravelをおすすめします。(消えた記事に今だアクセスがありますので、同じ内容の記事を作成しました。)
どんな教育機関であれPHPを教える場合、長期間を費やすシチュエーションは少ないでしょう。多分、数ヶ月、長くて半年でしょう。時間が限られているわけです。
更に、PHPを素でプログラムに使うことは少なくなってきています。何らかのフレームワーク上で開発される機会が多いでしょう。実際、PHPプログラマーの採用ではどんなフレームワークが使用できるかが重要になります。それを考えると、フレームワーク無しで素のPHPだけを教えても、実用性は乏しいのです。
実際、PHPだけを覚えても、初学者には何ができるか、現状動作しているWebサービスがどの様に動作しているかを把握するのは困難です。つまり、コーディングは知っていても、実用になるものを作成できないプログラマーを輩出するだけです。
そのため、現在のPHP教育においてフレームワークを外して教えることは、いくら初心者向きであっても実務性に欠けているのです。
覚えやすいPHPフレームワークであること
将来仕事に結びつくという点で考えれば、メジャーなフレームワークが良いでしょうが、多機能である分複雑で、PHP初心者が短期間で理解できるものではありません。逆に小さすぎるフレームワークでは、全く機能が足りず、フレームワークの便利さを教えることはできません。
するとある程度機能が充実しており、かつ覚えやすものである必要があります。
CakePHPは日本で一番使用されているフレームワークでしょう。しかし、規約を覚えるまで自由に使いこなせません。短い教育機関のほとんどをその規約の理解に費やすことになるでしょう。
するとCodeigniter、FuelPHP、yiiなどが候補になるでしょう。そうしたミドルクラスのフレームワークの中で、特に学習に適しているはLaravelです。
現在、Laravelが英語圏で評価されてきているのは、記述性、可読性のよさです。これはコードの保守性をあげてくれますが、自分のコードに向き合う初心者にも利益になります。
使用するメソッド名は簡単な単語が使用されますし、多くのクラス間で共通しています。これはそのまま学習のしやすさにつながり、特に初学者には負担が軽いものです。プログラミング経験の少ない学習者にとって、まず壁になるのは英語なのです。ある程度英語の理解できる人間であれば、Laravelのメソッド名を理解できるのかとても簡単です。逆に英語が苦手な学習者にとっても、メソッドが簡単な英単語であるのは、覚える負担が少くて済みます。多くの日本人は英語に対してアレルギー的な抵抗を持っていることをお忘れなく。
必要最低限度の機能
フレームワーク自体は、PHPが持っている機能を取り込んで肥大化させない方針です。そのため、必要最低限度の機能を備えています。PHPの機能とフレームワークの機能の多くがバッティングしてしまうことは、どう使い分けるべきかという判断が必要です。PHP初心者にそれを求めるのは無理です。そうした学習上の迷いを少なくする配慮のためにもLaravelは良いでしょう。
Laravelの欠点
まず、日本語情報が少ないことです。ですが実際教えるとなると、短い期間で教える内容に絞ったテキストを用意することが多いでしょう。いちいち生徒に調査させていたのでは、時間がいくらあっても足りません。教える内容に即したテキストを用意するのであれば、これは大きな問題になりません。
使用上の欠点として、テンプレートエンジンに独自のBladeを採用しており、構文エラー時の原因が見つけづらいことが上げられます。Bladeは記述性をあげてくれるシンプルで使い良いテンプレートですが、構文をPHPに変換する場合にエラーが発生すると、慣れるまでエラーの原因を見つけづらいという欠点があります。しかし、教育の場でビューのテンプレートまで教える段階に行き着くことは少ないでしょう。ビューにはテンプレートエンジンを使用せず、通常のPHPを使用することが可能ですので、Bladeを使用せず、直接PHPでビューを記述すれば問題になりません。
日本語化
Laravelが出すエラー(例外)メッセージは4つほどあります。これを日本語化するツールを提供しております。githubで公開している開発ベース32に含まれています。PHPのエラーは日本語化できませんが、教育の場であれば、多少でもお役に立つでしょう。
シナリオ
まず、ルーティングを教えることで、URLと内部のコードを自由に結び付けられることから、教えましょう。フレームワーク使用する重要な利点です。
最初はPHPの機能をビューに直接書くことで、しばらく基本的なPHPの特性を学ばせます。
段々とビューが大きくなり、煩雑性が増したところで、ビューとコントローラー部分の分割を学ばせます。Laravelの場合、最初は無名関数を使用し、コントローラーを使用せず記述できますので、コントローラーを用意する煩雑さを避けることができます。
しばらく学習を続けると無名関数だけでは煩雑になってくると理解できるでしょう。そこで、コントローラーを使用し始めます。これで、学習者にフレームワークで一般的に使用されるMVCパターンの優位性を教えることができます。
Laravel4
Laravelは現状3.2ですが、来春あたりにはLaravel4がリリースされます。
Laravel4はテスト性の強化などが行われていますが、基本的な構文は大きく変わりません。Laravel4で新しく追加される機能は初心者に教える内容ではありません。機能追加に伴い、インストール手順や、使用準備がやや煩雑になります。
そのため、教育目的で使用されるのでしたら、安定しておりますし、Laravel3が適しているかと思われます。