世界を動かす技術を、日本語で。

非自明な「Ghostty」機能のバイブレーション

概要

  • GhosttyのmacOS向け自動アップデート通知機能 の開発プロセスを紹介
  • AIと人間の協働 による実践的なエージェンティックコーディングの詳細な記録
  • UI/UX設計、バグ対応、コード整理 までの全セッションを公開
  • AIの活用法や限界、トークンコスト も解説
  • 人間主導の最終判断とコード品質維持 の重要性を強調

非侵襲的macOS自動アップデート通知機能の開発記録

  • Ghostty向けの新機能 として、作業を妨げないmacOSの自動アップデート通知機能の開発
  • OpenAIのキーノート中にアップデート通知が割り込んだ事例 がきっかけ
  • 通知はウィンドウやフォーカスを奪わず、タイトルバー右上やウィンドウ右下に非モーダル表示 する設計
  • Sparkleフレームワーク でカスタムUI対応可能と確認
  • AIは主にプロトタイピングやアイデア出し、計画策定に活用、最終的な品質確保は人間が担当

AIセッションの進め方と工夫

  • 初回セッションではUIプロトタイピングに集中、AIには「計画のみ」を指示し、即座にコード生成は依頼しない
  • 小さなチャンクでの作業分割・レビュー・反復を徹底、大きな変更は避ける
  • AIのアウトプットは方向性が良ければ採用、インスピレーション源としても活用
  • 「oracle」(高精度AIサブエージェント)で計画段階の精度向上
  • プランはspec.md等に保存し、以降のセッションで参照可能に

バグ対応とAIの限界

  • AIが解決できないクリティカルバグ に直面した際は、人間自身の調査・学習を優先
  • AIによる「ハイルメアリー」的な修正提案はコストが低く、理解できない場合はリジェクト
  • 最終的にAIに頼らず、設計見直しやUI配置変更(タイトルバー→ウィンドウ右下)で解決策を模索

コード整理とドキュメント整備

  • 関数やViewModelの適切な配置・汎用化 (例:pill背景・バッジ関数の移動・リファクタリング)
  • ドキュメント追加でコード理解を深め、将来のAIセッションや他の開発者の助けに
  • ViewModelのアプリ全体スコープへの移動で、情報の一元管理を実現
  • 整理・リファクタリングは「アンチスロップセッション」として重要視

バックエンド開発と再整理

  • UI完成後、バックエンド(Sparkle連携)の開発へ着手
  • AIに「穴埋め」的なタスクを依頼する際は、関数名・パラメータ・TODOコメントで明確に指示
  • AIが不適切な設計をした場合は、即座に破棄し、ViewModelの再設計・型の見直しを手動で実施
  • ViewModelの型変更(タグ付きユニオン等)で、フロント・バックエンド両面での拡張性・保守性向上

AI活用のベストプラクティスと人間主導の重要性

  • AIは「ゼロからイチ」の創造やアイデアブレストに最適
  • 大規模・本質的な設計や最終品質保証は人間が担うべき領域
  • AIの提案は理解・納得できる範囲でのみ採用、ブラックボックスなコードはリジェクト
  • ドキュメント・設計書の整備で、AIと人間双方の生産性を最大化

まとめと学び

  • AIと人間の協働による非トリビアルな機能開発の実践例
  • AIの限界を見極め、適切なタイミングで人間主導に切り替える判断力
  • 計画・設計・リファクタリング・ドキュメント整備の重要性
  • 最終的な品質担保と、将来のメンテナンス性を意識した開発プロセスの推進

Hackerたちの意見

余談だけど、GhosttyがAIコーディングツールの使用を開示することを義務付けたみたいだね。https://github.com/ghostty-org/ghostty/pull/8289

Ghosttyは最高で、iTermをほぼ捨てるところだったけど、cmd-fを押したら何も起こらなかった。https://github.com/ghostty-org/ghostty/issues?q=is%3Aissue%2...

検索機能がないのと、変なSSH制御文字の問題がブロッカーになってる。それ以外は素晴らしいんだけどね!

これも僕のブロッカーだね。

cmd-fが最初からあったら、みんながこのGhosttyの投稿で何を話してたのか気になる。毎回それについて聞くのはちょっと退屈だよね!LLMツールやコーディングのアプローチについて話す面白いことがあるのに。もちろん、cmd-fについて文句を言いたい気持ちの方が強いけど ;)

うん、すぐに(残念ながら!)Warpに戻っちゃったよ。Ghosttyは俺の使い方にはちょっと物足りなかった。アドバイスとして言っとくけど、Ghosttyのデフォルトのスクロールバックバッファは約10MBしかないけど、設定で簡単に変更できるよ。

2026年3月のv1.3が予定されてるよ。 https://ghostty.org/docs/install/release-notes/1-2-0#roadmap

面白いことに、先週末にClaudeを使ってGhosttyに検索機能を実装してたんだ。実際の検索の実装はすでにある程度動いてたから、ほとんどの作業はUIに接続するだけだった。合計で10時間くらいのセッションを2回やったら、基本的な検索機能がハイライト付きで、次のマッチや前のマッチに移動するのがLinuxフロントエンドで動くようになった。ただ、検索の実装はまだ進行中だから、一般的に使える状態ではないよ。それでも、テキストのストリームを追いかける時にこの「基本的な」機能を作るのがどれだけ複雑かを考えると、感謝の気持ちが湧いてきた。

ヒント:インスピレーションのためにAIをよく使うよ。この場合、作ったUIコードの多く(全部じゃないけど)をそのまま残したけど、エージェントにプロンプトを出して、全部捨てて自分でやり直すことも多い。創造の「ゼロから一」段階がすごく難しくて時間がかかるから、AIは僕のミューズとして最高なんだよね。これがコーディングエージェントの最大の利点だと思う。みんながAIを介したプロジェクトのメンテナンス性や拡張性について心配しているのは理解できるけど、僕は気にしない。プロジェクトを立ち上げて、機能の一部とやり取りできるようになった瞬間から、もう走り出す準備ができてる。プログラミングでコストがかかるのは、そういう黄金の瞬間に到達するまでの80%なんだ。この部分で、みんながコーディングエージェントに対して持っている反対意見が理解できない。明らかに価値があると思うし、エージェントを使って何もしなくても、コードを全部捨ててもいいんだから。追伸:そのベーコンに重りを乗せて!

ここが、僕がコーディングエージェントに対する反対意見が理解できない部分なんだ。だって、同僚が持続不可能なレベルで雑な仕事をして、管理職に自分がどれだけ生産的かを誇ってるから。彼のPRをレビューするのがどれだけひどいかを指摘するのが、今やキャリアにとってさらにリスクになってる(チーム内で声を上げたい人は他にもいるけど)。ネットには、自分が10倍の開発者になった未来に生きていると主張する人が溢れてる。こういう主張をするのにほとんどコストがかからないけど、僕や他の多くの人の日常に悪影響を与えてる。これらのネットの声を責めるつもりはないけど(クマがハイカーを襲うのを責めないように)、彼らがもたらしているダメージは現実なんだ。

「プロジェクトを立ち上げて、機能の一部とやり取りして洗練させられる瞬間が来たら、俺は一気に進むよ。[...] ここが、俺が人々がコーディングエージェントに対して持つ反対意見を理解できない部分なんだ。それが君にとって価値のあることなんだよ。俺にとっては、ゼロから一にする部分が一番やりがいがあって楽しいから、可能性がほぼ無限に広がる瞬間なんだ。何か本当にオリジナルで新しいものを作れるからね。AIモデルに一方向に誘導されると、その楽しさを失う気がするんだ。」

今週、ミッチェルの開発環境についてのインタビューを見たんだけど、IDEの代わりにneovimを使うことについて聞かれたとき、「自分のためにコードを書いてくれるものは欲しくない」とか言ってた。これを批判として指摘するつもりはないけど、彼みたいな優れた開発者が、以前のインテリセンス的なツールでは感じなかったLLMの価値を見出しているのは注目に値すると思う。

100%同意! > 「そのベーコンに重りを乗せろ!」?

プロジェクトを立ち上げて、機能の重要な部分とやり取りできるようになったら、すぐにレースに出る。AIは「立ち上げる」ために絶対に役立つ。99回目をやった後に熱意を失いがちなボイラープレートや足場を多く外注できるからね。 > AIは私のミューズとして素晴らしい。ミューズの定義が違う気がするけど。ここでは書くことについて話してるけど、私にとってミューズは創造の源泉、アイデアの源だよ。LLMの「温度」を上げて、文字通りと比喩的に海が宇宙に蒸発するまでやってみて。結局、最終的な統計的蒸留を得てるから。 https://imgur.com/a/absqqXI

この分野に入る理由は人それぞれだよね。

  • コーディングそのものの行為や技術が好きな人。AIは他のエンジニアからの雑な仕事を助長するし、作業を軽視しちゃう。AIはマイナスだね。
  • 一般的なエンジニアリングが好きな人。AIは書かなきゃいけない(退屈な)コードの量を減らすのに役立つけど、高度なアーキテクチャの指導はまだ必要。ツールだね。
  • プロダクトが好きな人。AIはプロトタイピングには便利だけど、単独では良いプロダクトは作れない。ツールだよ。
  • MVPを作りたいだけの人。AIは少なくとも動くものを作るのが本当にすごい。コードが悪くても、プロダクトフィットをテストしてるからね。クールエイドモードだよ。だからみんな全然違う視点を持ってるんだ。

同意するな。俺の個人的なルールは、LLM生成のコードを使ったブランチは全部捨てること。でも、いろんなアイデアのプロトタイピングのスピードのおかげで、すごく助かってるよ。

先日、誰かとこの話をしてたんだけど、概ね同意する。プロトタイプを作るのには本当に素晴らしいよね。インタラクションを試したり、アイデアをテストするために何か触れるものがあるのはいいことだ。ただ、二つの問題があるんだ。まず一つ目は、見た目や動きが欲しいものに似てるからって、実際には本番用じゃないってマネジメントを納得させるのが大変ってこと。 vibe codedのコードは、以前のプロトタイピングよりもさらに本番用には程遠い。二つ目は、手作りのプロトタイプは技術スタックや実装について何かを学ぶことができるってこと。そう、主な目的は早く動かしてみることだけど、技術的な側面での学びもあるし、プロトタイプが基盤となる技術的な方向性を示すことも多い。vibe codedのプロトタイプでは、そういうのが得られない。コードがほとんど使えない上に、進めることに決めたらまたゼロから始めることになる。アイデアはテストしたけど、技術やデザインは本当にテストしてない。まだ役立つと思うけど、「早めにプロトタイプを作る」っていうのは大賛成だし、LLMを使って驚くほど大きなシステムをほぼ瞬時に作れることもあった。でも、プロセスの理解をシフトさせる必要があると思う。非LLMプロトタイプは仮想的な10ステップの生産プロセスの4か5あたりに位置するけど、LLMプロトタイプは2に近い。これは問題ないけど、プロトタイプの後にどれだけの作業が残っているかの期待値を設定する必要がある。前よりも多いからね。

「ここが、僕がコーディングエージェントに対する反対意見を理解できない部分なんだ。明らかに価値があると思う。エージェントを使って何もしなくても、コードを全部捨ててもいい。空白のページ問題が大きな課題みたいだから、それを取り除くツールは生産性を大きく向上させる。ただ、みんなが同じ問題を抱えているわけじゃない。ソフトウェア開発はすごく個人的な取り組みだから。AカテゴリーやBカテゴリーの人が優れたプログラマーだとは言ってない。ただ、みんなのワークフローが違うから、ツールに対する経験もそれぞれ違う。大事なのは、共感を持って、ツールが自分に合うか合わないかを言う人を信じることだ。LLMの議論の両方の側は、みんなが自分と同じだと思いがちだ。」

俺は逆だな。始めるのは簡単で楽しいと思うから、そこで詰まることはあんまりない。30年近く開発してきて、詰まるのはコードを書くときなんだ。物を作るのが好きだけど、基本的には同じコードをちょっと違う方法で組み合わせてるだけだから、俺が楽しいと感じるのはコーディングじゃなくて、最後に全部がうまくまとまるのを見ることなんだ。だから、LLMがすごく好きなんだ。面白い部分だけやらせてくれて、退屈な部分は何度もやってきたから。

余談だけど、焼きたてのベーコンの横にノートパソコンを開けっぱなしにするなんて考えられないな。

MitchellのOpenAIの事故に対する反応は本当に尊敬する。たとえそれがGhosttyにとってポジティブに見えてもね。煩わしさを排除しようとするソフトウェアベンダーって、MSの自動更新を考えるとあまり思いつかないから、これは歓迎だよ。それにこの記事はプログラミングにおけるAIの責任ある使い方を示してるし、元々の「バイブコーディング」の定義には合ってないと思う。

ここでの「バイブコーディング」の使い方は全然合ってないね。その言葉、使いすぎだよ。

この記事はプログラミングにおけるAIの責任ある使い方を示してるね。元々の「バイブコーディング」の定義には合わないと思う。そうだね、これはバイブエンジニアリングで、simonwがここで言い出したやつだよね。 https://simonwillison.net/2025/Oct/7/vibe-engineering/

この投稿は、AIエージェントが大きな勝利をもたらす一例を示してるね:UIフレームワーク。今、RustとGTKで開発中のアプリでも似たようなワークフローがあるんだ。何かを実装する方法を知らないわけじゃなくて、エージェントがこのUIフレームワークのコードに伴う面倒な検索や試行錯誤をたくさんやってくれるからなんだ。Mitchellはセッションを通して全てのコードを理解してるのがわかるよ。彼は何をする必要があるかをすでに理解してるからね。これって、多くの人が乗っかってる「バイブコーディング」の定義とは全然違うと思う。専門家になるには近道なんてないよ。Ghostty大好き!

人間の監査が通れば大丈夫だと思う。俺も以前、かなり良いコードを生成したことがあるけど、すべての行を見直して確認したよ。

Ghosttyは使ったことないけど、なんでHNは毎週のようにフロントページに載せてるの?何が一番の魅力なの?

製品のメリットはさておき… その開発者は有名人で、ここにいる人たちはビジネスモデルなしでオープンソースを書く億万長者のストーリーに魅了されてるんだ。普通の人たちが焦点を当てる仕事がないときにすることと同じようにね。

「チャット11から14を見ると、スロップゾーンに入ってるのがわかる。エージェントが作ったコードには重大なバグがあって、それを全く修正できていない。そして、私もどう修正すればいいのかわからない。バグを修正するために何度かの賭けに出ることが多い。エージェントが解決できれば、それを学んで自分も理解できる。できなければ、私にはほとんどコストがかからない。エージェントが解決できて、私が理解できなければ、元に戻す。理解できないコードは出荷しない。失敗している間に、私は別のタブで問題を検索して、自分で解決しようとしている。」素晴らしい描写(「スロップゾーン」)、実用的な戦略(試させて、並行して調査)、そして重要な原則(「理解できないコードは出荷しない」)。この投稿は、本当に現実のプロジェクトの詳細や専門家のコメントとして貴重だと思う。

すごく役立つウォークスルーだね。ミッチェルはAmpっていうエージェントフレームワークを使ってるみたい(初めて聞いた)けど、他に使ってる人とか試したことある人いる?Claude Codeと比べてどうなのか気になる。

まだ自分ではあまり使ってないけど、今のところ、ベンダーに依存しないターミナルコーディングエージェントの中で最も信頼性が高い印象を受けてる。Claude Code、Codex CLI、Gemini CLIはそれぞれ自分のモデルに(緩やかに)ロックされてるから。

使ってるよ。高いけど、めっちゃいい!