[わ]

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として表記します。

VSCodeをiOSアプリ開発でつかう雑な方法

  1. Swift Extensionをいれる

    1. SourceKitをLSPとしてVSCodeから扱えるようになる
  2. Source Kit の設定を書く

  3. SwiftFormat Extensionをいれる

    1. 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が動いていました。

よかったところ

だめだったところ

ざっとまとめるとこういう感じになります。今後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には激ヤバメモリ管理があったとかのように、今のプログラミングも、昔はそういう職人芸があったんだと言われるようになっていくんでしょう。

#note