この記事の要点
- Google Summer of Code(GSoC)2025 の Swift プロジェクトの成果を紹介するシリーズの第 1 弾で、Priyambada Roul さんが取り組んだ「Swiftly の VS Code 統合」を取り上げています。
- Swiftly は Swift のツールチェーン(toolchain)マネージャです。今回の成果により、VS Code の Swift 拡張機能から Swift のバージョンのインストールと切り替えができるようになりました。
- 合わせて Swiftly の CLI も強化され、機械可読な JSON 出力やインストール進捗の JSONL 出力に対応しています。これらの機能は VS Code 拡張機能の最新アップデートですでに利用できます。
プログラムの目的
GSoC は Google が運営する年次プログラムで、オープンソースプロジェクトへのコントリビューションを通じて、新しいコントリビューターに実践的な経験を提供することを目的としています。2025 年も Swift プロジェクトが参加し、4 件のプロジェクトが実施されました。この記事はそのシリーズの第 1 弾で、Priyambada Roul さんが Chris McGee さん・Matthew Bastien さんのメンターのもとで取り組んだ、Swiftly の VS Code 統合を紹介しています。
成果
VS Code でのツールチェーン管理
これまで Swift のバージョンを切り替えるにはエディタの外で作業する必要がありました。今回の成果により、VS Code の Swift 拡張機能から Swiftly を介して、ツールチェーンのインストールと切り替えがシームレスに行えるようになりました。主な機能は次のとおりです。
- 現在の Swift のバージョンを VS Code のステータスバーに表示します。
- バージョンをクリックすると、インストール済みのツールチェーンを即座に切り替えられます。
- 任意の Swift のバージョンを VS Code から直接インストールでき、進捗がリアルタイムに表示されます。
.swift-versionファイルを自動検出し、プロジェクトごとに指定された Swift のバージョンへ切り替えるよう促します。- これまでの Linux に加えて macOS にも対応しました。
Swiftly CLI の強化
VS Code 拡張機能がツールチェーンの状態や進捗をリアルタイムに扱えるよう、Swiftly の CLI 側も次のように強化されました。
- 機械可読な JSON 出力フォーマットに対応しました。
- ツールチェーンのインストール進捗を JSONL(JSON Lines)形式で報告するようになりました。
- エラー報告が改善されました。
拡張機能は Swiftly のプロセスを起動し、その JSON 出力ストリームをリアルタイムに読み取ることで、ステータスバーの表示や進捗の更新を実現しています。
学び・今後
Priyambada さんは、このプロジェクトを通じて VS Code 拡張機能の開発、Swift のツールチェーンの構造と配布の仕組み(symlink・環境変数・PATH 操作による複数バージョンの共存)、プロセス間通信や標準入出力のバッファリングといった、複数のツールをまたぐ統合に必要な知識を得たと振り返っています。
ここで紹介された機能は VS Code 拡張機能の最新アップデートにすでに含まれており、今すぐ試すことができます。