1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

株式会社ゆめみAdvent Calendar 2024

Day 23

SweetPadを使ってVisual Studio CodeやCursorでiOSアプリ開発を行う

Posted at

SweetPadは、Visual Studio CodeやCursorでのiOSアプリ開発をサポートする拡張機能です。

一般には、iOS向けのネイティブアプリ開発はXcodeで行います。今回取り上げるSweetPadは、Visual Studio CodeやCursor上でXcodeプロジェクトをビルドして実行できるようにします。これはXcode CLIや各種の外部ツールを利用して実現されています。

以下、Visual Studio CodeをVSCodeと表記します。なお、この記事でVSCodeとして記載している箇所は、Cursorに置き換えても同様に利用できます。

前提条件

SweetPadはMac上でのみ使用できます。SweetPadはVSCodeの拡張機能ではありますが、LinuxやWindowsでiOSアプリ開発ができるようになるわけではありませんのでご注意ください。

また、Xcodeをインストールしておく必要があります。ほかにも、使いたい機能に応じて各種の外部ツールをインストールする必要があります。どの外部ツールが必要かは機能ごとに後述します。

各種の外部ツールをインストールするために、SweetPadではHomebrewによる外部ツールのインストール機能を提供しています。ただ、Homebrewは必須というわけではありません。

SweetPadのインストール

SweetPad拡張機能をMarketplaceからVSCodeにインストールします。

このとき、SweetPadからの依存関係でCodeLLDB拡張機能もインストールされます。なお、VSCodeのMarketplaceにはSwift拡張機能も存在しています。SweetPadからの依存関係ではSwift拡張機能はインストールされませんが、後述の自動補完の機能では必要になります。

SweetPad拡張機能のインストールは、VSCodeの左側のサイドバーにSweetPadが表示されていれば無事にできています。SweetPadのパネルは、「Build」「Destinations」「Tools」の3つに分かれています。

SweetPadのパネル

外部ツールのインストール

SweetPadの「Tools」パネルでは、各種の外部ツールが簡単にインストールできるようになっています。インストールボタンを押すとHomebrewでインストールしてくれます。

外部ツールのインストールにHomebrewを使いたくない場合は、この「Tools」パネルを使わずに自分でインストールしても構いません(たとえばMintでインストールしても良いです)。ただしその場合は、VSCodeから見える場所にツールを置くか、SweetPadの設定でツールの場所を指定するか、何かしらの対応が必要になってきます。

Xcodeプロジェクトの作成

Xcodeプロジェクトの作成は、SweetPad上ではなくXcodeで行います。

Xcode 16以降では、Xcodeプロジェクトの形式が改善されてXcodeプロジェクト内のファイルがフォルダ管理になっています。そのため、プロジェクトに対するファイルの追加や削除をSweetPad上で問題なく行えます。

逆にいえばXcode 15まではフォルダ管理ではなかったため、古いプロジェクト形式だと、ファイルの追加や削除をSweetPad上で行ったときXcodeプロジェクトに正しく反映されません。Xcode 16以降の新しいプロジェクト形式を使うことをすすめます。

別の選択肢として、Xcodeを使う代わりに外部ツールでプロジェクト生成する方法もあります。XcodeGenとTuistがSweetPadでサポートされています。好みに応じて利用すると良いでしょう。xcodegentuist はSweetPadの「Tools」パネルでインストール可能です。XcodeGenやTuistの設定ファイルは別途作成する必要がありますが、準備しておけばSweetPad上でXcodeプロジェクトの生成が行えます。

ビルドと実行

まず、XcodeプロジェクトがあるルートフォルダをVSCodeで開きます。

SweetPadの「Build」パネルでビルドと実行が行えます。この機能にはXcode CLIの xcodebuild を利用しています。Xcodeがインストールしてあれば問題ありません。

必須ではありませんが、xcbeautify ツールをインストールしておくとビルドログが見やすくなって便利です。xcbeautify は「Tools」パネルでインストール可能です。

なお、VSCodeのタスク機能(tasks.json)でもビルドを実行できます。また、SweetPadの設定で追加のビルド設定も可能です。

また、テストの実行も可能です。

アプリ実行端末

SweetPadの「Destinations」パネルでアプリを実行する端末を指定できます。シミュレータと実機の両方が扱えます。この機能にはXcode CLIの xcrun を利用しています。Xcodeがインストールしてあれば問題ありません。

VSCodeの下側のツールバーでも、実行端末の指定を変更できます。

デバッグ

デバッグは、VSCodeのサイドバーにある「実行とデバッグ」で行えます。この機能にはSweetPadからの依存関係でインストールされているCodeLLDB拡張を利用しています。

準備として、VSCodeの「実行とデバッグ」サイドバーの中にある「launch.jsonファイルを作成」をクリックすると、SweetPadが launch.json を生成してくれます。

その準備をしたら、「実行とデバッグ」の中でデバッグ実行が行えます。ブレークポイントなども利用できます。

コードの自動補完

Xcodeと連携してSwiftコードの自動補完をするには、次の2つが必要です。

Swift拡張機能はMarketplaceからVSCodeにインストールします。xcode-build-server はSweetPadの「Tools」パネルでインストール可能です。

これらの準備をしたら、VSCodeのコマンドパレットから「SweetPad: Generate Build Server Config」を実行して、buildServer.json を生成します。その後Xcodeプロジェクトをビルドすると、コードの自動補完が動くようになります。

補足として、仕組みについて簡単に述べます。VSCodeの自動補完機能にはLSP(Language Server Protocol)が利用されます。Swift向けのLSPの実装はSourceKit-LSPで、Swift拡張機能はSourceKit-LSPを使ったLSPクライアントとして動作します。SourceKit-LSPはXcodeプロジェクトを直接はサポートしていませんが、xcode-build-serverがXcodeとSourceKit-LSPを連携させるLSPサーバーとなります。そのおかげで、Xcodeプロジェクトでも自動補完機能が使用可能になります。

コードの整形

Swiftコードのフォーマット機能は、SweetPad拡張とSwift拡張の両方が提供しています。そのため、両方の拡張がインストールされている場合にはどちらを使用するかをVSCodeの設定で指定する必要があります。SweetPad拡張のフォーマット機能を有効にするには、VSCodeで次のように設定します。

{
    "[swift]": {
        "editor.defaultFormatter": "sweetpad.sweetpad"
    }
}

SweetPadのフォーマット機能は swift-format を利用しています。swift-format はSweetPadの「Tools」パネルでインストール可能です。

これらの準備ができたら、コードの整形が動くようになります。VSCodeのFormat DocumentコマンドやFormat On Save機能が使えます。

なお、Xcode 16以降では swift-format がXcodeに内蔵されていますので、それを使っても良いです。その場合は、SweetPadの設定でパスを指定する必要があります。

{
    "sweetpad.format.path": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-format"
}

おわりに

SweetPad拡張機能は既にある程度iOSアプリ開発ができるだけの機能を備えています。一方で、まだまだ開発中でもあり、頻繁にバージョンアップしています。

「Tools」に含まれているSwiftLintやios-deployは、単にインストール可能なだけでSweetPadの中で利用する機能はまだ用意されていません。しかし、いずれサポートされるのではないかと期待しています。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?