テキストエディタからPHPEclipseへ移行した決め手
PHPの開発環境について書いた前回の記事での予告通り、
今回はPHPEclipseについてご紹介したいと思います。
PHPEclipseはEclipseというIDE(統合開発環境)のPHP開発用プラグインです。
Eclipseとは、Java言語の開発ではデファクトスタンダードと
言ってもよいほど普及しているIDEです。
元々はIBMが開発していたIDEのソースコードを、
オープンソースコミュニティに寄贈したのがきっかけで
開発が始まりました。
オープンソースといっても、IBMやSunなどの大企業が
専門に開発者を割り当てて開発を支援するなど、
強力に機能強化や改善が進められています。
PHPEclipseはそのEclipseのプラグインとして開発され、こちらも
オープンソースのプロジェクトとして開発が進められています。
Eclipseのプラグインとして動作するので、Eclipseがもともと持つ
強力な開発支援機能がそのまま利用できます。
(Eclipseの各種プラグインも利用可能)
今回は、PHPEclipseが持つ様々な機能をご紹介したいと思います。
前回の記事でご紹介したアウトライン、単語補完、
デバッグ機能などもとても便利なのですが、
今回は私がテキストエディタからPHPEclipseへの移行を決めた
“決め手”となった機能をメインにご紹介します。(長文です!)
自動構文チェック機能
PHPEclipseでは、コードを保存する際に
自動でPHPの構文として正しいかのチェックが行われます。
例えば、良くあるセミコロンをコロンに間違えた!
というパターンの場合、、、
という様に、ファイルを保存(Ctrl + S)した時に、
×印で知らせてくれます。
PHPを実行した時に起こる、「Parse Error(構文エラー)」
のチェックを、エディタ上でやってくれるイメージです。
1.PHPコードを書く → 保存
2.ブラウザで動作チェック
3.Parse Error発生!
4.発生箇所をエディタでチェック&修正
が
1.PHPコードを書く → 保存
2.エラー箇所が×で表示される&修正
になり、とても効率良くコードを書けるようになります。
また、潜在的にバグじゃないの?と思われるコードも
同時にチェックしてくれます。
例えば、
こういうコードを書いたとき、($tets は $test のミスタイプです)
“初期化されていない変数が使われています”と
注意してくれます。
他にも、
returnの後のコードは実行されないので、
実行されないコードがありますよと注意が入ります。
(※PHPのNoticeエラーとは指摘する場所が異なります)
この機能がPHPEclipseの採用を決めた一番の理由です。
テキストエディタを使って開発していた当時(3年前ぐらい)、
開発していたシステム(1万行程度)をPHPEclipseに
読み込ませてみたところ、「注意」アイコンがポンポン表示され、
慌ててチェックしてみると確かにバグになる可能性がありました。
(是非一度自分のコードを読み込ませてみてください。
軽くヘコみます、、)
PEARのライブラリなどで有名なものでも、PHPEclipseに読み込ませると
バグがいくつか見つかることがよくあります。
生産性も上がり、バグ発見にもつながるこの機能を
使わない手はありません。
テンプレート機能
良く使うライブラリや構文などで、
毎回同じ様なコードを書いていませんか?
テンプレート機能を使えば、決まったパターンの
コードを呼び出すことができます。
例えば、
foreと打ってCtrl + Spaceを押すと
この様にforeach構文を呼び出せ、
Tabキーを押しながら変数名をポンポン入力していけます。
他にもfunctionやforなども当然用意されていますが、
自分用にテンプレートを追加することもできます。
EC studioでよく使うコードで、フォーム処理の構文があるのですが、
formと入力してCtrl + Spaceを押すと
と、一発でここまでコードが補完されます!
(このコードは、値の認証チェックをするフォーム処理です)
他にもこういったEC studio独自のテンプレートが多数あり、
エクスポート機能で書き出して、全スタッフで共有しています。
開発効率も上がり、コードの書き方も統一されるのでオススメです。
ローカルヒストリー機能
よく、既存コードを修正し終わった後に、
「うーん、やっぱり前の方が良かったな、、」と
思うことはありませんか?
それも、修正作業の途中までは良かったんだけど、、
みたいに思ったり。アンドゥ機能で戻しても、一度エディタを閉じてると
作業履歴が消えていたりします。
PHPEclipseには、ローカルヒストリー機能があり、
数日間のすべての保存結果を記録してくれます。
ファイルを右クリックし、「比較→ローカルヒストリー」
としてみると、
この様に保存履歴が表示され、しかも現在のコードと
差分チェックを行うことができます!
もちろん、気に入った箇所でコードをローカルヒストリーと
置換する事もできます。
定義元ジャンプ、コメント参照機能
人のコードなどを見ていると、「この関数なんだろ・・」と
定義元を探すことが良くありますよね。
その際、ファイルを検索(grep)して定義元を探したり、
ライブラリのphpファイルを検索したりすると思います。
PHPEclipseには、関数の定義元に一発でジャンプする機能があります。
関数をCtrlキーを押しながら左クリックすると、
その関数の定義元のファイルを表示し、その場所にカーソルが移動します。
同名の関数が複数ある場合などは、
こういったウィンドウが表示され、
どのファイルを開くかを選択します。
また、定義元の関数がphpDocumentor形式のコメントが書かれている場合、
関数をマウスオーバーする時に、そのコメントを表示できます。
この機能は規模の大きいチーム開発では欠かせません。
コード参照、検索の手間が大幅に削減できます。
また、phpDocumentor形式でコメントを書くモチベーションにもつながります。
その他便利機能あれこれ
[ソースコード管理システムとのシームレスな連携]
CVSやSubVersionを使っている場合、この様に
ファイルナビゲータにリビジョンの情報が表示されます。
(リビジョン番号、コミット日時、コミットしたユーザー)
最新のリビジョンから自分が変更を行った場合は
「*」のアイコンがつき、ローカルヒストリーと同様に
「比較→最新のリビジョン」でコード比較を行えます。
(最新リビジョンからどこを編集したかが一目瞭然!)
[自由自在なレイアウト]
エディタなど、”ビュー”と呼ばれる各種ウィンドウの
レイアウトを自由に調整できるのも魅力の一つです。
(ドラッグ&ドロップで位置変更ができます)
例えばこの様に、
上でPHPファイルを編集し、下でテンプレートファイルを
編集することも可能です。(←便利でオススメです!)
(同じファイルを分割して編集することもできます)
—————————————————————–
以上、まだまだ紹介しきれないのですが、
私が思うPHPEclipseの魅力をご紹介しました。
このように、IDEにはテキストエディタにはない
強力な開発支援機能が多数あります。
もし使用されたことがない方で、この記事に「おっ」と
思っていただける部分があったならば、
是非使用されてみてはいかがでしょうか。
(フィードバックいただけますと嬉しいです!)
以下、少し補足です。
PHPEclipseと同様に、PDT(PHP Developer Tool)というエディタも
EclipseのPHPプラグインとして開発されています。
PHPのメインエンジンを開発しているZend社が
開発を進めており、PHPの開発環境の標準になるのでは
と期待されています。
今回ご紹介したPHPEclipseの同様の機能を持っており、
PHPEclipseよりも軽快に動作するそうです。
ただ、現時点(2007年6月)ではバージョン0.7と開発中であり、
特に日本語の文字コード処理でまだまだバグが多く残っており、
現時点ではPHPEclipseがPHPのベスト開発環境という判断をしています。
PDTの機能が採用できるレベルになったら、
また記事としてご紹介したいと思います。
はじめまして。
とても興味深く記事を読ませていただきました。
早速書き条件での環境作成を始めたのですが
Eclipse : 3.2.1
phpeclipse : 1.1.8
JDK : 1.5.0_13
本記事に書かれているコード保管がうまく出来なくて困っています。
例えばforと入力してCtrl + Spaceを押すとfor は現れるのですが foreachが出て来ない等。。。
何か他に設定等必要なものがあるのでしょうか?
また宜しければ本記事で使用されている各ツールのバージョンを教えていただけないしょうか?
投稿者: HBK | 2007/10/17 水曜日 12:52:32
コメントありがとうございます。
私の環境は、
Eclipse:3.2.0
phpeclipse:1.1.8
JRE:1.6.0-oem
で動いていますね。
forが動いてforeachが動かない理由はよくわかりませんが、
Eclipseの
「ウィンドウ」→「設定」→「PHPeclipse Web Development」→「PHP」→「Templates」
でテンプレートの追加を行えます。
そこでforeachがあるかを確認してみてください。
もしなければ、追加すればよいかと思います。
ちなみに、下記がforeachのテンプレートコードです。
foreach ($$${data} as $$${key} => $$${val}){
${cursor}
}
※また、PDTのバージョン1が出ていましたが、
phpEclipseよりも動作が軽く完成度も高くなっていましたが、エラー検知機能が弱く、まだまだ採用には至りませんでした、、、
投稿者: Masaki | 2007/10/18 木曜日 10:59:50