PhpactorをLSPサーバーとして活用する方法 -- 導入からエディタ設定・性能改善まで

PHP開発でコード補完や定義ジャンプを実現するには、エディタとLanguage Server(言語サーバー)の連携が不可欠です。Phpactorは、PHP自体で実装されたオープンソースのLSPサーバーであり、MIT ライセンスのもと無料で全機能を利用できます。Neovim、VSCode、Emacs、Helix、Zedなど主要エディタの大半に対応しており、PHP 8.1以上の環境で動作します。 この記事では、Phpactorが備えるLSP機能の全容、各エディタでのセットアップ手順、設定ファイルの書き方、大規模コードベースでの速度改善策、そしてIntelephenseとの機能的な違いを整理します。 LSPとPhpactorの位置づけ Language Server Protocol(LSP)は、エディタ(クライアント)と言語サーバーがJSON-RPCで通信する標準プロトコルです。Microsoftが策定し、現在は多くの言語・エディタが採用しています。PHP向けのLSPサーバーとしては、商用のIntelephenseとオープンソースのPhpactorが二大選択肢です。 Phpactorの開発は Daniel Leech 氏(GitHub: dantleech)を中心に進められており、GitHub上では1,800以上のスターと100名超のコントリビューターを擁しています。リポジトリは phpactor/phpactor で公開されています。2025年12月リリースのバージョン 2025.12.21.1 が最新安定版です(2026年1月10日公開)。 Phpactorが対応するLSP機能 Phpactorは多くのLSPメソッドを実装しています。以下に対応状況をまとめます。 対応済み機能 機能カテゴリ 対応内容 コード補完 クラス名・メソッド・プロパティの補完、use文の自動挿入 ホバー情報 カーソル位置のシンボルに関する型情報・ドキュメント表示 シグネチャヘルプ 関数・メソッド呼び出し時の引数ヒント 定義ジャンプ Goto Declaration / Goto Type / Goto Implementation 参照検索 クラス・関数・メンバーアクセス(静的・インスタンス)の参照一覧 ドキュメントハイライト 同一シンボルの出現箇所をハイライト ワークスペースシンボル クラス・関数・定数のプロジェクト横断検索 ドキュメントシンボル 現在のファイル内のシンボル一覧 選択範囲 Selection Range によるスマートな範囲選択 コードアクション クイックフィックス・リファクタリング操作 フォーマット php-cs-fixer 連携によるコード整形 リネーム 変数・メンバーの名前変更(クラス名・名前空間のリネームは今後対応予定) 診断 PHP構文チェック + PHPStan / Psalm / php-cs-fixer 連携 未対応の機能 Code Lens、Document Link、Document Color、Color Presentation、Range Formatting、Folding Range は現時点で未実装です。 ...

2026年2月9日 · 3 分 · 9238 文字 · uiuifree

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を活用した高精度な型推論です。大規模なコードベースでも安定した補完精度を維持できます。 ...

2026年2月9日 · 4 分 · 10643 文字 · uiuifree

TypeScript向けLSP Serverの選び方と導入ガイド

LSP(Language Server Protocol)の仕組みと背景 テキストエディタやIDEで「定義ジャンプ」「補完」「リネーム」といった言語機能を使うには、各エディタが言語ごとの解析ロジックを個別に実装する必要がありました。エディタがM種類、プログラミング言語がN種類あるとき、M x N個の実装が必要になる問題、いわゆる「M x N問題」が長年の課題でした。 LSP(Language Server Protocol)は、この問題を解消するためにMicrosoftが2016年に策定したオープンプロトコルです。言語固有の解析処理を「Language Server」として独立したプロセスに切り出し、エディタとの通信をJSON-RPCベースの標準プロトコルで行います。各エディタはLSPクライアントさえ実装すれば、あらゆる言語のLanguage Serverと連携できるようになります。 LSPの仕様は現在バージョン3.17が最新です。このバージョンでは型階層(Type Hierarchy)やInlay Hints、ノートブックドキュメントのサポートなどが追加されました。 出典: Microsoft Language Server Protocol TypeScript用の主要LSP Server実装 TypeScriptの言語サーバーには複数の選択肢があり、それぞれアーキテクチャや対応エディタが異なります。 typescript-language-server 最も広く利用されているTypeScript用LSPサーバーです。npmパッケージとして配布されており、内部ではTypeScriptのtsserverをバックエンドとして起動し、その機能をLSPプロトコルでラップして提供します。Neovim、Emacs、Vim、Helix、Sublime Textなど、VSCode以外のほぼすべてのエディタで標準的に使われており、GitHubでは5,000以上のプロジェクトで利用されています。 npm install -g typescript-language-server typescript typescript-language-server --stdio 出典: typescript-language-server GitHub vtsls VSCodeに組み込まれたTypeScript拡張機能を、スタンドアロンのLSPサーバーとして切り出したプロジェクトです。VSCode内部のAPIを埋めて最小限のパッチを適用することで実現しており、本家VSCode拡張の更新に追従しやすい設計になっています。補完の速度と正確性に優れ、LazyVimではデフォルトのTypeScript LSPとして採用されています。2026年1月にv0.3.0がリリースされ、現在も活発に開発が続いています。 npm install -g @vtsls/language-server vtsls --stdio 出典: vtsls GitHub tsserver(VSCode内蔵) VSCodeに組み込まれている言語サービスの基盤です。tsserverはLSPではなく独自のプロトコルで通信しており、VSCode専用の仕組みとして動作します。補完、診断、リファクタリングなどのあらゆる機能を網羅しており、VSCodeにおけるTypeScript体験のベースラインとなっています。ただし独自プロトコルのため、他のエディタからは直接利用できません。typescript-language-serverやvtslsは、このtsserverの機能をLSP経由で公開する役割を担っています。 Deno LSP Deno実行環境に組み込まれたLSPサーバーです。deno lspコマンドで起動でき、DenoプロジェクトにおけるTypeScript/JavaScript開発を支援します。npmベースのNode.jsプロジェクトとDenoプロジェクトが混在する環境では、ファイルパスやプロジェクト設定によるLSPの切り替えが必要になります。 TypeScript 7.0(Corsa)の公式LSPサーバー TypeScript 7.0(開発コードネーム: Corsa)では、コンパイラ全体がGoで再実装され、LSPネイティブの言語サーバーが公式に提供される予定です。従来のtsserver独自プロトコルが不要になり、あらゆるLSP対応エディタから統一的に利用できるようになります。詳細は後述します。 実装比較表 項目 typescript-language-server vtsls tsserver Deno LSP TypeScript 7.0 LSP プロトコル LSP LSP 独自 LSP LSP バックエンド tsserver VSCode TS拡張 TypeScript本体 Deno内蔵 Go実装 インストール npm npm VSCode同梱 Deno同梱 開発中 対応エディタ Neovim/Emacs/Vim等 Neovim/Helix/Zed等 VSCode専用 LSP対応全般 LSP対応全般 補完速度 良好 高速 高速 良好 非常に高速(見込み) 設定の柔軟性 高い 高い VSCode設定に依存 Deno設定に依存 未確定 Vue/Svelte対応 プラグイン経由 VSCode拡張互換 VSCode拡張経由 非対応 未確定 エディタ別の導入手順 Neovimでの設定 Neovim 0.11以降では、組み込みのLSPクライアント設定が大幅に簡素化されました。nvim-lspconfigプラグインを使うと、数行で設定できます。 ...

2026年2月9日 · 4 分 · 12258 文字 · uiuifree

rust-analyzerとLSPで構築する快適なRust開発環境【設定・機能・トラブル対策】

LSP(Language Server Protocol)の役割とrust-analyzerの位置づけ LSP(Language Server Protocol)は、Microsoftが策定したエディタと言語解析エンジン間の通信規約です。JSON-RPC 2.0をベースとし、コード補完・定義ジャンプ・リネームといったIDE機能をエディタ側と言語側で分離しています。この仕組みにより、1つの言語サーバを複数のエディタから共有できます。 出典: Language Server Protocol 公式仕様によれば、2025年時点で約300の言語サーバと50のエディタがLSPに対応しています。 rust-analyzerは、Rust言語向けのLSP実装です。Rustの旧式言語サーバであったRLS(Rust Language Server)の後継として開発が進み、2022年2月にRustプロジェクト公式の傘下に入りました。GitHubリポジトリは16,000以上のスターを獲得しており、Ferrous Systemsを中心に活発な開発が続いています。 出典: rust-analyzer公式サイト rust-analyzerが備える機能の全体像 rust-analyzerは単なるコード補完ツールではなく、Rust開発に必要なIDE機能を幅広くカバーしています。以下に主要機能をカテゴリ別に整理します。 ナビゲーション系 機能 説明 ショートカット例(VSCode) Go to Definition 関数・構造体の定義元へジャンプ F12 Go to Implementation トレイト実装へジャンプ Ctrl+F12 Go to Type Definition 変数の型定義へジャンプ - Find All References 使用箇所を一覧表示 Shift+Alt+F12 Workspace Symbol ワークスペース全体のシンボル検索 Ctrl+T Parent Module / Child Modules モジュール階層の移動 - コード補完・編集支援 機能 説明 Auto Import 未インポートの型・関数を補完時に自動追加 Magic Completions ifやmatchの構文パターン補完 Rename プロジェクト全体でのリネーム(F2) Join Lines 複数行を1行に結合 Move Item 関数・構造体を上下に移動 On Typing Assists 入力中の自動フォーマット インレイ表示・ハイライト 機能 説明 Inlay Hints 推論された型やパラメータ名をエディタ上に表示 Hover ホバー時にドキュメントと型シグネチャを表示 Semantic Highlighting 構文解析だけでなく意味解析に基づいた色分け Highlight Related カーソル位置と関連する箇所をハイライト 解析・デバッグ支援 機能 説明 Expand Macro Recursively マクロ展開結果を確認 View Syntax Tree 構文木を可視化 View Crate Graph クレート依存関係をSVG表示 View Memory Layout 構造体のメモリレイアウトを確認 View HIR / MIR 中間表現を表示 各エディタへの導入手順 VS Codeの場合 VS Codeでは拡張機能マーケットプレイスから数クリックで導入できます。 ...

2026年2月9日 · 3 分 · 7348 文字 · uiuifree