LaravelはポストCodeIgniterの最有力候補なのか

CodeIgniterのライセンス変更が話題になったのが、昨年の10月のこと。あれからちょうど1年が過ぎて、最近はライセンス問題のことがあまり語られなくなった。まあ、CodeIgniterのライセンスを保有するElis Labo社がこれを決断した以上、不満のある人は黙って去って行くしかないのかもしれないが。

ところで、以前書いたブログ記事「ライセンス問題で発火したCodeIgniterとOSL3.0」の最後で挙げた、ポストCodeIgniterの候補、KohanaFuelPHPというふたつのPHPフレームワークのうち、FuelPHPがこのところ元気がいい。最近は日本語の書籍も販売され、各地で勉強会が頻繁に開かれるようになった。

一方、海の向こうのアメリカに目を向けると、FuelPHP以上に勢いのあるフレームワークがある。それは、Laravelという名のPHPフレームワークだ。

Laravelは、FuelPHPやKohanaのような、CodeIgniterの開発者がフォークして作り出されたフレームワークではない。Laravelの開発者であるTaylor Otwellは、マイクロソフトの.NETの開発に関わっていたという経歴の持ち主で、自身のブログのなかでは、CodeIgniterやFuelPHPを意識した発言も目立つが、Laravel自体の仕上がりは、CodeIgniterライクというより、現行のフレームワークのいいとこ取りという感じのようだ。

というわけで、何だか面白そうじゃないかという気がしたので、さっそくUbuntuローカル環境にインストールして遊んでみた。
Continue Reading…

ライセンス問題で発火したCodeIgniterとOSL3.0

低い学習コストと圧倒的なスピードを売りにして、このところ人気急上昇だったPHPクレームワークのCodeIgniterが、ライセンス変更問題を巡って大きく揺れている。

事の発端は、今年10月20日にニューヨークで行われたExpressionEngineとCodeIgniterのプレゼンテーションの席で、EllisLabのCEOが、CodeIgniterのライセンスをOpen Software License 3.0に変更すると発表したことから始まる。

その後の詳しい経緯については、次のサイトなどを参照していただきたい。

そもそもCodeIgniterは、オープンソースソフトウエアではあったものの、CodeIgniterライセンスという独自ライセンスを採用していた。このライセンスについて、EllisLab側は、BSD/Apacheライクなライセンスだと説明していたが、CodeIgniterの商標保護や宣伝条項があるために、正式のBSDライセンスやApacheライセンスではなかった。

今回のOSL3.0へのライセンスへの変更を決定する前にも、BSDやMITライセンスの採用が検討されたようだが、結局、この商標保護と宣伝条項があるため、最後はOSL3.0に落ち着いたということらしい。
Continue Reading…

WordPressとCodeIgniterを連携させる3つの方法

人気のPHPフレームワークCodeIgniterとWordPressを連携させるプラグインWP Code Igniterが登場した。このプラグインは、WordPressをCodeIgniterで構築されたWebアプリの一部として利用できるようにするもので、MVCアーキテクチャのなかのViewとしてWordPressが統合されるという仕組みになっているようだ。

さっそく試してみたのだが、このプラグインはまだテスト段階ということもあって、私のUbuntuローカル環境では動作しなかった。そこで、他にもWordPressとCodeIgniterを連携させる方法はないかと調べてみると、あちこちでいろいろな試みがなされているようだが、大きく分けると次の3つに分類できる。

  1. プラグインを通じた統合(WP Code Igniterの場合がこれ)
  2. テーマとfunctions.phpを利用した統合
  3. CodeIgniterのルートディレクトリ内にWordPressのフォルダを作って統合

上記の方法のうち、2番目の方法でチャレンジしている人が多かったようだが、その方法は千差万別で、使用しているCodeIgniterのバージョンも比較的古いものが多い。

CodeIgniterのViewをテーマ内から利用しようという発想は、シンプルで解り易いのだが、WordPressとCodeIgniterの両方に精通していないと実現は難しく、構築後のメンテナンスも大変そうだ。

WordPressとCodeIgniterの最も簡単な連携方法

ということで、最後に残った3番目の方法だが、これが一番原始的な方法で、ほとんど説明の必要がないほど単純明解だ。

例えば、CodeIgniterのルートディレクトリにblogという名前のフォルダを作り、そこにWordPressをインストールすれば作業はこれで終わってしまう。

唯一懸念される問題は、CodeIgniter側でWordPressをインストールしたフォルダと同名のコントローラーを作った場合だが、デフォルトの状態で使う場合は問題はない。通常、CodeIgniterでblogコントローラーを作った場合は、サイトアドレス/index.php/blogでアクセスすることになる。これに対してWordPressのフォルダへのアクセスは、サイトアドレス/blogとなるので、両者が衝突することはない。

CodeIgniterのindex.phpを消去したい場合

ただし、デフォルトの状態が気に入らないという人も当然いるわけで、SEO対策上もよろしくない。この問題については、CodeIgniterのユーザーガイドでも、「index.phpを消す方法」として紹介されいる。ルートディレクトリに次の内容の.htaccessを置けば解決する。

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

なお、この設定をした場合、WordPressをインストールしたフォルダと同名のコントローラーがCodeIgniter側にあるときは、CodeIgniterのコントローラーが優先されることになってしまうが、WordPressをインストールしたフォルダのblogをコントローラーに支配させないために、上記の.htaccessの2行めを次のように変更すれば問題は解決する。

RewriteCond $1 !^(index\.php|images|robots\.txt|blog)

本当はSeezooCMSやPyroCMSでもいいのだが

以上で、index.phpも消えてすっきりする。この方法だと、固定ページをCodeIgniterで作り、ブログはWordPressを利用するという使い方ができるだろう。番外編として、WordPressのルートディレクトリにCodeIgniterのsystemフォルダやapplicationフォルダを置くという方法もあると思うが、この場合は、WordPressの管理画面とデータベースのみを利用してサイト構築はCodeIgniterで行うことになると思う。

もちろん、最初からWordPressとCodeIgniterを連携させようなんて考えないで、「素直にCodeIgniterで構築されたSeezooCMSPyroCMSなどを使えばいいんじゃない」という考え方もあるだろう。まあ、多分それが正解だろうが、いくらCodeIgniterが気に入ったからといって、使い慣れたプラットフォームはなかなか捨てられないということもある。

また、3番目の方法なら、たぶんWordPress以外のCMSでもうまく行くと思うので、いろいろと試してみると、思いもかけない組み合わせが見つかるかもしれない。

ただし、現段階ではあくまでもお試しレベルなので、予期せぬ問題を孕んでいる可能性はある。実際のサイト構築などに応用するときは、くれぐれも自己責任でお願いしたい。