かれこれ6~8年くらい前にLinuxサーバにSSHしてvimでJavaとJspを直書きさせられた時、地獄から開放してくれたのはEclipseはでした。
自動ビルド、コード補完、リネーム時の自動リファクタリング、関数のアウトライン、関数の呼び出し階層、バージョン管理システムとの統合、ブレークポイントで止め、ステップ単位で変数の中身が確認できるデバッグなどなど、それはもう感動ものでした。
#なんか急逝された方の思い出話みたいですが、Eclipseは健在です。
もちろん現在でもJava開発に置いては不動の地位を確立していると思います。なにせ無料ですし。

しかーし、PHPではイマイチでした。Javaとは違い、動的にincludeされる上に、絶対パス、相対パス、設定値によるパスまであるため仕方ありません。
#最近namespace機能が付きましたね
また起動までの時間、メモリ使用量も、最近のPCでは湯水のようにリソースが余っているとは言え、決して軽いとは言えません。

そこでPHP向けのもっと良いIDEは無いかと探したのですが、NetBeansはEclipseに似てるけど変える程の理由もなくてスルー。
KomodoEdit、PhpStormも何かサッパリしすぎて合わず。

MacOS界隈では有名なTextMateはWindows版が無い。
#今まで有料でしたがオープンソース化したようです

そして去年くらいからジワジワ来ていたようで、最近話題のSublimeText2を試してみました。
ダウンロードするとセットアップファイルは6MB程度、インストールしても20MB。起動も一瞬で、メモリも40MBくらいしか初期では使っていません。
基本であるコード補完できる言語数も相当なもんです。それに加えてのプラグイン的なSublime Text Packagesの数々。
なんとまあ、CakePHPからCodeigniter、jQuery、TwitterBootstrapまであるじゃないですか!その他必須であるgitや便利パッケージも揃ってます。

これだけなら別に他にもありそうなもんですが(無かったけど)、設定を変えることでViライクに使えたり、Ctrl+Pからファイル名を適当に入れるとインクリメンタルサーチしてくれ、@を入れると開いているファイルの関数一覧からのインクリメンタルサーチとなります。
パッケージのコマンド関連はCtrl+Shift+Pで操作可能、git関連もここからコマンドが叩けます。パッケージ管理のパッケージもあり、コマンドからインストール、アンインストールも可能です。
まだ触り始めたばかりですが、ショートカットも無数にあり、無論カスタマイズできますので、慣れると完全にキーボードのみで操作できるようになるでしょう。

言語仕様的に無理だった呼び出し階層というか、呼び出し元の検索もパッケージから追加できました。
Ctagsという別途windowsバイナリが必要ですが、プロジェクト内のファイルを全てスキャンしてDBでいうところのindexみたいなファイルを作成し、そこから一致するファイルを一覧表示する荒業です。

デバッグ関連はまだ触っていませんが、XDebugのパッケージはあるので、問題なさそうです。

上記のように基本的にショートカットからインクリメンタルサーチのコマンド入力で操作するので、Eclipseのように複数にウィンドウが分割されないシンプルな構成なのも好感が持てます。
サイドバーを表示し、ソースを表示しても横長の画面では大分余ると思うので、2ファイルのソースを同時表示しても良さそうです。
CakePHPならControllerとView、Modelとか同時に見えると便利な組み合わせがあると思います。

総合的にEclipseに初めて会った時依頼の衝撃で気絶しそうです。
1ライセンス$59とソコソコしますが、個人でも買える価格ですし、生産性を考えたら安いもんです。
しかも評価中の機能制限や期間制限すら無い?ようなので思う存分試せます。

盆休み中に是非いじって見てください。

Codeigniterはじめました

Diablo3で地獄の門が開いたと思ったら、仕事でも地獄の門が開きそうな今日この頃です。
まあ数百人月の案件なので私一人が頑張った程度でどうにかなるレベルではないのですが、気合を入れるために新型のMacbookAirを注文しました。
ただ欲しかっただけという気もしないでもないですが、OSの根っ子がUnixベースなのでWEB系の開発者にはWindows機よりMacOS Xのがサーバ環境と合わせやすいので開発がし易いのです。
#bootcampでwindowsとデュアルブートという選択肢もありますし
後は単純に軽くて性能が良くて、バッテリーがそこそこ持つというノートPCの基本ですね。

そんなこんなですが最近はCakePHPからは離れてCodeigniterで仕事をしています。
なんと言いますか、Codeigniterは骨組みは用意するから後は自分で好きにしてね、な感じです。
CakePHPは建売一戸建て的な、もう大概そろってますというイメージでしょうか。

シンプルで構造の理解は早く済みましたが、ヘルパーやライブラリ周りが弱く、CakePHPなら一瞬で出来るのに自分で作るハメになるパターンが多くて苦労しましたが、他のフレームワークを使うと両方の長所、短所が分かって非常に勉強になりました。
CakePHPに比べて縛りが少ないので、未だに自作フレームワーク以外は使わないという頑固なオッサン、もとい、生粋のプログラマーの方にもオススメできます。

ただCodeigniterは次バージョンからライセンス形態が代わり、商用利用が出来なくなりそうと年末から本家で揉めている最中です。
既に最新のリリースから9ヶ月以上バージョンも上がってないので、もう終息させて違う形に持っていくのか、内部で揉めているのか勝手な妄想がよぎります。

どちらにせよライセンス形態が不明瞭な状態で使い続ける訳にもいかず、既に製品から外している会社も出ているそうです。
2系を使い続けるにしてもPHP自体のバージョンが上がり、古いバージョンがサポートから外れ、保守限界が来た時にどうすんだという心配もでますね。
#丸ごと作り直すしかありませんが

今回はサイトの規模が大きく、アクセスの捌き方がシビアだったのでベンチで高速なCodeigniterが採用された経緯があります。
私が普段やっているような案件だと、どっちでも変わらないレベルの規模だったり、Memcacheなどのキャッシュ機構を使えば、同じじゃね?的な気もしているのですが、どうなんでしょうか。

CakePHPで複数のローカル開発環境を用意するには様々な方法があると思います。
Apacheで代表的なのはmod_rewriteを使って、documentrootに配置してしまう、Aliasを使う、VirtualHostを使うなどでしょうか。

CakePHPを使っていればHelperがURLを設置場所に合わせて出力してくれますが、
やはり本番に近い状態で開発やテストは行いたいものです。

そこでApacheのVirtualHostを使い設定してみます。

<VirtualHost 127.1.0.20:80>
    DocumentRoot "C:\eclipse\workspace\cakephp-project\app\webroot"
    ServerName 127.1.0.20
    ServerAlias 127.1.0.20
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</VirtualHost>

この場合にはブラウザで127.1.0.20にアクセスするとwebrootにアクセスします。

127.x.x.xはローカル・ループバック・アドレスと呼ばれるIPアドレスです。

ローカル・ループバック・アドレス(127.0.0.1)とは?

127.0.0.1~127.255.255.254

参照記事にもある通り、この範囲であれば自由に使えます。
なのでCakePHPのプロジェクトの数だけVirtualHostを追記すれば良いだけです。

IPだけだと、何だか分かりづらい。と言う場合にはhostsファイルを利用して擬似ドメインを作ることができます。

Windows7なら C:\Windows\System32\drivers\etc\hosts

127.1.0.20 app

と記述してブラウザにappでアクセスすると指定したIPを参照します。
これはローカルDNSのような役割をしていて、プロバイダから通知されているグローバルなDNSより先に参照されます。
127.0.0.1 が localhost でアクセスできる理由でもあります。

これには実在するドメインも記述できるので、本番前にテストも可能です。
ただし、終わった後に消しておかないとローカルを参照し続けるので注意が必要です。

余談ですが、hostsファイルを書き換えて本物そっくりな偽サイトに誘導し、情報を盗むようなスパイウェアやウィルスも存在するようです。