◉RORK LABEN
●EXPO — EAS Observe がネイティブクラッシュも記録(10/07)。SDK 57 は 57.0.21 以降で確認できます●SDK 58 — SDK 58 Beta は 9/15 公開。stable の日付はまだ未確認です●RN 0.88 — React Native 0.88.x の正式リリース予定は 10/12、残り3日●Q&A — expo-widgets が本番ビルドだけ真っ黒になる、という問いが出ています●RORK — 09-29 に GPT-6.1 Sol を追加。Pro・Max プランで利用できます●NEW — クライアントのアプリを作る前に決める、公開アカウントの持ち主●EXPO — EAS Observe がネイティブクラッシュも記録(10/07)。SDK 57 は 57.0.21 以降で確認できます●SDK 58 — SDK 58 Beta は 9/15 公開。stable の日付はまだ未確認です●RN 0.88 — React Native 0.88.x の正式リリース予定は 10/12、残り3日●Q&A — expo-widgets が本番ビルドだけ真っ黒になる、という問いが出ています●RORK — 09-29 に GPT-6.1 Sol を追加。Pro・Max プランで利用できます●NEW — クライアントのアプリを作る前に決める、公開アカウントの持ち主
記事一覧/開発ツール
⬡ 開発ツール/2026-07-07上級

どの生成でこの不具合が入ったのか — Rork アプリに生成来歴を刻む長期運用設計

AI ビルダーで同じ画面を何度も作り直していると、ある日現れた不具合がどの生成で入ったのか追えなくなります。ビルドスタンプ・生成台帳・テレメトリ埋め込みの3層で生成来歴を残し、リグレッションを世代単位で絞り込む設計をまとめました。

Rork577長期運用11リグレッション設計10トレーサビリティ

✦ プレミアム記事

先月、あるアプリで直したはずのクラッシュが、数週間後にまた同じ症状で戻ってきました。コードを見ても、直した箇所はそのままです。原因を掴むのに半日かかりました。別の画面を作り直したとき、その生成が古い実装ごと巻き戻していたのです。

個人開発でいくつものアプリを運用していると、こうした「静かな巻き戻し」は珍しくありません。Rork Max の2クリック申請でリリースの敷居が下がったぶん、私たちは以前より気軽に画面を作り直します。生成の回数が増えれば増えるほど、「いつ・どの生成で・何が変わったのか」は手元から抜け落ちていきます。

生成物に来歴(provenance)を刻んでおけば、不具合が出たときに疑うべき世代を数分で絞り込めます。特別なインフラは要りません。ビルド時の定数ひとつと、テキストの台帳ひとつが出発点です。私自身が実運用で使っている設計を、順に見ていきます。

なぜ git blame では追えないのか

手書きのコードなら、git blame が「この行を最後に触ったコミット」を教えてくれます。ところが AI ビルダーで再生成した画面は、しばしばファイル全体が丸ごと差し替わります。差分は「1行の変更」ではなく「ファイルの置換」として記録され、blame は再生成のコミット1点を指すだけです。

さらに厄介なのは、変更の意図がコミットに残らないことです。「価格表示を直して」と指示した生成が、ついでに離れた場所の状態管理を書き換えていても、コミットメッセージは Update pricing screen のままです。あなたが後から読むのは、実際に起きたことではなく、あなたが起こそうとしたことだけです。

つまり欠けているのは行単位の履歴ではありません。「どの生成イベントが、アプリのどの版に対応し、何を触ったのか」という世代の来歴です。これを補うのが本記事の主題です。

来歴を3層で残す

来歴は1か所に書こうとすると必ず破綻します。ビルド成果物、ソースツリー、実行中のアプリは、それぞれ寿命も参照する人も違うからです。私は次の3層に分けて考えています。

層何を残すかいつ役に立つか
ビルドスタンプ生成 ID・ビルド日時をアプリ内定数に焼き込む実機やレビュー版で「これはどの世代か」を即答したいとき
生成台帳各生成の意図・触ったファイル・消費クレジットを1行追記数週間後に「あの変更はいつだったか」を遡るとき
テレメトリ埋め込みクラッシュ・主要イベントに生成 ID を付与本番の不具合を世代へ逆引きするとき

3層はそれぞれ独立して価値がありますが、同じ生成 ID で串刺しにすると効果が跳ね上がります。台帳で世代の意図を読み、テレメトリで影響範囲を測り、ビルドスタンプで手元の版を照合する。この往復ができるかどうかが、トリアージの速さを決めます。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦生成 ID をビルド時に刻み、クラッシュとアナリティクスから世代を逆引きする実装
✦GENERATIONS 台帳の最小フォーマットと、世代間差分を機械的に出す運用スクリプト
✦不具合が出たときに疑う世代を数分で絞り込むトリアージの手順
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

⬡ 開発ツール2026-07-27
最低サポート iOS をいつ上げるか — 利用率ではなく、コードに残った分岐の数で決める
最低サポート OS の引き上げを利用率で判断すると、毎年同じ結論になって先送りが続きます。OS 分岐に注記を付けて棚卸しし、iOS と Android の引き上げ先ごとに消せる分岐を数えるスクリプトと、引き上げ後に見る指標をまとめました。
⬡ 開発ツール2026-06-22
壊れたキャッシュで毎回起動時に落ちるアプリ——ユーザーが自力で抜け出せる「セーフモード起動」を設計する
永続化したキャッシュが壊れて起動のたびに同じ場所で落ちると、ユーザーには再インストールしか残りません。アプリ自身が早期クラッシュの連続を数え、対話可能になって初めて起動を確定し、危険な状態だけを段階的にリセットするセーフモードを、Expo(React Native)の実装で設計します。
⬡ 開発ツール2026-10-07
日本語の見出しだけ太字にならない — Android で fontWeight が効かないときの切り分けと直し方
Rork で作ったアプリで、iPhone では太字なのに Android では日本語の見出しが細いままになる症状の切り分け記事です。原因の見分け方、fontFamily を重みごとに分ける直し方、確認用コードを載せています。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます