本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは岡林大さんで、テーマは
簡単で便利なPerl Navigator
みなさんがPerlを書くときに利用するエディタは何でしょうか。Perlのユースケースとしてサーバサイドで動く場面が多いことから、EmacsやVimを使っている人が多いのではないでしょうか。
いずれのエディタを利用するにしても、コードを書く際に文法を自動的にチェックしてくれたり、変数名や関数名を補完してくれたり、変数や関数の定義元にジャンプしてくれたりする機能があると便利です。そうした日々のコーディングを楽にしてくれる便利機能をまとめて提供してくれるのがPerl Navigatorです。
Perl Navigatorは、エディタの機能を抽象化したフレームワークであるLanguage Server[1]として実装されています。したがって、Language Serverに対応したVisual Studio Code
本稿では、Perl Navigatorの機能を網羅的に紹介します。また、開発環境に合わせた設定の勘所も解説します。エディタの操作手順やスクリーンショットはWindows版VS Codeバージョン1.
サポート範囲が広いPerl Navigator
Perl NavigatorはWindows、Mac、Linuxに対応しています。また、Perl 5.
Perl Navigatorのインストール
ではさっそく、VS CodeにPerl Navigatorをインストールしてみます。手順はシンプルです。VS Codeの拡張機能のメニューで
VS Code以外のエディタでのインストール方法はPerl NavigatorのGitHubページを参照してください。
Perl Navigatorの便利機能
ではここからは、Perl Navigatorの便利な機能を一つ一つ紹介します。
文法チェック
基本中の基本とも言うべき機能ですが、Perl Navigatorはコードの文法を自動的にチェックしてくれます。図2は、use strict:
という記述の末尾がセミコロン;
):
)
この文法チェックはperl -c
コマンドを用いたものですので、スクリプトが実際に実行されることはありません。そのため、実行に時間がかかる、もしくは破壊的挙動をするコードでも安心です。しかし、当然ですが、実行しないと発生しないエラーは検出できません。
変数や関数の定義元へのジャンプ
Perl Navigatorの目玉機能とも言えるのが定義元へのジャンプです。変数や関数にカーソルを合わせてF12キーを押すと、定義元に一発でジャンプできます。編集中のファイルの中にある変数や関数はもちろん、use
またはrequire
によってロードされているライブラリの変数や関数にもジャンプできます。
定義元にジャンプする機能はコードの生産性を著しく向上してくれます。VimやEmacsでは以前からこの機能に対応できました。しかし、とりわけWindows向けのテキストエディタでは対応しているものが少なかったり、機能を使うための下準備が別途必要だったりするなど機能の維持が簡単ではありませんでした。一方、Perl Navigatorでは特別な操作なくインストールするだけで定義元ジャンプが利用できます。
定義元候補が複数ある場合
定義元にジャンプする機能は便利な反面、いつも機能するわけではありません。プログラミングの書き方によっては定義元が取得できず機能しなかったり、定義元が1つに絞り切れなかったりすることがあります。定義元が絞れない場合は複数の候補がポップアップ表示され、そこから手動で選択するとジャンプできます。
図3が複数の定義元候補が表示されている例です。この場合は、Perl Navigatorで$c->request
の定義が判別できないため、body_
メソッドがどのクラスのものか絞り切れていません。そのため、body_
メソッドを持つKossy::Request
とPlack::Request
が候補に挙げられています。
打鍵数と誤入力を削減する自動補完
プログラミングをする際に、変数名や関数名が補完されると打鍵数が少なくなり楽です。Perl Navigatorでは、図4のように自動補完候補が提示されます。補完候補には、組込みの関数だけでなくユーザー定義による変数や関数、シンボルなどが含まれます。それに加えて、編集中のコードが依存するライブラリの中に定義された変数や関数も候補に挙がってきます。クラス名の補完にいたっては、ロード可能なクラスが漏れなく候補に挙がります。
残念ながら、今のところ関数の引数や戻り値は補完されません。しかし、Perlの関数インタフェースはより明示的な方向に改善していっているので、将来に期待して待つことにしましょう。
オブジェクトや関数などの情報表示
オブジェクトを代入した変数や関数、use
しているモジュールなどにカーソルを合わせると、図5のようにポップアップで補足情報が表示されます。たとえば、use
しているモジュールについてはモジュールファイルの絶対パスを見せてくれます。オブジェクトや関数についてもその実体を見せてくれるので、特にPerl初心者には心強い機能でしょう。
<続きの