IntelephenseでPHP開発を効率化|LSPサーバーの導入から実践設定まで
PHPプロジェクトの規模が大きくなるほど、コード補完や定義ジャンプの精度が生産性を左右します。Language Server Protocol(LSP)に対応したサーバーを導入すれば、エディタを問わずこれらの機能を高品質に利用できます。PHP向けLSPサーバーの中でも、Intelephenseはインデックス速度・補完精度・メモリ効率の面で多くの開発者に支持されています。 ここでは、Intelephenseの基本的な仕組みから、主要エディタごとの導入手順、無料版とPremium版の機能差、大規模プロジェクトでのパフォーマンスチューニングまで、実務で必要になる情報をまとめています。 LSP(Language Server Protocol)の基本的な仕組み LSPは、Microsoftが2016年に策定したエディタと言語解析エンジン間の通信規格です。従来はエディタごとに言語サポートプラグインを個別開発する必要がありましたが、LSPの登場により「1つの言語サーバーを作れば、あらゆるLSP対応エディタで利用できる」というエコシステムが成立しました。 クライアント・サーバーモデル LSPはJSON-RPCベースのプロトコルで、以下の流れで動作します。 エディタ(LSPクライアント) がファイルを開くと、言語サーバープロセスを起動 言語サーバー がプロジェクト全体をインデックスし、構文解析・型解析を実行 エディタからの要求(補完・定義ジャンプ・ホバー情報など)に対して、サーバーが解析結果を返却 ファイル変更時はインクリメンタルに差分解析を実行 この仕組みにより、VS Code・Neovim・Emacs・Sublime Textなど、LSPクライアント機能を持つエディタであれば同一の言語サーバーを共有できます。 LSPが提供する主な機能 機能カテゴリ 具体的な機能 LSPメソッド名 コード補完 クラス名・メソッド・変数の候補表示 textDocument/completion 定義ジャンプ 関数やクラスの定義元へ移動 textDocument/definition ホバー情報 カーソル位置のドキュメント表示 textDocument/hover 診断(リント) 構文エラー・型不一致の検出 textDocument/publishDiagnostics リネーム シンボルの一括名前変更 textDocument/rename 参照検索 シンボルの使用箇所一覧 textDocument/references コードアクション クイックフィックス・リファクタリング textDocument/codeAction フォーマット コード整形 textDocument/formatting Intelephenseの特徴と他のPHP LSPサーバーとの違い PHP向けのLSPサーバーは複数存在しますが、それぞれ設計思想や得意分野が異なります。 PHP向け主要LSPサーバーの比較 比較項目 Intelephense Phpactor PHP Language Server (felixfbecker) 実装言語 TypeScript(Node.js) PHP PHP 対応PHPバージョン 5.3以降(8.5対応済み) 8.1以上 7.0以上(8.x未対応) インデックス速度 高速(独自エンジン) 中程度 低速 メモリ使用量 効率的 中程度 大 コード補完精度 高い(型推論が強力) 高い(リフレクション活用) 基本的 リファクタリング Premium版で対応 標準搭載(強力) 限定的 開発状況 活発にメンテナンス中 活発にメンテナンス中 メンテナンス停止 ライセンス 無料 / Premium(有料) MIT(完全無料) MIT Intelephenseの強みは、TypeScriptで実装されているためNode.js上で軽快に動作する点と、PHPStubsを活用した高精度な型推論です。大規模なコードベースでも安定した補完精度を維持できます。 ...