VS CodeでSwift開発を始めよう:環境構築ガイド


VS CodeでSwift開発を始めよう:環境構築ガイド

はじめに

Swiftは、Appleが開発した強力で直感的なプログラミング言語です。iOS、macOS、watchOS、tvOSといったAppleプラットフォーム向けのアプリケーション開発はもちろん、サーバーサイド開発、コマンドラインツールの開発、さらには組み込みシステムなど、その用途は広がり続けています。

Swift開発の主要な統合開発環境(IDE)といえば、Apple純正のXcodeが思い浮かびます。XcodeはmacOS上で動作し、UIデザインツール、デバッガー、シミュレーターなど、Appleプラットフォーム開発に必要なあらゆる機能を統合しています。多くのSwift開発者はXcodeを利用しており、特にiOS/macOSのGUIアプリケーション開発においては、Xcodeは欠かせないツールです。

しかし、Swiftの開発環境はXcodeだけではありません。例えば、JetBrainsのAppCodeのような商用IDEや、VimやEmacsといったエディタとコマンドラインツールを組み合わせて開発するスタイルもあります。そして近年、急速にユーザーを増やしているのが、Microsoftが提供する高機能なコードエディタ、Visual Studio Code(VS Code)を使った開発環境です。

なぜVS CodeでSwift開発を検討するのでしょうか? その理由はいくつかあります。

  1. 軽量で高速: Xcodeに比べて起動が速く、動作が比較的軽量です。ちょっとしたSwiftコードを試したい場合や、コマンドラインツールを開発する際には非常に快適です。
  2. 多言語対応: VS CodeはSwiftだけでなく、Python、Node.js、Go、Rust、Web開発(HTML, CSS, JavaScript/TypeScript)など、非常に多くのプログラミング言語に対応しています。普段からVS Codeを様々な言語で利用している開発者にとって、新しいツールを導入することなくSwift開発を始められるのは大きなメリットです。
  3. 高いカスタマイズ性: 豊富な拡張機能(Extensions)によって機能を自由に追加・カスタマイズできます。Swift開発においても、コード補完、構文チェック、デバッグ、テスト実行といった機能を拡張機能で実現します。
  4. モダンな編集体験: スマートなコード補完(IntelliSense)、リファクタリング、統合ターミナル、Git連携など、最新の開発ワークフローに適した機能を備えています。

もちろん、VS CodeでのSwift開発環境は、Apple純正のXcodeに比べて機能面で劣る部分も存在します。特にiOS/macOSのGUIアプリケーション開発に不可欠なInterface BuilderのようなUIデザインツールはVS Codeにはありませんし、最新のApple SDKへの対応はXcodeが先行します。しかし、コマンドラインツール、ライブラリ、サーバーサイドSwiftの開発など、GUI開発以外の用途では、VS Codeは非常に魅力的な選択肢となります。また、GUI開発においても、VS Codeでコード記述を行い、XcodeでビルドやUI設計、シミュレーターでの確認を行うといったワークフローを組み合わせることも可能です。

この記事では、VS Codeを使ってSwift開発環境を構築するための詳細なステップを解説します。主にmacOS上でSwiftのコマンドラインツールを開発することを想定していますが、ここで構築する環境はSwiftのライブラリ開発や、Server-side Swiftフレームワーク(VaporやKituraなど)を使った開発にも応用できます。

この記事は、以下のような方を対象としています。

  • Swift開発に興味があるけれど、Xcode以外の開発環境を試してみたい方。
  • 普段からVS Codeを使っていて、SwiftもVS Codeで書いてみたい方。
  • Swiftのコマンドラインツールやライブラリ開発に興味がある方。
  • Xcodeの学習コストや起動の重さを感じている方。

さあ、VS CodeとSwiftの世界へ踏み出しましょう!

VS CodeでSwift開発するために必要なもの

VS CodeでSwift開発環境を構築するために、以下のものが必要になります。

  1. macOSオペレーティングシステム: Swiftコンパイラや関連ツールは、macOSに最も最適化されています。特に、Swift Package Manager(SPM)やFoundationフレームワークなど、標準的な開発ツールやライブラリはmacOS上で最もスムーズに動作します。LinuxやWindowsでもSwift開発は可能ですが、環境構築の手順や安定性はmacOSが最も優れています。この記事ではmacOS Catalina以降のバージョンを前提とします。
  2. Xcode: VS Code単体ではSwiftコードをコンパイル・実行できません。SwiftコンパイラやSwift Package ManagerといったツールはXcodeに付属する「Command Line Tools」に含まれています。Xcode本体をインストールするか、またはCommand Line Toolsのみをインストールする必要があります。特に理由がなければ、Xcode本体をインストールするのが最も簡単です。
  3. Visual Studio Code: 言わずと知れた主役です。VS Code本体をインストールする必要があります。
  4. Swift開発用VS Code拡張機能: VS Code上でSwiftのコード編集、補完、デバッグなどを可能にするためには、専用の拡張機能が必要です。コミュニティによって開発された複数の拡張機能が存在しますが、現時点(2023年末〜2024年初頭)で最も機能が豊富で推奨されるのは、「Swift」という名称の拡張機能です。
  5. (オプション)Git: プロジェクトのバージョン管理にGitを使用することは現代の開発においてほぼ必須です。macOSにはデフォルトでインストールされていますが、最新版が必要であれば別途インストールすることも可能です。VS CodeはGit連携機能が非常に強力です。
  6. (オプション)Homebrew: macOS用のパッケージマネージャーです。後述するSwiftFormatやSwiftLintといったツールをインストールする際に便利です。必須ではありませんが、インストールしておくと開発環境の管理が楽になります。

これらのツールを順番にインストール・設定していくのが、VS CodeでのSwift開発環境構築の基本的な流れです。

ステップ1: Xcode Command Line Toolsのインストール

Swiftコンパイラ、Swift Package Manager (SPM)、標準ライブラリ、リンカー、デバッガーなどの開発ツール群は、Xcodeに付属する「Command Line Tools for Xcode」に含まれています。VS Codeはこれらのコマンドラインツールを呼び出して、Swiftコードのビルドや実行、デバッグを行います。したがって、VS CodeでSwift開発を行うためには、まずこのCommand Line Toolsをインストールする必要があります。

Command Line Toolsをインストールするには、主に二つの方法があります。

方法1: Xcode本体をインストールする(推奨)

最も簡単で推奨される方法は、App StoreからXcode本体をインストールすることです。Xcodeをインストールすると、Command Line Toolsも自動的にインストールされます。将来的にiOS/macOSアプリ開発も行う可能性があるなら、Xcode本体をインストールしておくのが良いでしょう。

  1. App Storeを開く: DockまたはアプリケーションフォルダからApp Storeアプリケーションを開きます。
  2. Xcodeを検索: 検索バーに「Xcode」と入力して検索します。
  3. インストール: Xcodeのページが表示されるので、「入手」または「ダウンロード」ボタンをクリックしてインストールを開始します。Xcodeは非常にサイズが大きい(数十GB)ため、ダウンロードとインストールには時間がかかります。安定したネットワーク環境で行いましょう。
  4. Xcodeの初回起動: インストールが完了したら、一度Xcodeを起動します。初回起動時に使用許諾契約への同意や、必要な追加コンポーネントのインストールが促されることがあります。画面の指示に従って進めてください。この初回セットアップを行うことで、Command Line Toolsが完全に利用可能になります。

方法2: Command Line Toolsのみをインストールする

Xcode本体は非常にサイズが大きく、ストレージ容量を圧迫することがあります。また、純粋にコマンドラインでのSwift開発のみを行いたい場合、Xcode本体のGUIツール群は不要かもしれません。このような場合は、Command Line Toolsのみをインストールすることも可能です。

  1. ターミナルを開く: アプリケーションフォルダの「ユーティリティ」にある「ターミナル」アプリケーションを開きます。
  2. インストールコマンドの実行: 以下のコマンドを入力してEnterキーを押します。

    bash
    xcode-select --install

    3. ダイアログに従う: コマンドを実行すると、「ソフトウェア使用許諾契約を読み、同意する必要があります」といった内容のダイアログが表示されることがあります。「インストール」ボタンをクリックし、画面の指示に従ってインストールを進めます。
    4. インストール完了を待つ: インストールには数分から数十分かかることがあります。完了するまで待ちます。

どちらの方法でインストールした場合でも、Command Line Toolsが正しくインストールされ、アクティブなツールセットとして設定されているか確認しましょう。

Command Line Toolsのインストール確認

ターミナルを開き、以下のコマンドを実行します。

  1. Swiftコンパイラのバージョンの確認:

    bash
    swift --version

    もし正しくインストールされていれば、以下のようにSwiftコンパイラのバージョン情報が表示されるはずです(バージョン番号は環境によって異なります)。

    swift-driver version: 1.87.1 Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56, clang-1500.1.0.2.5)
    Target: arm64-apple-macosx14.0

    2. アクティブなCommand Line Toolsのパス確認:

    bash
    xcode-select -p

    これにより、現在アクティブになっているCommand Line Toolsのパスが表示されます。Xcode本体をインストールした場合は /Applications/Xcode.app/Contents/Developer のようなパスが表示され、Command Line Toolsのみをインストールした場合は /Library/Developer/CommandLineTools のようなパスが表示されるのが一般的です。

これらのコマンドがエラーなく実行され、バージョン情報やパスが表示されれば、Command Line Toolsのインストールは成功です。

ステップ2: VS Codeのインストール

次に、VS Code本体をインストールします。既にVS Codeをインストールして利用している場合は、このステップをスキップして構いません。

  1. VS Code公式サイトにアクセス: ウェブブラウザで以下のURLにアクセスします。
    https://code.visualstudio.com/
  2. macOS版をダウンロード: ページの中央にあるダウンロードボタンから、macOS版(Universal版またはIntel/Apple Silicon版)をダウンロードします。
  3. インストール: ダウンロードしたZIPファイルを展開(ダブルクリック)すると、「Visual Studio Code.app」というアプリケーションファイルが作成されます。このファイルをアプリケーションフォルダにドラッグ&ドロップしてインストールします。
  4. 初回起動: アプリケーションフォルダからVS Codeを起動します。使用許諾契約への同意や、初期設定のカスタマイズなどが表示されることがあります。

‘code’ コマンドをPATHに追加する

VS Codeには、ターミナルからcode .のように入力するだけで、カレントディレクトリをVS Codeで開いたり、特定のファイルを開いたりできる便利な機能があります。この機能を利用できるように設定しておきましょう。

  1. VS Codeを開く: VS Codeを起動します。
  2. コマンドパレットを開く: Cmd + Shift + P(Windows/Linuxの場合は Ctrl + Shift + P)を押してコマンドパレットを開きます。
  3. コマンドを実行: コマンドパレットに「shell command」と入力し、「Shell Command: Install ‘code’ command in PATH」を選択して実行します。
  4. 確認: 設定が完了するとメッセージが表示されます。一度ターミナルを閉じ、再度開いてから、以下のコマンドを実行してVS Codeが起動するか確認してみましょう。

    bash
    code .

    カレントディレクトリが新しいVS Codeウィンドウで開けば成功です。

ステップ3: Swift開発用VS Code拡張機能のインストール

VS CodeでSwiftコードの編集、補完、デバッグ、テスト実行といった機能を利用するためには、専用の拡張機能をインストールする必要があります。Swift開発用の拡張機能はいくつか存在しますが、最も活発に開発されており、機能が豊富なのはコミュニティによって提供されている「Swift」拡張機能です。

主要なSwift開発用拡張機能

  • Swift (by Soroush Khanlou and contributors):

    • Swift LSP (Language Server Protocol) を利用した高機能なコード補完、定義への移動、シンボル検索、リファクタリングなどの機能を提供します。
    • デバッグ機能(LLDBを利用)。ブレークポイントの設定、変数の検査、ステップ実行など。
    • テスト実行機能(XCTestに対応)。
    • ビルドタスクの自動検出。
    • Swift Package Manager (SPM) プロジェクトとの親和性が高いです。
    • この記事では、この拡張機能の利用を前提に解説を進めます。
  • CodeLLDB:

    • VS CodeでLLDBデバッガーを利用するための汎用的な拡張機能です。Swift拡張機能が内部でCodeLLDBを利用してデバッグ機能を提供することがあります。Swift拡張機能のデバッグ機能がうまく動作しない場合などに、CodeLLDB単体での設定を検討することもありますが、基本的にはSwift拡張機能に含まれるデバッガーで十分です。Swift拡張機能のインストール時に依存関係としてCodeLLDBがインストールされる場合もあります。
  • SwiftFormat / SwiftLint:

    • Swiftコードのフォーマット(整形)やスタイルチェックを行うためのツールです。それぞれに対応するVS Code拡張機能も存在し、導入することでコード保存時の自動フォーマットや、エディタ上でのスタイル違反の表示などが可能になります。これらは必須ではありませんが、チーム開発などではコードスタイルを統一するために非常に有用です。導入は後回しにして、基本的な環境構築が完了してから検討しても良いでしょう。

拡張機能のインストール手順

VS Codeの拡張機能ビューを使って、「Swift」拡張機能をインストールします。

  1. VS Codeを開く: VS Codeを起動します。
  2. 拡張機能ビューを開く: VS Codeウィンドウの左側にあるアクティビティバーから、四角いアイコンが並んだ「Extensions」ビューをクリックします(ショートカットは Cmd + Shift + X)。
  3. 拡張機能を検索: 検索バーに「Swift」と入力します。
  4. 「Swift」拡張機能を見つける: 検索結果の中から、おそらく一番上に出てくる「Swift」という名前の拡張機能(提供元がSoroush Khanlouなどとなっているもの)を見つけます。アイコンはSwiftのロゴ(鳥)を模していることが多いです。
  5. インストール: その拡張機能を選択し、詳細画面が表示されたら「Install」ボタンをクリックします。
  6. 依存関係のインストール: Swift拡張機能がCodeLLDBなどの他の拡張機能に依存している場合、それらも同時にインストールされるか、別途インストールを促されることがあります。指示に従って必要な拡張機能をインストールしてください。
  7. VS Codeの再起動: 拡張機能のインストールや有効化には、VS Codeの再起動が必要な場合があります。ウィンドウ下部などに表示されるメッセージに従ってVS Codeを再起動してください。

これで、VS CodeでSwiftコードを編集するための基本的な機能(構文ハイライト、コード補完など)が有効になったはずです。

ステップ4: 新しいSwiftプロジェクトの作成

VS CodeでのSwift開発は、Swift Package Manager(SPM)で管理されるプロジェクトと相性が良いです。SPMはSwiftの依存関係管理とビルドシステムを提供する公式ツールで、Xcodeプロジェクトファイル(.xcodeproj.xcworkspace)を使わずにSwiftコードを管理できます。VS CodeのSwift拡張機能は、SPMプロジェクトを自動的に認識し、必要なビルド設定やデバッグ設定を構成してくれます。

ここでは、SPMを使って新しいSwiftプロジェクトを作成する方法を解説します。

  1. プロジェクトを置くディレクトリを作成: ターミナルを開き、プロジェクトを作成したい場所に移動(cdコマンドを使用)し、新しいディレクトリを作成します。例えば、ユーザーのホームディレクトリにSwiftProjectsというディレクトリを作成し、その中にMySwiftCLIというプロジェクトを作成する場合:

    bash
    cd ~
    mkdir SwiftProjects
    cd SwiftProjects
    mkdir MySwiftCLI
    cd MySwiftCLI

    2. SPMプロジェクトを初期化: 作成したプロジェクトディレクトリ (MySwiftCLI ディレクトリ) にいる状態で、以下のコマンドを実行します。

    bash
    swift package init --type executable

    このコマンドは、SPMを使って新しいSwiftパッケージを初期化します。--type executable オプションは、実行可能なコマンドラインツールを作成するためのプロジェクト構造を生成することを意味します。ライブラリを作成する場合は --type library とします。

    コマンドが成功すると、以下のようなファイルとディレクトリが生成されます。

    Creating executable package: MySwiftCLI
    Creating Package.swift
    Creating README.md
    Creating .gitignore
    Creating Sources/MySwiftCLI/main.swift
    Creating Tests/MySwiftCLITests/MySwiftCLITests.swift

    * Package.swift: このパッケージのマニフェストファイルです。プロジェクト名、ターゲット、依存関係、ビルド設定などが記述されます。
    * Sources/: ソースコードを置くディレクトリです。実行可能ファイルの場合、この中にターゲット名と同じ名前のディレクトリ(例: MySwiftCLI)が作成され、その中にエントリーポイントとなるファイル(main.swift)が生成されます。ライブラリの場合は、ターゲット名と同じ名前のディレクトリの中にライブラリのソースファイル(例: MySwiftCLI.swift)が生成されます。
    * Tests/: テストコードを置くディレクトリです。ターゲット名にTestsを付けたディレクトリ(例: MySwiftCLITests)が作成され、XCTestを使ったサンプルテストファイル(MySwiftCLITests.swift)が生成されます。
    * README.md: プロジェクトの説明を記述するためのファイルです。
    * .gitignore: Gitでバージョン管理しないファイルを指定するためのファイルです。

ステップ5: プロジェクトを開いてみる

SPMプロジェクトが作成できたので、これをVS Codeで開いてみましょう。

  1. ターミナルからVS Codeで開く: プロジェクトディレクトリ (MySwiftCLI ディレクトリ) にいる状態で、前述のcodeコマンドを使ってVS Codeでプロジェクトを開きます。

    bash
    code .

    これにより、新しいVS Codeウィンドウが開かれ、左側のエクスプローラービューにプロジェクトのファイル構造が表示されます。

  2. ファイル構造を確認: エクスプローラービューで以下のファイルとディレクトリを確認してみましょう。

    • Package.swift: クリックして開いてみてください。Swiftコードで書かれており、プロジェクトの構成が定義されています。最初は簡単な構造ですが、依存関係を追加したり、複数のターゲットを定義したりする際に編集します。
    • Sources/MySwiftCLI/main.swift: 実行可能ファイルの開始点となるコードファイルです。デフォルトでは簡単な”Hello, world!”を出力するコードが含まれています。
    • Tests/MySwiftCLITests/MySwiftCLITests.swift: サンプルテストコードが含まれています。

VS CodeのSwift拡張機能がインストールされていれば、これらのファイルを開いたときに構文ハイライトが適用され、Swiftコードとして認識されていることがわかります。

ステップ6: コードを書いて実行する

プロジェクトを開いたので、main.swiftファイルを編集し、コードをビルドして実行してみましょう。

  1. main.swiftを編集: Sources/MySwiftCLI/main.swiftファイルを開き、内容を少し変更してみましょう。例えば、以下のように変更します。

    “`swift
    print(“Hello, VS Code Swift Development!”)

    let message = “This is a command line tool.”
    print(message)

    for i in 1…3 {
    print(“Step (i)”)
    }
    “`
    VS Codeの拡張機能によって、コード補完や構文チェック(エラーや警告の表示)がリアルタイムで行われるはずです。

  2. コードのビルドと実行(ターミナルを使用): VS Codeに統合されたターミナル(View -> Terminal または Ctrl + Shift + Backtick)または外部のターミナルを開き、プロジェクトのルートディレクトリ (MySwiftCLI ディレクトリ) にいる状態で以下のコマンドを実行します。

    • ビルドのみ:
      bash
      swift build

      このコマンドは、ソースコードをコンパイルして実行可能ファイル(またはライブラリ)を生成します。ビルドが成功すると、.buildディレクトリ内に生成物が出力されます。初回ビルド時には依存関係の解決なども行われるため、時間がかかることがあります。

    • 実行:
      bash
      swift run

      このコマンドは、まずプロジェクトをビルドし(必要であれば)、その後に生成された実行可能ファイルを実行します。main.swiftに記述したコードの出力がターミナルに表示されるはずです。

      例:
      Hello, VS Code Swift Development!
      This is a command line tool.
      Step 1
      Step 2
      Step 3

    SPMコマンドを使うことで、VS Codeの外でも簡単にSwiftコードをビルド・実行できます。

  3. コードの実行とデバッグ(VS CodeのRun and Debugビューを使用): VS Codeの強力な機能である「Run and Debug」ビューを使って、コードを実行したり、ブレークポイントを設定してステップ実行したりすることができます。Swift拡張機能は、SPMプロジェクトに対して自動的に実行・デバッグ構成を生成してくれることが多いです。

    • Run and Debugビューを開く: VS Codeウィンドウの左側にあるアクティビティバーから、虫のアイコンに再生マークが付いた「Run and Debug」ビューをクリックします(ショートカットは Cmd + Shift + D)。
    • 実行構成の選択: ビューの上部にドロップダウンメニューが表示され、そこにSPMプロジェクトで定義されたターゲット(例: “Run MySwiftCLI”)が自動的に追加されているはずです。実行したいターゲットを選択します。
    • 実行: 選択したターゲットの横にある緑色の再生ボタンをクリックすると、プロジェクトがビルドされ、デバッグなしで実行されます。出力はVS Codeの下部にある「DEBUG CONSOLE」に表示されます。
    • デバッグ実行: 緑色の再生ボタンの左側にある歯車アイコン(launch.jsonファイルを開く)をクリックするか、Run and Debugビューが表示された状態で再生ボタンの右側にある「Debug」ボタンをクリックすると、デバッグモードで実行されます。
    • ブレークポイントの設定: デバッグしたい行の行番号の左側をクリックすると、赤い丸が表示され、ブレークポイントが設定されます。デバッグ実行中にプログラムの実行がその行で一時停止します。
    • デバッグ操作: 実行が一時停止すると、Run and Debugビューにローカル変数やウォッチ式の値が表示され、画面上部にデバッグ操作(再開、ステップオーバー、ステップイン、ステップアウト、停止)のコントロールが表示されます。これらを使ってコードの実行を追うことができます。

    VS CodeのRun and Debug機能は、特に複雑なロジックの挙動を確認したり、エラーの原因を特定したりする際に非常に役立ちます。Swift拡張機能が提供するデバッグ機能は、Xcodeのそれに近い体験を提供してくれます。

    もしRun and Debugビューにターゲットが表示されない場合や、デバッグがうまく開始されない場合は、手動で.vscode/launch.jsonファイルを作成・編集して、デバッグ構成を定義する必要がある場合があります。Swift拡張機能のドキュメントや、VS Codeのデバッグ機能に関する一般的なドキュメントを参照してください。多くの場合は、Run and Debugビューを開いた際に表示される「create a launch.json file」リンクをクリックし、環境として「Swift」を選択することで、基本的な構成が自動生成されます。

ステップ7: テストを実行する

SPMプロジェクトはデフォルトでテストターゲットを含んでおり、XCTestフレームワークを使った単体テストを簡単に記述・実行できます。VS Code環境でも、これらのテストを実行できます。

  1. テストコードを確認: Tests/MySwiftCLITests/MySwiftCLITests.swiftファイルを開いてみてください。XCTestCaseを継承したクラスと、testから始まるメソッドが定義されているはずです。これはXCTestの基本的な構造です。

    “`swift
    import XCTest
    @testable import MySwiftCLI // @testable を使うことで、テスト対象モジュールの internal 要素にアクセスできます

    final class MySwiftCLITests: XCTestCase {
    func testExample() throws {
    // This is an example of a functional test case.
    // Use XCTAssert and related functions to verify your tests produce the correct results.
    XCTAssertEqual(MySwiftCLI().text, “Hello, World!”) // デフォルト生成されたコードの場合
    // ここにテストロジックを記述
    }
    }
    ``
    もし
    main.swiftを編集してtext`プロパティなどがなくなった場合は、テストコードも適宜修正するか、独自のテストケースを追加してください。

  2. テストの実行(ターミナルを使用): ターミナルを開き、プロジェクトのルートディレクトリ (MySwiftCLI ディレクトリ) にいる状態で以下のコマンドを実行します。

    bash
    swift test

    このコマンドは、テストターゲットをビルドし、含まれるすべてのテストケースを実行します。テストの実行結果(成功/失敗)がターミナルに表示されます。

  3. テストの実行(VS CodeのTest Explorerを使用): Swift拡張機能は、VS CodeのTest Explorer機能(アクティビティバーの試験管アイコン)に対応している場合があります。対応していれば、このビューからGUIでテストを検出し、個別のテストケースやクラスごとに実行したり、デバッグしたりできます。

    • Test Explorerビューを開く: アクティビティバーの試験管アイコンをクリックします。
    • テストの検出: しばらくすると、プロジェクト内のテストケースが検出され、ツリー構造で表示されます。
    • テストの実行: 各テストケースやテストクラスの横にある再生ボタンをクリックすると、そのテストが実行されます。全てのテストを実行するボタンもあります。
    • テスト結果の確認: 実行結果はアイコンの色(成功なら緑、失敗なら赤)や、ビュー内の出力で確認できます。失敗したテストをクリックすると、コード上の該当箇所にジャンプできることもあります。

Test Explorerは、テストコードが多い場合に、どのテストを実行するかを選択したり、失敗したテストだけを再実行したりするのに便利です。

ステップ8: 依存関係の管理

SPMの大きな利点の一つは、外部ライブラリ(依存関係)を簡単に管理できることです。VS Codeで開発を行う際も、Package.swiftファイルを編集することで依存関係を追加できます。

例えば、HTTPリクエストを行うための有名なライブラリであるasync-http-clientをプロジェクトに追加する場合の手順を解説します。

  1. Package.swiftを編集: プロジェクトのルートにあるPackage.swiftファイルを開きます。

  2. 依存関係を追加: dependenciesセクションに、追加したいライブラリのリポジトリURLとバージョン指定を追加します。

    “`swift
    // swift-tools-version: 5.9
    // The swift-tools-version declares the minimum version of Swift required to build this package.

    import PackageDescription

    let package = Package(
    name: “MySwiftCLI”,
    // products: [ … ] // 必要に応じてproductsを定義
    dependencies: [
    // Dependencies declare other packages that this package depends on.
    // .package(url: / package url /, from: “1.0.0”),
    .package(url: “https://github.com/swift-server/async-http-client.git”, from: “1.19.0”), // async-http-clientを追加
    ],
    targets: [
    // Targets are the basic building blocks of a package, defining a module or a test suite.
    // Targets can depend on other targets in this package and products from dependencies.
    .executableTarget(
    name: “MySwiftCLI”,
    dependencies: [
    .product(name: “AsyncHTTPClient”, package: “async-http-client”), // ここにも依存関係を追加
    ]
    ),
    .testTarget(
    name: “MySwiftCLITests”,
    dependencies: [“MySwiftCLI”]),
    ]
    )
    ``
    重要なのは、以下の2箇所に依存関係を追加することです。
    *
    dependenciesの配列に、パッケージ自体(リポジトリURLとバージョン)を追加します。from: “1.19.0”は、「バージョン1.19.0以降の、最も新しい互換性のあるバージョンを使用する」という意味です。他に.upToNextMajor(from: “1.19.0”).exact(“1.19.0”)などの指定方法があります。
    * 依存関係を使用したい「ターゲット」の
    dependencies配列に、そのパッケージが提供する「プロダクト」名を追加します。多くのパッケージはパッケージ名と同じプロダクト名を提供しますが、異なる場合もあります(例:swift-nioパッケージはNIOプロダクトを提供)。プロダクト名は、追加したいパッケージのPackage.swift`ファイルやドキュメントで確認できます。

  3. 依存関係の解決とビルド: Package.swiftを保存すると、VS CodeのSwift拡張機能が変更を検知し、依存関係の解決(ダウンロードやビルド)を自動的に開始することがあります。自動で開始しない場合は、ターミナルで swift build または swift run コマンドを実行することで、依存関係が解決され、ダウンロード・ビルドが行われます。ダウンロードされたパッケージは .build/checkouts ディレクトリに保存されます。

これで、main.swiftなどのソースファイル内で、追加したパッケージ(例: AsyncHTTPClient)のモジュールをimportして利用できるようになります。

“`swift
import AsyncHTTPClient
import NIOCore // AsyncHTTPClientが依存しているNIOCoreなども利用可能になる

// AsyncHTTPClient を使ったコード例(実際の利用にはより多くのコードが必要です)
print(“Fetching example.com…”)
let httpClient = HTTPClient(eventLoopGroupProvider: .singleton)

// … (リクエスト送信やレスポンス処理のコード) …

try await httpClient.shutdown()
print(“Done.”)
“`
コード補完機能によって、インポートしたモジュールの型や関数が提案されることを確認してください。

ステップ9: その他の便利な設定と拡張機能

VS Codeの魅力は、豊富なカスタマイズオプションと拡張機能にあります。Swift開発をさらに快適にするための設定や、役立つ拡張機能をいくつか紹介します。

Formatter (SwiftFormat) / Linter (SwiftLint)

コードのスタイルを統一し、潜在的な問題を早期に発見するために、FormatterやLinterは非常に役立ちます。Swiftコミュニティでよく使われるツールにSwiftFormat(コード整形)とSwiftLint(静的解析、スタイルチェック)があります。

  1. SwiftFormat/SwiftLintのインストール: Homebrewを使っている場合、ターミナルで以下のコマンドで簡単にインストールできます。

    bash
    brew install swiftformat
    brew install swiftlint

    Homebrewを使っていない場合は、それぞれの公式ドキュメントを参照してインストールしてください。

  2. VS Code拡張機能のインストール: VS CodeのExtensionsビューで「SwiftFormat for VS Code」や「SwiftLint for VS Code」といった拡張機能を検索してインストールします。

  3. 設定: これらの拡張機能は、インストール後に特に設定なしで動作する場合もありますが、プロジェクト固有のルールを設定したり、保存時に自動実行するように設定したりすることが推奨されます。
    • 自動フォーマット: VS Codeの設定 (Cmd + ,) を開き、「Format On Save」を検索してチェックを入れると、ファイルを保存するたびにFormatterが実行されます。また、Editor: Default Formatter でSwiftファイルに使用するFormatterとしてSwiftFormat拡張機能を指定する必要があるかもしれません。
    • ルールの設定: プロジェクトのルートディレクトリに.swiftformat.swiftlint.ymlといった設定ファイルを作成することで、プロジェクト固有のフォーマットルールやスタイルチェックルールを定義できます。

タスクの定義 (tasks.json)

VS Codeのタスク機能を使うと、ビルドやテスト実行といったSPMコマンドをVS Code内から簡単に実行できるようになります。Swift拡張機能が自動でビルドタスクなどを検出・登録することもありますが、より細かく制御したい場合に手動で設定することも可能です。

  1. tasks.jsonを開く/作成: コマンドパレット (Cmd + Shift + P) を開き、「Tasks: Configure Task」と入力します。すでにタスクが定義されている場合は「Tasks: Configure Task」が表示され、選択すると既存のtasks.jsonが開きます。初めての場合は「Tasks: Configure Task」を選択し、「Create tasks.json file from template」を選び、「Other」を選択することで、.vscode/tasks.jsonファイルが作成されます。
  2. タスクの定義: 例えば、swift testコマンドを実行するタスクを定義する場合、以下のような設定をtasks.jsonに追加します。

    json
    {
    "version": "2.0.0",
    "tasks": [
    {
    "label": "Run Tests", // タスクの名前
    "type": "shell", // シェルコマンドを実行するタスク
    "command": "swift test", // 実行するコマンド
    "group": "test", // テストタスクとしてグループ化
    "presentation": {
    "reveal": "always", // タスク実行時にターミナルを表示
    "panel": "new" // 新しいターミナルパネルで実行
    },
    "problemMatcher": [] // 必要に応じて問題マッチャーを設定
    }
    // 他のタスク定義(例: "swift build")
    ]
    }

    3. タスクの実行: コマンドパレットで「Tasks: Run Task」を選択すると、定義したタスクが表示されるので、実行したいタスクを選択します。また、「Tasks: Run Build Task」 (Shift + Cmd + B) や「Tasks: Run Test Task」といったコマンドに特定のタスクを割り当てることもできます。

Themes / Icons

VS Codeの見た目をカスタマイズすることで、開発体験を向上させることができます。Extensionsビューで「theme」や「icon」と検索すると、様々なカラーテーマやファイルアイコンテーマが見つかります。Swift開発に適したテーマやアイコンを探してみるのも良いでしょう。Swiftファイルのアイコンが表示されるように、Swift関連のアイコンテーマをインストールすると、エクスプローラービューが見やすくなります。

Git連携

VS CodeはGitとの連携機能が非常に強力です。ソース管理ビュー(アクティビティバーのSource Controlアイコン)から、変更のステージング、コミット、プッシュ/プル、ブランチ操作など、多くのGit操作をGUIで行えます。また、エディタ上での変更箇所の表示や、差分の確認も簡単です。SPMプロジェクトは.gitignoreファイルも生成してくれるため、すぐにGitでの管理を始められます。

ステップ10: iOS/macOSアプリ開発への応用(発展)

これまでに解説した環境構築は、主にSwiftのコマンドラインツールやライブラリ開発、サーバーサイドSwift開発を効率的に行うためのものです。では、iOSやmacOSのGUIアプリケーション開発にVS Codeは使えるのでしょうか?

結論から言うと、VS Code単体でiOSやmacOSのGUIアプリケーションを開発し、実機やシミュレーターでデバッグすることは、現時点では非常に困難、または不可能です。その主な理由は以下の通りです。

  • UIデザインツールがない: XcodeのInterface Builderのような、ストーリーボードやSwiftUIのプレビュー機能はVS Codeにはありません。GUIのレイアウトを視覚的に設計することはできません。コードでUIを記述する場合でも、その見た目をVS Code内で確認する手段はありません。
  • シミュレーター/実機へのデプロイ機能がない: アプリケーションをiOSシミュレーターやMac/iOS実機にインストールして実行する機能は、基本的にXcodeが提供するツールチェインに依存します。
  • フレームワークへの対応: UIKitやAppKit、SwiftUIといったAppleプラットフォーム固有のフレームワークに対する、VS Codeのコード補完やドキュメント参照などのサポートは、Xcodeに比べて限定的です。

しかし、VS CodeでiOS/macOSアプリ開発の一部を行うことは可能です。よくあるワークフローとしては、以下のようなものが考えられます。

  • コードエディタとしてVS Codeを使用: アプリケーションのビジネスロジックやデータモデルなど、UIに関係しない大部分のSwiftコードをVS Codeで記述します。VS Codeの高速なエディタ、強力な補完、Vimキーバインドなどの個人的なカスタマイズを活用できます。
  • XcodeでUI設計、ビルド、デプロイ、デバッグ: UIのレイアウトやデザイン、アセット管理、プロジェクト設定、そして最終的なビルド、シミュレーター/実機での実行、高度なデバッグはXcodeで行います。

このワークフローでは、VS CodeとXcodeを併用することになります。SPMを使ってプロジェクトを管理している場合、XcodeでもSPMパッケージとしてプロジェクトを開くことができるため、比較的スムーズな連携が可能です(Xcodeで「File」->「Open」からPackage.swiftファイルを開くと、SPMプロジェクトとしてワークスペースが生成されます)。

また、Swift Playgroundsのようなインタラクティブなコード実行環境の代替として、VS CodeとSPMを使った簡単な実行可能ターゲットを利用することもできます。例えば、アルゴリズムの検証やライブラリの挙動確認のために、一時的なmain.swiftファイルにコードを書いてswift runで実行するといった使い方ができます。

Server-side Swift開発(Vapor, Kitura, Hummingbirdなど)や、組み込みシステム、クロスプラットフォームCLIツール開発など、GUIに依存しないSwift開発においては、VS Codeは非常に優れた開発環境となり得ます。これらの分野に興味がある場合は、ぜひVS Codeをメインエディタとして活用してみてください。

ステップ11: トラブルシューティング

環境構築中に発生しがちな問題とその対処法をいくつか紹介します。

  • Swiftコンパイラが見つからない (command not found: swift):
    • Xcode Command Line Toolsが正しくインストールされていないか、アクティブになっていません。
    • ステップ1に戻り、xcode-select --installまたはXcode本体のインストールと初回起動が完了しているか確認してください。
    • xcode-select -pで表示されるパスが正しいか確認し、もし異なる場合は sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer のように正しいパスを指定して切り替えてみてください(パスは環境によって異なります)。
    • ターミナルを一度閉じて再度開いてみてください。
  • VS CodeのSwift拡張機能がうまく動作しない(コード補完が効かない、エラーが表示されないなど):
    • Swift拡張機能が正しくインストールされ、有効になっているか確認してください。
    • VS Codeを再起動してみてください。
    • 拡張機能が内部でLanguage Server Protocol (LSP) サーバーを起動しようとしますが、それが失敗している可能性があります。VS Codeの「Output」ビューを開き、ドロップダウンから「Swift Language Server」などの項目を選択して、エラーメッセージが出ていないか確認してください。依存するCommand Line Toolsのバージョンが古いなど、環境的な問題が原因の場合があります。
    • プロジェクトがSPMプロジェクトとして正しく認識されているか確認してください。ルートディレクトリにPackage.swiftファイルが存在する必要があります。
    • 拡張機能やVS Code本体のバージョンが古い可能性があります。それぞれ最新版にアップデートしてみてください。
    • Swift拡張機能のGitHubリポジトリのIssueを確認し、同様の問題が報告されていないか、または解決策が提示されていないか調べてみてください。
  • ビルドエラーが発生する:
    • コードの記述ミス(構文エラー、型エラーなど)がないか、エディタ上のエラー表示やVS Codeの「Problems」ビューを確認してください。
    • 依存関係が正しく解決されていない可能性があります。Package.swiftファイルの記述ミスや、依存関係のバージョン指定が原因かもしれません。ターミナルでswift buildコマンドを実行し、詳細なエラーメッセージを確認してください。
    • クリーンビルドを試してみてください。ターミナルで swift package clean を実行してから再度 swift build または swift run を実行します。
  • デバッグが開始されない、ブレークポイントで止まらない:
    • .vscode/launch.jsonファイルが正しく設定されているか確認してください。特にprogramcwdなどのパスがプロジェクト構造と一致している必要があります。Swift拡張機能が自動生成した設定が、環境によっては正しくない場合があります。
    • Swift拡張機能がCodeLLDBに依存している場合、CodeLLDB拡張機能も正しくインストール・有効になっているか確認してください。
    • Outputビューで「Debug Console」や、LLDBに関連するログを確認し、エラーメッセージが出ていないか確認してください。
    • 実行構成の種類が「Debug」になっているか確認してください。
  • ファイルの自動フォーマットやLinterが動作しない:
    • 対応する拡張機能(SwiftFormat for VS Codeなど)がインストールされ、有効になっているか確認してください。
    • Formatter/Linterツール本体(swiftformatswiftlintコマンド)がターミナルから実行できるか確認してください。
    • VS Codeの設定 (Cmd + ,) で、Editor: Format On Save が有効になっているか、Swiftファイルのデフォルトフォーマッターが正しく設定されているか確認してください。
    • Formatter/Linterの拡張機能に関する設定や、プロジェクト内の設定ファイル(.swiftformat, .swiftlint.yml)に問題がないか確認してください。

これらの基本的なトラブルシューティング手順で解決しない場合は、エラーメッセージの内容をよく確認し、ウェブ検索やVS Code Swift拡張機能のコミュニティに質問することをおすすめします。

まとめ

この記事では、Visual Studio CodeでSwift開発を始めるための環境構築手順を詳細に解説しました。

  1. Swift開発に必要なXcode Command Line Toolsをインストールしました。
  2. 高機能なコードエディタであるVS Code本体をインストールしました。
  3. Swift開発をサポートするVS Code拡張機能(主に「Swift」)をインストールしました。
  4. Swiftの公式パッケージマネージャーであるSPMを使った新しいプロジェクトを作成しました。
  5. VS Codeでプロジェクトを開き、コードの編集を行いました。
  6. ターミナルやVS CodeのRun and Debugビューを使ってコードをビルド、実行、デバッグする方法を学びました。
  7. SPMとTest Explorerを使ってテストを実行する方法を確認しました。
  8. Package.swiftを編集して外部ライブラリ(依存関係)を追加する方法を学びました。
  9. Formatter/Linterやタスク機能など、開発を効率化するその他のVS Code機能についても紹介しました。
  10. iOS/macOSアプリ開発におけるVS Codeの立ち位置や、Xcodeとの連携についても触れました。

VS Codeを使ったSwift開発環境は、Xcodeのような統合環境とは異なるアプローチを提供します。特にコマンドラインツール、ライブラリ、サーバーサイド開発など、GUIに強く依存しない開発においては、その軽量さ、多言語対応、高いカスタマイズ性といったメリットを最大限に活かすことができます。

もちろん、VS CodeのSwift開発環境はまだ発展途上であり、Xcodeと比較して機能面で劣る部分や不安定な挙動がある可能性も否定できません。しかし、コミュニティの活発な開発によって日々改善されています。

この記事を参考に環境構築を完了し、VS Codeで快適なSwift開発ライフを始めてみてください。まずは簡単なコマンドラインツールを作成したり、SPMで興味のあるライブラリを試したりすることから始めると良いでしょう。

次のステップとして:

  • 簡単なコマンドラインツールを作成し、引数を受け取って処理を追加してみる。
  • SPMで公開されている様々なライブラリ(例: Swift Argument Parser, AsyncHTTPClient, Vaporなど)をプロジェクトに追加して使ってみる。
  • Swiftの公式ドキュメントやSPMのドキュメントを読んで、より高度なプロジェクト設定や機能について学ぶ。
  • もしiOS/macOSアプリ開発に興味があれば、Xcodeを併用するワークフローを試してみる。

VS Codeの柔軟性とSwiftのパワーを組み合わせることで、あなたの開発の可能性はさらに広がるはずです。

免責事項

この記事で紹介しているVS Code拡張機能やツールは、コミュニティによって開発されているものが含まれます。これらのツールは活発に開発されていますが、機能の変更、バグ、または特定の環境での互換性の問題が発生する可能性があります。また、Swift言語やSwift Package Managerのアップデートに伴い、ここで解説した手順や設定の一部が変更される可能性もあります。

常に最新の情報や公式ドキュメントを参照することをおすすめします。もし問題が発生した場合は、使用しているVS Code拡張機能のGitHubリポジトリのIssueを確認したり、コミュニティに質問したりすることが解決への糸口となります。


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール