概要
- 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の限界を見極め、適切なタイミングで人間主導に切り替える判断力
- 計画・設計・リファクタリング・ドキュメント整備の重要性
- 最終的な品質担保と、将来のメンテナンス性を意識した開発プロセスの推進