この記事の要点
- Google Summer of Code(GSoC)2025 の Swift プロジェクトの成果を紹介するシリーズの第 3 弾で、Ahmed Elrefaey さんが取り組んだ「コード補完時のドキュメント表示の改善」を取り上げています。
- 成果は SourceKit-LSP に取り込まれました。SourceKit-LSP は Swift および C 系言語向けの Language Server Protocol(LSP)の実装で、VS Code・Neovim・IntelliJ IDEA・Vim など LSP に対応するエディタが恩恵を受けます。
- コード補完時に、これまでの短い要約だけでなく完全なドキュメントを表示できるようになり、さらに関数呼び出し時に渡せる引数(オーバーロードとそのドキュメント)を示す signature help にも対応しました。これらは将来の Swift ツールチェーンのリリースに含まれる予定です。
プログラムの目的
GSoC は Google が運営する年次プログラムで、メンターと組みながらオープンソースプロジェクトへコントリビューションすることで、新しい開発者に実践的な経験を提供することを目的としています。2025 年も Swift プロジェクトが参加し、複数のプロジェクトが実施されました。この記事はそのシリーズの第 3 弾で、Ahmed Elrefaey さんが Hamish Knight さんのメンターのもとで取り組んだ、コード補完時のドキュメント表示の改善を紹介しています。
SourceKit-LSP は Swift と C 系言語向けの Language Server Protocol(LSP)の実装です。このプロジェクトの目標は、SourceKit-LSP におけるコード補完時のドキュメント表示を、次の 2 点で改善することでした。
- 補完候補について、これまでの「先頭の段落のみ(brief documentation)」ではなく、完全なドキュメントを表示する。
- LSP の signature help リクエストを実装し、利用可能なオーバーロードとそれぞれのドキュメントを表示する。
成果
完全なドキュメントの表示
これまで SourceKit-LSP がコード補完で表示していたのは、ドキュメントコメントの先頭段落だけ(brief documentation)でした。このプロジェクトにより、補完候補の完全なドキュメントコメントを取得して表示できるようになりました。すべてのドキュメントコメントを一度に取得すると重くなるため、リクエストに応じて必要なものだけを遅延取得する方式を採っています。
signature help への対応
加えて、signature help のサポートも大きく前進しました。signature help は、関数を呼び出している最中に、利用可能なオーバーロードとそれぞれのドキュメントを表示する機能です。これにより、どのような引数を渡せるかを編集しながら確認できます。実装にあたっては、既存の引数補完のロジックを再利用してオーバーロードを判定し、コード補完候補の説明を生成する処理を signature help でも使えるようにリファクタリングしています。
試し方
これらの機能は VS Code などの LSP 対応エディタで試せます。swift.org から main 開発スナップショットをダウンロードするか、Swiftly を使っている場合は次のコマンドでインストールします。
swiftly install main-snapshot
その後、VS Code のコマンドパレットから “Select Toolchain” を選び、ダウンロードしたツールチェーンを選択します。
学び・今後
Ahmed さんは、Swift プロジェクトにコントリビューションできたことに感謝し、この経験から多くを学んだと振り返っています。あわせて、メンターの Hamish Knight さん、そしてコードレビューを通じて貴重なフィードバックをくれた Alex Hoppen さん・Rintaro Ishizaki さん・Ben Barham さんへの謝辞を述べています。
これらの成果はすでに SourceKit-LSP プロジェクトに取り込まれており、将来の Swift ツールチェーンのリリースに含まれる予定です。LSP に対応するエディタであれば、これらの改善の恩恵を共通して受けられます。