レビュー:Eclipseとの統合を果たしたZend Studio

 本日(1月22日)Zendから、昨年レビューを掲載したZend Studioからよりいっそうの機能向上を果たしたZend Studio for Eclipseがリリースされた。

 かねてより多機能であったZend Studioではあるが、今回のリリースでは更なる高機能化が施されている。その中でも特に前面に押し出されているのが、ベースプラットフォームとしてのEclipseの採用である。Eclipseは基本的にはJava IDEではあるのだが、むしろ一種の開発用プラットフォームないしはフレームワークとして見る方がその実態に則しているかもしれない。現在200万人以上の開発者が利用しているEclipse本体はJavaをメインに記述されてはいるが、プラグインおよびモジュールの追加による機能拡張が可能であり、他の言語で使われる構文の強調表示やコード補完に対応している他、SubversionやCVS機能を組み込むこともできるからだ。そして新たなZend StudioではこうしたEclipseを利用可能となったことで、例えばPHPページ開発にはZend Studioを使用しつつ、JavaScriptやAJAXを扱う際にはAptanaのパースペクティブに切り替え、Ruby on RailsプロジェクトについてはRadRailsに切り替えるという操作が速やかに行えるようになったのである。

 私が試してみたのは後期のベータ版であったが、今回の新規リリースにおいてZendが行ったのは、従来から定評のあるZend StudioのテクノロジにEclipseのPHP Development Tools(PDT)プロジェクトを統合することであった。PDTは豊富な機能セットを備えており、今後も広範な使用がされるものと予想されているが、Zend Studioとの統合はこうしたPDTをよりいっそう拡張するための機能追加を果たしたと見ていいだろう。

zendstudio1_thumb.png
図3:パースペクティブのRemote Systemsタブ

 新たなZend Studioにて最大限に活用されているのが、Eclipseにおけるパースペクティブないしビューと呼ばれる機能である。例えば図1 の右上にある、PHP Profile、PHP Debug、PHPはアプリケーションのパースペクティブを切り替えるためのボタン群であり、これらを選択することで各種の異なる情報を表示させることができる。同じく図2 はエディタウィンドウであるが、この画面左側にはプロジェクトのファイルナビゲータおよびアウトラインが表示されている。この画面下部にあるのは、Remote Systemsタブとタスクリストおよび、コードに対するリアルタイム型のエラー/ワーニングメッセージである。このうちRemote Systemsタブ(図3)では、FTP、SSH、SFTP接続を介したファイルアクセスだけでなく、ローカルファイルのブラウジングやローカルシステムでのシェル起動も行うことができる。先の図1に戻ると、これはプロファイル情報のパースペクティブ表示であり、実行時間の内訳や実行フローといった各種の情報を確認できるようになっている。その他の有用なパースペクティブとしては、Database DevelopmentおよびSVN/CVS Repository Exploringが存在し、これらの画面からは利用したいリソースにアクセスをすることができる。

 パースペクティブはユーザ独自の変更を施すことも可能で、それをカスタムビューとして保存しておき後日再利用するオプションも用意されている。

 WYSIWYGパースペクティブについては、概ね正常に機能している。例えばメタタグをヘッダ部に追加する場合、どの位置にドロップしてもその追加場所は自動的にヘッダ末尾とされ、複数のメタタグが同一行に配置されるという状況は回避される。またZend StudioはCSSクラスを認識することができ、これらをプロパティタブに一覧してユーザが選択できるようにしている。もっとも私が試用している間、ソースビューでのドラッグ&ドロップ操作時にいくつかのトラブルに遭遇した。新規要素を既存要素の後にドロップしたところ、オープニングとクロージングタグの間ではなく、タグ中に挿入されてしまうのである。

 コード補完機能についてはバージョン5.5当時よりも反応性が向上している感じがしたが、この機能についてはPHPDocドキュメントを利用することでより有用度の高いものとすることができる。図4 はPHPDocを設定した場合の実行画面であるが、ここには、入力すべき値、関数についての説明、その戻り値といった情報を指定しておくことができるのだ。この機能を活用すると、扱う関数やパラメータの説明を別途調べ直す手間が大幅に省けるが、特にこれから新規にプロジェクトを扱うという開発者などは、その恩恵を最大限に受けられるはずだ。

zendstudio2_thumb.png
図5:Local History

 改善の余地があると感じたのは、Local History(図5)機能についてである。例えば操作の取り消し機能は、アプリケーションクラッシュ時のリカバリまでには対応していないが、ファイルを保存するごとに必ずコミットもするというユーザはまずいないであろうから、現状ではSubversionやCVSを使っていてもある程度のギャップを生じさせる危険性を指摘しなければならないだろう。なおこのLocal History機能はユーザによるファイル保存ごとにそのコピーをZend Studioのデータフォルダ中に作成しておくという仕様となっており、保存後に変更を加えた結果と以前の状態との間で、テキスト比較ないし復帰させるという処理が簡単に実行できるようになっている。もっとも、こうした比較時には構文強調表示もしてもらいたいところだが、現行のバージョンではサポートされていない。またLocal Historyの履歴中で特定の変更を検索するという機能も実装されていないようであり、変更内容はその実行日でグループ化されるだけである。

 最近のPHPプログラミングではユニットテストの機能が一般化しつつあるが、Zendもそうした機能をPHPUnitのテストケースおよびスイートの双方にて追加しており、これらテストの実行と解析用のインタフェースも整備している。ユニットテストとは、想定した複数のシナリオ下でのコード試験を自動実行するためのものである。この場合ケースおよびスイートを定義しておくと、テストする内容をユーザが個別選択するためのダイアログが表示されるようになるのだ。実際の検証作業は、必要な設定を施したテストを右クリックしてRun As -> PHPUnit Testを選択することによりPHPUnitタブが表示され、テスト中に実行ないし失敗した処理の詳細が表示されるという流れで進行していく。

 今回私はZend Studioに用意されたDebugDemoを試してみる目的で、row_color関数を使った処理を意図的に失敗させるテストを作成してみた。それが下記のテストであり、これはrow_colorに数値3を渡して得られる戻り値が‘white’であるかを検証するものであるが、数値3で実際に返されるのは‘yellow’であるため、ここでの判定は失敗することになる。

$this->assertEquals(row_color(3),'white');

 この種の問題発生時にPHPUnitからは、処理が失敗した理由がレポートされるようになっており、実際この場合も下記のように、関数の戻り値としてPHPUnitは‘white’という文字列を想定していたのに‘yellow’が返されたという内容のメッセージが出力された。

test_Row_color: Failed asserting that <string:white> is equal to <string:yellow>.

 メニューバーにあるWindowメニューからは多数の設定オプションにアクセスできるが、オプション画面上部にあるフィルタボックスを使用すれば、すべてのオプションを個別に設定する必要はないはずである。実際、ユーザによる設定変更は特に何もしなくてもソフトウェアは正常に動作してくれると考えていいだろう。

 変数、関数、クラス、インクルードの名称を変更するリファクタリングという機能が使えることは、プロジェクトの規模の大小にかかわらず、作業時間の大幅な節約をもたらしてくれる。例えば、特定のインクルードファイルを移動させたい場合にリファクタリングが行えると、移動後のファイル位置にその参照指定を変更するといった処理が簡単に実行できるようになる。なお図6 は、Zend Studioで変数名を変更する際のプレビュー画面であるが、ベータ2リリース段階においてはOutlineおよびProject Outlineタブにて要素名を右クリックしても、関数とクラスに対するリファクタリング用コマンドは表示されない。

Zend Studioを使用するためのシステム環境

 Zend StudioはデフォルトでIPポート10000をデバッグに使用するようになっている。このポート10000はWebminといったメジャーなアプリケーションも使用するため、Zend StudioとWebminとを併用する場合はどちらかのポートを変更しなければならない。またマルチプラットフォーム対応型の開発をするユーザにとって有り難いことに、現行のZend StudioはUbuntuおよびWindows XPでの正常な動作が確認されている。その他、Ubuntuのアンチエイリアシング機能も利用できるので、必要な設定さえ施せば目に優しい画面表示とすることもできる。

 消費するコンピュータリソースについても、Zend Studioは適度な範囲内に収まっている。例えばUbuntuで使用する場合のメモリ消費量は200MB以下であり、最近のコンピュータであれば特に問題なく実行できるはずだ。

 今回のレビューをする際に、私はいくつかのトラブルに遭遇した。具体的にはWindows上でのPHPDocファイル生成時にZend Studioが反応しなくなり、PHPDoc用のダイアログウィンドウが表示される前にphp-cgi.exeが実行を2度停止したというものである。他のマシンにおいてこの現象は再現されていない。またZend Studioでは、Subversionを使用していてもそれが認識されなかったり、他のIDEでは行えるワーキングコピー中のファイルを個別に開くというSubversionの機能が使えないという問題も確認している。

 総評としてZendは今回のリリースにて、以前よりかなりの完成度に達していたIDEに更なる改善を施してくれたと言っていいだろう。私が実際にZend Studio for Eclipseを使用した感想としても、従来のバージョン5.5よりも快適に操作することができた。個人ないし企業として使用するソリューションをこれから探すという場合、その候補としてZend Studioを試してみる価値は充分にあるはずである。

Peter Manisは、PHPアプリケーション開発者としての4年の活動実績があり、各種のPHP用IDEに関する豊富な使用経験を持つ。

Linux.com 原文