Visual Studio Code での Swift
Swift は、初心者にも親しみやすく、エキスパートにも強力な汎用プログラミング言語です。高速でモダン、安全で、書くのが楽しい言語です。このトピックでは、swiftlang.swift-vscode 拡張機能を使用して Visual Studio Code 内で Swift をセットアップし、使用する方法について詳しく説明します。
Swift 拡張機能の機能
- 構文のハイライトとコード補完
- 定義へ移動 (Go to Definition) やすべての参照を検索 (Find All References) などのコードナビゲーション機能
- コードのリファクタリングとクイックフィックス
- 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 拡張機能は、新しいツールチェーンを認識するために拡張機能を再読み込みするように求めます。これを実行する必要があります。そうしないと、拡張機能が正しく機能しません。