PHPプログラミングの生産性向上に寄与するZend Studioの各種機能

PHPコード用の統合開発環境(IDE)を物色しているのであれば、昨年12月に最新のバージョン5.5がリリースされたばかりのZend Studioがお勧めである。このIDEにはコードの生産性を向上させる様々な機能が満載されていると同時に、初心者プログラマでも充分に使いこなせる構成となっているからだ。

Zend StudioはJavaアプリケーションとして作られているため、Javaをサポートする任意のオペレーティングシステムで使用することができる。一般にJavaアプリケーションの動作は遅いという印象があるが、私がZend Studioを使った限り、同種のアプリケーションに比べてそれほど大きなパフォーマンス的な差異は感じられなかった。なおZend Studioのルックアンドフィールに関しては、デスクトップの調和を損なわないよう、オペレーティングシステムに合わせたテーマがデフォルトで選択されるようになっている。

Zend Studioの初回インストール時にはPHPのバージョンを指定する必要があるが、これは各自の使用頻度の高いものを選択しておけばいいはずだ。こうした指定が必要な理由は、コード補完、キーワード強調表示、ローカルデバッグなど、PHPのバージョンごとに動作が異なる機能があるためである。またこの指定をオーバーライドしてファイルごとに異なるバージョン指定をするといった操作は行えないが、PHPのバージョン指定そのものについては、DesktopタブのPreferencesダイアログで変更することができる。

Preferencesダイアログを開いてみて圧倒されるのが、Zend Studioのカスタム設定に関する膨大なオプション指定の数である。例えばEditingタブだけを見ても、タブ挿入時のサイズ、タブをスペースで置き換えるか、行末のスペースを取り除くか、ファイルフォーマットをWindows用とするかUnix用とするかなどの一般的な設定の他、コードブロックの折りたたみ、キーワードの強調表示、コードの自動補完など様々な設定オプションが並んでいる。

コードブロックの折りたたみとはプログラムの特定ブロックを非表示化する機能だが、同様の機能を有すアプリケーションの多くでは、どの部分を非表示化するかをユーザ指定することはできず、従来のものでは折りたたみ表示を行うか行わないかの一律指定しか行えなかった。これに対し最新版Zend Studioでは、どの部分を自動的に非表示化するかをユーザ指定できるようになっている。こうしたコードブロックの折りたたみ機能や、別ファイルに記述された関数定義部に直接移動する機能は、構成のよく分からないスクリプトの挙動を把握したい場合にとても重宝する機能である。

コードの可読性を高めるための機能は、その他にも用意されている。そうしたものの1つが、制御構造、引用符、カッコ類でペアとして用いられる対応キャラクタを自動的に強調表示してくれる機能である。なお強調表示の対象キャラクタはユーザ指定することができるが、こうしたキャラクタ間にあるコードを強調表示するオプションは用意されていない。

Zend Studioには、タグや制御構造などのコード入力時にカッコなどの対応キャラクタを自動挿入する機能も装備されているが、この場合の対象キャラクタもユーザ指定することが可能だ。私個人としては、引用符やHTMLタグを入力する際に対応キャラクタが勝手に挿入されるのは煩わしいと感じる方だが、カッコ類についての自動挿入は便利な機能だと思っている。

またコード補完機能については、カレントファイル(プロジェクト中のファイルおよびインクルードファイルも含む)に存在する、関数、オブジェクト、クラス、変数の表示/非表示をユーザ指定することもできる。

コード補完用のドロップダウンメニューと参照情報ウィンドウ(クリックで拡大)
1番目の図面は、Zend Studioにおけるコード補完時のスクリーンショットである。このサンプルコードにおいて$pmailはPHPMailerクラスを参照しているが、このファイル上の$pmailという記述部でコード補完機能を使うと、PHPMailerに関係するクラス、関数、変数がメニュー上に一覧されるのである。コード補完用のメニュー上では、こうしたクラスおよび関数の名前はもとより、変数と引数やそれらのデータ型も確認できるようになっている。また、関数、クラス、変数に対するドキュメンテーション作業が適切に行われていれば、ドロップダウンメニューと並んで表示されるウィンドウ上に、ドキュメンテーションから抽出された関数のパラメータや機能説明などの参照情報も表示される。なお、クラス、関数、変数の一覧については、画面左側のInspectorボックスで確認することも可能だ。

Zend Studioにおけるその他の機能的な特長としては、タブ式のファイル参照インタフェース、WSDLジェネレータ、PHP Documentorのフルサポート、強力なデバッグ機能なども挙げることができる。

Zend Studioには、特定のコードブロックを繰り返し再利用するためのテンプレート機能も用意されている。テンプレートとして保管しておいたコードをファイル上に呼び出すには、挿入すべき位置にカーソルを移動してからテンプレート名を入力してTabキーを押すだけである。またテンプレートのコード中には、仮変数を指定しておくこともできる。こうした仮変数の指定されたテンプレートを挿入すると、赤枠で囲まれたセクション中に最初の仮変数が強調表示されるので、その状態でユーザが正式な変数名を入力すると、変数名の置き換えが自動的に行われるという仕組みになっている。入力した変数名を確定するにはTabキーを押せばよく、これによりフォーカスが次のセクションに移動する。こうしたテンプレートを上手く使いこなすと、コードブロックを何度もコピーやペーストする作業を削減でき、コードスニペットを使い回す際の変数名の置き換え作業も大幅に簡単化されるはずである。

ソース管理および変更箇所の確認画面(クリックで拡大)
Zend Studioではソースのバージョン管理を行うCVS機能とSubversion(サブバージョン)機能が統合されている。例えば2番目の図の左側は、ファイルを右クリックして表示されるコンテクストメニューのスクリーンショットであるが、リポジトリからチェックアウトしたファイルについてはメニュー下端にSubversion(ないしはCVS)コマンドが表示され、変更を加えたファイルをリポジトリに反映させるCommitコマンドにアクセスできるようになっている。このCommitコマンドを実行するとダイアログが表示されるので、ログメッセージの入力およびコミット用の各種オプションを指定すればいい。なお図の右側は、SubversionのDiffコマンドによるファイルの変更箇所の確認画面である。

Zend Studioには、簡易的なデータベースブラウザおよび、登録したFTPサーバをローカルにあるハードドライブと同等の感覚で操作する機能も装備されている。接続プロトコルとしては、FTP、SFTP、FTP over SSLを選択でき、サーバの登録作業はFileメニューにあるAdd FTP Serverコマンドで実行する。ここで設定したFTPサーバはFile SystemタブのFile Managerに追加表示される。このサーバにファイルを保存する場合、FTPサーバへのログインやサーバ上の古いファイルの上書きなどはZend Studioが自動的に処理するので、ローカルのハードドライブとの違いをユーザが特に意識することはないはずである。

最後にCode Snippet(コードスニペット)ギャラリおよびファイル表示のクローンビュー機能を紹介しておこう。Zend Webサイトには開発者用のセクションが設けられており、そこでは世界各国のユーザから寄せられた各種のコードスニペットが紹介されているが、Zend Studioではスニペットギャラリを介してこのWebサイトに直接アクセスすることが可能であり、これらのスニペット群をシームレスに利用できるようになっている。ギャラリを利用するには、まずEditメニューにあるShow Snippetsを選択して、スニペットファイルの内容を更新させておく。これにより膨大なスニペットのリポジトリが取得されるので、後は各自のスクリプトにその場で挿入するなり、後日の利用に備えて保存するなりしておけばいい。

コードスニペットのギャラリおよびクローンビュー画面(クリックで拡大)
クローンビューとは、1つのファイルを複数のウィンドウ上に同時表示させる機能であり、この状態でファイルに加えた変更はすべてのウィンドウ(クローンビュー)に反映されるため、ファイル上の異なる箇所を複数参照したい場合におけるスクロール操作を大幅に削減することができる。クローンビューを作成するには、表示中のファイルのエディタウィンドウを右クリックしてClone Viewを選択すればいい。クローンビューの1つでコードの追加ないし削除を行うと、そうした変更結果は自動的に他のビューにも反映される。

Zend Studioは機能豊富なIDEというだけの存在に止まらず、クロスプラットフォームで利用可能というメリットも有している。個別的な機能についてはとても紹介しきれるものではないので、実際にアプリケーションをダウンロードして実際に体験して頂きたい。

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

NewsForge.com 原文