iOSアプリ開発でCursor/WindSurfを1ヶ月くらいつかってみた(ざっくりメモ)
Apple Inteligenceつかえるよ?とかGithub Copilotならプラグインあるよ?とかではなくて、流行っているCursorとかClineとかでいい感じに使いたいんだよ!とりあえず、つかってみたよ!というお話です。
Swiftをつかったアプリ開発です。Flutterだったらまた大きく変わると思います。
Cursor/Windsurf
CursorとWindsurfをつかってiOSアプリ開発をより便利なものにできないかといじくり回している。
Cursor - The AI Code Editor Built to make you extraordinarily productive, Cursor is the b www.cursor.com
Windsurf Editor and Codeium extensions Codeium is the AI code assistant platform that developers lov codeium.com
Cursor
cursorは、AIアシスタント機能を備えたモダンなコードエディタです。VSCodeのような操作感を持ちながら、コード生成、バグ修正、リファクタリングなどをAIがサポートします。開発効率を高める設計で、特にプログラマー向けに最適化されています。
Claude 3.7
Windsurf
CodeiumのWindsurfは、開発者向けのコードAIアシスタントツールの一つです。Codeium(コーディウム)は、コード補完やコード生成などの機能を提供するAIコーディングツールで、Windsurfはその中の特定の機能またはプロジェクトを指しています。
Windsurfは、コードエディタ内で直感的に使える設計で、開発者がコードを書く際のワークフローをスムーズにする目的があります。具体的には、コンテキストを理解したコード提案や自動補完機能を提供し、開発スピードと品質の向上を支援します。
Codeiumは、GitHub Copilotの代替として知られており、多くのIDEやエディタと統合できる拡張機能として提供されています。Windsurfはこのエコシステム内の一部を構成していると考えられます。
詳細な最新情報については、Codeiumの公式サイトや関連ドキュメントを確認することをお勧めします。
Claude 3.7
CodeiumというGithub Copilotみたいなサービスが以前からあって、そこがつくったCursor(VSCodeに手を入れたやつ)がWindSurfである。Codeium自体はXcode Pluginとしても動作させられるという世にも珍しいサービスです。
ただそれだけで、Codeium最高だよね!ってなる気がしないでもないです。
AIをつかうためにやっていること
そのときつかっているのが、CursorなのかWindSurfなのかはわりと気分(設定をいろいろいれた分Cursor率がたかい)なので、とりあえず、VSCodeとして表記します。
Xcodeを起動して、確認したい画面のPreviewを表示する
VSCodeをプレビューが隠れないくらいの大きさで開いて編集する
Simulatorもそのプレビューくらいのスペースに配置
VSCodeをiOSアプリ開発でつかう雑な方法
Swift Extensionをいれる
- SourceKitをLSPとしてVSCodeから扱えるようになる
Source Kit の設定を書く
SwiftFormat Extensionをいれる
- note では swiftlangじゃない方のSwiftFormatをつかっている
{
"swift.backgroundCompilation": false,
"swift.diagnosticsStyle": "llvm",
"swift.SDK": "/Applications/Xcode-16.3.0-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.4.sdk",
"swift.excludePathsFromPackageDependencies": [
".git",
".github"
],
"swift.sourcekit-lsp.serverArguments": [
"-Xswiftc",
"\"-sdk\"",
"-Xswiftc",
"\"/Applications/Xcode-16.3.0-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator18.4.sdk\"",
"-Xswiftc",
"\"-target\"",
"-Xswiftc",
"\"arm64-apple-ios18.4-simulator\""
],
"swift.path": "/Applications/Xcode-16.3.0-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin",
"swift.autoGenerateLaunchConfigurations": false,
"editor.formatOnSave": true,
"[swift]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "vknabel.vscode-swiftformat"
},
"swiftformat.configSearchPaths": [".swiftformat"],
"swift.swiftEnvironmentVariables": {
"DEVELOPER_DIR": "/Applications/Xcode-16.3.0-Beta.app"
}
}
現在の設定はざっくりですが、こういう感じにしています。
Xcodeはxcodesをつかって管理しているんですが、バージョンとか決め打ちでいれています。
serverArguments の設定がこれでよいのか?ほんとうか?という疑問があるんですが,ある程度うごいているのでこれですすめています。
このあたりの設定は、iOSアプリ開発に関するものというよりはSwiftをVSCodeであつかうものという感じになります。
ビルド用に次のようなTaskも追加しました。このあたり適当なextensionをいれても対応できそうですが、ある程度実行できればいいか。という感じでの追加になります。
{
"type": "shell",
"command": "xcodebuild",
"args": [
"-project",
"note.xcodeproj",
"-scheme",
"note",
"-configuration",
"Debug",
"-sdk",
"iphoneos"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [
"$gcc"
],
"label": "xcodebuild: Build note",
"detail": "Build note iOS app using xcodebuild"
},
CursorでiOSアプリ開発やってみて
noteのエディタです!というような複雑な仕様ではなくて、仕様がしっかりしている機能・画面などの実装ではAgentでの実装がかなり使えました。
実際、書いてみるとボイラープレートがほとんどです。みたいなコードとかだと、一気につくってくれて便利です。
Tabの連打でいろいろ修正・補完してくれるというのも便利でした。
もっと、Ruleを充実させて秘伝のタレにできればより便利になるだろうな。という気がします。
あと、SourceKitが生きている間はXcodeよりも快適にサクサク補完やAgentが動いていました。
よかったところ
仕様がはっきりしている時のたたき台コード生成
複数個所で同様の修正をしないといけないときのtab連打
補完がXcodeより頭がいい
テストかいて!っていったら書いてくれる
サーバー側の質問に答えてくれる(サーバー側コードを開いた状態)
Shell Scriptとか専門から外れているところの処理を書くの超便利
ChatGPTのかわりにもつかえる
だめだったところ
SourceKitが黙って死んで補完がバカになるときがよくある
Xcodeがないと不便
エラー表示などがXcodeの方が上
差分ビルドとかがない(?)のでXcodeの方がビルドがはやい
- デバッグが楽
たまにCursorがメモリを食いつぶしながら死んでいく
Swift ConcurrencyやSwift Testing、Observation frameworkとかの比較的あたらしい機能で実装をあまりやってくれない
ruleとかで設定していてもスルーされている時がよくある
swiftファイルを対象としたルールだと新規でファイルをつくってもらう系プロンプトだと読込まれていなさそうなときがあるとか
ショートカットがちがってツライ(設定しろという話ではある)
なんか動かなくなるときがある
- Xcodeごと死んでいくときがある
ざっとまとめるとこういう感じになります。今後Cursorを使い続けるか?といわれたら、きっと使い続けるとおもいますね。
iOSアプリエンジニアにCursorは必要か?
万人にお勧めするか?といわれるとAIが使いたいならおとなしくGithub CopilotのXcode Pluginをいれるか、CodeiumのXcode Pluginをいれる方が幸せだとおもうよ! という返答をするかと思います。わけのわからないところではまってもキレない強い心が必要。
なお、こういう環境セットアップが好きな人にはいいとおもいます。私は大好きなので楽しくやっています。
$20/monthの価値があるか?
サーバーサイドもやっているとか、調査に専門外のコードをみにいく必要があるみたいな場合は、Cursorをつかったら調査が圧倒的にはかどるのでそのためだけでも導入する価値があるかもしれないです。$20はともかく$10だったらまよわずGo!という気はしますね。
また、ボイラープレートとかよくあるUIのたたき台を生成するという点では、Swiftでもかなり役立ちます。さくっとそれっぽいUIをつくってくれるので、そこから微調整で求めていたものにできる可能性があります。それ以外のコード補完でもかなり使えるときがおおいと思います。
そういうところを、1ヶ月単位で考えたら余裕で3時間(1200円*3)以上は時短になっているんじゃないかと思います。
なお、環境セットアップとかをがんばりたくない人にはGithub Copilotのほうが圧倒的にいい気がします。
(この記事を書いている裏で、ちょくちょくAgentに指示だしてコードかいていてもらうとかも出来ていますしね)
今後の野望
Androidも同じようにできるようになりたい。もしできたら、Android/iOS同時進行でかなりのことができるようになるのではないか?という気がする。
同じようなディレクトリ構造とかアーキテクチャにしないと人間の認知負荷が高くてツライってなりそうですが。。。
ポエム
AIをつかったプログラミングはITエンジニアとしての幅を手軽に大きく広げてくれると感じました。深さという点は幅に比べて手軽さはないのですが、AIの書いて来たものを理解していくという方法をとればある程度深められる気がしました。
コピペプログラミングよりも悪質なプログラミングになる可能性もめっちゃあるよね!とも思いました。
知の高速道路から次はなにに?
今まで知の高速道路を突っ走って、その先の渋滞に巻き込まれてしまっていると思っていました。しかし、実は国道を歩いていただけで、高速道路どころか高架下すら歩けていなかったのではないでしょうか。Cursorとかはチャリなのか原付なのかおばあちゃんの乗ってるやつなのかわからないですけど、車級まではまだまだ行けていないんだなというのを感じました。
アセンブリなんて知らなくても、今時のプログラミングができるように、今時のプログラミングを知らなくてもプログラムを作れるようになるでしょう。
ファミコンのXXXには激ヤバメモリ管理があったとかのように、今のプログラミングも、昔はそういう職人芸があったんだと言われるようになっていくんでしょう。