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日目にそのまま実現しました。
第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件。すべてのプルリクエストで機械が検査します。
第3章 図鑑、二週間で2,940種
7月16日、魚図鑑を1,200種で公開。2週間後には3,000種近くに——魚だけでなく、甲殻類、イカ・タコ、貝、クラゲまで収載しました。「左ヒラメに右カレイ」。カレイ目53種のイラストを全部目で確かめ、20種の向きを反転したのもこの頃です(詳しいお知らせ)。
続いて「生息イメージ版」のイラスト。1バッチ200枚を11バッチ、これまでに2,290種。この作業でいちばん大きな教訓になったのがバッチ04です。寸法・命名・枚数・向きの機械検査を200枚すべてが通ったのに、人の目で見ると200枚のうち20枚が別の種でした。それ以来、1枚残らず人の目で確かめてから本番に入れています。コバンザメも描き直しました。種としては正しかったのに、生態として間違っていた——吸盤が宿主に触れていなかったのです(お知らせ)。
第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枚すべてを実画面から作り直しました。
第5章 Mac のない iOS
Mac は1台も買いませんでした。ビルドはクラウドの macOS で、検証は中古の iPhone で。8月5日、TestFlight が開通しました。
Sign in with Apple は、ドキュメントどおりに書いたのに実機で失敗しました。2回。資格情報が汎用の経路に落ち、Apple に弾かれていたのです。コンパイラにも静的解析にも見えない不具合で、今はテストが正しいプロバイダを固定しています。有料アプリには事務手続きも要ります。契約、税務書類、銀行口座——その順番は誰の予想とも逆でした。8月15日、最初のサンドボックス購入が通りました。
第6章 海へ
出船モードは法の枠内で設計しました。ルートも、ナビも、「海図」の名もありません。あるのは計器、航跡、釣行ログ、そして GEBCO の参考水深。すべて端末の中に留まります。9月4日、開発者はそれを教習艇に持ち込みました。小型船舶免許の実技講習の最中に(実走動画)。
9月12日、岩船港8時発のフェリーで日本海の小さな島、粟島へ。レンタル自転車で島を一周し、釣果はゼロ。でもアプリは動きました。対水速度、位置、足元の海底の形——全部、片手のスマホの中に(粟島の動画)。全世界の水深は、1.8ギガバイトの全球グリッドをタイルに切ってクラウドから読むことで実現しました。海上保安庁の海図レイヤと海底の形が同じ地図に載ります。釣りの参考であって、航海用ではありません。
第7章 正式リリース、そして凍結
9月1日、弁護士から最終版の法務文書が届き、その日のうちに検収して公開。9月2日、Google Play がバージョン1.0を承認し、177の国と地域で正式リリース。同じ日、アプリ内課金を持つアプリのハッカソンにも提出しました。
その6日後、プロジェクトの X アカウントが凍結されました。理由は「inauthentic behaviors」。投稿の中身は問題なく、問題は手段でした。ブラウザを自動操作して投稿していて、それはプラットフォームの規約が明文で禁じていたのです。その朝に異議を申し立て、アカウントは同じ日に復旧しました——「違反はなかった」。投稿は公式 API 経由に移り、ブラウザがそのサイトに触れることを機械で止めました。「技術的にできる」は「許されている」と同じではない。
第8章 四度目の提出
9月2日に提出した iOS のビルドは、10日間キューに滞留しました。原因は、提出の数分後に Apple がデモ用の Google アカウントを試し、Google がそのサインインをブロックしていたこと。修正は審査メモの一文でした——「Sign in with Apple を使ってください」。その後は差し戻し、質問、また差し戻し。それぞれ1日以内に応えました。
- 9月13日(3.1.2) — 再提出は自動検査で弾かれました。サブスクリプションを付けた瞬間、掲載文に利用規約へのリンクが必須になっていたのです。
- 9月15日(2.1(b)) — 人の審査官が課金画面を見つけられませんでした。常設の入口は5タップの奥。4本の新しい入口を1日で設計し、承認し、出荷しました。
- 9月18日(3.1.1) — Promo コードで有料機能が解放されている、と。iOS では Promo 入力とお友達紹介を撤去し、判定クラス1つと19件のテストで戻らないようにして、Build 71 を9月19日の午前1時に再提出。
- 9月22日 18:59 — 承認。もう差し戻しはありませんでした。その夜、開発者は自分の iPhone でプレミアムプランを購入しました。480円。両ストア、両サブスクリプションが動いています。
第9章 記録する人
釣果を記録するアプリは、それ以外のすべてを記録することで作られました。すべての失敗、すべての教訓、すべてのルールを——機械が検査できるようになるまで。861コミット、2,900種、49の保全アンカー、2つの AI、ひとりの釣り人。リリースの夜、開発者はこう書きました。「私は今、感無量です。」
制作について
本作は、開発に使った 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分間のデモ動画・「海のマップ」と「出船モード」の紹介動画・粟島の実地テスト動画も公開しています。
On June 13, 2026, an angler typed the first prompt to an AI. One hundred and one days later, at 6:59 p.m. on September 22, Apple's approval of iOS Version 1.0 arrived and World Fishing Map was on both stores. “101 Days to Both Stores” is an eleven-minute documentary about what those days held, told only with the real record — git history, release notes, review notices, device recordings and the developer's own footage. It is now on the official YouTube channel, with English narration and Japanese subtitles.
The video loads from YouTube only after you press play (we use the privacy-enhanced embed). See External Transmission for details. You can also watch it directly on YouTube. English and Japanese subtitles are available from the “CC” button.
About the film
It runs 11 minutes 25 seconds: a cold open at the moment of approval, a rewind to the first prompt, and nine chapters that follow the 101 days in order. Every number was read from git and the news posts when the film was generated, and every quotation is verbatim from the record. No faces or names are shown. Below, chapter by chapter, are stills from the film and the development stories behind them.
Chapter 1 — The first prompt (June 13)
The first document described the idea: photograph a catch, let AI identify the species, put it on a world map, and reward honest records with tokens. One sentence in it decided everything that followed: “Rather than giving detailed instructions, bring ideas one after another and I will approve them.” The AI proposes, the developer decides. That became the way of working for the next hundred days.
Two ideas in that document did not survive. “Fish Token as an NFT on a blockchain” became a hash-chained, append-only ledger; “a rental web-hosting server” became a container on Google Cloud. Flutter for the app, FastAPI for the backend, Android first and iOS after launch — decided on day one, delivered on day 101.
Chapter 2 — 861 commits
861 commits, 733 pull requests and 134 tagged releases in 101 days. The busiest day was August 8, with 38 commits before midnight.
The instructions file for the AI — the repository's own manual — had grown into a single 1,700-line file that was read in full on every turn. On July 26 it was split into four. The same day, one of the four turned out to be served to the whole world as part of the public website: 6,000 bytes of internal notes. The fix was one redirect; the lesson became one test, and CI has stopped the same accident mechanically ever since.
In July a second AI joined: a collaborator working with ChatGPT Codex, whose first pull request was the app icon that still greets every user. And the things that must never be quietly changed — the scoring formula, the append-only ledgers, the legal-document sync, the required notices — were written into the codebase as “preservation anchors”, 49 of them today, checked by machines on every pull request.
Chapter 3 — 2,940 species in two weeks
On July 16 the encyclopedia went public with 1,200 species. Two weeks later it held nearly three thousand: fish, crustaceans, cephalopods, shellfish, even jellyfish. “A flatfish faces the way its eyes do.” All 53 flatfish illustrations were checked by eye and 20 were mirrored (the news post).
Then came the habitat illustrations: 200 per batch, 11 batches, 2,290 species so far. The biggest lesson of that work was batch 04. All 200 images passed every automated check — dimensions, naming, count, orientation — and 20 of the 200 were the wrong species. Since then, every single image is checked by eye before it goes live. The remora was redrawn too: correct as a species, wrong as biology — its sucker was not touching the host (the news post).
Chapter 4 — The summer of testing
July 19: a closed test, 12 testers, 14 days. On August 2 the app applied for production access; 27 hours later it was approved, the open test began the same day in 15 countries, and the same night a law firm came on retainer.
August 8, 00:24. SMS two-factor sign-in on an iPhone finally worked. There were two walls, and both had to be climbed. The proof was not on the screen but in the server's ledger — a second bonus entry. That day's 38 commits were the most of the whole project.
A tester reported a message that would not go away. The cause was upstream: a Flutter update had made snackbars with an action persist forever, and one had stayed on screen across pages. The fix was one helper — and a test that fails if the framework ever changes again.
The 40 store screenshots passed all 40 automated checks. A human eye found 134 defects. The worst: a synthesised home indicator had blacked out the safety note about venomous fish. All 40 were rebuilt from real screens.
Chapter 5 — iOS, without a Mac
Not a single Mac was bought. Builds ran on cloud macOS and verification happened on a second-hand iPhone. On August 5, TestFlight opened.
Sign in with Apple was written exactly as the documentation says — and it failed on a real device. Twice. The credential fell into a generic path and Apple rejected it; neither the compiler nor static analysis could see it. A test now pins the correct provider. Paid apps meant paperwork, too: an agreement, tax forms, a bank account, in an order nobody expected. On August 15 the first sandbox purchase went through.
Chapter 6 — To the sea
Boat Mode was designed inside the law: no routes, no navigation, no “chart” in its name. Instruments, a track, a trip log and GEBCO reference depth, all kept on the device. On September 4 the developer took it aboard a training boat — in the middle of a boating-licence course (the field-test video).
September 12: the eight o'clock ferry from Iwafune to Awashima, a small island in the Sea of Japan. A rental bicycle around the island, zero fish — but the app worked: speed through the water, position, the shape of the seabed underfoot, all in one hand (the Awashima video). Depth for the whole planet came from a 1.8-gigabyte global grid, cut into tiles and streamed from cloud storage; Coast Guard chart layers and the seabed sit on the same map. Reference for fishing, not for navigation.
Chapter 7 — Launch, and a freeze
September 1: the final legal documents arrived from counsel, were checked the same day and went live. September 2: Google Play approved version 1.0 — the official launch, in 177 countries and regions. The same day the app was submitted to a hackathon for subscription apps.
Six days later, the project's X account was suspended for what the notice called “inauthentic behaviors”. The posts were fine; the method was not. A browser had been automated to publish them, which the platform's rules forbid in so many words. An appeal was filed that morning and the account was restored the same day — “there was no violation”. Posting moved to the official API, and a guard now blocks the browser from that site. Technically possible is not the same as allowed.
Chapter 8 — The fourth submission
The iOS build submitted on September 2 sat in the queue for ten days. The cause: minutes after submission, Apple had tried the demo Google account and Google had blocked that sign-in. The fix was one line in the review notes — “please use Sign in with Apple”. Then came a rejection, a question, and another rejection, each answered within a day.
- September 13 (3.1.2) — the resubmission was bounced by an automated check: the moment a subscription was attached, the listing needed a link to the Terms of Use.
- September 15 (2.1(b)) — a human reviewer could not find the paywall. The permanent entry point was five taps deep. Four new entry points were designed, approved and shipped in a day.
- September 18 (3.1.1) — promo codes were unlocking paid functionality. Promo-code entry and referrals were removed from iOS, one policy class and nineteen tests keep them from coming back, and Build 71 was resubmitted at 1 a.m. on September 19.
- September 22, 18:59 — approved. No further changes requested. That night the developer bought a Premium plan on their own iPhone: 480 yen. Both stores, both subscriptions, live.
Chapter 9 — The one who records
An app that records catches was built by recording everything else: every mistake, every lesson, every rule, until machines could check them. 861 commits, 2,900 species, 49 anchors, two AI agents, one angler. On the evening of the release, the developer wrote: “I am overwhelmed with emotion.”
How it was made
The film was generated entirely in code by the AI used for development (Claude Code): the script, the timing, the GPU compositing, the subtitles and the audio mix are all programs, and no video editor was used. Narration is a synthetic voice (Gemini TTS, imitating no real person), the music is AI-generated (Lyria 3) and the sound effects are procedurally synthesised. All footage was shot by the developer, every app screen is a real device recording, and no faces or names are shown. In the Marine map, seafloor and Boat Mode scenes, the source attribution and the not-for-navigation notice stay visible inside the app screen. Depth values are GEBCO reference values and nautical layers come from MSIL (Japan Coast Guard); none of it is for navigation.
Google Play and the Google Play logo are trademarks of Google LLC. Apple, the Apple logo and App Store are trademarks of Apple Inc.
Download on the App Store Get it on Google Play
Our official YouTube channel, World Fishing Map Official, also hosts the two-minute demo video, the Marine map and Boat Mode feature tour and the Awashima field test.