【Swift】VSCodeやCursorで快適なSwift開発ライフを送りたい
「新たに Swift 案件やることになったが Xcode は慣れず使いづらい」
「使い慣れた VSCode で Swift 開発したい」
「Xcode プロジェクトを VSCode で開いても大量のエラーが出て見るに耐えない」
そんな悩みの1つの解決策として、 SweetPad という VSCode 拡張機能があります。
SweetPad を使うことで、VSCode や Cursor で基本的な Swift プロジェクト(Xcode プロジェクト)開発ができるようになります。
※ 以降、VSCode
と記載箇所は(Cursor含む)
の前提で記載いたします。
検証時の動作環境
- Xcode 16.2
- SweetPad 0.1.66
SweetPad とは
SweetPad とは、VSCode または Cursor を使用して、 Swift プロジェクトを開発できるようにする拡張機能です。
Xcode の代替手段を目指して開発されている拡張機能みたいです。
SweetPad を用いることで実現可能となる機能は以下です。(引用)
- ✅ Autocomplete —
xcode-build-server
を使用してオートコンプリートを設定する - 🛠️ Build & Run —
xcodebuild
を使用してアプリケーションをビルドして実行します - 🪲 Debug —
CodeLLDB
を使用して iOS アプリケーションをデバッグする - 💅🏼 Format —
swift-format
または他の任意のフォーマッタを使用してファイルをフォーマットします - 📱 Simulator — iOS シミュレーターを管理する
- 📱 Devices — iPhone または iPad で iOS アプリケーションを実行する
- 🛠️ Tools —
Homebrew
を使用して重要な iOS 開発ツールを管理します - ✅ Tests — シミュレータとデバイスでテストを実行する
どれも設定が簡単なのも嬉しいポイントです。
使用条件としては、「MacOS であること」と「Xcode がインストールされていること」が必要となります。
基本設定
基本的には、以下2つの拡張機能をインストールするだけで OK です。
SweetPad のインストール後、🍬アイコンを選択すると、3つのメニューが表示されます。
-
BUILD
- ビルド対象一覧
-
DESTINATIONS
- 実行可能なデバイス一覧
-
TOOLS
- 機能実行に必要なツール設定状況
- 全てを必ず有効にする必要はなく、使いたい機能次第で有効とするでも問題ありません。
- ここからインストールも可能(右側のコンソールボタンを押下するとインストールコマンドを打ってくれます)
- 機能実行に必要なツール設定状況
以降、各機能について詳細に見ていきます。
AutoComplete
✅VSCode でも Xcode のように補完や参照がされるようになります。
こちらを有効化することで、エラーだらけの真っ赤な VSCode 画面が解消されます。
設定はとても簡単で、以下を実行するだけです。
- TOOLS から
xcode-build-sever
をインストール - コマンド パレットからコマンド
SweetPad: Generate Build Server Config(buildServer.json)
を実行し、設定ファイルを作成。(生成された設定ファイルは特にいじらなくて OK) - 一度 build を実行すると、設定ファイルが反映されて補完機能等が有効に
【buildServer.json の運用についての検討】
チーム開発の際は、buildServer.json
をどのように運用するかの検討が必要です。
buildServer.json
の中身は以下のような内容となっています。
workspace
は共通なので、./<***>.xcworkspace
と変更すればよさそうですが、build_root
が悩ましいところです。
build_root
の指定先を変えればチームで共有できますが、そもそも Path を変更しても影響が無いものなのかが微妙なので、ひとまずはメンバー各々にbuildServer.json
生成してもらう方向で考えています。(生成はコマンド1つで一瞬なので)
→ 時間がある時にこの辺の検証は、もう少ししてみたいと思います。
{
"name": "xcode build server",
"version": "0.2",
"bspVersion": "2.0",
"languages": [
"c",
"cpp",
"objective-c",
"objective-cpp",
"swift"
],
"argv": [
"/opt/homebrew/bin/xcode-build-server"
],
"workspace": "/<UserPath>/<PJName>/<***>.xcworkspace",
"build_root": "/<UserPath>/Library/Developer/Xcode/DerivedData/<***>-<hash>",
"scheme": "<ShemeName>",
"kind": "xcode"
}
【備考】
-
内部的な関係性
- SweetPad ↔️ xcode-build-server ↔️ SourceKit-LSP
-
LSP
LSP(Language Server Protocol)とは、「コード補完、定義移動、エラーチェック」などのサポート機能(言語サービス)を、エディタや IDE に提供するためのプロトコル。
LSP は Protocol であるため、LSP 自体に言語サービスが備わっているものではありません。 -
SourceKit
Apple が提供する Swift 言語の解析エンジン。Swift の「コード補完、定義移動、エラーチェック」などのサポート機能(言語サービス)を提供。
Xcode をエディタとして使用する場合は、デフォルトで Xcode に組み込まれています。 -
SourceKit-LSP
SourceKit が持つサポート機能を、共通の通信規格(LSP)で他のエディタや IDE に提供するためのもの。
SourceKit-LSP を用いることで、Xcode 以外のエディタでも、素の Swift コードに対して SourceKit が有効となります。ただし、「Xcode プロジェクト」に対しては、 SourceKit-LSP はサポートしていません。
※「Xcode プロジェクト」 ≒ 「.xcodeproj や .xcworkspace などを持つ、Xcode 独自のビルドシステム、プロジェクト構造のこと」を、本記事では指します。 -
- SourceKit-LSP に対して、「Xcode プロジェクト」に対してもサポート機能(言語サービス)を機能させるようにするためのもの。
Build & Run
🛠️xcodebuild
を使用して、VSCode から直接ビルドして実行することができます。
また、TOOLS のxcbeautify
を有効化して使用することがオススメされています。
- 🔽 アイコン:ビルド&実行
- 🔧 アイコン:ビルド
- 右クリック:その他タスク
- テスト実行もここから実行可能
settings.json
や tasks.json
を設定することで、ビルドや実行の挙動をカスタマイズすることも可能です。詳細はドキュメントを参照ください。
【備考】
-
xcodebuild
Xcode のビルドシステムをコマンドラインから操作するためのコマンドラインツール。 -
xcbeautify
xcodebuild
の出力を見やすく整形するツール。fastlane でも推奨。
Debug
🪲VSCode のデバッグ機能を使用して、iOS アプリケーションのデバッグ実行が可能となります。
Flutter などではお馴染みの F5 キー 実行によるデバッグ機能が使えます。
上記の通りlaunch.json
を生成すると、以下のような設定が生成されます。
{
"version": "0.2.0",
"configurations": [
{
"type": "sweetpad-lldb",
"request": "attach",
"name": "SweetPad: Build and Run (Wait for debugger)",
"preLaunchTask": "sweetpad: debuging-launch"
}
]
}
このまま実行すると preLaunchTask のsweetpad: debuging-launch
が見つかりません。とエラーが出てしまうので、ドキュメントの設定内容をコピペします。(デフォルトで設定しておいて欲しい所ではありますが、、、)
{
"version": "0.2.0",
"configurations": [
{
"type": "sweetpad-lldb",
"request": "attach",
"name": "Attach to running app (SweetPad)", // nameは何でもOKです
"preLaunchTask": "sweetpad: launch" // ここを変更
}
]
}
ドキュメントの設定内容に差し替え、デバッグ実行を実施すると、正常に動作するようになりました。
実行環境や実行モードを切り替えて実行したい場合などは、適宜ドキュメントを参照にtasks.json
やlaunch.json
に設定を追記してください。
【追記】
- ブレークポイントを貼っても変数の中身が見れないのが残念ポイント。。。
ref: Debug variables not shown #148 - ただ、実行時間は Xcode から実行するよりもかなり短い印象(体感)。
【備考】
-
LLDB
OSS の debugger であり、Xcode デフォルトの debugger。 -
CodeLLDB
LLDB を搭載した VSCode 用の拡張機能。
SweetPad では、内部的に CodeLLDB を使用している。
Format
💅🏼settings.json
で設定した format を使用して、Swift ファイルを自動フォーマットすることができます。
{
"[swift]": {
"editor.defaultFormatter": "sweetpad.sweetpad",
"editor.formatOnSave": true
}
}
SweetPad では Apple 純正のswift-formatがデフォルト使用されますが、他の format を指定して使用することも可能です。
Simulator & Devices(DESTINATIONS)
📱SweetPad では、iOS シミュレータや実機デバイスを簡単に管理することができます。
SweetPad では、特定のシミュレータや接続されたデバイスなど、アプリを実行できるデバイスのことを「Destination」と呼ぶようです。
おわり
SweetPad で快適な Swift 開発ライフを。
参考記事
【参考記事】

NCDC株式会社( ncdc.co.jp/ )のエンジニアチームです。 募集中のエンジニアのポジションや、採用している技術スタックの紹介などはこちら( github.com/ncdcdev/recruitment )をご覧ください! ※エンジニア以外も記事を投稿することがあります
Discussion