← お知らせ一覧へ

動画

ドキュメンタリー『101日の航海』を公開しました — 最初のプロンプトから両ストア正式リリースまでの開発記録

2026年6月13日、ひとりの釣り人が AI に最初のプロンプトを打ち込みました。101日後の9月22日午後6時59分、Apple から iOS版 Version 1.0 の審査通過が届き、「世界釣りマップ」は Android・iOS の両ストアに並びました。その101日間に何があったのかを、git の履歴・お知らせ・審査文・実機の録画・実写だけで綴った約11分のドキュメンタリー動画『101日の航海』を、公式 YouTube チャンネルで公開しました(英語ナレーション・日本語字幕つき)。

動画はボタンを押したときにはじめて YouTube から読み込まれます(プライバシー強化モードの埋め込みを使用)。詳しくは外部送信についてをご覧ください。YouTubeで直接ご覧いただくこともできます。字幕は再生画面の「CC」から日本語・英語を選べます。

この動画について

尺は11分25秒。冷たい開幕(承認の瞬間)から最初のプロンプトへ巻き戻し、9つの章で101日を時系列にたどります。登場する数字はすべて生成時に git とお知らせから読み取った実測値、引用文はすべて記録の逐語です。人物の顔と氏名は出していません。以下では、章ごとに動画の場面(静止画)と、動画では語りきれなかった開発秘話を紹介します。

第1章 最初のプロンプト(6月13日)

最初の文書には、釣った魚を撮り、AI が種を判定し、世界地図に載せ、正直な記録にトークンで報いる——という構想が書かれていました。その中の一文が、この先のすべてを決めました。「細かく指示するのではなく、アイディアをどんどん出してもらい、それを私が承認する形で進めましょう。」 AI が提案し、開発者が決める。それが次の100日間の働き方になりました。

一方で、最初の文書のうち2つの案は生き残りませんでした。「ブロックチェーン上の NFT」はハッシュ連鎖の追記専用台帳に、「レンタルサーバー」は Google Cloud のコンテナに置き換わりました。アプリは Flutter、バックエンドは FastAPI、Android を先に iOS は後から——初日に決めたことは、101日目にそのまま実現しました。

動画の場面。黒い端末風のウィンドウに最初のプロンプトの日本語原文がタイプライター風に表示され、右側の白いカードに英訳が並ぶ
最初のプロンプト(6月13日)。原文をそのままタイプし、右に英訳を添えています。
動画の場面。「What survived the first document — and what didn't」の見出しの下に、取り消し線つきの「Fish Token as an NFT on a blockchain」「A rental web-hosting server」と、その置き換え先の説明が並ぶカード
最初の文書から残ったもの、覆ったもの。NFT とレンタルサーバーは初期に姿を消しました。

第2章 861コミット

101日間で 861 コミット、733 本のプルリクエスト、134 のタグ付きリリース。いちばん忙しかったのは8月8日で、日付が変わるまでに38コミットを積みました。

AI への指示書(リポジトリの取扱説明書)は、いつの間にか1,700行の巨大な1ファイルになり、毎ターン全文が読み込まれていました。7月26日に4つへ分割したのですが、同じ日、そのうちの1つが公開サイトの一部として全世界に配信されていることが判明しました。6,000バイトの内部メモです。修正はリダイレクト1本、教訓はテスト1本になり、以後は CI が同じ事故を機械的に止めています。

7月には2つ目の AI が加わりました。ChatGPT Codex で働く協力者です。その最初のプルリクエストは、今も全利用者を迎えるアプリアイコンでした。そして、黙って変えてはいけないもの——配点式、台帳の追記専用性、法務文書の同期、表示義務——は「保全アンカー」としてコードベースに書かれ、現在49件。すべてのプルリクエストで機械が検査します。

動画の場面。6月から9月までのコミット数をマス目の濃淡で表したヒートマップと、その下に「861 COMMITS」「733 PULL REQUESTS」「134 TAGGED RELEASES」の数字
コミットのヒートマップ。数字は動画の生成時に git から読み取った実測値です。
動画の場面。「One file, read on every turn」の見出しと、1,765行の CLAUDE.md が4つのファイルに分かれる図。右下に公開サイトへ配信されていた内部メモの URL と 6,309 bytes の注記
1ファイル1,700行の指示書を4分割した日、その1つが公開サイトから配信されていたことが分かりました。
動画の場面。「Two AI agents, one repository」の見出しと、Claude Code(オーナー)と ChatGPT Codex(協力者)から world-fishing-map の1つのリポジトリへ矢印が向かう図
2つの AI、ひとつのリポジトリ。協力者の最初のプルリクエストはアプリアイコンでした。
動画の場面。暗い海中を背景に、49個の光る点が星座のように線で結ばれ、上に大きく「49 PRESERVATION ANCHORS」
49の保全アンカー。黙って変えてはいけないものを機械が毎回検査します。

第3章 図鑑、二週間で2,940種

7月16日、魚図鑑を1,200種で公開。2週間後には3,000種近くに——魚だけでなく、甲殻類、イカ・タコ、貝、クラゲまで収載しました。「左ヒラメに右カレイ」。カレイ目53種のイラストを全部目で確かめ、20種の向きを反転したのもこの頃です(詳しいお知らせ)。

続いて「生息イメージ版」のイラスト。1バッチ200枚を11バッチ、これまでに2,290種。この作業でいちばん大きな教訓になったのがバッチ04です。寸法・命名・枚数・向きの機械検査を200枚すべてが通ったのに、人の目で見ると200枚のうち20枚が別の種でした。それ以来、1枚残らず人の目で確かめてから本番に入れています。コバンザメも描き直しました。種としては正しかったのに、生態として間違っていた——吸盤が宿主に触れていなかったのです(お知らせ)。

動画の場面。「SPECIES IN THE ENCYCLOPEDIA · JULY 2026」の折れ線グラフが右肩上がりに伸び、右に「2,938 SPECIES 2026-07-30」の数字と図鑑のスクリーンショットのカード
7月の2週間で図鑑の種数が伸びていく様子。右のカードは当時のお知らせ記事の画像です。
動画の場面。「A flatfish faces the way its eyes do」の見出しの下に、ヒラメ・カレイ3種の Before(向きが逆)と After(正しい向き)のイラストを上下に並べた比較
左ヒラメに右カレイ。絵は描き直さず、左右を反転しただけです。
動画の場面。生息イメージ版イラストが格子状に敷き詰められ、その一部が赤い枠で点滅している。中央に「20 of 200 were the wrong species」
バッチ04。機械検査は満点、人の目は200枚中20枚の別種を見つけました。
動画の場面。コバンザメのイラストの Before(吸盤が宿主に触れていない)と After(ウミガメの甲羅に吸い付いている)を左右に並べた比較
コバンザメの描き直し。誤りは同定ではなく生態でした。

第4章 テストの夏

7月19日、12人のテスターによる14日間のクローズドテスト。8月2日に製品版アクセスを申請すると27時間後に承認され、同じ日に15か国でオープンテストが始まり、同じ夜、法律事務所が顧問につきました。

8月8日、午前0時24分。iPhone で SMS の2段階認証がついに成立しました。壁は2つあり、両方を越える必要がありました。成立の証拠は画面ではなく、サーバの台帳に入った2件目のボーナス。この日の38コミットは101日で最多です。

テスターからは「案内が消えない」という報告がありました。原因は上流にありました。Flutter の更新で、アクションつきのスナックバーが永久に残るようになり、画面を越えて居座っていたのです。直したのはヘルパー1つ、そしてフレームワークがまた変わったら落ちるテストを1本足しました。

ストア掲載画像40枚は、40件の機械検査を全部通りました。人の目は134件の欠陥を見つけました。最悪だったのは、合成したホームインジケータが毒魚の安全注記を黒塗りしていたこと。40枚すべてを実画面から作り直しました。

動画の場面。世界地図の上に光る点が広がり、上に「15 COUNTRIES & REGIONS · OPEN TEST · AUGUST 3」
8月3日、15か国でオープンテスト開始。製品版アクセスの承認は申請から27時間でした。
動画の場面。「00:24 JST」「AUGUST 8, 2026 · IPHONE · SMS TWO-FACTOR SIGN-IN」の見出しと、越えるべき壁が2つあったこと、証拠は台帳の2件目のボーナスだったこと、この日の38コミットが最多だったことを記した3つの箇条書き
8月8日午前0時24分、iPhone で SMS 2段階認証が成立。
動画の場面。「A message that would not go away」の見出しと、スナックバーの表示を1箇所のヘルパーに通す Dart のコード。下に「persist: false — and a CI test that fails if a new SnackBar with an action ever comes back」
消えない案内。原因は Flutter の更新、対処はヘルパー1つとテスト1本。
動画の場面。「40 screenshots · 40 automated checks passed」「134 defects found by eye」の見出しと、AI 同定の注意書き(毒の有無・食用可否は必ず実物で確認)と候補種のカードを切り出した店頭画像
ストア掲載画像40枚。機械検査は満点、人の目は134件。毒魚の安全注記が黒塗りされていました。

第5章 Mac のない iOS

Mac は1台も買いませんでした。ビルドはクラウドの macOS で、検証は中古の iPhone で。8月5日、TestFlight が開通しました。

Sign in with Apple は、ドキュメントどおりに書いたのに実機で失敗しました。2回。資格情報が汎用の経路に落ち、Apple に弾かれていたのです。コンパイラにも静的解析にも見えない不具合で、今はテストが正しいプロバイダを固定しています。有料アプリには事務手続きも要ります。契約、税務書類、銀行口座——その順番は誰の予想とも逆でした。8月15日、最初のサンドボックス購入が通りました。

動画の場面。「Not a single Mac was bought」の見出しと、git push → Codemagic cloud macOS → TestFlight → a second-hand iPhone の4つの箱を矢印でつないだ図
Mac なしの iOS 開発。ビルドはクラウド、検証は中古の iPhone。
動画の場面。「Written exactly as the documentation says — and it failed on a real device」の見出しと、Sign in with Apple の資格情報を Apple プロバイダに固定する Dart のコード
Sign in with Apple。ドキュメントどおりで2回失敗し、テストで正しい経路を固定しました。
動画の場面。「Paid apps meant paperwork」の見出しと、1 Legal entity → 2 Agreement → 3 Tax forms → 4 Bank account の4つの箱、下に「1 FIRST SANDBOX PURCHASE · AUGUST 15」
有料アプリの事務手続き。順番は予想と逆で、8月15日に最初のサンドボックス購入。

第6章 海へ

出船モードは法の枠内で設計しました。ルートも、ナビも、「海図」の名もありません。あるのは計器、航跡、釣行ログ、そして GEBCO の参考水深。すべて端末の中に留まります。9月4日、開発者はそれを教習艇に持ち込みました。小型船舶免許の実技講習の最中に(実走動画)。

9月12日、岩船港8時発のフェリーで日本海の小さな島、粟島へ。レンタル自転車で島を一周し、釣果はゼロ。でもアプリは動きました。対水速度、位置、足元の海底の形——全部、片手のスマホの中に(粟島の動画)。全世界の水深は、1.8ギガバイトの全球グリッドをタイルに切ってクラウドから読むことで実現しました。海上保安庁の海図レイヤと海底の形が同じ地図に載ります。釣りの参考であって、航海用ではありません。

動画の場面。曇り空のマリーナに係留された白い教習艇の実写。左下に「September 4 — a training boat, boating-licence course」の字幕
9月4日、小型船舶免許の実技講習。出船モードを教習艇に持ち込みました。
動画の場面。港の実写を背景に、出船モードの実機画面(14.5ノット、進行方向、水深、経過時間、距離、地図上の航跡)を表示したスマートフォン。左に「Speed. Heading. Depth. Distance.」の見出しと3つの箇条書き
速度・進行方向・水深・距離。注記は常に画面に出ています。
動画の場面。海岸の実写を背景に、海底地形マップを表示したスマートフォン。左に「The whole planet's seabed」の見出しと、GEBCO の全球グリッド・海上保安庁のレイヤ・航海用ではないことの3つの箇条書き
全世界の海底地形。1.8GB の全球グリッドをタイルに切ってクラウドから読みます。

第7章 正式リリース、そして凍結

9月1日、弁護士から最終版の法務文書が届き、その日のうちに検収して公開。9月2日、Google Play がバージョン1.0を承認し、177の国と地域で正式リリース。同じ日、アプリ内課金を持つアプリのハッカソンにも提出しました。

その6日後、プロジェクトの X アカウントが凍結されました。理由は「inauthentic behaviors」。投稿の中身は問題なく、問題は手段でした。ブラウザを自動操作して投稿していて、それはプラットフォームの規約が明文で禁じていたのです。その朝に異議を申し立て、アカウントは同じ日に復旧しました——「違反はなかった」。投稿は公式 API 経由に移り、ブラウザがそのサイトに触れることを機械で止めました。「技術的にできる」は「許されている」と同じではない。

動画の場面。Android版正式リリースの告知バナー「NOW ON GOOGLE PLAY — Android版を正式リリースしました」に紙吹雪が舞う。下に「SEPTEMBER 2 · GOOGLE PLAY · VERSION 1.0.0」
9月2日、Google Play で Version 1.0 を正式リリース。
動画の場面。世界地図の上に光る点が広がり、上に「177 COUNTRIES & REGIONS · GOOGLE PLAY · SEPTEMBER 2」
177の国と地域。同じ日にハッカソンにも提出しました。
動画の場面。赤い枠のカードに「X · 2026-09-08 · ACCOUNT SUSPENDED」の見出しと、等幅フォントで「inauthentic behaviors」、右下に「Appeal filed the same morning」
9月8日、X アカウントの凍結通知。問題は投稿の中身ではなく手段でした。
動画の場面。緑の枠のカードに「X · 2026-09-08 · RESTORED THE SAME DAY」の見出しと、等幅フォントで「there was no violation」、右下に「Posting moved to the official API · a guard now blocks the browser」
同日中に復旧。以後、投稿は公式 API 経由に。

第8章 四度目の提出

9月2日に提出した iOS のビルドは、10日間キューに滞留しました。原因は、提出の数分後に Apple がデモ用の Google アカウントを試し、Google がそのサインインをブロックしていたこと。修正は審査メモの一文でした——「Sign in with Apple を使ってください」。その後は差し戻し、質問、また差し戻し。それぞれ1日以内に応えました。

動画の場面。「iOS 1.0 — four submissions, twenty days」の見出しと、9月2日の提出から9月22日の承認までの7つの出来事を並べた横の年表
iOS 1.0 — 4回の提出、20日間。
動画の場面。「Five taps deep」の見出しと、新設した4本の入口の箇条書き。右にプラン選択画面(プレミアム/プロ)を表示したスマートフォン
課金画面は5タップの奥。4本の入口を1日で設計・承認・出荷しました。
動画の場面。「One policy class, nineteen tests」の見出しと、iOS では Promo コード入力を出さないことを定めた Dart のクラスのコード。下に「Android and the server were not touched. The App Store offer-code sheet is the iOS alternative.」
ガイドライン 3.1.1 への対処。判定クラス1つと19件のテストで戻らないように。
動画の場面。両ストア正式リリースの告知バナー「NOW ON GOOGLE PLAY & APP STORE — Android版・iOS版 正式リリース」の右上に金色で「APPROVED」と「2026-09-22 · 18:59 JST · App Store · Version 1.0 (71)」
9月22日 18:59、承認。両ストア到達です。

第9章 記録する人

釣果を記録するアプリは、それ以外のすべてを記録することで作られました。すべての失敗、すべての教訓、すべてのルールを——機械が検査できるようになるまで。861コミット、2,900種、49の保全アンカー、2つの AI、ひとりの釣り人。リリースの夜、開発者はこう書きました。「私は今、感無量です。」

動画の場面。金色の大きな数字が6つ並ぶ。861 COMMITS、733 PULL REQUESTS、101 DAYS、2,939 SPECIES、49 PRESERVATION ANCHORS、2 AI AGENTS · 1 ANGLER
101日の数字。
動画の場面。黒い画面に「2026-09-22」と大きく「18:59 JST」
冷たい開幕。物語はこの時刻から巻き戻して始まります。

制作について

本作は、開発に使った AI(Claude Code)が全編をコードで生成しました。台本・時間割・画面の合成(GPU)・字幕・音の混ぜ合わせまでプログラムで行い、動画編集ソフトは使っていません。ナレーションは合成音声(Gemini TTS・実在の人物を模したものではありません)、音楽は AI 生成(Lyria 3)、効果音は手続き合成です。実写はすべて開発者が撮影したもの、アプリの画面はすべて実機の録画で、人物の顔と氏名は出していません。海のマップ・海底地形・出船モードの場面では、出典と「航海用ではない」旨の注記がアプリの画面内に出続けています。水深は GEBCO の参考値、海図レイヤは海しる(海上保安庁)のデータで、いずれも航海用ではありません。

Google Play および Google Play ロゴは Google LLC の商標です。Apple、Apple ロゴ、App Store は Apple Inc. の商標です。

App Store で入手する Google Play で入手する

※ 公式YouTubeチャンネル「World Fishing Map Official」では、2分間のデモ動画「海のマップ」と「出船モード」の紹介動画粟島の実地テスト動画も公開しています。