SwiftUIアプリのバイブコーディングはとても楽しい
2026年3月27日
新しいラップトップを買いました――128GBのM5 MacBook Proで、初期の印象としては、良いローカルLLMを動かすのに非常に有能だということです。Activity Monitorにイライラして、パフォーマンスを監視するための代替ツールをいくつかバイブコーディングすることにしました。その結果にとても満足しています。
これはバイブコーディングでmacOSアプリを作るの2回目の実験です。前回は数週間前のこのプレゼンテーションアプリでした。
Claude Opus 4.6 と GPT-5.4 の両方が SwiftUI にとても有能で、さらに完全な SwiftUI アプリが単一のテキストファイルに収まることが分かりました。つまり、Xcodeを開かずに、それらを使って何かを立ち上げられるわけです。
これまでに2つのアプリを作りました。Bandwidther は、どのアプリがネットワーク帯域を使っているかを教えてくれます。Gpuer は、GPUで何が起きているかを表示します。Claudeの提案で、これらはどちらもメニューバーのアイコンになり、情報が詰まったパネルを開くようになりました。
Bandwidther
まずこのアプリを作りました。Dropboxが何をしているのかを見たかったからです。見た目はこんな感じです:
最初のバージョンを作るのに使った完全なトランスクリプトを共有しています。私のプロンプトはかなり最小限でした:
このマシンからインターネットへ使われているネットワーク帯域と、ローカルLANへ使われている帯域がどれくらいかを教えて
(最初の疑問は、Dropboxが古いコンピュータからLAN経由でファイルを転送しているのか、それともインターネットからダウンロードしているのかを確かめたかった、というものでした。)
mkdir /tmp/bandwidther として、そこにネイティブのSwift UIアプリを書き、これらの詳細をライブに継続表示できるようにして
これで最初のバージョンができました。これが、さらに追求する価値があると確信できました。
git init をして、ここまでの分を git commit して
これから新しい機能を追加し始めるところだったので。
次に、このアプリに追加できそうな機能を提案して。目標は、異なるアプリごとの利用も含めて、ネットワーク使用に関する情報をできるだけ多く提供することだよ
Claudeに機能を提案してもらうのが良かった点は、私よりも「できること」の見通しがずっと良いことです。
いくつかバグを直すためにやり取りを少し重ね、その後、上に表示されている2列レイアウトに到達するために、さらにいくつかのプロンプトを送りました:
Per-Process Bandwidth(プロセスごとの帯域)を追加して、その作業が終わったらアプリを再起動して
逆引きDNSの機能を今度は追加して。ただし、元のIPアドレスも小さめの文字で引き続き見えるようにして
アプリを横に広いデザインにしてほしい。2列にしたい――左がプロセスごとの列、右がそれ以外の列
OK、タスクバーアイコンっぽいものにして。アイコンをクリックしたらアプリが表示されるようにして。アイコン自体は、きちんとしたミニマルな小さな見た目にして
ソースコードとビルド手順はsimonw/bandwidtherで確認できます。
Gpuer
Bandwidtherをあるセッションで作っていた間、別のセッションで、GPUが何をしているかを見るための同様のツールを作る作業も進めていました。最終的にこうなりました:
トランスクリプトはこちら。この件は、進行中のBandwidtherを例として使えたので、さらに少ないプロンプトで済みました:
このコンピュータがどれくらいのRAMとGPUを使っているか知りたい。難しいのは、GPUやRAM上のものはActivity Monitorに表示されないように見えるからだ
この情報はsystem_profilerとmemory_pressureを使って収集され、答えをくれました――もっと重要なのは、「これは可能なんだ」と分かったことなので、こう言いました:
/tmp/bandwidtherを見て、それと同様のアプリを/tmp/gpuerに作って。そこに上の情報を、継続的に表示するようにして。あるいは、もっと良くしてもいい
Bandwidtherアプリにもういくつか変更を加えた後、追いつくように指示しました:
今度は/tmp/bandwidtherで最近起きた変更を見て。そのアプリはすでにシステムトレイアイコンを使っている。あれを真似して
これは、コーディングエージェントを使うための私のお気に入りのトリックの1つであり続けています。つまり、他のプロジェクトから要素を< a href="https://simonwillison.net/guides/agentic-engineering-patterns/hoard-things-you-know-how-to-do/#recombining-things-from-your-hoard">組み合わせ直すことです。
GpuerのコードはGitHubのsimonw/gpuerで見つかります。
これらのアプリは信じすぎないで
この2つのアプリは典型的なバイブコーディングです。私はSwiftをほとんど知りませんし、彼ら(エージェント)が書いているコードをほとんど目を通していません。
しかし、さらに重要なのは、これらのツールが測定している値のようなmacOSの内部機構について、私はほとんど経験がないという点です。これらのツールが吐き出してくる数値やグラフが、信頼できるものなのか、正確なのかを評価する資格が、私はまったくありません!
そのため、両方のGitHubリポジトリに警告を追加しました。
返却形式: {"translated": "翻訳されたHTML"}今朝、Gpuerが私にはまだメモリが5GBしか残っていないと報告しているのを見つけたのですが、それは明らかに違っていました(アクティビティモニタによると)。そこでスクリーンショットをClaude Codeに貼り付け、計算を調整してもらいました。そして新しい数値は正しそうに見えますが、それでも正確に報告できているかどうかには自信がありません。
これらをGitHubで共有したのは、ClaudeがSwiftUIでどんなことをできるかという興味深い例だと思ったからです。
アプリ自体については自信がないものの、これらのプロジェクトからはいくつか有用なことを学びました:
- SwiftUIアプリは、1つのコードファイルでかなりのことができます。GpuerApp.swift(880行)とBandwidtherApp.swift(1063行)を見てください。
- Swiftで、さまざまなターミナルコマンドをきれいなUIにまとめることは簡単に実現できます。
- SwiftUIアプリケーションに関して、Claudeは意外なほど良いデザインのセンスを持っています。
- アプリをメニューバーアプリにするのも、追加で数行のコードを書くだけで済みます。
- この種のアプリをビルドするのに、Xcodeを開く必要はありません!
この2つのアプリを作るのにかかった時間はほとんどなく、SwiftUIでmacOSアプリを作るというのは、今後のプロジェクトで検討すべき新しい能力だと私に確信を持たせてくれました。
より最近の記事
- Claudeスキルを使ってStarlette 1.0を試す - 2026年3月22日
- コメントに基づいてHacker Newsのユーザーを分析する - 2026年3月21日
これはSimon WillisonによるVibe coding SwiftUI apps is a lot of funで、2026年3月27日に投稿されました。
シリーズの一部私がLLMとChatGPTをどう使っているか
- Cooking with Claude - 2025年12月23日 午前5:01
- ShowboatとRodneyを紹介。エージェントが作ったものをデモできるように - 2026年2月10日 午後5:45
- Showboatの新しい2つのツール: Chartroom と datasette-showboat - 2026年2月17日 午前12:43
- Vibe coding SwiftUI apps is a lot of fun - 2026年3月27日 午後8:59
前の記事: Claudeスキルを使ってStarlette 1.0を試す
月間ブリーフィング
$10/月でスポンサーになって、今月の最も重要なLLMの動向を厳選したメールダイジェストを受け取ってください。
私にお金を払って、あなたに送る量を減らしてもらいましょう!
スポンサーになって購読





