[{"data":1,"prerenderedAt":322},["ShallowReactive",2],{"content-/fs-story-ios-to-pc-port-check":3,"all-pages-for-dir":301,"related-/fs-story-ios-to-pc-port-check":302,"og-image-/fs-story-ios-to-pc-port-check":321},{"id":4,"title":5,"body":6,"category":280,"concepts":281,"description":282,"extension":283,"meta":284,"navigation":285,"ogImage":281,"path":286,"project_name":287,"published":288,"publishedAt":289,"seo":290,"source":291,"stem":292,"tags":293,"todo":281,"unpublished":288,"updatedAt":281,"__hash__":300},"pages/2026-10/2026-10-27/fs-story-ios-to-pc-port-check.md","財務諸表講座のiOS→PC移植チェックからデプロイまで：ポート3210と3200の取り違えと「完了にする」が遅い原因",{"type":7,"value":8,"toc":263},"minimark",[9,14,19,23,26,32,43,47,50,53,56,59,63,66,71,74,77,81,84,87,91,94,97,102,105,108,111,115,118,123,126,129,132,135,138,141,144,147,151,154,165,168,171,174,181,184,187,191,194,201,204,211,215,230,233,237,247,250],[10,11,13],"h1",{"id":12},"財務諸表講座のiospc移植チェックからデプロイまで","財務諸表講座のiOS→PC移植チェックからデプロイまで",[15,16,18],"h2",{"id":17},"_2つのurlは重複していたのか","2つのURLは重複していたのか",[20,21,22],"p",{},"朝、前日に書き出した引き継ぎファイルを Claude Code に渡し、財務諸表ストーリーの移植作業の続きから始めた。\niOS 版で作ったストーリーを、PC 版（Nuxt）へ移植する作業である。\n作業ブランチに origin/main を取り込み、push して main へ早送りで入れてもらった。",[20,24,25],{},"そのあと、制作画面とストーリー版の2つの URL を貼って、こう打ち込んだ。",[27,28,29],"blockquote",{},[20,30,31],{},"今恐ろしいことに気づいたんですけど、これってなんで2つ重複してるんでしたっけ？",[20,33,34,38,39,42],{},[35,36,37],"code",{},"/dev/fs-scene"," と ",[35,40,41],{},"/lessons/financial-statements/story/..."," が、同じ回を映していた。\nClaude Code に見比べてもらうと、重複ではなかった。\n台本と画面のデータは1つで、それを「作業台」（制作画面）と「受講者が見るページ」（ストーリー版）の2か所で表示している。\n画面の動きは同じだが、ストーリー版の字幕と音声は書き出した時点のものなので、台本とずれることがある。\n実際に No02 が1か所ずれていた。",[15,44,46],{"id":45},"音声が未作成と出たのはどの画面か","音声が「未作成」と出たのはどの画面か",[20,48,49],{},"音声の無い回があるので、Mac 側のセッションに頼めないかと持ちかけた。\n返ってきた答えは「Mac に頼まなくても大丈夫」だった。\n帳簿なし版の音声は、10-26 に Windows で26本とも合成済みで、メインの作業ツリーに入っている。\n音声が無いように見えるのは、いま開いているのが 3210（作業用ワークツリーの dev サーバー）だからだろう、という見立てだった。\n音声は git の管理外なので、ワークツリーには自動では入らない。",[20,51,52],{},"このやりとりの中で「これiOSでやったやつをPC移植してんのか」と納得した。\nPC 版とスマホ版への移植は終わっていて、このセッションに残っているのは iOS 側の後片付け（段6）だけだという。",[20,54,55],{},"それでも画面では、音声は再生されず「未作成」と出ている。\nスクリーンショットを貼って指摘し、ワークツリー側に音声へのリンクを26本張ってもらった（git の差分は出ない）。\n表示は「音声 未作成」から「音声あり 全24文」に変わり、長さも仮の 3:00 から実際の音声の 2:54 になった。",[20,57,58],{},"3210 と 3200 の違いは、このあとも何度か私を迷わせた。",[15,60,62],{"id":61},"ssの欄と表の合計を-にそろえる","SSの欄と表の合計を「-」にそろえる",[20,64,65],{},"次に、SS（株主資本等変動計算書）の欄の表記を直してもらった。\n実装の前に、影響が分かれる点を4つ挙げて確認された。\n私の答えが途中で食い違った（「SS の欄と全部の表の合計を、未計上なら -」を選んだあとに「同じまんまでいい」と書いた）ので、どちらを優先するかを聞き返された。",[27,67,68],{},[20,69,70],{},"SSの欄と全部の表の合計を未計上ならば、これをお願いします。これだけをやってください。ここは他とトーンアンドマナーが明らかにずれてるんで。",[20,72,73],{},"配当まわりの行や列を減らす案は、ここでやめた。\n決まりは「記入がなければ -、記入して 0 になったら 0」で、SS の各欄と BS、CS、PL の合計にそろえた。\n画面では、PL の売上総利益と営業利益が「-」になり、経常利益から下は △30 と出ている。",[20,75,76],{},"fs 関連のテストは 45ファイル、2,420件がすべて通った。\nコミット時の Codex レビューは指摘が続き、4回目で通過した。\n途中で 3210 の dev サーバーが落ちた。\nエラーの表示はなく、続けて流したテストの負荷によるものと見られる。",[15,78,80],{"id":79},"_3300で動かしていたのか","3300で動かしていたのか",[20,82,83],{},"ここで「これって確か3300でやってたんでしたっけ？」と聞いた。\nメインへマージして、3200 でも同じ表示になるかを確かめたかった。",[20,85,86],{},"実際の作業場所は 3300 ではなく 3210 だった。\norigin/main に入っていた新しい3コミットは依存パッケージの更新だけで、財務諸表のコードには触れていない。\nそれを取り込んで main へ入れ、メインの作業ツリーも pull して、3200 でも同じ表示で見られるようにした。",[15,88,90],{"id":89},"段6ios用データの書き出し","段6：iOS用データの書き出し",[20,92,93],{},"続いて段6に入った。\nまず make-fork が、取引25回、論点2回、説明11回で通った。\nNo01 を1本書き出して確かめ、残りの取引24回は3本ずつ並べて書き出してもらった（1回あたり約4分）。",[20,95,96],{},"この書き出しについて、引っかかって聞いた。",[27,98,99],{},[20,100,101],{},"書き出すのって、もしかしてMP4を書き出してるんですか？ちょっとそれ意味ないんで",[20,103,104],{},"MP4 ではなかった。\n「書き出し」は iOS アプリに同梱するデータを作り直す作業で、中身はコマごとの画面の状態、字幕と時刻、取引の図の SVG である。\nそれなら問題ないので、続けてもらった。",[20,106,107],{},"途中で、SVG が22枚すべて変わるという差分が出た。\nWindows の作業ツリーの元の Vue が CRLF で、改行のうち CR だけが SVG に残っていた（前回は LF の環境で書き出されていた）。\n読み込むときに LF へそろえてもらうと、変わったのは No06、No14、No17 の3枚だけになった。",[20,109,110],{},"あわせて、債権と債務の玉を図の札の位置から飛ばすように直してもらった。\nNo06 では、¥ の箱（600）のすぐ右に借入債務の札が真横に並び、重なりもなくなった。\nあとで No17（短期借入債務の返済）の札と×印も、No06 で借入債務が出る位置（上へ 55、右へ 22）にそろえてもらった。",[15,112,114],{"id":113},"_3200では完了3210では再確認","3200では完了、3210では「再確認」",[20,116,117],{},"作業の途中で、私はずっと 3200 で見ていて、3210 は見ていなかったと伝えた。",[27,119,120],{},[20,121,122],{},"3200だと、まあ完了にしてるやつ？3210だと、まあその再確認のタグがついてて。ちょっと一瞬迷っちゃった",[20,124,125],{},"完了の印は「台本と音声のマニフェスト」の組で照合している。\n記録（D1）は 3200 と 3210 で共通だが、3210 のワークツリーにある音声のマニフェストがメインのものと違うので、3210 では「完了したあとに音声が変わった」と判定されていた。\n正しい基準は、私が見ている 3200 の表示である。",[20,127,128],{},"そこで main へ入れてもらい、3210 の dev サーバーもポート指定で止めてもらった。\n直後に「これ音がなくなってるの気のせいですか？」と聞いたら、開いていたタブが止めた 3210 のページだった。\n以後は 3200 だけを見ることにして、ワークツリーの dev サーバーとの往復はここで終わった。",[15,130,131],{"id":131},"台本と音声が合っていない",[20,133,134],{},"3200 の画面に「台本と音声が一致しない」という帯が出ていた。\n音声をずらした覚えはないので、理由を聞いた。",[20,136,137],{},"3200 にある取引25回の音声は、10月5日と15日に作ったものだった。\nそのあと台本を、10月23日に改訂し（「万円」を読まない形にして、金額を漢数字にした）、10月26日に創立費の2文を足している。\nMac で作り直した新しい音声が、3200 に届いていなかった。",[20,139,140],{},"Mac は私が使っていたので、Mac にある音声は取り込み、足りない分は空いている Windows で合成する方針にした。\nMac から 508件を取り込み（SHA-256 一致）、取引25回の音声を入れ替えた。\n帳簿なし版の No13 は Windows で合成し直してもらい（全7拍、124秒、平均 −21.8dB）、3200 で帯が消えたことを確かめた。",[20,142,143],{},"ただ、メインの作業ツリーは早送りできなかった。\n別セッションがまだ push していない CF精算表のコミットを作っていたので、そこへ merge せずに置いた。",[20,145,146],{},"ほかに、「現金変動なし」の回で AFTER の箱を光らせる演出もやめてもらった。",[15,148,150],{"id":149},"iosリポジトリのぶつかり","iOSリポジトリのぶつかり",[20,152,153],{},"iOS のリポジトリへ push しようとすると、Mac 側が origin に6コミット先へ進んでいた。\nMac 側と私が、同じ iOS 用データを別々に作り直していたので、28ファイルがぶつかった。\nMac 側の版を採り、Windows 対応の3点だけを入れ直す方針にした。",[20,155,156,157,160,161,164],{},"ぶつかったファイルを Mac 側の版にするコマンド（",[35,158,159],{},"git checkout --theirs","）は、権限の設定で止められた。\n別のコマンドで回り込まずに確認を求められたので、私が ",[35,162,163],{},"!"," を付けて1行で実行した。\n結果は 0 で、ぶつかったファイルはすべて Mac 側の版になった。\nそのあと縦の iOS 用データを作り直してもらい、テストを通して push した。",[20,166,167],{},"No02 だけは iOS 用データを作り直せなかった。\nNo02 の公開用データが、創立費の2文を足す前のままだったからである。\nコンテキストが80%に達したので、計画書を更新し、引き継ぎを Downloads のテキストファイルに書き出してもらった。",[15,169,170],{"id":170},"帳簿なし版のスマホ版を作る",[20,172,173],{},"昼の別セッションで積み残しを聞くと、push 以外は残っていなかった。\nそこで、iOS 版へ流すための帳簿なし版スマホ版を作ることにした。",[20,175,176,177,180],{},"画の形は、上に取引と5つの要素、下に BS と PL（当期純利益まで）を置き、CS と SS はグレーにした。\n試すと、退けたあとに財務諸表が左に寄り、右にすき間ができていた。\n枠の位置とカメラの基準がずれていたので、直してもらった。\n費用の札が3枚ある No20、取引の無い No23 と「はじめに」も画で確かめ、「はじめに」はスマホ版の音声を合成してもらった。\n各回で重ねた枠が BS、PL や字幕と重ならないことを、全回で確かめるテストも足してもらった。\n",[35,178,179],{},"tests/unit/fs"," 全体では1件がタイムアウト（5秒）で落ちたので、変更前のコードでも同じかを切り分けてもらった。",[20,182,183],{},"26本の試作ができたので、コミットして push してもらった。\nMac の tmux セッション「claude」には、iOS 版へ取り込むよう指示を送ってもらった。\nMac の eurekapu-ios セッションからは「帳簿なし版の音声26本を LAN で送って、R2 には上げないで」という依頼が届いていた。\nそのとおり LAN で送り、Mac 側でもファイル数が一致した（1.5GB、2,801ファイル）。\n送り終えた知らせは、5回目の送り直しで受け付けられた。",[20,185,186],{},"残りは、スマホ版26本の私の確認、ストーリー版の縦の画、「はじめに」のスマホ版の音声の R2 への上げである。\nこれも引き継ぎを Downloads に書き出して、明日へ回した。",[15,188,190],{"id":189},"完了にするが遅い原因","「完了にする」が遅い原因",[20,192,193],{},"午後、朝のセッションの引き継ぎファイルを新しいセッションに渡した。\n頼んだのは3つで、No02 の公開データの作り直し、制作画面の「完了にする」が遅い件の調査、デプロイである。",[20,195,196,197,200],{},"実測してもらうと、wrangler のバージョン表示は 0.7秒で出ていた。\nそのあと約5.3秒、何かが終了を引き止めていた。\nログのフォルダを ",[35,198,199],{},"ls"," するだけで2分を超えた。\n見立ては、wrangler のログファイルが大量に溜まっていることだった。\n遅さの原因は D1 ではなく、wrangler の起動側にあった。",[20,202,203],{},"呼び出し方を変えると、6秒が 1.4〜1.6秒になった。\n共有の関数もその形に書き直してもらうと、1回 1.1〜1.3秒、4本同時でも 1.3秒になり、ログのファイルも増えなくなった。\nテスト30件が通った。",[20,205,206,207,210],{},"No02 の公開データは、最初の作り直しで36ファイルすべてに差分が出たように見えた。\n比べると差は残っておらず、git の古い表示だった。\n",[35,208,209],{},"revise-trades.ts build"," を25回分流し直すと、差は No02 と本文の HTML 2枚だけになった。\nR2 には No02 の新しい mp3 が8本無かったので上げ、配信 URL で全部 200 が返ることを確かめた。",[15,212,214],{"id":213},"デプロイと1password","デプロイと1Password",[20,216,217,218,221,222,225,226,229],{},"デプロイは、デプロイ用の worktree に ",[35,219,220],{},".env"," が無いところで止まった。\n1Password から書き出す手順だが、CLI がサインインしていなかった（",[35,223,224],{},"account is not signed in","）。\n1Password のアプリのロックを外して続けてもらい、",[35,227,228],{},"deploy.ps1"," まで進んだ。",[20,231,232],{},"デプロイは 10.4分で終わり、前回から60コミットが本番に入った。\n本番の No02 をヘッドレスのブラウザで確かめると、38文、4分32秒の新しい版になり、新しい mp3 も 200 で読み込まれた。\n計画書の更新を push するとき、別セッションが main を6コミット進めていたので、その上に載せ直してから push した。\nデプロイ用の作業ツリーは、ほかのセッションが消そうとしている気がしたので、そのままにした。\n最後に、引き継ぎのプロンプトを書いてもらった。",[15,234,236],{"id":235},"downloadsに怪しいclaudemdはないか","Downloadsに怪しいCLAUDE.mdはないか",[20,238,239,240,243,244,246],{},"夕方、引き継ぎファイルを何本も置いた Downloads に、",[35,241,242],{},"CLAUDE.md"," のような怪しいものが紛れていないかを調べてもらった。\n",[35,245,242],{}," は無く、Claude Code が勝手に読み込む設定ファイルも無かった。",[15,248,249],{"id":249},"学びメモ",[251,252,253,257],"ul",{},[254,255,256],"li",{},"ワークツリーごとに dev サーバーを立てると、git 管理外の音声と完了判定のマニフェストがメインとずれ、同じ D1 を見ていても表示が分かれる。見るポートは 3200 の1つに決め、ワークツリーの dev サーバーは止めておく",[254,258,259,260,262],{},"「完了にする」の遅さは D1 ではなく wrangler の起動にあった。ログのフォルダを ",[35,261,199],{}," するだけで2分を超えるほど、ログが溜まっていた",{"title":264,"searchDepth":265,"depth":265,"links":266},"",2,[267,268,269,270,271,272,273,274,275,276,277,278,279],{"id":17,"depth":265,"text":18},{"id":45,"depth":265,"text":46},{"id":61,"depth":265,"text":62},{"id":79,"depth":265,"text":80},{"id":89,"depth":265,"text":90},{"id":113,"depth":265,"text":114},{"id":131,"depth":265,"text":131},{"id":149,"depth":265,"text":150},{"id":170,"depth":265,"text":170},{"id":189,"depth":265,"text":190},{"id":213,"depth":265,"text":214},{"id":235,"depth":265,"text":236},{"id":249,"depth":265,"text":249},"dev",null,"iOS版の財務諸表ストーリーをPC版へ移植した作業を確かめた日の記録。制作画面と受講者ページの関係、ワークツリー（3210）とメイン（3200）の表示のずれ、表の合計の「-」表記、帳簿なし版スマホ版の試作、wranglerの起動待ちの解消とデプロイまで。","md",{},true,"/fs-story-ios-to-pc-port-check","eurekapu-nuxt4",false,"2026-10-27T00:00:00.000Z",{"title":5,"description":282},"make-diary","2026-10/2026-10-27/fs-story-ios-to-pc-port-check",[287,294,295,296,297,298,299],"財務諸表","iOS","git worktree","wrangler","Cloudflare","デプロイ","F0BWT8fLnI8jqCR8mADqe1CyHmH6m_kvFTiXdCYqYIg",[],[303,307,311,315,318],{"title":304,"path":305,"publishedAt":306},"eurekapu-nuxt4のデプロイ復旧と、画像・音声をR2配信に寄せ切った一日","/gogen-assets-r2-offload","2026-07-20T00:00:00.000Z",{"title":308,"path":309,"publishedAt":310},"git worktree を1本ずつ消して音声ファイル数を確かめた日：スマホ版の修正と外付けSSDへの控え","/audio-assets-worktree-cleanup-and-backup","2026-10-28T00:00:00.000Z",{"title":312,"path":313,"publishedAt":314},"2026年10月26日の開発日記 - 会計ストーリー版のiOS差し替え、帳簿なし版の追加、WindowsとMacの分担","/2026-10-26-diary","2026-10-26T00:00:00.000Z",{"title":316,"path":317,"publishedAt":314},"財務諸表ストーリー動画に「帳簿なし版」を追加：PC横26本の台本と音声合成、グレーアウトとレビュー保存400の修正","/financial-statements-story-nobooks-review",{"title":319,"path":320,"publishedAt":314},"会計入門ストーリー版をiOS向けに差し替えた日：「版」の列と1文ずつ送れる画面再現","/intro-accounting-story-ios-edition","https://log.eurekapu.com/og/blog/fs-story-ios-to-pc-port-check.png?v=2026-10-27T00%3A00%3A00.000Z&title=%E8%B2%A1%E5%8B%99%E8%AB%B8%E8%A1%A8%E8%AC%9B%E5%BA%A7%E3%81%AEiOS%E2%86%92PC%E7%A7%BB%E6%A4%8D%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%8B%E3%82%89%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%BE%E3%81%A7%EF%BC%9A%E3%83%9D%E3%83%BC%E3%83%883210%E3%81%A83200%E3%81%AE%E5%8F%96%E3%82%8A%E9%81%95%E3%81%88%E3%81%A8%E3%80%8C%E5%AE%8C%E4%BA%86%E3%81%AB%E3%81%99%E3%82%8B%E3%80%8D%E3%81%8C%E9%81%85%E3%81%84%E5%8E%9F%E5%9B%A0&author=Kei%20Komatsu&sig=d7aec9ccd7989d1f",1793331574128]