(cache) テキストエディタからPHPEclipseへ移行した決め手 - EC studio 技術ブログ

2007年06月20日

テキストエディタから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が補完されたコード

この様にforeach構文を呼び出せ、
Tabキーを押しながら変数名をポンポン入力していけます。
他にもfunctionやforなども当然用意されていますが、
自分用にテンプレートを追加することもできます。

EC studioでよく使うコードで、フォーム処理の構文があるのですが、

formと入力する

formと入力してCtrl + Spaceを押すと

formが補完されたコード

と、一発でここまでコードが補完されます!
(このコードは、値の認証チェックをするフォーム処理です)
他にもこういったEC studio独自のテンプレートが多数あり、
エクスポート機能で書き出して、全スタッフで共有しています。

開発効率も上がり、コードの書き方も統一されるのでオススメです。

ローカルヒストリー機能

よく、既存コードを修正し終わった後に、
「うーん、やっぱり前の方が良かったな、、」と
思うことはありませんか?
それも、修正作業の途中までは良かったんだけど、、
みたいに思ったり。アンドゥ機能で戻しても、一度エディタを閉じてると
作業履歴が消えていたりします。

PHPEclipseには、ローカルヒストリー機能があり、
数日間のすべての保存結果を記録してくれます。

ファイルを右クリックし、「比較→ローカルヒストリー」
としてみると、

ローカルヒストリー
(クリックすると拡大)

この様に保存履歴が表示され、しかも現在のコードと
差分チェック
を行うことができます!
もちろん、気に入った箇所でコードをローカルヒストリーと
置換する事もできます。

定義元ジャンプ、コメント参照機能

人のコードなどを見ていると、「この関数なんだろ・・」と
定義元を探すことが良くありますよね。
その際、ファイルを検索(grep)して定義元を探したり、
ライブラリのphpファイルを検索したりすると思います。

PHPEclipseには、関数の定義元に一発でジャンプする機能があります。

関数名にCtrl + マウスオーバー

関数をCtrlキーを押しながら左クリックすると、
その関数の定義元のファイルを表示し、その場所にカーソルが移動します。

同名の関数が複数ある場合などは、

関数の定義元のファイルを表示
(クリックすると拡大)

こういったウィンドウが表示され、
どのファイルを開くかを選択します。
また、定義元の関数がphpDocumentor形式のコメントが書かれている場合、
関数をマウスオーバーする時に、そのコメントを表示できます。

関数・メソッドのコメントを表示

この機能は規模の大きいチーム開発では欠かせません。
コード参照、検索の手間が大幅に削減できます。
また、phpDocumentor形式でコメントを書くモチベーションにもつながります。

その他便利機能あれこれ

[ソースコード管理システムとのシームレスな連携]

CVSSubVersionを使っている場合、この様に

ナビゲータにリビジョン、コミット者が表示

ファイルナビゲータにリビジョンの情報が表示されます。
(リビジョン番号、コミット日時、コミットしたユーザー)
最新のリビジョンから自分が変更を行った場合は
「*」のアイコンがつき、ローカルヒストリーと同様に
「比較→最新のリビジョン」でコード比較を行えます。
(最新リビジョンからどこを編集したかが一目瞭然!)

[自由自在なレイアウト]

エディタなど、”ビュー”と呼ばれる各種ウィンドウの
レイアウトを自由に調整できるのも魅力の一つです。
(ドラッグ&ドロップで位置変更ができます)

例えばこの様に、

上にphp、下にテンプレートで編集
(クリックすると拡大)

上でPHPファイルを編集し、下でテンプレートファイルを
編集することも可能です。(←便利でオススメです!)
(同じファイルを分割して編集することもできます)

—————————————————————–

以上、まだまだ紹介しきれないのですが、
私が思うPHPEclipseの魅力をご紹介しました。
このように、IDEにはテキストエディタにはない
強力な開発支援機能が多数あります。

もし使用されたことがない方で、この記事に「おっ」と
思っていただける部分があったならば、
是非使用されてみてはいかがでしょうか。
(フィードバックいただけますと嬉しいです!)

以下、少し補足です。

PHPEclipseと同様に、PDT(PHP Developer Tool)というエディタも
EclipseのPHPプラグインとして開発されています。
PHPのメインエンジンを開発しているZend社
開発を進めており、PHPの開発環境の標準になるのでは
と期待されています。

今回ご紹介したPHPEclipseの同様の機能を持っており、
PHPEclipseよりも軽快に動作するそうです。
ただ、現時点(2007年6月)ではバージョン0.7と開発中であり、
特に日本語の文字コード処理でまだまだバグが多く残っており、
現時点ではPHPEclipseがPHPのベスト開発環境という判断をしています。

PDTの機能が採用できるレベルになったら、
また記事としてご紹介したいと思います。


関連した記事:

コメント (2)

はじめまして。
とても興味深く記事を読ませていただきました。
早速書き条件での環境作成を始めたのですが
Eclipse : 3.2.1
phpeclipse : 1.1.8
JDK : 1.5.0_13
本記事に書かれているコード保管がうまく出来なくて困っています。
例えばforと入力してCtrl + Spaceを押すとfor は現れるのですが foreachが出て来ない等。。。
何か他に設定等必要なものがあるのでしょうか?
また宜しければ本記事で使用されている各ツールのバージョンを教えていただけないしょうか?

コメントありがとうございます。

私の環境は、
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よりも動作が軽く完成度も高くなっていましたが、エラー検知機能が弱く、まだまだ採用には至りませんでした、、、

コメントを投稿