Visual Studio Code での Swift
Swift は、初心者にも分かりやすく、エキスパートには強力な汎用プログラミング言語です。高速でモダン、安全で記述が楽しい言語です。このトピックでは、Visual Studio Code 内で Swift をセットアップし、swiftlang.swift-vscode 拡張機能と連携して使用する方法について詳しく説明します。
Swift 拡張機能の機能:
- 構文ハイライトとコード補完
- 定義へ移動やすべての参照の検索などのコードナビゲーション機能
- コードのリファクタリングとクイックフィックス
- Swift Package Manager をサポートするパッケージ管理とタスク
- 豊富なデバッグサポート
- XCTest または Swift Testing フレームワークを使用したテスト
Swift 拡張機能は以下のプロジェクトをサポートするように設計されています
- Swift Package Manager プロジェクト (例:
Package.swiftを使用) compile_commands.jsonを生成できるプロジェクト (例: CMake を使用)
拡張機能をインストールする
- まず、Swift をインストールします。システムに Swift がまだインストールされていない場合は、Swift.org の「Getting Started Guide」を参照してください。
- 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 で開くことができる「ビルドタスクの実行」メニューに表示されることを意味します。

ビルド中に発生したエラーは、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 拡張機能は、新しいツールチェーンを認識するために拡張機能をリロードするよう求めます。そうしないと、拡張機能が正しく機能しません。
