0906 | AIエージェントが本番と向き合う日々 ― デバッグから自己学習まで

||Download

Show notes

AIエージェントが本番でデバッグし、失敗から学び、push前のコードレビューまで担う今週の開発ツール群から、個人の記録や記憶を守るアプリ、そしてクリエイティブ制作を加速する製品まで。各分野の最新ローンチを、その裏にある思想ごとに分かりやすく解説する。

タイムライン

  • 00:00:04 オープニング
  • 00:00:37 本番をその場でデバッグする Hyperprobe
  • 00:07:06 失敗から学び続けるエージェント Reflexio
  • 00:11:56 push前にエージェントとレビューする GitWarren
  • 00:16:12 最小コードしか書かせない Ponytail
  • 00:19:58 フラグをmarkdownで管理する dif.sh
  • 00:24:58 クロージング

関連リンク

このエピソードは Bri によって制作されています。Bri は高度な AI 技術で、あなたが気にかけるフィードを聞くためのポッドキャストに変換します。お問い合わせは hi@bri.so まで。

Transcript

: こんにちは、Product Huntデイリーブリーフィング、葵です。

悠真: 悠真です。今日は昨日の24時間で出てきたローンチから、拾い読みではなく、はっきりしたユーザー課題と差別化が読み取れるものを厳選して、じっくり見ていきます。

: 今日のラインナップの共通点を先に言うとですね、全部「AIエージェントが本格的に仕事をする時代になって、周りの仕組みが追いついてない」というところから生まれたプロダクトなんですよね。

悠真: そう、最初の3つは開発周り、後半はちょっと視点を変えて個人の記録の話になります。では、いきましょう。

: まず1つ目、Hyperprobe。これは本番環境をその場でデバッグするためのツールで、端的に言うと「AIエージェントが本番で障害が起きたときに、再デプロイなしで原因を調べられる」ようにするものです。

悠真: これ、背景にある問題がすごく具体的で。AIエージェントがほぼすべてのコードを書いて本番に載せるチームだと、深夜2時に本番で障害が起きても、「動いてるシステムがなぜその挙動をしたのか」誰にも説明できない、という状況が起きるんだと。

: しかもその手の障害はローカルで再現しないことが多い。テストは通るしコードレビューも通ってる。だからいざ本番で発火すると、エージェントはログやトレース、つまり「失敗した瞬間のメモリ上の状態をキャプチャしていないデータ」を前にして推測で答えを出すしかない。

悠真: で、従来の人間のフローだと、console.logを足して、再デプロイして、待つ。その間も障害はユーザーに影響を与え続けてると。このループをなくすのがHyperprobeで。

: 仕組みとしては、Claude CodeとかCodex、Cursorといったエージェントが、MCP経由で稼働中のサービスに「読み取り専用のプローブ」を落とせるようにする。プローブというのは、特定の行におけるライブな変数の状態をスナップショットで取る仕組みで、ログやトレースには絶対残らない値が手に入る。

悠真: ここでメーカーが挙げている数字が、支払いまわりの問題を、エンジニアなら4時間かかっていたところを9.5分で解決したユーザーがいた、という話。あと公式サイト側の数字だと、根本原因までの時間が3〜4時間から10分未満、インシデントあたりの再デプロイが3〜4回からゼロ、調査に投入されるシニアエンジニアが2〜3人からゼロ、という主張があります。

: ただ、ここはちゃんと押さえておきたいんですけど、これらはメーカーの主張であって、検証済みの結果ではありません。特に「9.5分」という数字は確かに一番説得力があるんですが、だからといって自分の環境で同じになるとは限らない、というスタンスで聞くべきです。

悠真: うん。で、仕組みの面で面白いのは、プローブが「ノンブロッキング」で「ゼロオーバーヘッド」と謳っている点。通常のデバッガーのブレークポイントだとスレッドが止まって本番では使い物にならないじゃないですか。これは非同期で発火して、リクエストは全速力で完走し、3,000RPSで1%未満のオーバーヘッドだという主張です。ユーザー体験には影響しない、と。

: キャプチャ後はプローブは消える。エージェントはメモリを書いたりコードを実行したりはできず、読み取り専用。監査証跡にすべてのプローブが記録され、信頼できるようになるまでは承認ゲートがつく。自己ホストかプライベートVPCで動いて、PIIはキャプチャ前のエージェント側でマスキングされる。セキュリティチームが何を観測可能にするかを定義できる、と。

悠真: そして「それで何が変わるの?」というと、カバーする障害のタイプが結構広い。例外を投げずに200を返してくるサイレントな失敗、スタックトレースが82行目を指してるのに原因は18行目とか別ファイルにあるやつ、例外をキャッチして飲み込んでてアラートは何も出ないのにビジネス指標だけ動くやつ、レースコンディション、外部ベンダーのAPIが新しいフィールドを追加してきてパーサーが対応ケースを持ってない「コントラクトのドリフト」。こういう「ログには絶対出てこない」系の失敗に強い設計です。

: サイトには1つのインシデントを最初から最後まで追った実例が載っていて、深夜2時47分に注文サービスのエラー率23%、10分で847失敗というアラートがPagerDutyから発火。例外はログに出てない。で、Hyperprobeが分散トレースを辿って、注文サービス自体は健全、下流の決済サービスが404を返していると特定。決済ゲートウェイ上では支払いが存在するのにシステム内で見つからない、つまり上流でサイレントに書き込みが失敗していると。

悠真: で、決済はゲートウェイがwebhookを呼ぶときに記録されるところに目をつけて、webhookハンドラーのファイルの78行目に仮想ブレークポイントを置く。再デプロイなし、サービスは走り続ける。2時50分にスナップショットが取れて、ゲートウェイは「PENDING」というステータスを送ってきてるのに、コードにはそのケースがなかった、しかもべき等性チェックが確認前に支払いを処理済みとマークしていた、というバグが分かる流れ。

: これは結構納得感のあるストーリーですね。ログ追加してデプロイを待っていたら、朝までに終わらなかったでしょうね、これ。

悠真: メーカーの顔ぶれも、OYOとLimeTrayで大規模な本番運用をやっていた二人、と。で、彼らが指摘してるのは「エンジニアが頭に入れておくコンテキストが、システムを安定的に動かすために重要だったのに、コーディングエージェントの出現でそのコンテキストが急速に失われている」という点。テレメトリの形が「常時取得型」から「オンデマンド型」に変わる、というのが彼らの主張です。

: ここからが面白いところで、Product Huntのコメント欄には、本当に的確な批判がいくつか寄せられてるんですよね。一つは「読み取り専用は安全と同義ではない」という指摘。プローブはライブな変数の値を持ち出すわけだから、エージェントがカード番号とかセッショントークンが載ってるフレームをプローブしたらどうなるのか、その値があなたのストレージに残るのか、という質問。あと「ゼロオーバーヘッドという言葉が大事な仕事をしすぎてるから、p99の数字を並べろ」と。

悠真: もう一つは統制の話で、「読み取り専用でも、深夜2時にどの本番サービスにプローブを付けて何を調べるかをエージェントが自分で決めるわけでしょう。人間の承認ステップはあるのか、プローブごとの監査ログはあるのか、それともデフォルトで『エージェントの判断を信じる』が信頼境界なのか」という本質的な問い。SOC2やGDPR、HIPAAのような認証にどう影響するかという質問も複数ありました。

: まあ、サイト側には「承認ゲートつき」「監査証跡」「PIIはキャプチャ前にマスキング」という記述があるので、その方向の答えは用意されているみたいですが、コメントの側も「では実際のフローでどうなってるのか」を突っ込んで聞いてる感じですね。あとはGo対応を待ち望む声もありました。

悠真: 対応言語はJavaScript、TypeScript、Java、Python、Rubyですね。で、この話の「次へ」なんですけど、デバッグで見えた学び、今回「PENDINGに対応ケースがない」と分かった、それを次の開発にどう残すのか、というのが自然な課題になる。そのあたりの話が次のプロダクトにつながります。

: 2つ目、Reflexio。これは「AIエージェントが失敗から学び続ける」ためのプラットフォームです。共同創業者のYiさんはMetaでテックリード、ワシントン大学でMLの非常勤教授をやっていた方。

悠真: 出発点にある問題意識がこれまた本質的で。「人々はAIエージェントを毎日使うのに、エージェントは使えば使うほど良くなるわけではない」。メモリーがあっても、昨日タスクに失敗したエージェントは、別のユーザーに対して今日も同じように失敗する。本番で何が起きたかと、次にエージェントがどう振る舞うかをつなぐ「オンライン学習ループ」が存在しないから、と。

: 手動でそのループを回すのは、トレースを読んで、失敗を見つけて、プロンプトを書き直す、という終わりのない作業になる。Reflexioはこれを自動化して、エージェントのライブトレースを観察し、成功・失敗・ユーザー修正から学習を抽出して、継続的に振る舞いを最適化する。

悠真: 提示されている数字は、ケーススタディでタスク失敗率36%減、トークン使用量57%減、インタラクションの47%で応答品質が改善、劣化は無視できる程度、と。これも繰り返しになりますが、メーカー報告の数字です。で、コミュニティからも「測定方法はどうだったのか、同じタスクセットでエージェントありなしのA/Bか、それとも同じ本番トラフィックのビフォーアフターか」という、まさに正しい質問が来てました。

: 具体例がサイトに載ってて分かりやすいんですよ。ユーザーが「カードに見覚えのない49.99ドルの請求がある」と言う。Reflexioなしのエージェントは「49.99ドルを返金しました」と答える。10分後にユーザーが戻ってきて「9.99ドルのもある」と。ユーザーのコストは会話2回。

悠真: Reflexioありだと、エージェントが「見覚えのない請求が2件あります、49.99ドルと9.99ドル、両方返金しますか?」と聞く。ユーザーはそれで終わり、会話1回。そして間に何を学んだかというと、1つ目の学習が「単一の請求を解決する前に、直近の請求全体のウィンドウを必ず検索する」、2つ目が「見覚えのないものはすべて1つのメッセージで提示し、まとめて返金するか尋ねる」と。

: で、このプロダクトの設計思想として大事なのが「学習は可視・検証可能・可逆」であること。すべての学習は監査可能で、開けば何が入っていて、どの証拠に基づくかが分かる。書き換えたり、承認したり、却下したり、削除したりできる。却下した学習は即座に使われなくなる。「署名したものだけをエージェントに使わせる」設定ひとつで絞れる。

悠真: しかも学習は静的じゃない。「3月に学んだ『返金は30日以内』という学習は、6月に『返金ウィンドウは14日になった』という新しい会話で置き換えられる」。学習ごとに、導入後に実際どういうセッションで効いたか、効かなかったかという証拠を見て、そこから書き直し、検証してから使われる。エージェントの学びが「3月の状態で凍結」されずに済む。

: コメント欄で一番議論になってたのはここで。「一般化ルール」の危険性です。一人のユーザーの「修正」が、実は間違ったアドバイスだったら。タスクを誤解してて、自信満々にエージェントを間違った方向に押しただけかもしれない。それが全ユーザーに適用されるルールにロールアップされたら、どうやって広がる前にキャッチするのか。信頼度のしきい値はあるのか、それとも「一人のパターン」から「全員のデフォルト挙動」に昇格するのに人間のサインオフが要るのか。

悠真: 関連する質問もたくさん。「ユーザーごと、エージェントごと、グローバルのどれで学ぶのか」「相反するフィードバックはどう処理するのか」「開発者は学習の保持をどれだけコントロールできるのか」「学習が効き始める前にレビューできるのか」「どの修正が共有学習になるかはどう決まるのか」。

: どれも「自律性」と「統制」のバランスを問う質問で、Reflexioの設計としては「rejectすれば即座に使われなくなる」「approve-only設定が可能」という答えが用意されている方向なんですが、一般化と個別文脈の切り分け方、評価ハーネスの中身、まではまだ見えにくい。ここは未知点として残ります。

悠真: 統合の面では、Python、REST、CLIのSDKがあって、エージェントの書き換えは不要、既存のLLM呼び出しを軽量なSDKでラップするだけ。Claude CodeやCodexと統合する「ポータブルスキル」も配っていて、TypeScript SDKの要望もありました。創業者の顔ぶれは前職でパーソナライゼーションサービスとメモリーインフラを大規模に構築していた二人で、本番会話をレビューしてメトリクスと実験に落とし込む仕事がどれだけ重いかを直接見てきた、という。Freeでサインアップすると30日間Proがつくそうです。

: で、ここで発想の転換をしましょう。Reflexioは「エージェントが本番で失敗した後に学ぶ」話でした。でも失敗は本番より前の段階で潰せるなら、その方が安い。次のGitWarrenは、pushする前、コミットする前の段階でエージェントと一緒にコードレビューをする話です。

悠真: 作ったのは15年コードを書いてる職業プログラマーの方で、きっかけがすごく共感できるんですよ。市場の圧力で産出量をどんどん求められて、毎日5〜7個のAIセッションを並行して回してる。で、ボトルネックに気づいたら「コードレビューのプロセス、そのレビューを行う場所」だった、と。

: 彼の環境では、ワンショットで出したAIの出力をそのまま会社のGitHubに放り込むのは現実的じゃない。GitHubにpushされた時点で、同僚のコードレビューに回せるくらいの質になってないといけない。だからターミナルとIDEの間を行ったり来たりして、エージェントが書いた変更についてのコメントをコピペし続けていた、と。試した解決策はどれも満たなくて、結局必要だったのは「ローカルのGitHub」、つまりコミットがされる前に、自分のマシン上でGitHubのコードレビュー体験ができる場所だった。

悠真: で、それを作ったのがGitWarren。ローカルで動く、PRみたいなコードレビューアプリで、ワークツリーを直接読む。コミット済み、ステージ済み、未ステージ、未追跡、全部レビュー対象にできる。インラインコメントを付けて、仕事を「レビュー」として整理できる。何もpushせずに、全部が完結する。

: ここが一番のポイントで、他のレビューツールはすべてPRを待つ。でもサイトの説明が鋭くて、「コミットされ、pushされ、プルリクが開かれた時点で、その変更の形はもう受け入れた後。修正が安かった瞬間は過ぎている」と。エージェントの出力はコミットじゃなくて「汚れたワークツリー」。そのギャップを埋めるのがこれ。

悠真: ブランチがチェックアウトされているワークツリーをディスクのどこにあろうと見つけてきて、ステージ済み・未ステージ・未追跡のファイルを1つのdiffにまとめて読めるようにする。エージェントが作ったのにgitにすら追加してないファイルを、コミットになる前にレビューしてコメントできる、と。

: しかもエージェントが「レビューの対象」であるだけでなく「参加者」でもある。MCPサーバーをstdioで同梱していて、Claude CodeやCodexを向けると、アプリ自身が使ってるのと同じ17個のツールにアクセスできる。レビューを開く、議論全体を読む、スレッドに返信する、行にコメントする、解決する。エージェントに自分のdiffを説明させたり、40行目に残した質問に答えさせたりできる。答えはレビュー内に残る。

悠真: ここで細部にこだわりを感じるのが、属性の明示。「機械が書いたコメントは常に機械としてマークされ、ツール名はモデルがその場で名乗った名前ではなくMCPハンドシェイクから来る」。つまりエージェントが勝手に呼称を変えられない。しかもMCPセッションごとにIDが振られるから、2つのエージェントが同時に動いていてもスレッド内で区別できる。人が書いたメッセージは人間が編集・削除できる一方、エージェントは自分の誤字は直せてもあなたのメッセージを黙って書き換えることはできない。

: 全部ローカルで完結。アカウントなし、サーバーなし、無料、オープンソースでGPL-3.0。画面上のブランチ名もコミットもdiffも、表示する瞬間にgitから読み込まれるから、裏で古びるものがない。レビューとコメントは1つのSQLiteファイルに保存されていて、それを消せばGitWarrenは消える。リポジトリは触らない。macOSはbrew installで、WindowsとLinuxもある、ただしWindowsはまだ未署名。

悠真: コメント欄の質問がまた的確で。「git worktreeをエージェントのタスクごとに分けて回してるんだけど、同じリポジトリの複数worktreeを同時にレビューできるの?それとも1インスタンス1ワークツリー?後者なら意図的なスコープ決定か、それとも最初に作ってないだけ?」。もう一つは「5〜7のセッションを並行してるなら、2つのセッションが同じワークツリーの同じファイルに触ったらどうなる?ワークツリーを1枚のフラットなdiffとして見せるだけか、それともレビュー段階に到達する前に衝突を検知できるのか」。このあたりは今後の論点ですね。

: で、この話にはもう一つの方向性がある。レビューで「書きすぎ」に気づくのはまだ後手で、そもそも最小限しか書かせない、という発想。次のPonytailです。

悠真: Ponytail、これ名前もキャラ付けも面白いんですが、中身はシンプルで。「コーディングエージェントに動く最小限のコードしか書かせない」プラグイン。READMEには「デッドパンな、ポニーテールの、眼鏡をかけたシニアデベロッパー。彼は何も言わない。1行書く。動く」と。

: 問題意識としては「コーディングエージェントはコードを書くのがすごく上手になった。良すぎるくらい」。だからエージェントに足りないのは能力じゃなくて「停止ルール」なんだと。去年のツールの多くはモデルをさらにプロセスで包み込んでたけど、これは逆方向。モデルがもう機能を ship できるなら、難しいのは止めさせること。次のスーパーパワーは「抑制」かもしれない、と。

悠真: 具体的な仕組みが「はしご」で、上から順に足場が持ちそうなら止まる。1つ目、「これは必要か?」。投機的な必要性ならやめる。YAGNI。2つ目、このコードベースにすでにないか?既存のヘルパーやパターンを再利用。3つ目、標準ライブラリがやってないか?4つ目、ネイティブのプラットフォーム機能で足りないか?例えば日付ピッカーのライブラリを入れる前にinput type=date。5つ目、すでにインストール済みの依存関係で解決するなら、新しい依存を足さずにそれを使う。6つ目、1行にできるか?7つ目、そこで初めて「動く最小限のコード」。

: ベンチマークの数字は、FastAPIとReactのリポジトリで12個のフィーチャータスクの中央値で、コード54%減、トークン22%減、コスト20%減、速度27%向上、安全性100%維持。バリデーション、エラー処理、セキュリティ、アクセシビリティは簡略化しない、という主張。もちろんこれもメーカー側のベンチマークです。具体例としては、CacheManagerクラスを44行以上かけて書く代わりに、functoolsのlru_cacheデコレータを1行で足す、同じ挙動で48行減、そして「存在しないコードにはバグがゼロ」と。

悠真: 強度の調整も3段階。liteは要求されたものをビルドしつつ、もっと楽な代替案を1行で名指しする、判断はあなた。fullがデフォルトで、はしごが強制される。ultraはYAGNI過激派で、1行版をshipしつつ、残りの要件自体に同じ息で異議を唱える。面白いのはコマンド群で、/ponytail-reviewで現在のdiffの過剰エンジニアリングを見つけ、/ponytail-auditでリポジトリ全体の肥大をスキャン、/ponytail-debtで先送りした近道を台帳に集めると。あとREADMEに「/ponytail ultraは、あなたのコードベースが個人的にあなたを害したときのためのものです」ってあるの、笑いました。

: 対応はClaude Code、Codex、Copilot CLI、Gemini CLI、Cursor、Windsurf、Cline、Zedなど14以上。MITライセンスでオープンソース。コミュニティの反応はかなり好意的で、「使ってみたい、シンプルな機能に無駄なコードが大量につくのが本当にうざかった」「Claudeと一緒に使ってる、エージェントが集中して、痩せて、過剰に作らなくなった」「すごく気に入ってる」といった声。

悠真: ただ、一番鋭い批判はこれです。「近いけど完全一致ではない標準関数の場合、どうなるのか。エッジケースの扱いや戻り値の型が微妙に違う関数を、数行新しく書くのを避けるために無理やり当てはめさせて、微妙なバグを生むことはないのか。『再利用』が新規コードより微妙なバグを持ち込むケースは見分けられるのか」。まさに誤った再利用のリスクですね。時々勘違いをする「たまに忘れる」ユーザーもいました。

: もう一つ、「タスク完了時間に差は出るのか。事前に用意されたコードを見つける時間はゼロから生成する時間より短いはずだから、純速くなるはずでは?」という推測もありました。これは正しい見立てかもしれませんね。で、ここからもう一段下の層へ行きましょう。コードは最小限になった、じゃあコードの外側の設定や実験の状態はどこに置くのか、という話がdif.shです。

悠真: dif.sh、読み方は「ディフ・ドット・エス・エイチ」でいいのかな。これの創業者デビッドさんの話が完璧にエージェント時代を捉えてて。Claude Codeに機能フラグを足してもらおうとしたら、普通のフラグツールはアカウント作って、APIキー取って、と。Claude Codeはそこで基本的にギブアップして、結局 process.env.SHOW_NEW_CHECKOUT を書いた、と。

: ああ、これは本当にありますね。エージェントがシームレスに完了できない、サインアップ壁みたいなのが挟まると手作業にフォールバックしてしまう。

悠真: そこから生まれたのがdif.shで、オープンソースの機能フラグ。各フラグ、各A/Bテストが1つのmarkdownファイルで、コードと一緒にリポジトリに住んでいる。ファイルには何をするか、なぜ存在するか、何を決めたかが書かれていて、他の変更と同じようにPRでレビューされる。1コマンドでインストール、アカウント不要、エージェントはコンテキストファイルを読んで「何が生きてて、何がすでに試されたか」を把握できる。A/Bテストは同じファイルの中で、トラフィックが集まるまで待機できる。

: 構成が綺麗なんですよ。dif/フォルダの中に experiments/active が生きてるやつ、experiments/concluded が終わったやつ、surfaces/ に各画面が何を学んだかのログ。エージェントが読む context.json がその隣にある。1つのCLIで全部済んで、コマンドはどれもブラウザを開かないしログインを要求しない。

悠真: で、機能としては結構しっかりしてて。dif/trackでイベントを自分のアナリティクス、SegmentとかAmplitudeとか倉庫に送ることもできるし、Dif Cloudのキーを入れればlift計算もやってくれる。dif/buildは「除外グラフを解決して、2つの生きてるテストが同じユーザーで衝突したらコンパイルを拒否する」。本番ではなくCIで壊れる。exclusion groupの1行でテスト同士が干渉しないようグルーピング。dif/validateでフロントマターの妥当性、オーナーとサーフェスの存在、バリアントが存在しないテストを指してないか、全部チェック。

: dif/newで新しいテストをドラフトすると、サーフェスログを読んで「3つの過去の学びを発見」した上で書き出す。dif/concludeでテストを終わらせると、ファイルはconcludedにアーカイブされ、Decisionブロックがドラフトされ、サーフェスログに1行追加されて、次のテストが情報を引き継いで始まる。あとセキュリティ面の設計もあって、config.yamlでオーディエンス属性を1回宣言して、countryとかplanとかreturning visitorでinclude/excludeする。値は実行時に届くから、顧客リストがコミットに含まれることは決してない。

悠真: コメント欄では「1コマンドでアカウントなし、というのが一番の強み。エージェントがサインアップ壁にぶつからずにセットアップを完了できる」「フラグとその理由が同じファイルにあるのは良い。そういう文脈は数週間で消えるから」「ダッシュボードを別に用意しないのは新しい」「A/Bテストをリポジトリの中で保持できるのは面白い」といった好意的な声。一方で、求められている「批判的なフィードバック」に対する返答として、これが本当に的確な指摘なんですが。

: これ、読み返したいくらい重要なんで、言いますね。「あなたは批判的な意見を求めていた。フラグをgitに入れると、1つ切り替えるのにコミット、レビュー、デプロイが要る。チームがフラグサービスに金を払うのは、2AMにそれらなしでキルスイッチを引けるからだ。エージェント向けのフラグなら良いトレードだが、段階的ロールアウトやインシデント対応では成り立たない。それからmarkdownはデッドフラグも直さない。誰も変更しなければレビューは起きないし、4ヶ月誰も触ってないフラグは本番で今も分岐し続けている」と。

悠真: うわ、これは本質的なトレードオフですね。フラグは「いつでも切れる緊急ブレーキ」であることが価値の半分で、gitを正とする設計は監査性と引き換えに、そのスピードを犠牲にしている。あとは「2人の人が同じフラグファイルを同時に編集したらマージコンフリクトはどうなるの」「リポジトリが大きくなってファイル構造は破綻しないか」「flags in git means flipping one takes a commit」の件と、深刻度順に並ぶ。

: ほかに「フラグが時間とともに変わった理由の履歴を表示できる?」「Claude Codeではどう動くの?」「UI実験もできる?」といった質問もありました。ちなみにデビッドさんの答えの方向性としては「自己ホスト版は無料。クラウドはプロジェクト横断のビューと、Difが変更を提案するところ。でもそれもPRに戻ってくる。gitが正」です。

悠真: さて、ここからは視点をガラッと変えます。今日前半は全部、開発者、開発プロセスの話でした。でもローンチの世界はそれだけじゃなくて、後半は個人の記録を守るプロダクトを2つ。

: 1つはat8pm。「あなたの正直なジャーナル」。名前の通り、今日書いたエントリーは設定した時刻、デフォルトは午後8時にロックされる。ロックされたらそれで終わり、編集も、歴史の書き換えも、その場の気持ちを静かに磨き直すこともできない。生の、フィルターのない記録が残る。

悠真: 開発者Vinceさんの話が本当に良いんですよ。「その日の気持ちを、後から思い出した気持ちではなく、その瞬間に実際に感じたものとしてキャプチャしたい、と思って作った。ほとんどのジャーナリングアプリは編集も書き直しも削除も許す。それは便利ではあるけど、意図せず自分の歴史を書き換えてしまうことをあまりに簡単にしてしまう。at8pmはそれを解決しようとしてる」。

: ちなみに「いつも8時」とか「8時に書く」とか「8時ごろ」という直訳っぽい名前の由来は、実際、英語だと"at 8 pm"ですね、時間そのもの。で、機能面。入力はいろんな形があって、リッチテキストで太字・斜体・下線・打ち消し線。あるいは喋ってボイスノートを録音、波形で表示。Squopeという、正方形の動画ノートも。写真や位置情報も追加できる。ロックリングで今日が閉じるまでの時間が一目で分かって、タップするとストリークと並んで見える。エントリーをInstagram Storiesなどにシェアできるカードにすることもできる。プライベートな考えは、自分でそう決めるまでプライベートのまま。

悠真: プライバシーがしっかりしてて。エントリーは自分のプライベートなiCloudでデバイス間同期され、第一・第三者サーバーとは決して同期されない。アプリ全体をFace IDでロックもできる。App Storeの情報では「データを収集しない」と明記されてる。無料ダウンロード、1日2エントリーまで。Proで無制限。価格は月額3.99ドルとか年間29.99ドル、あるいは0.99ドルのプラン、みたいな複数が並んでましたね。

: で、ロックが絶対かというとそうではなくて、ロックされたエントリーは「アンロッククレジット」を使うと24時間編集可能に戻せる、という抜け道も用意されてる。3パックで1.99ドル。これは完全にオプションで、コアアプリには不要、と。正直に言うと、ここは「ロックが絶対」という売り文句との間に少し緊張がある設計で、「やっぱり書き直したい」という現実的なニーズも認めてる形ですね。

悠真: コミュニティからは良い質問が。「タイムゾーンをまたいで旅行してるとき、設定したロック時刻はスマホの現地時刻に自動で追従する?それともセットアップしたタイムゾーンに固定される?」、それから「Androidのリリース予定は?」、あとプライバシー設計を評価する声。iPhone専用で、iOS 26.2以降が必要、15.4MBという小ささ。

: そして最後、Retold。これはちょっと毛色が違って、家族の声を手描きのストーリーフィルムに変えるアプリ。メモリーを録音するか、古いボイスメモをインポートする。Retoldは本物の声を保持して、ストーリーを手描きのフィルムと読める本に変える。スケッチは話されながら人、場所、小さなディテールを追いかけて、各メモリーはファミリーシェルフにまとめて保存される。

悠真: 作った経緯があって、作者のKarlさんはおばあちゃんを数年前に亡くしてて、妹への留守電と、Alexaを使おうとしてるおばあちゃんの面白いクリップがまだ残ってたと。「本物の声を聞けることは大事だったけど、そのファイルは家族が自然に戻っていくものには感じられなかった。Anonymousなオーディオファイルがスマホのフォルダに転がってるだけじゃダメなんだ」と。そこからRetoldが育った。

: iPhoneのベータ版で、Androidのクローズドテストが進行中。機能的には、録音は1つの大きな赤いボタンだけ、フォームもタイピングもなし、いつもの調子で話してもらう。Retoldが聞きながら、ゆがんだ棒人間、犬、飛沫を、声に合わせてスケッチしていく。各ストーリーはファミリーシェルフに載って、遠く離れた孫も寝る前に再生できる、知ってる声で。実際にシェルフに載ってる例が面白くて、「おばあちゃんが運河に落ちた日、おじいちゃんの話、おばあちゃんが反論」「1963年、私たちの出会い、ダンスホール、間違ったバス、正しい女の子」「もう1つ話して、おばあちゃん、400キロ先からの寝話」「ウェールズで死んだ車、雨の中、坂の上で、当然」と。

悠真: 価格は年間39.99ポンド、週あたり77ペンス、月額5.99ポンドでいつでもキャンセル。無料では5本までストーリーを保存できて、有料で本数無制限、家族全員が視聴できて、支払いを止めてもあなたのもの、と。

: ここで真剣な議論が一つあって、コミュニティのコメントで「このジャンルで唯一引っかかるのは、素材がしばしば、後からどう使われるかに同意できない人、つまり亡くなった人の古い留守電であること。実際のデータポリシーはどうなってるの?音声は処理後に削除されるのか、サーバーに無期限に残るのか、その家族のフィルム生成以外の何かに使われることはあるのか」と。

悠真: これは非常に正当な問いですね。亡くなった人の声が使われてる場合、本人は確かに「これはフィルムにして、家族が再生して、保存される」ことに同意してないわけで。ソースにはその質問に対する作者の返答は載っていませんでした。ただRetold側の設計思想としては「音声は家族のシェルフに残るもの」で、コンセプト自体はこの問題を前に進めるものなんですが、データの実態はまだオープンな論点です。

: さて、今日の5つ、まとめましょうか。

悠真: Hyperprobeは、エージェント時代の本番デバッグを「ログ追加と再デプロイ」から「オンデマンドなライブ状態の取得」に変えようとしてる。ただ、機密データの扱いや深夜2時の統制は、まだコミュニティが追い続けてる論点。

: Reflexioは、デバッグで見えた学びをエージェントに持たせる仕組み。学びは可視・検証可能・可逆にされてるけど、間違ったフィードバックの一般化リスクは残る。

悠真: GitWarrenとPonytailは、その前段階。レビューをpush前に持ってくることと、そもそも書かせる量を最小にすること。

: そしてdif.shは、コードの外側、フラグと実験の状態もリポジトリに置いて、エージェントに文脈を持たせる流れ。ただしgit正義は2AMのキルスイッチと引き換え。

悠真: 後半のat8pmとRetoldは、開発の外で、個人の記録を「後から書き換えない」「声を失わない」ために頑張ってる2つでした。

: 何か一つでも気になるものがあれば、ぜひ元のローンチページを覗いてみてください。今日はこの辺で。また明日。

悠真: ありがとうございました。