Visual Studio Code での Swift
Swift は、初心者にも親しみやすく、エキスパートにも強力な汎用プログラミング言語です。高速で、モダンで、安全で、楽しく記述できます。このトピックでは、swiftlang.swift-vscode 拡張機能を使用して Visual Studio Code 内で Swift をセットアップおよび使用する方法について詳しく説明します。
Swift 拡張機能に含まれるもの
- 構文の強調表示とコード補完
- 定義へ移動やすべての参照の検索などのコードナビゲーション機能
- コードのリファクタリングとクイックフィックス
- Swift Package Manager をサポートするパッケージ管理とタスク
- デバッグの豊富なサポート
- XCTest または Swift Testing フレームワークを使用したテスト
Swift 拡張機能は、次のプロジェクトをサポートするように設計されています。
- Swift Package Manager プロジェクト (例:
Package.swiftを使用) compile_commands.jsonを生成できるプロジェクト (例: CMake を使用)
拡張機能をインストールする
- まず、Swift をインストールします。システムに Swift がまだインストールされていない場合は、Swift.org の入門ガイドを参照してください。
- Visual Studio Code をダウンロードしてインストールします。
- VS Code Marketplace または VS Code の拡張機能ペインから直接 Swift 拡張機能をインストールします。

新しい Swift プロジェクトを作成する
新しい Swift プロジェクトを作成するには、Swift 拡張機能の Swift: Create New Project... コマンドを使用してプロセスをガイドできます。このコマンドは、コマンドパレットを開き、以下の指示に従うことで見つけることができます。
- macOS の場合: CMD+Shift+P
- その他のプラットフォーム: Ctrl+Shift+P

- テンプレートのリストから作成したいプロジェクトの種類を選択します。
- プロジェクトを保存するディレクトリを選択します。
- プロジェクトに名前を付けます。
- 新しく作成したプロジェクトを開きます。現在のウィンドウでプロジェクトを開くか、新しいウィンドウで開くか、現在のワークスペースに追加するかを尋ねられます。デフォルトの動作は、
swift.openAfterCreateNewProject設定を使用して構成できます。
言語機能
Swift 拡張機能は、言語機能を実現するために SourceKit LSP を使用します。SourceKit LSP は、エディターで次の機能を提供します。これらのリンクを使用して、各トピックの VS Code ドキュメントを参照してください。
SourceKit LSP は、一般的なタスクを自動化するためのコードアクションも提供します。VS Code のコードアクションは、エディターの余白の近くに電球として表示されます (例については以下のスクリーンショットを参照)。電球をクリックすると、利用可能なアクションが表示されます。これには以下が含まれます。
Package.swiftにターゲットを追加する- JSON をプロトコルに変換する
- 関数にドキュメントを追加する

Swift 6.1 より前のバージョンでは、言語機能を使用する前に、コマンドラインまたは VS Code のタスクを使用して、プロジェクトに対して swift build コマンドを実行する必要があります。これにより、SourceKit-LSP のインデックスが作成されます。
Swift タスク
Visual Studio Code は、外部ツールを実行する方法としてタスクを提供します。詳細については、タスクによる外部ツールとの統合ドキュメントを参照してください。
Swift 拡張機能には、Swift Package Manager を介してビルドするために使用できるいくつかの組み込みタスクが用意されています。プロジェクトのルートフォルダーに tasks.json ファイルを作成して、カスタムタスクを構成することもできます。たとえば、この tasks.json は、リリースモードで Swift ターゲットをビルドします。
{
"version": "2.0.0",
"tasks": [
{
"type": "swift",
"label": "Swift Build All - Release",
"detail": "swift build --build-tests",
"args": ["build", "--build-tests", "-c", "release"],
"env": {},
"cwd": "${workspaceFolder}",
"group": "build"
}
]
}
上記のタスクは build グループに構成されています。これは、macOS では CMD+Shift+B、その他のプラットフォームでは Ctrl+Shift+B で開くことができる run build tasks メニューに表示されることを意味します。

ビルド中に発生したエラーは、SourceKit-LSP によって提供される診断とともにエディターに診断として表示されます。別のビルドタスクを実行すると、以前のビルドタスクからの診断はクリアされます。
デバッグ
Visual Studio Code は、豊富なデバッグエクスペリエンスを提供します。詳細については、デバッグドキュメントを参照してください。
Swift 拡張機能は、デバッグサポートを有効にするために LLDB DAP 拡張機能に依存しています。
デフォルトでは、拡張機能は Swift パッケージ内の各実行可能ターゲットに対して起動構成を作成します。プロジェクトのルートフォルダーに launch.json ファイルを追加して、これらを自分で構成できます。たとえば、この launch.json は、カスタム引数で Swift 実行可能ファイルを起動します。
{
"configurations": [
{
"type": "swift",
"name": "Debug swift-executable",
"request": "launch",
"args": ["--hello", "world"],
"cwd": "${workspaceFolder}",
"program": "${workspaceFolder}/.build/debug/swift-executable",
"preLaunchTask": "swift: Build Debug swift-executable"
}
]
}
VS Code のデバッグビューからデバッグセッションを起動できます。
- デバッグしたい起動構成を選択します。
- 緑色の再生ボタンをクリックして、デバッグセッションを起動します。
実行可能ファイルが起動され、コードが実行されるとヒットする Swift コードにブレークポイントを設定できます。
以下のスクリーンショットは、Hello World プログラムをデバッグする例を示しています。ブレークポイントで一時停止しており、デバッグビューにスコープ内の変数の値が表示されていることがわかります。エディターで識別子にカーソルを合わせると、その変数の値を確認することもできます。

テスト エクスプローラー
Visual Studio Code は、左サイドバーにテストエクスプローラービューを提供します。これを使用して
- テストに移動する
- テストを実行する
- テストをデバッグする
Swift 拡張機能は、XCTest と Swift Testing をサポートしています。テストを作成すると、自動的にテストエクスプローラーに追加されます。

テストをデバッグするには
- ブレークポイントを設定する
Debug Testプロファイルで、テスト、スイート、またはテストターゲット全体を実行します。
Run Test with Coverage プロファイルは、テスト対象のコードをインスツルメントし、テスト実行が完了するとコードカバレッジレポートを開きます。カバレッジ対象のファイルを閲覧すると、テスト中に実行された行番号は緑色で表示され、スキップされた行番号は赤色で表示されます。行番号にカーソルを合わせると、カバーされた行が何回実行されたかが表示されます。行の実行回数は、Test: Show Inline Coverage コマンドを使用して表示または非表示にできます。
タグで注釈が付けられた Swift Testing テストは、テストエクスプローラーで @TestTarget:tagName を使用してフィルター処理できます。その後、フィルター処理されたテストリストを実行またはデバッグできます。
Swift VS Code 拡張機能は、Swift 5.10 以前の Swift Testing テストの実行をサポートしていません。
高度なツールチェーンの選択
Swift 拡張機能は、インストールされている Swift ツールチェーンを自動的に検出します。ただし、複数のツールチェーンがインストールされている場合にそれらを切り替えるために使用できる Swift: Select Toolchain... というコマンドも提供しています。
これは、マシン上のデフォルト以外のツールチェーンで VS Code を構成するために使用される高度な機能です。グローバルにツールチェーンを切り替えるには、macOS では xcode-select を、Linux では swiftly を使用することをお勧めします。
この新しいパスをどこに構成するかを選択するように求められる場合があります。オプションは次のとおりです。
- ユーザー設定に保存する
- ワークスペース設定に保存する
ワークスペース設定はユーザー設定よりも優先されることに注意してください。

その後、Swift 拡張機能は、新しいツールチェーンを認識するために拡張機能をリロードするように求めます。そうしないと、拡張機能が正しく機能しないため、必ずリロードしてください。
