<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>KOGAMAI JUNCTION Blog</title>
        <link>https://gta.kogamai.com/blog</link>
        <description>KOGAMAI JUNCTION Blog</description>
        <lastBuildDate>Wed, 26 Aug 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>ja</language>
        <item>
            <title><![CDATA[街づくり12日目・第二章｜KOGAMAI Payを安全に試す]]></title>
            <link>https://gta.kogamai.com/blog/kogamai-pay-guardrails</link>
            <guid>https://gta.kogamai.com/blog/kogamai-pay-guardrails</guid>
            <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[台帳、snapshot、isolated restore、append-only migration、P2Pの段階gateを分けます。]]></description>
            <content:encoded><![CDATA[<p><img width="1672" height="941" alt="銀行の台帳とPhoneをつなぐ金融基盤" aria-haspopup="dialog" aria-label="画像「銀行の台帳とPhoneをつなぐ金融基盤」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/bank-ledger-scene-09731dbebb586f7264a868caf1dc7688.png" tabindex="0"></p>
<p><strong>2026年8月26日、街づくり12日目・第二章。</strong></p>
<p>KOGAMAI Payは、見た目だけの銀行アプリではありません。円残高、明細、口座の切替、個人間送金を、同じ台帳とserver authorityから読める入口です。便利さを増やすほど、二重送信や途中失敗を「たまたま起きない」に任せない設計が必要になります。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="画面より先に台帳を守る">画面より先に台帳を守る<a href="https://gta.kogamai.com/blog/kogamai-pay-guardrails#%E7%94%BB%E9%9D%A2%E3%82%88%E3%82%8A%E5%85%88%E3%81%AB%E5%8F%B0%E5%B8%B3%E3%82%92%E5%AE%88%E3%82%8B" class="hash-link" aria-label="画面より先に台帳を守る への直接リンク" title="画面より先に台帳を守る への直接リンク" translate="no">​</a></h2>
<p>clientやPhoneは、送金の成功や残高を自分で決めません。serverが認証済みのactor、送金先、金額、intentの状態を検証し、同じ要求が届いても一つの結果へ収束させます。二重送信、timeout、再接続は正常系とは別の必須testです。</p>
<p>P2P送金を試すswitchも、請求、燃料、素材、craft、医療などの別domainをまとめて有効にしません。小さな機能だけを開き、関係のないmutationが増えていないことを先に確かめます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="db変更の前に戻れることを証明する">DB変更の前に戻れることを証明する<a href="https://gta.kogamai.com/blog/kogamai-pay-guardrails#db%E5%A4%89%E6%9B%B4%E3%81%AE%E5%89%8D%E3%81%AB%E6%88%BB%E3%82%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E8%A8%BC%E6%98%8E%E3%81%99%E3%82%8B" class="hash-link" aria-label="DB変更の前に戻れることを証明する への直接リンク" title="DB変更の前に戻れることを証明する への直接リンク" translate="no">​</a></h2>
<p>金融migrationの前には、live DBを変更しないsnapshotを作り、read-backしたdumpをnetworklessな一時MariaDBへisolated restoreします。source DBの前後digestが一致し、一時targetがcleanupされたときだけ次のgateへ進めます。</p>
<p>migrationはappend-onlyとし、既存行や既存migrationの置換を許しません。snapshotがあるだけでは十分ではなく、復元できること、対象releaseとledger markerが一致することまでを証拠にします。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="未決定は使えない状態にする">未決定は使えない状態にする<a href="https://gta.kogamai.com/blog/kogamai-pay-guardrails#%E6%9C%AA%E6%B1%BA%E5%AE%9A%E3%81%AF%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%84%E7%8A%B6%E6%85%8B%E3%81%AB%E3%81%99%E3%82%8B" class="hash-link" aria-label="未決定は使えない状態にする への直接リンク" title="未決定は使えない状態にする への直接リンク" translate="no">​</a></h2>
<p>claim、債務回収、providerごとの料金など、仕様が確定していない部分は推測で有効にしません。readinessが欠けるときはfail closedにし、UIも「成功したように見える」表示を避けます。</p>
<p>現在のKOGAMAI PayはDEVで段階的に確かめる実験です。code、contract、failure-first testを揃えることと、実際のDEVで残高や送金を確認することは別の証拠です。productionへの昇格は、この技術記事やcode mergeだけでは行いません。</p>
<p><a class="" href="https://gta.kogamai.com/blog/web-publication-pipeline">第一章・Web公開経路へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/dev-control-recovery">第三章・DEV control recoveryへ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>KOGAMAI Pay</category>
            <category>開発プロセス</category>
        </item>
        <item>
            <title><![CDATA[街づくり12日目・第三章｜共有DEVを止めずにcontrolを直す]]></title>
            <link>https://gta.kogamai.com/blog/dev-control-recovery</link>
            <guid>https://gta.kogamai.com/blog/dev-control-recovery</guid>
            <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[playerの不在、socket所有権、listener復旧、tracked rollbackを別々に証明します。]]></description>
            <content:encoded><![CDATA[<p><img width="1672" height="941" alt="共有DEVを小さな検査とrollbackで守る" aria-haspopup="dialog" aria-label="画像「共有DEVを小さな検査とrollbackで守る」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/ai-native-development-7b6ab24c36ddca283ba4bf5590fb2a14.png" tabindex="0"></p>
<p><strong>2026年8月26日、街づくり12日目・第三章。</strong></p>
<p>共有DEVでは、resourceを安全に切り替えるためのcontrol listenerを使います。ところがprocessが動いていても、古いsocketだけが残り、listenerへ接続できないことがあります。そこで「serverが起動中」という一つの信号ではなく、原因と影響を細かく分けました。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="0人を推測しない">0人を推測しない<a href="https://gta.kogamai.com/blog/dev-control-recovery#0%E4%BA%BA%E3%82%92%E6%8E%A8%E6%B8%AC%E3%81%97%E3%81%AA%E3%81%84" class="hash-link" aria-label="0人を推測しない への直接リンク" title="0人を推測しない への直接リンク" translate="no">​</a></h2>
<p>変更前にはauthoritative player countが必要です。複数のread-only endpointが0を返しても、control側の正本が読めなければ「たぶん0人」へ昇格させません。取得不能、値の不一致、接続中の可能性が残る場合は、その場で停止します。</p>
<p>同じように、active sourceとtracked rollbackが分からない状態ではresource adoptionへ進みません。戻り先がないまま変更を始めると、成功判定も失敗時の復旧も曖昧になるからです。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="stale-socketだけを対象にする">stale socketだけを対象にする<a href="https://gta.kogamai.com/blog/dev-control-recovery#stale-socket%E3%81%A0%E3%81%91%E3%82%92%E5%AF%BE%E8%B1%A1%E3%81%AB%E3%81%99%E3%82%8B" class="hash-link" aria-label="stale socketだけを対象にする への直接リンク" title="stale socketだけを対象にする への直接リンク" translate="no">​</a></h2>
<p>復旧対象は、所有者、path、inode、service identityが期待値と一致するstale socketだけです。別processが使うsocket、listenerが存在するsocket、所有境界が不明なfileは削除しません。</p>
<p>さらに、FiveM全体を再起動しないcontrol専用経路を用意しました。listenerが競合を検出した場合はbounded retryを行い、同じfailureが続くなら停止します。manual consoleや未文書APIへ迂回せず、review済みのplanとapplyを分けます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="復旧codeとruntime成功を分ける">復旧codeとruntime成功を分ける<a href="https://gta.kogamai.com/blog/dev-control-recovery#%E5%BE%A9%E6%97%A7code%E3%81%A8runtime%E6%88%90%E5%8A%9F%E3%82%92%E5%88%86%E3%81%91%E3%82%8B" class="hash-link" aria-label="復旧codeとruntime成功を分ける への直接リンク" title="復旧codeとruntime成功を分ける への直接リンク" translate="no">​</a></h2>
<p>failure-first testでは、player確認、対象socket fingerprint、process identity不変、listener read-back、cleanup、rollbackの欠落を拒否します。ただしcodeがmergeされたことは、共有DEVのlistenerが実際に復旧した証拠ではありません。</p>
<p>runtimeでの最終実証は別のtransactionです。exact plan、0人の再確認、実行承認、復旧後diagnosticが揃うまで、resource activationやdatabase操作へ進みません。</p>
<p><a class="" href="https://gta.kogamai.com/blog/kogamai-pay-guardrails">第二章・KOGAMAI Payへ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/self-hosted-ci-boundaries">第四章・self-hosted CIへ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>共有DEV</category>
        </item>
        <item>
            <title><![CDATA[街づくり12日目・第四章｜CIの仕事場を役割ごとに分ける]]></title>
            <link>https://gta.kogamai.com/blog/self-hosted-ci-boundaries</link>
            <guid>https://gta.kogamai.com/blog/self-hosted-ci-boundaries</guid>
            <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[secret-free品質検査と保護された運用処理を、用途別self-hosted runnerへ分離します。]]></description>
            <content:encoded><![CDATA[<p><img width="1672" height="941" alt="役割ごとに分離されたCIの通り道" aria-haspopup="dialog" aria-label="画像「役割ごとに分離されたCIの通り道」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/secure-homelab-edge-24f8fb730f3fca9b52f766cd39d603e0.png" tabindex="0"></p>
<p><strong>2026年8月26日、街づくり12日目・第四章。</strong></p>
<p>testを速く回す仕事と、DEVへ接続する仕事と、公開物を届ける仕事は、必要な権限が違います。KOGAMAI JUNCTIONでは、全部を一つの万能runnerへ集めず、用途別のself-hosted runnerとして分けています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="品質検査へ秘密を渡さない">品質検査へ秘密を渡さない<a href="https://gta.kogamai.com/blog/self-hosted-ci-boundaries#%E5%93%81%E8%B3%AA%E6%A4%9C%E6%9F%BB%E3%81%B8%E7%A7%98%E5%AF%86%E3%82%92%E6%B8%A1%E3%81%95%E3%81%AA%E3%81%84" class="hash-link" aria-label="品質検査へ秘密を渡さない への直接リンク" title="品質検査へ秘密を渡さない への直接リンク" translate="no">​</a></h2>
<p>Pull Requestのformatter、型検査、contract test、buildはsecret-freeで実行します。変更されたcodeを検査するjobへ、運用Environmentやprivate networkの権限を渡しません。</p>
<p>一方、deploy、backup、read-backのような処理は、review済みmain、exact commit、明示入力、保護されたEnvironmentを要求します。通常CIが混雑したことを理由に、権限境界を省略した経路へ自動で切り替えません。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="一つのjobを一つの実行環境へ">一つのjobを一つの実行環境へ<a href="https://gta.kogamai.com/blog/self-hosted-ci-boundaries#%E4%B8%80%E3%81%A4%E3%81%AEjob%E3%82%92%E4%B8%80%E3%81%A4%E3%81%AE%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%B8" class="hash-link" aria-label="一つのjobを一つの実行環境へ への直接リンク" title="一つのjobを一つの実行環境へ への直接リンク" translate="no">​</a></h2>
<p>現在の品質runnerはone-job ephemeralを基本にします。jobが終わったfilesystemを別repositoryへ使い回さず、対象repository、runner名、labelの完全一致をAPIでread-backします。異常終了で残るoffline recordは、状態と経過時間を再確認してexact IDだけをcleanupします。</p>
<p>generation leaseとfencingを使うVM lifecycleは、将来の特権runner向け設計です。まだ現在の品質runnerが備える機能としては扱いません。</p>
<p>これにより「runnerがonlineだった」だけで安全と判断せず、どのsourceを、どの役割で、どのjobが実行したかを追跡できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="greenの意味を一つにしない">greenの意味を一つにしない<a href="https://gta.kogamai.com/blog/self-hosted-ci-boundaries#green%E3%81%AE%E6%84%8F%E5%91%B3%E3%82%92%E4%B8%80%E3%81%A4%E3%81%AB%E3%81%97%E3%81%AA%E3%81%84" class="hash-link" aria-label="greenの意味を一つにしない への直接リンク" title="greenの意味を一つにしない への直接リンク" translate="no">​</a></h2>
<p>PR CIのgreen、merge後main CIのgreen、運用workflowの成功、runtime read-back、人間のgameplay確認は別の証拠です。途中の一つを最終完了へ読み替えないことで、codeは正しいがruntimeが違う、という状態も安全に停止できます。</p>
<p><a class="" href="https://gta.kogamai.com/blog/dev-control-recovery">第三章・DEV control recoveryへ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/observability-with-privacy">第五章・privacyを守る観測へ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>CI</category>
            <category>開発基盤</category>
        </item>
        <item>
            <title><![CDATA[街づくり12日目・第五章｜見える化とprivacyを同時につくる]]></title>
            <link>https://gta.kogamai.com/blog/observability-with-privacy</link>
            <guid>https://gta.kogamai.com/blog/observability-with-privacy</guid>
            <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Zabbix、VictoriaLogs、Grafanaを分担し、PIIを増やさない観測契約をcodeで守ります。]]></description>
            <content:encoded><![CDATA[<p><img width="1672" height="941" alt="観測とprivacyの境界を守る基盤" aria-haspopup="dialog" aria-label="画像「観測とprivacyの境界を守る基盤」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/secure-homelab-edge-24f8fb730f3fca9b52f766cd39d603e0.png" tabindex="0"></p>
<p><strong>2026年8月26日、街づくり12日目・第五章。</strong></p>
<p>不具合を直すには、何が起きたかを見られる必要があります。しかし、見える情報を増やすほど安全になるとは限りません。KOGAMAI JUNCTIONでは、観測できることと、収集してよいことを同じcontractで決めます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="三つの道具を分担させる">三つの道具を分担させる<a href="https://gta.kogamai.com/blog/observability-with-privacy#%E4%B8%89%E3%81%A4%E3%81%AE%E9%81%93%E5%85%B7%E3%82%92%E5%88%86%E6%8B%85%E3%81%95%E3%81%9B%E3%82%8B" class="hash-link" aria-label="三つの道具を分担させる への直接リンク" title="三つの道具を分担させる への直接リンク" translate="no">​</a></h2>
<p>Zabbixはserviceやresourceのmetricsとtrigger、VictoriaLogsは構造化されたlog、Grafanaは横断して確認する表示面を担当します。一つのdashboardへ責務を集めず、監視対象の台帳、log envelope、query、alertをcode reviewできる形にします。</p>
<p>dashboardが表示できたことだけを成功にはしません。collectorが期待したfieldだけを送り、queryが成立し、triggerが必要な状態変化を検出し、変更後のread-backが一致するところまで分けて確認します。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="piiをlabelへ入れない">PIIをlabelへ入れない<a href="https://gta.kogamai.com/blog/observability-with-privacy#pii%E3%82%92label%E3%81%B8%E5%85%A5%E3%82%8C%E3%81%AA%E3%81%84" class="hash-link" aria-label="PIIをlabelへ入れない への直接リンク" title="PIIをlabelへ入れない への直接リンク" translate="no">​</a></h2>
<p>player名、連絡先、識別子、message本文のようなPIIは、便利だからという理由でmetric labelや通常summaryへ入れません。高cardinality化と意図しない公開の両方を避けるため、集計に不要な本文は最初から収集しない設計にします。</p>
<p>調査に必要な限定dataと、長期傾向を見るidentifier-freeな集計も分けます。raw dataのretentionとtrendのretentionを同じ値にせず、閲覧権限、削除、backup、容量監視をそれぞれ確認します。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="aiへ渡す前にも縮約する">AIへ渡す前にも縮約する<a href="https://gta.kogamai.com/blog/observability-with-privacy#ai%E3%81%B8%E6%B8%A1%E3%81%99%E5%89%8D%E3%81%AB%E3%82%82%E7%B8%AE%E7%B4%84%E3%81%99%E3%82%8B" class="hash-link" aria-label="AIへ渡す前にも縮約する への直接リンク" title="AIへ渡す前にも縮約する への直接リンク" translate="no">​</a></h2>
<p>AIやIssueへ渡すのは、原因分類に必要なsanitized count、状態、digestです。credential、private identifier、会話本文、内部topologyを貼り付けません。詳しい証拠が保護領域に必要な場合も、公開summaryとは別に扱います。</p>
<p>観測基盤は「たくさん保存する仕組み」ではなく、必要な事実を安全に確かめる仕組みです。privacy gateを通らない新しいcollectorは、便利そうでも有効にしません。</p>
<p><a class="" href="https://gta.kogamai.com/blog/self-hosted-ci-boundaries">第四章・self-hosted CIへ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/web-publication-pipeline">Web公開経路を読む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>Observability</category>
            <category>Privacy</category>
        </item>
        <item>
            <title><![CDATA[街づくり12日目｜Web公開を安全に運ぶ経路を整える]]></title>
            <link>https://gta.kogamai.com/blog/web-publication-pipeline</link>
            <guid>https://gta.kogamai.com/blog/web-publication-pipeline</guid>
            <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[self-hosted CI、exact commit、秘密を渡さないbuild、分離したWorkers公開とread-backを組み合わせます。]]></description>
            <content:encoded><![CDATA[<p><img width="1672" height="941" alt="設計図から検査を通ってWebへ届く公開経路" aria-haspopup="dialog" aria-label="画像「設計図から検査を通ってWebへ届く公開経路」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/secure-homelab-edge-24f8fb730f3fca9b52f766cd39d603e0.png" tabindex="0"></p>
<p><strong>2026年8月26日、街づくり12日目。</strong></p>
<p>この日は新しい画面を増やす代わりに、KOGAMAI JUNCTIONのWebを安全に更新する経路を整えました。変更を速く届けることと、公開してよいものだけを届けることを、同じ仕組みで確かめます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sourceと公開物を分ける">sourceと公開物を分ける<a href="https://gta.kogamai.com/blog/web-publication-pipeline#source%E3%81%A8%E5%85%AC%E9%96%8B%E7%89%A9%E3%82%92%E5%88%86%E3%81%91%E3%82%8B" class="hash-link" aria-label="sourceと公開物を分ける への直接リンク" title="sourceと公開物を分ける への直接リンク" translate="no">​</a></h2>
<p>正式文書は一つのprivate repositoryで管理し、Webはreview済みのexact commitだけを読み取ります。公開対象に選ばれた文書だけを抽出してから、publicとadminを別々にbuildします。内部文書はbuild、検索index、feedへ渡しません。</p>
<p>Pull Requestでは、まず秘密を渡さないbuildを行います。その成果物を信頼済みのcodeでもう一度監査し、PRのidentityとcommitが一致した場合だけPreviewへ進めます。Pull Requestを閉じた後のPreview終了も、公開と同じ契約で確認します。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ciも役割ごとに分ける">CIも役割ごとに分ける<a href="https://gta.kogamai.com/blog/web-publication-pipeline#ci%E3%82%82%E5%BD%B9%E5%89%B2%E3%81%94%E3%81%A8%E3%81%AB%E5%88%86%E3%81%91%E3%82%8B" class="hash-link" aria-label="CIも役割ごとに分ける への直接リンク" title="CIも役割ごとに分ける への直接リンク" translate="no">​</a></h2>
<p>品質検査と公開処理は、用途を分けたself-hosted runnerで実行します。通常の品質検査へproduction credentialを渡さず、公開処理だけが保護されたEnvironmentを使います。</p>
<p>一つのgreenだけを完成の証拠にはしません。formatter、型、test、静的build、公開境界監査、Workerのdry-runを通し、Previewで表示とrouteを確かめます。production publicationと、その後のread-backはさらに別の証拠です。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="現在のworkers境界">現在のWorkers境界<a href="https://gta.kogamai.com/blog/web-publication-pipeline#%E7%8F%BE%E5%9C%A8%E3%81%AEworkers%E5%A2%83%E7%95%8C" class="hash-link" aria-label="現在のWorkers境界 への直接リンク" title="現在のWorkers境界 への直接リンク" translate="no">​</a></h2>
<p>publicとadminは別々のCloudflare Workersとしてbuildします。公開面のWorker codeが先に扱うのは限定したAPI routeだけで、通常のページとassetは静的に配信します。現在のWeb公開経路にはD1を接続していません。永続dataや認証機能を、技術紹介のためだけに追加することもありません。</p>
<p>この分離により、公開ページの更新がそのまま管理面や将来のPortal機能を有効にすることはありません。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="fivem-resourceも境界から作る">FiveM resourceも境界から作る<a href="https://gta.kogamai.com/blog/web-publication-pipeline#fivem-resource%E3%82%82%E5%A2%83%E7%95%8C%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8B" class="hash-link" aria-label="FiveM resourceも境界から作る への直接リンク" title="FiveM resourceも境界から作る への直接リンク" translate="no">​</a></h2>
<p>FiveM側では、first-partyのTypeScript packageとvendor resourceを同じものとして扱いません。導入元とdigest、起動順をlockで固定し、vendorのpristine treeへ直接変更を重ねず、localな差分はoverlayやadapterへ分離します。</p>
<p>game session、money ledger、KOGAMAI Payのようなfirst-party resourceは、server-authoritativeなrule、contract test、E2E、bundle smoke testを実装と一緒に管理しています。Webと同じく、merge済みのsource、検証済みartifact、DEVでの観測を別々の証拠として扱います。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="observabilityもcodeで検査する">observabilityもcodeで検査する<a href="https://gta.kogamai.com/blog/web-publication-pipeline#observability%E3%82%82code%E3%81%A7%E6%A4%9C%E6%9F%BB%E3%81%99%E3%82%8B" class="hash-link" aria-label="observabilityもcodeで検査する への直接リンク" title="observabilityもcodeで検査する への直接リンク" translate="no">​</a></h2>
<p>共有Infrastructureでは、Zabbixをmetricsとtrigger、VictoriaLogsをlog、Grafanaを表示面として分担させています。監視対象の台帳、log envelope、dashboard、preflightとplan validator、guarded workflowを同じrepositoryで管理します。</p>
<p>観測画面が見えることだけを健全性の証拠にはしません。収集契約とprivacy境界をtestし、変更前のplanと変更後のread-backを分けることで、観測基盤自身の変更もrollback可能にします。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="rolloutとrollbackを同じ精度で考える">rolloutとrollbackを同じ精度で考える<a href="https://gta.kogamai.com/blog/web-publication-pipeline#rollout%E3%81%A8rollback%E3%82%92%E5%90%8C%E3%81%98%E7%B2%BE%E5%BA%A6%E3%81%A7%E8%80%83%E3%81%88%E3%82%8B" class="hash-link" aria-label="rolloutとrollbackを同じ精度で考える への直接リンク" title="rolloutとrollbackを同じ精度で考える への直接リンク" translate="no">​</a></h2>
<p>公開前にはWebと文書sourceのexact commitを固定し、変更対象と非対象を確認します。公開後はURL、source metadata、必要なAPI responseをread-backし、想定と違えば成功扱いにしません。</p>
<p>rollbackも「前に戻す」だけではなく、直前の既知commitへ戻す変更をreviewし、同じbuild、監査、承認、read-backを通します。credential、内部topology、詳しい運用logは公開記事へ持ち込みません。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="次の変更も小さく確かめる">次の変更も小さく確かめる<a href="https://gta.kogamai.com/blog/web-publication-pipeline#%E6%AC%A1%E3%81%AE%E5%A4%89%E6%9B%B4%E3%82%82%E5%B0%8F%E3%81%95%E3%81%8F%E7%A2%BA%E3%81%8B%E3%82%81%E3%82%8B" class="hash-link" aria-label="次の変更も小さく確かめる への直接リンク" title="次の変更も小さく確かめる への直接リンク" translate="no">​</a></h2>
<p>Webの安全性は、大きな仕組みを一度作って終わりではありません。公開物、identity、実行環境、runtime観測を別々に確かめることで、小さな更新を積み重ねても境界を保てるようにします。</p>
<p><a class="" href="https://gta.kogamai.com/blog/dev-verification">11日目・検証の仕組みへ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/kogamai-pay-guardrails">第二章・KOGAMAI Payへ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>Web</category>
            <category>開発プロセス</category>
        </item>
        <item>
            <title><![CDATA[街づくり11日目・第一章｜素材から、愛車の部品を完成させる]]></title>
            <link>https://gta.kogamai.com/blog/building-vehicle-parts</link>
            <guid>https://gta.kogamai.com/blog/building-vehicle-parts</guid>
            <pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[56素材、41加工recipe、19完成部品を、採集から買付・車両取付まで一本のDEV体験にしました。]]></description>
            <content:encoded><![CDATA[<p><img width="1600" height="900" alt="工房で素材を加工し、部品を比べるplayerたちの開発イメージ" aria-haspopup="dialog" aria-label="画像「工房で素材を加工し、部品を比べるplayerたちの開発イメージ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/parts-workshop-scene-a1a02c44a2023b8a3989bd71ec0b7418.webp" tabindex="0"></p>
<p><strong>2026年8月13日、街づくり11日目・第一章。</strong></p>
<p>午前0時40分ごろ、10日目に散らばっていた素材、銀行、市場、工房、車が一本につながりました。56素材から41の加工recipeを通り、最初の19車両部品を作るDEV E2Eです。</p>
<p><img width="1440" height="860" alt="素材から加工、完成部品、取引、取付へ進む流れ" aria-haspopup="dialog" aria-label="画像「素材から加工、完成部品、取引、取付へ進む流れ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNDQwIDg2MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsbGVkYnk9InRpdGxlIGRlc2MiPgogIDx0aXRsZSBpZD0idGl0bGUiPue0oOadkOOCkumbhuOCgeOBpui7iuS4oemDqOWTgeOCkuS9nOOCiuihl+OBuOW+queSsOOBleOBm+OCi+a1geOCjDwvdGl0bGU+CiAgPGRlc2MgaWQ9ImRlc2MiPuWFreOBpOOBruaOoembhua0u+WLleOBi+OCiTU257Sg5p2Q44CBNDHkuK3plpPntKDmnZDjgIExOeWujOaIkOmDqOWTgeOCkue1jOOBpuOAgeiHquWIhuOBp+S9v+OBhuOAgeWjsuOCi+OAgeS+nemgvOOBp+WPluOCiuS7mOOBkeOCi+a1geOCjOOBqOOAgemcgOimgeOBjOasoeOBruaOoembhuOBuOaIu+OCi+W+queSsDwvZGVzYz4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iYmciIHgxPSIwIiB5MT0iMCIgeDI9IjEiIHkyPSIxIj48c3RvcCBzdG9wLWNvbG9yPSIjMTExODI3Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDkwZDEzIi8+PC9saW5lYXJHcmFkaWVudD4KICAgIDxtYXJrZXIgaWQ9ImFycm93IiBtYXJrZXJXaWR0aD0iMTIiIG1hcmtlckhlaWdodD0iMTIiIHJlZlg9IjEwIiByZWZZPSI2IiBvcmllbnQ9ImF1dG8iPjxwYXRoIGQ9Ik0wIDBMMTIgNiAwIDEyWiIgZmlsbD0iIzdmYzZkZCIvPjwvbWFya2VyPgogICAgPHN0eWxlPi5qcHtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLCJOb3RvIFNhbnMgSlAiLHNhbnMtc2VyaWZ9LnRpdGxle2ZvbnQtc2l6ZTozNHB4O2ZvbnQtd2VpZ2h0Ojc1MDtmaWxsOiNmN2Y0ZWV9LnN1Yntmb250LXNpemU6MTdweDtmaWxsOiM5Y2E4YmF9LnBoYXNle2ZvbnQtc2l6ZToyMnB4O2ZvbnQtd2VpZ2h0OjgwMDtmaWxsOiNmN2Y0ZWV9LmNvdW50e2ZvbnQtc2l6ZTozOHB4O2ZvbnQtd2VpZ2h0Ojg1MH0uYm9keXtmb250LXNpemU6MTZweDtmaWxsOiNiZGM2ZDR9LnNtYWxse2ZvbnQtc2l6ZToxNHB4O2ZpbGw6IzhlOWJhZX0uY2hpcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo3MDA7ZmlsbDojZGZlOGVmfTwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IHdpZHRoPSIxNDQwIiBoZWlnaHQ9Ijg2MCIgZmlsbD0idXJsKCNiZykiLz4KICA8dGV4dCB4PSI3MCIgeT0iNzIiIGNsYXNzPSJqcCB0aXRsZSI+5ou+44Gj44Gf44KC44Gu44GM44CB6Kqw44GL44Gu5oSb6LuK44G45bGK44GP44G+44GnPC90ZXh0PgogIDx0ZXh0IHg9IjcwIiB5PSIxMDYiIGNsYXNzPSJqcCBzdWIiPuaPm+mHkeOBl+OBpue1guOCj+OCieOBmuOAgeaOoembhiDihpIg5Yqg5belIOKGkiDoo73kvZwg4oaSIOWPluW8leODu+WPluS7mOOCkuS4gOOBpOOBruW+queSsOOBuOOBpOOBquOBkDwvdGV4dD4KICA8ZyBjbGFzcz0ianAiPgogICAgPGc+CiAgICAgIDxyZWN0IHg9IjYwIiB5PSIxNjAiIHdpZHRoPSIzMTAiIGhlaWdodD0iNDkwIiByeD0iMjIiIGZpbGw9IiMxNzIxMmQiIHN0cm9rZT0iIzdmYzZkZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICAgIDx0ZXh0IHg9IjkwIiB5PSIyMDciIGNsYXNzPSJwaGFzZSI+MeOAgOWFreOBpOOBrua0u+WLlTwvdGV4dD4KICAgICAgPGcgZmlsbD0iIzFiMmEzNiI+PHJlY3QgeD0iOTAiIHk9IjI0MCIgd2lkdGg9IjExNSIgaGVpZ2h0PSI1NCIgcng9IjEyIi8+PHJlY3QgeD0iMjI1IiB5PSIyNDAiIHdpZHRoPSIxMTUiIGhlaWdodD0iNTQiIHJ4PSIxMiIvPjxyZWN0IHg9IjkwIiB5PSIzMTQiIHdpZHRoPSIxMTUiIGhlaWdodD0iNTQiIHJ4PSIxMiIvPjxyZWN0IHg9IjIyNSIgeT0iMzE0IiB3aWR0aD0iMTE1IiBoZWlnaHQ9IjU0IiByeD0iMTIiLz48cmVjdCB4PSI5MCIgeT0iMzg4IiB3aWR0aD0iMTE1IiBoZWlnaHQ9IjU0IiByeD0iMTIiLz48cmVjdCB4PSIyMjUiIHk9IjM4OCIgd2lkdGg9IjExNSIgaGVpZ2h0PSI1NCIgcng9IjEyIi8+PC9nPgogICAgICA8ZyBjbGFzcz0iY2hpcCI+PHRleHQgeD0iMTI1IiB5PSIyNzQiPuaOoeaOmDwvdGV4dD48dGV4dCB4PSIyNDciIHk9IjI3NCI+44Oq44K144Kk44Kv44OrPC90ZXh0Pjx0ZXh0IHg9IjExMiIgeT0iMzQ4Ij7jgrTjg5/nrrHmvIHjgoo8L3RleHQ+PHRleHQgeD0iMjY1IiB5PSIzNDgiPui+sualrTwvdGV4dD48dGV4dCB4PSIxMzAiIHk9IjQyMiI+6Yej44KKPC90ZXh0Pjx0ZXh0IHg9IjI2NSIgeT0iNDIyIj7ni6nnjJ88L3RleHQ+PC9nPgogICAgICA8dGV4dCB4PSI5MCIgeT0iNDkyIiBjbGFzcz0iYm9keSI+5LiA5Lq644Gn5aeL44KB44KJ44KM44KLPC90ZXh0Pjx0ZXh0IHg9IjkwIiB5PSI1MjIiIGNsYXNzPSJib2R5Ij7loLTmiYDjgajkvZzmpa3mhJ/jgYznlbDjgarjgos8L3RleHQ+PHRleHQgeD0iOTAiIHk9IjU1MiIgY2xhc3M9ImJvZHkiPuePvueJqeOCkuasoeOBruW3peeoi+OBuOa4oeOBmTwvdGV4dD4KICAgICAgPHRleHQgeD0iOTAiIHk9IjYwOCIgY2xhc3M9InNtYWxsIj5jbGllbnTjga9pdGVt5ZCN44O75pWw6YeP44KS5rG644KB44Gq44GEPC90ZXh0PgogICAgPC9nPgogICAgPHBhdGggZD0iTTM3MCA0MDVINDUwIiBzdHJva2U9IiM3ZmM2ZGQiIHN0cm9rZS13aWR0aD0iNCIgbWFya2VyLWVuZD0idXJsKCNhcnJvdykiLz4KICAgIDxnPgogICAgICA8cmVjdCB4PSI0NTAiIHk9IjIyMCIgd2lkdGg9IjIzMCIgaGVpZ2h0PSIzNzAiIHJ4PSIyMiIgZmlsbD0iIzEzMjMxZiIgc3Ryb2tlPSIjNzhkYmE5IiBzdHJva2Utd2lkdGg9IjIiLz4KICAgICAgPHRleHQgeD0iNDgwIiB5PSIyNjciIGNsYXNzPSJwaGFzZSI+MuOAgOe0oOadkDwvdGV4dD48dGV4dCB4PSI0ODAiIHk9IjM0NCIgY2xhc3M9ImNvdW50IiBmaWxsPSIjNzhkYmE5Ij41NjwvdGV4dD48dGV4dCB4PSI0ODAiIHk9IjM3OCIgY2xhc3M9ImJvZHkiPueorumhnuOBrnJhd+e0oOadkDwvdGV4dD4KICAgICAgPHRleHQgeD0iNDgwIiB5PSI0NDAiIGNsYXNzPSJib2R5Ij7ph5HlsZ7jg7vmqLnohILjg7vnuYrntq08L3RleHQ+PHRleHQgeD0iNDgwIiB5PSI0NzAiIGNsYXNzPSJib2R5Ij7msrnohILjg7vlhYXloavmnZDjgarjgak8L3RleHQ+PHRleHQgeD0iNDgwIiB5PSI1MzIiIGNsYXNzPSJzbWFsbCI+5rqA5p2v44Gq44KJ6YOo5YiG5LuY5LiO44Gb44Ga5L+d55WZPC90ZXh0PgogICAgPC9nPgogICAgPHBhdGggZD0iTTY4MCA0MDVINzYwIiBzdHJva2U9IiM3OGRiYTkiIHN0cm9rZS13aWR0aD0iNCIgbWFya2VyLWVuZD0idXJsKCNhcnJvdykiLz4KICAgIDxnPgogICAgICA8cmVjdCB4PSI3NjAiIHk9IjIyMCIgd2lkdGg9IjIzMCIgaGVpZ2h0PSIzNzAiIHJ4PSIyMiIgZmlsbD0iIzI5MjAxNyIgc3Ryb2tlPSIjZjBhODQ4IiBzdHJva2Utd2lkdGg9IjIiLz4KICAgICAgPHRleHQgeD0iNzkwIiB5PSIyNjciIGNsYXNzPSJwaGFzZSI+M+OAgOS4remWk+WKoOW3pTwvdGV4dD48dGV4dCB4PSI3OTAiIHk9IjM0NCIgY2xhc3M9ImNvdW50IiBmaWxsPSIjZjBhODQ4Ij40MTwvdGV4dD48dGV4dCB4PSI3OTAiIHk9IjM3OCIgY2xhc3M9ImJvZHkiPueorumhnuOBruWKoOW3pee0oOadkDwvdGV4dD4KICAgICAgPHRleHQgeD0iNzkwIiB5PSI0NDAiIGNsYXNzPSJib2R5Ij7plovlp4vlj6/og708L3RleHQ+PHRleHQgeD0iNzkwIiB5PSI0NzAiIGNsYXNzPSJib2R5Ij7ntKDmnZDlvoXjgaEgLyDoo73kvZzkuK08L3RleHQ+PHRleHQgeD0iNzkwIiB5PSI1MDAiIGNsYXNzPSJib2R5Ij7lj5flj5blj6/og73jgpLljLrliKU8L3RleHQ+PHRleHQgeD0iNzkwIiB5PSI1NTIiIGNsYXNzPSJzbWFsbCI+5L6d5a2Y6aCG44Gr5qyh44Gu5bel56iL44KS6KGo56S6PC90ZXh0PgogICAgPC9nPgogICAgPHBhdGggZD0iTTk5MCA0MDVIMTA3MCIgc3Ryb2tlPSIjZjBhODQ4IiBzdHJva2Utd2lkdGg9IjQiIG1hcmtlci1lbmQ9InVybCgjYXJyb3cpIi8+CiAgICA8Zz4KICAgICAgPHJlY3QgeD0iMTA3MCIgeT0iMTYwIiB3aWR0aD0iMzEwIiBoZWlnaHQ9IjQ5MCIgcng9IjIyIiBmaWxsPSIjMjUxODE3IiBzdHJva2U9IiNlZjdiNjIiIHN0cm9rZS13aWR0aD0iMiIvPgogICAgICA8dGV4dCB4PSIxMTAwIiB5PSIyMDciIGNsYXNzPSJwaGFzZSI+NOOAgOWujOaIkOmDqOWTgTwvdGV4dD48dGV4dCB4PSIxMTAwIiB5PSIyODIiIGNsYXNzPSJjb3VudCIgZmlsbD0iI2VmN2I2MiI+MTk8L3RleHQ+PHRleHQgeD0iMTEwMCIgeT0iMzE2IiBjbGFzcz0iYm9keSI+56iu6aGe44GL44KJREVW5qSc6Ki844KS6ZaL5aeLPC90ZXh0PgogICAgICA8cmVjdCB4PSIxMTAwIiB5PSIzNTUiIHdpZHRoPSIyNTAiIGhlaWdodD0iNTQiIHJ4PSIxMiIgZmlsbD0iIzMxMWYxZCIvPjx0ZXh0IHg9IjExMjUiIHk9IjM4OSIgY2xhc3M9ImNoaXAiPuiHquWIhuOBrui7iuOBuOWPluOCiuS7mOOBkeOCizwvdGV4dD4KICAgICAgPHJlY3QgeD0iMTEwMCIgeT0iNDI5IiB3aWR0aD0iMjUwIiBoZWlnaHQ9IjU0IiByeD0iMTIiIGZpbGw9IiMzMTFmMWQiLz48dGV4dCB4PSIxMTI1IiB5PSI0NjMiIGNsYXNzPSJjaGlwIj7luILloLTjg7vnm7TmjqXlj5blvJXjgaflo7Ljgos8L3RleHQ+CiAgICAgIDxyZWN0IHg9IjExMDAiIHk9IjUwMyIgd2lkdGg9IjI1MCIgaGVpZ2h0PSI1NCIgcng9IjEyIiBmaWxsPSIjMzExZjFkIi8+PHRleHQgeD0iMTEyNSIgeT0iNTM3IiBjbGFzcz0iY2hpcCI+5L6d6aC844KS5Y+X44GR44Gm5L2c5qWt44GZ44KLPC90ZXh0PgogICAgICA8dGV4dCB4PSIxMTAwIiB5PSI2MDgiIGNsYXNzPSJzbWFsbCI+6KaP5qC85aSWIC8g5qiZ5rqWIC8g6auY5ZOB6LOqPC90ZXh0PgogICAgPC9nPgogICAgPHBhdGggZD0iTTEyMjUgNjUwVjczMkgyMTVWNjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiM3ZmM2ZGQiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWRhc2hhcnJheT0iOCA4IiBtYXJrZXItZW5kPSJ1cmwoI2Fycm93KSIvPgogICAgPHJlY3QgeD0iNDEwIiB5PSI3MDQiIHdpZHRoPSI2MjAiIGhlaWdodD0iODYiIHJ4PSIxNiIgZmlsbD0iIzE1MWMyNSIgc3Ryb2tlPSIjMzQ0MTUzIi8+CiAgICA8dGV4dCB4PSI0NjIiIHk9Ijc0MCIgY2xhc3M9ImJvZHkiPuWjsuiyt+ODu+WPluS7mOODu+a2iOiAl+OBjOasoeOBrumcgOimgeOCkuS9nOOCiuOAgeOBvuOBn+e0oOadkOOCkumbhuOCgeOCi+eQhueUseOBq+OBquOCizwvdGV4dD4KICAgIDx0ZXh0IHg9IjUzOCIgeT0iNzcwIiBjbGFzcz0ic21hbGwiPumAmuiyqOOBoOOBkeOBp+OBquOBj+OAgWl0ZW3jgahwbGF5ZXLplpPjga7kvp3poLzjgpLlvqrnkrDjgZXjgZvjgos8L3RleHQ+CiAgPC9nPgo8L3N2Zz4K" tabindex="0"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="この日に生まれたもの">この日に生まれたもの<a href="https://gta.kogamai.com/blog/building-vehicle-parts#%E3%81%93%E3%81%AE%E6%97%A5%E3%81%AB%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE" class="hash-link" aria-label="この日に生まれたもの への直接リンク" title="この日に生まれたもの への直接リンク" translate="no">​</a></h2>
<p>低ダストbrake padなら、必要なraw素材から9工程だけを依存順に表示します。素材待ち、製作中、受取可能が一画面で分かり、毎回41recipeを探し直しません。</p>
<p>完成品は規格外、標準、高品質の三段階です。自分で使う、市場へ売る、DEV買付へ渡す、所有者の同意を得てBenny'sで取り付けるという出口があります。</p>
<p><img width="1600" height="900" alt="所有者と作業者が公開ベイで部品を取り付ける開発イメージ" aria-haspopup="dialog" aria-label="画像「所有者と作業者が公開ベイで部品を取り付ける開発イメージ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/vehicle-install-scene-c7ca2a7699dc8713a960f2d809de5f7e.webp" tabindex="0"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プレイヤーから見える景色">プレイヤーから見える景色<a href="https://gta.kogamai.com/blog/building-vehicle-parts#%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%8B%E3%82%89%E8%A6%8B%E3%81%88%E3%82%8B%E6%99%AF%E8%89%B2" class="hash-link" aria-label="プレイヤーから見える景色 への直接リンク" title="プレイヤーから見える景色 への直接リンク" translate="no">​</a></h2>
<p>昨日拾った金属が、今日の部品になり、誰かの車へ付く。自分で一台を育てる人、品質を狙う人、取り付けを引き受ける人へ役割が広がります。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="つくり手向けメモ">つくり手向けメモ<a href="https://gta.kogamai.com/blog/building-vehicle-parts#%E3%81%A4%E3%81%8F%E3%82%8A%E6%89%8B%E5%90%91%E3%81%91%E3%83%A1%E3%83%A2" class="hash-link" aria-label="つくり手向けメモ への直接リンク" title="つくり手向けメモ への直接リンク" translate="no">​</a></h2>
<p>inventory消費、旧部品返却、車両状態保存は一つのtransactionとして扱います。serverが所有、同意、距離、車種、categoryを再検証し、失敗・取消・非対応では何も変えません。</p>
<blockquote>
<p><strong>現在地:</strong> 自動E2Eは成功。DEVではSultan系と危険12部品だけgateを開き、通常playerの実車比較と完全再起動後の保持を確認待ちです。</p>
</blockquote>
<p><a class="" href="https://gta.kogamai.com/blog/first-arrival-to-first-car">10日目・第七章へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/player-experience-polish">11日目・第二章へ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>車両</category>
        </item>
        <item>
            <title><![CDATA[街づくり11日目・第二章｜小さな引っかかりを、一つずつ消す]]></title>
            <link>https://gta.kogamai.com/blog/player-experience-polish</link>
            <guid>https://gta.kogamai.com/blog/player-experience-polish</guid>
            <pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[シャトル、鍵、身分証、chat、Phone、キャラクター画面、loadingを実際の操作に合わせて磨きました。]]></description>
            <content:encoded><![CDATA[<p><img width="1600" height="900" alt="複数のテスターが通常playerとして街を確かめる開発イメージ" aria-haspopup="dialog" aria-label="画像「複数のテスターが通常playerとして街を確かめる開発イメージ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/dev-playtest-scene-52230a03e8badf2a64c6130dc9ac65e2.webp" tabindex="0"></p>
<p><strong>2026年8月13日、街づくり11日目・第二章。</strong></p>
<p>機能をつないだ翌朝、初めての人の手で街を歩き直しました。そこで見つかったのは、大きな設計ミスより、遊び始めを止める小さな引っかかりでした。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="この日に直したもの">この日に直したもの<a href="https://gta.kogamai.com/blog/player-experience-polish#%E3%81%93%E3%81%AE%E6%97%A5%E3%81%AB%E7%9B%B4%E3%81%97%E3%81%9F%E3%82%82%E3%81%AE" class="hash-link" aria-label="この日に直したもの への直接リンク" title="この日に直したもの への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">無料シャトルへ乗れず、初回来訪が止まる</li>
<li class="">vehicle keyの契約が一致しない</li>
<li class="">身分証を確実に閉じられない</li>
<li class="">chatの配布artifactが揺れる</li>
<li class="">pause menuへ不要な現金が残る</li>
<li class="">Phone Servicesの長文が重なる</li>
<li class="">character作成の構図とHUDが邪魔をする</li>
</ul>
<p>さらに、接続中なのか停止したのか分かるJCT専用loading screenを追加しました。12秒進捗がなければ待機中と区別し、character画面へ移る境界で確実に閉じます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プレイヤーから見える景色">プレイヤーから見える景色<a href="https://gta.kogamai.com/blog/player-experience-polish#%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%8B%E3%82%89%E8%A6%8B%E3%81%88%E3%82%8B%E6%99%AF%E8%89%B2" class="hash-link" aria-label="プレイヤーから見える景色 への直接リンク" title="プレイヤーから見える景色 への直接リンク" translate="no">​</a></h2>
<p>一つひとつは小さな修正です。しかし初心者には、閉じない画面も、乗れない車も、重なった文章も「この街では遊べない」という一つの壁になります。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="つくり手向けメモ">つくり手向けメモ<a href="https://gta.kogamai.com/blog/player-experience-polish#%E3%81%A4%E3%81%8F%E3%82%8A%E6%89%8B%E5%90%91%E3%81%91%E3%83%A1%E3%83%A2" class="hash-link" aria-label="つくり手向けメモ への直接リンク" title="つくり手向けメモ への直接リンク" translate="no">​</a></h2>
<p>UX issueは「見た目」だけで閉じず、同じrelease、操作、期待結果を残します。vendor画面の修正もcore直編集ではなくchecksum-bound overlayやprebuilt artifactの固定で行い、更新時の差分を追えるようにします。</p>
<blockquote>
<p><strong>現在地:</strong> 修正はmerge済みですが、16:9・21:9、keyboard・gamepad、clean connectを含む人間の再確認が必要です。</p>
</blockquote>
<p><a class="" href="https://gta.kogamai.com/blog/building-vehicle-parts">11日目・第一章へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/dev-verification">11日目・第三章へ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>UX</category>
        </item>
        <item>
            <title><![CDATA[街づくり11日目・第三章｜つくった街を、みんなで確かめる]]></title>
            <link>https://gta.kogamai.com/blog/dev-verification</link>
            <guid>https://gta.kogamai.com/blog/dev-verification</guid>
            <pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[exact release、自動検査、安全停止、共有DEV、人間のプレイ確認を分けて街を検証します。]]></description>
            <content:encoded><![CDATA[<p><img width="1672" height="941" alt="品質ゲートと人間の確認を通って街へ届く変更" aria-haspopup="dialog" aria-label="画像「品質ゲートと人間の確認を通って街へ届く変更」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/ai-native-development-7b6ab24c36ddca283ba4bf5590fb2a14.png" tabindex="0"></p>
<p><strong>2026年8月13日、街づくり11日目・第三章。</strong></p>
<p>11日間で世界、道、住人、車、銀行、市場、Phone、仕事が生まれました。最後に作ったのは、皆で同じDEVを安全に使い、本当に一日を遊べたか確かめる仕組みです。</p>
<p><img width="1440" height="820" alt="固定releaseから自動検査、反映、read-back、人間確認へ進む五段階" aria-haspopup="dialog" aria-label="画像「固定releaseから自動検査、反映、read-back、人間確認へ進む五段階」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNDQwIDgyMCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsbGVkYnk9InRpdGxlIGRlc2MiPgogIDx0aXRsZSBpZD0idGl0bGUiPkZpdmVN44Gu5aSJ5pu044KS44OX44Os44Kk56K66KqN5riI44G/44Gr44GZ44KL44G+44Gn44Gu5LqU44Gk44GuZ2F0ZTwvdGl0bGU+CiAgPGRlc2MgaWQ9ImRlc2MiPuWbuuWumnJlbGVhc2XjgIHlk4Hos6rjgrLjg7zjg4jjgIHlronlhahwbGFu44Go5Y+N5pig44CB56i85YON54q25oWL44GucmVhZC1iYWNr44CB5Lq66ZaT44Gu44Ky44O844Og5YaF6Kmm6aiT44KS6aCG44Gr6KGM44GE44CB44Gp44GT44GL44Gn5aSx5pWX44GX44Gf44KJ6Ki85oug44KS5q6L44GX44Gm5YGc5q2i44GZ44KLPC9kZXNjPgogIDxkZWZzPgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJiZyIgeDE9IjAiIHkxPSIwIiB4Mj0iMSIgeTI9IjEiPjxzdG9wIHN0b3AtY29sb3I9IiMxMTE4MjciLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwOTBkMTMiLz48L2xpbmVhckdyYWRpZW50PgogICAgPG1hcmtlciBpZD0iYXJyb3ciIG1hcmtlcldpZHRoPSIxMiIgbWFya2VySGVpZ2h0PSIxMiIgcmVmWD0iMTAiIHJlZlk9IjYiIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMEwxMiA2IDAgMTJaIiBmaWxsPSIjN2ZjNmRkIi8+PC9tYXJrZXI+CiAgICA8bWFya2VyIGlkPSJzdG9wQXJyb3ciIG1hcmtlcldpZHRoPSIxMiIgbWFya2VySGVpZ2h0PSIxMiIgcmVmWD0iMTAiIHJlZlk9IjYiIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMEwxMiA2IDAgMTJaIiBmaWxsPSIjZWY3YjYyIi8+PC9tYXJrZXI+CiAgICA8c3R5bGU+Lmpwe2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsIk5vdG8gU2FucyBKUCIsc2Fucy1zZXJpZn0udGl0bGV7Zm9udC1zaXplOjM0cHg7Zm9udC13ZWlnaHQ6NzUwO2ZpbGw6I2Y3ZjRlZX0uc3Vie2ZvbnQtc2l6ZToxN3B4O2ZpbGw6IzljYThiYX0ubnVte2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0Ojg1MDtmaWxsOiMxMDE1MWR9LmhlYWR7Zm9udC1zaXplOjE5cHg7Zm9udC13ZWlnaHQ6NzUwO2ZpbGw6I2Y3ZjRlZX0uYm9keXtmb250LXNpemU6MTVweDtmaWxsOiNiZGM2ZDR9LnNtYWxse2ZvbnQtc2l6ZToxNHB4O2ZpbGw6IzhlOWJhZX0uc3RvcHtmb250LXNpemU6MThweDtmb250LXdlaWdodDo3NTA7ZmlsbDojZmZiM2E1fS5wYXNze2ZvbnQtc2l6ZToxOHB4O2ZvbnQtd2VpZ2h0Ojc1MDtmaWxsOiNhZWYyY2V9PC9zdHlsZT4KICA8L2RlZnM+CiAgPHJlY3Qgd2lkdGg9IjE0NDAiIGhlaWdodD0iODIwIiBmaWxsPSJ1cmwoI2JnKSIvPgogIDx0ZXh0IHg9IjcwIiB5PSI3MiIgY2xhc3M9ImpwIHRpdGxlIj7jgIzotbfli5XjgZfjgZ/jgI3jgajjgIzpgYrjgbnjgZ/jgI3jga7plpPjgavjgIHkupTjgaTjga5nYXRl44KS572u44GPPC90ZXh0PgogIDx0ZXh0IHg9IjcwIiB5PSIxMDYiIGNsYXNzPSJqcCBzdWIiPuapn+aisOOBjOeiuuiqjeOBp+OBjeOCi+OBk+OBqOOBqOOAgeS6uuOBjOWun+mam+OBq+S9k+mok+OBl+OBpuWIneOCgeOBpuWIhuOBi+OCi+OBk+OBqOOCkuWIhumbouOBmeOCizwvdGV4dD4KICA8ZyBjbGFzcz0ianAiPgogICAgPHBhdGggZD0iTTE3MCAzMzBIMTI3MCIgc3Ryb2tlPSIjMzQ0MTUzIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgogICAgPHBhdGggZD0iTTI2NiAzMzBIMzQwTTQ4NiAzMzBINTYwTTcwNiAzMzBINzgwTTkyNiAzMzBIMTAwMCIgc3Ryb2tlPSIjN2ZjNmRkIiBzdHJva2Utd2lkdGg9IjQiIG1hcmtlci1lbmQ9InVybCgjYXJyb3cpIi8+CiAgICA8Zz48cmVjdCB4PSI3MCIgeT0iMjAwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjI2MCIgcng9IjIwIiBmaWxsPSIjMTcyMTJkIiBzdHJva2U9IiM3ZmM2ZGQiIHN0cm9rZS13aWR0aD0iMiIvPjxjaXJjbGUgY3g9IjEwOCIgY3k9IjIzOCIgcj0iMTgiIGZpbGw9IiM3ZmM2ZGQiLz48dGV4dCB4PSIxMDMiIHk9IjI0NCIgY2xhc3M9Im51bSI+MTwvdGV4dD48dGV4dCB4PSIxMzUiIHk9IjI0NCIgY2xhc3M9ImhlYWQiPuWbuuWumnJlbGVhc2U8L3RleHQ+PHRleHQgeD0iOTYiIHk9IjI5MiIgY2xhc3M9ImJvZHkiPnNlcnZlciBjb21taXQ8L3RleHQ+PHRleHQgeD0iOTYiIHk9IjMyMiIgY2xhc3M9ImJvZHkiPnJlc291cmNlcyBjb21taXQ8L3RleHQ+PHRleHQgeD0iOTYiIHk9IjM1MiIgY2xhc3M9ImJvZHkiPmFydGlmYWN044O7ZGlnZXN0PC90ZXh0Pjx0ZXh0IHg9Ijk2IiB5PSI0MTQiIGNsYXNzPSJzbWFsbCI+5ZCM44GY5YWl5Yqb44KS5YaN54++44GZ44KLPC90ZXh0PjwvZz4KICAgIDxnPjxyZWN0IHg9IjI5MCIgeT0iMjAwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjI2MCIgcng9IjIwIiBmaWxsPSIjMTMyMzFmIiBzdHJva2U9IiM3OGRiYTkiIHN0cm9rZS13aWR0aD0iMiIvPjxjaXJjbGUgY3g9IjMyOCIgY3k9IjIzOCIgcj0iMTgiIGZpbGw9IiM3OGRiYTkiLz48dGV4dCB4PSIzMjMiIHk9IjI0NCIgY2xhc3M9Im51bSI+MjwvdGV4dD48dGV4dCB4PSIzNTUiIHk9IjI0NCIgY2xhc3M9ImhlYWQiPuWTgeizquOCsuODvOODiDwvdGV4dD48dGV4dCB4PSIzMTYiIHk9IjI5MiIgY2xhc3M9ImJvZHkiPuWei+ODu+mdmeeahOaknOafuzwvdGV4dD48dGV4dCB4PSIzMTYiIHk9IjMyMiIgY2xhc3M9ImJvZHkiPuWlkee0hOODu21pZ3JhdGlvbjwvdGV4dD48dGV4dCB4PSIzMTYiIHk9IjM1MiIgY2xhc3M9ImJvZHkiPue1hOeri+OBpmRpZ2VzdDwvdGV4dD48dGV4dCB4PSIzMTYiIHk9IjQxNCIgY2xhc3M9InNtYWxsIj4x5Lu244Gn44KC5aSx5pWX44Gq44KJ5YGc5q2iPC90ZXh0PjwvZz4KICAgIDxnPjxyZWN0IHg9IjUxMCIgeT0iMjAwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjI2MCIgcng9IjIwIiBmaWxsPSIjMjkyMDE3IiBzdHJva2U9IiNmMGE4NDgiIHN0cm9rZS13aWR0aD0iMiIvPjxjaXJjbGUgY3g9IjU0OCIgY3k9IjIzOCIgcj0iMTgiIGZpbGw9IiNmMGE4NDgiLz48dGV4dCB4PSI1NDMiIHk9IjI0NCIgY2xhc3M9Im51bSI+MzwvdGV4dD48dGV4dCB4PSI1NzUiIHk9IjI0NCIgY2xhc3M9ImhlYWQiPlBsYW7jg7vlj43mmKA8L3RleHQ+PHRleHQgeD0iNTM2IiB5PSIyOTIiIGNsYXNzPSJib2R5Ij7mhI/lm7PjgZfjgarjgYTlpInmm7QwPC90ZXh0Pjx0ZXh0IHg9IjUzNiIgeT0iMzIyIiBjbGFzcz0iYm9keSI+5om/6KqN44GV44KM44Gf57WM6LevPC90ZXh0Pjx0ZXh0IHg9IjUzNiIgeT0iMzUyIiBjbGFzcz0iYm9keSI+55Ww5bi45pmCZmFpbCBjbG9zZWQ8L3RleHQ+PHRleHQgeD0iNTM2IiB5PSI0MTQiIGNsYXNzPSJzbWFsbCI+ZmFsbGJhY2vjgpLph43jga3jgarjgYQ8L3RleHQ+PC9nPgogICAgPGc+PHJlY3QgeD0iNzMwIiB5PSIyMDAiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjYwIiByeD0iMjAiIGZpbGw9IiMxNzIxMmQiIHN0cm9rZT0iIzdmYzZkZCIgc3Ryb2tlLXdpZHRoPSIyIi8+PGNpcmNsZSBjeD0iNzY4IiBjeT0iMjM4IiByPSIxOCIgZmlsbD0iIzdmYzZkZCIvPjx0ZXh0IHg9Ijc2MyIgeT0iMjQ0IiBjbGFzcz0ibnVtIj40PC90ZXh0Pjx0ZXh0IHg9Ijc5NSIgeT0iMjQ0IiBjbGFzcz0iaGVhZCI+UmVhZC1iYWNrPC90ZXh0Pjx0ZXh0IHg9Ijc1NiIgeT0iMjkyIiBjbGFzcz0iYm9keSI+5a6f6Zqb44GucmVsZWFzZTwvdGV4dD48dGV4dCB4PSI3NTYiIHk9IjMyMiIgY2xhc3M9ImJvZHkiPnJlc291cmNl44O7ZW5kcG9pbnQ8L3RleHQ+PHRleHQgeD0iNzU2IiB5PSIzNTIiIGNsYXNzPSJib2R5Ij5jb25zb2xl44O7cHJvY2VzczwvdGV4dD48dGV4dCB4PSI3NTYiIHk9IjQxNCIgY2xhc3M9InNtYWxsIj7phY3nva7jgZfjgZ/jgaTjgoLjgorjgavjgZfjgarjgYQ8L3RleHQ+PC9nPgogICAgPGc+PHJlY3QgeD0iOTUwIiB5PSIyMDAiIHdpZHRoPSI0MjAiIGhlaWdodD0iMjYwIiByeD0iMjAiIGZpbGw9IiMyNTE4MTciIHN0cm9rZT0iI2VmN2I2MiIgc3Ryb2tlLXdpZHRoPSIyIi8+PGNpcmNsZSBjeD0iOTg4IiBjeT0iMjM4IiByPSIxOCIgZmlsbD0iI2VmN2I2MiIvPjx0ZXh0IHg9Ijk4MyIgeT0iMjQ0IiBjbGFzcz0ibnVtIj41PC90ZXh0Pjx0ZXh0IHg9IjEwMTUiIHk9IjI0NCIgY2xhc3M9ImhlYWQiPuS6uumWk+OBruOCsuODvOODoOWGheippumokzwvdGV4dD48dGV4dCB4PSI5NzYiIHk9IjI5MiIgY2xhc3M9ImJvZHkiPumAmuW4uHBsYXllcuOBqOOBl+OBpueVquWPt+S7mOOBjeaJi+mghuOCkuaTjeS9nDwvdGV4dD48dGV4dCB4PSI5NzYiIHk9IjMyMiIgY2xhc3M9ImJvZHkiPuikh+aVsGNsaWVudOODu+WGjeaOpee2muODu+WujOWFqOWGjei1t+WLlTwvdGV4dD48dGV4dCB4PSI5NzYiIHk9IjM1MiIgY2xhc3M9ImJvZHkiPuWIhuOBi+OCiuOChOOBmeOBleODu+alveOBl+OBleODu+eKtuaFi+S/neaMgTwvdGV4dD48dGV4dCB4PSI5NzYiIHk9IjQxNCIgY2xhc3M9InNtYWxsIj5QQVNTIC8gRkFJTCAvIE5PVCBSVU7jgpLjgZ3jga7jgb7jgb7oqJjpjLI8L3RleHQ+PC9nPgogICAgPHBhdGggZD0iTTE3MCA0NjBWNTc0SDEwNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2VmN2I2MiIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2UtZGFzaGFycmF5PSI3IDciIG1hcmtlci1lbmQ9InVybCgjc3RvcEFycm93KSIvPgogICAgPHBhdGggZD0iTTM5MCA0NjBWNTc0TTYxMCA0NjBWNTc0TTgzMCA0NjBWNTc0TTExNjAgNDYwVjU3NCIgc3Ryb2tlPSIjZWY3YjYyIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1kYXNoYXJyYXk9IjcgNyIvPgogICAgPHJlY3QgeD0iMTAyMCIgeT0iNTM2IiB3aWR0aD0iMzUwIiBoZWlnaHQ9Ijg2IiByeD0iMTYiIGZpbGw9IiMzMDFiMWEiIHN0cm9rZT0iI2VmN2I2MiIvPgogICAgPHRleHQgeD0iMTA1MCIgeT0iNTcwIiBjbGFzcz0ic3RvcCI+44Gp44GT44GL44Gn5aSx5pWXIOKGkiDoqLzmi6DjgpLmrovjgZfjgablgZzmraI8L3RleHQ+PHRleHQgeD0iMTA1MCIgeT0iNjAwIiBjbGFzcz0iYm9keSI+5qSc5p+744KS57ep44KB44Ga44CB5ZCM44GY5p2h5Lu244Gn5L+u5q2j5b6M44Gr5YaN6Kmm6aiTPC90ZXh0PgogICAgPHJlY3QgeD0iNzAiIHk9IjY3OCIgd2lkdGg9IjEzMDAiIGhlaWdodD0iNzYiIHJ4PSIxNiIgZmlsbD0iIzEzMjMxZiIgc3Ryb2tlPSIjNzhkYmE5Ii8+CiAgICA8dGV4dCB4PSIxMTAiIHk9IjcxMSIgY2xhc3M9InBhc3MiPuS6lOOBpOOBmeOBueOBpuOBjOaPg+OBo+OBpuOAgeWIneOCgeOBpuOAjOOBk+OBrnJlbGVhc2Xjgafjg5fjg6zjgqTnorroqo3muIjjgb/jgI08L3RleHQ+CiAgICA8dGV4dCB4PSIxMTAiIHk9IjczOSIgY2xhc3M9ImJvZHkiPndvcmtmbG935oiQ5Yqf44KEcmVzb3VyY2Ugc3RhcnRlZOOCkuOAgeS6uumWk+OBruOCsuODvOODoOWGhVBBU1Pjgbjnva7jgY3mj5vjgYjjgarjgYQ8L3RleHQ+CiAgPC9nPgo8L3N2Zz4K" tabindex="0"></p>
<p><img width="1600" height="900" alt="三人のテスターが別clientで街を歩く開発イメージ" aria-haspopup="dialog" aria-label="画像「三人のテスターが別clientで街を歩く開発イメージ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/dev-playtest-scene-52230a03e8badf2a64c6130dc9ac65e2.webp" tabindex="0"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="この日に生まれたもの">この日に生まれたもの<a href="https://gta.kogamai.com/blog/dev-verification#%E3%81%93%E3%81%AE%E6%97%A5%E3%81%AB%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE" class="hash-link" aria-label="この日に生まれたもの への直接リンク" title="この日に生まれたもの への直接リンク" translate="no">​</a></h2>
<p>共有DEV controlはplayer数を確認し、利用中なら日次resetを止めます。空なら新規接続を一時的に閉じ、許可されたresource restartだけを受けます。任意console commandは公開しません。</p>
<p>deploy側も、固定したserver/resources SHA、migration、起動resource、console、endpointをread-backします。異常の兆候があれば、一部が動いていても成功扱いにしません。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プレイヤーとして確かめること">プレイヤーとして確かめること<a href="https://gta.kogamai.com/blog/dev-verification#%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%A8%E3%81%97%E3%81%A6%E7%A2%BA%E3%81%8B%E3%82%81%E3%82%8B%E3%81%93%E3%81%A8" class="hash-link" aria-label="プレイヤーとして確かめること への直接リンク" title="プレイヤーとして確かめること への直接リンク" translate="no">​</a></h2>
<p>testerはSSHやDBを触らず、通常playerとして次を通します。</p>
<ol>
<li class="">キャラクターを作り、空港から清掃を終える</li>
<li class="">Phoneでmessage、通話、送金、mediaを試す</li>
<li class="">素材を集め、加工し、部品を作る</li>
<li class="">車を買い、格納し、同意した相手と部品を取り付ける</li>
<li class="">再接続・完全再起動後も、お金、持ち物、Phone、車が一致する</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="つくり手向けメモ">つくり手向けメモ<a href="https://gta.kogamai.com/blog/dev-verification#%E3%81%A4%E3%81%8F%E3%82%8A%E6%89%8B%E5%90%91%E3%81%91%E3%83%A1%E3%83%A2" class="hash-link" aria-label="つくり手向けメモ への直接リンク" title="つくり手向けメモ への直接リンク" translate="no">​</a></h2>
<p>workflowの緑、resourceの <code>started</code>、health 200、人間の <code>PASS</code> は別の証拠です。結果は <code>PASS / FAIL / NOT RUN</code> のまま残し、未実施を自動成功へ変えません。</p>
<blockquote>
<p><strong>現在地:</strong> 自動gateと共有DEV経路は進みましたが、全項目の人間最終確認は未完了です。重要項目が未合格なら公開開始へ進みません。</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="12日目はplayerとつくる">12日目は、playerとつくる<a href="https://gta.kogamai.com/blog/dev-verification#12%E6%97%A5%E7%9B%AE%E3%81%AFplayer%E3%81%A8%E3%81%A4%E3%81%8F%E3%82%8B" class="hash-link" aria-label="12日目は、playerとつくる への直接リンク" title="12日目は、playerとつくる への直接リンク" translate="no">​</a></h2>
<p>ここから先は、実際に遊ぶ人の「分かりにくい」「もう一度やりたい」「こんな仕事がほしい」が次の設計図になります。天地創造は終わりではなく、住人へ街を渡す始まりです。</p>
<p><a class="" href="https://gta.kogamai.com/blog/player-experience-polish">11日目・第二章へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/fivem-development-update">1日目から読む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>開発プロセス</category>
        </item>
        <item>
            <title><![CDATA[街づくり10日目・第一章｜ガソリンと電気を街へ届ける]]></title>
            <link>https://gta.kogamai.com/blog/fuel-and-charging</link>
            <guid>https://gta.kogamai.com/blog/fuel-and-charging</guid>
            <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[車種と燃料をserverで検証し、給油、充電、国庫決済を安全につなぐ候補を作りました。]]></description>
            <content:encoded><![CDATA[<p><img width="1672" height="941" alt="給油、EV充電、供給車両が並ぶ開発イメージ" aria-haspopup="dialog" aria-label="画像「給油、EV充電、供給車両が並ぶ開発イメージ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/fuel-charging-scene-73d7847a00a94c2d57d325bcefbad21e.png" tabindex="0"></p>
<p><strong>2026年8月12日、街づくり10日目・第一章。</strong></p>
<p>日付が変わると、街の車に燃料と電気が届きました。普通車、diesel、EV、航空機を同じ値段や同じ操作で扱わず、serverが車両を確認して精算する仕組みです。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="この日に生まれたもの">この日に生まれたもの<a href="https://gta.kogamai.com/blog/fuel-and-charging#%E3%81%93%E3%81%AE%E6%97%A5%E3%81%AB%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE" class="hash-link" aria-label="この日に生まれたもの への直接リンク" title="この日に生まれたもの への直接リンク" translate="no">​</a></h2>
<p>Regular、Plus、Diesel、Premium、EV通常・急速充電の候補価格を用意しました。ヘリや飛行機は容量と係数を分けます。購入は個人口座から国庫へ一度だけ記録し、失敗時の返金も同じ取引を二重に戻しません。</p>
<p>将来のgas station経営や配送jobへつなげるvendor候補も固定しましたが、自動没収や店舗購入などは閉じています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プレイヤーから見える景色">プレイヤーから見える景色<a href="https://gta.kogamai.com/blog/fuel-and-charging#%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%8B%E3%82%89%E8%A6%8B%E3%81%88%E3%82%8B%E6%99%AF%E8%89%B2" class="hash-link" aria-label="プレイヤーから見える景色 への直接リンク" title="プレイヤーから見える景色 への直接リンク" translate="no">​</a></h2>
<p>長距離へ出る前に給油する、EVの充電場所を選ぶ、供給を担う仕事が生まれる。移動に計画と街の仕事が加わります。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="つくり手向けメモ">つくり手向けメモ<a href="https://gta.kogamai.com/blog/fuel-and-charging#%E3%81%A4%E3%81%8F%E3%82%8A%E6%89%8B%E5%90%91%E3%81%91%E3%83%A1%E3%83%A2" class="hash-link" aria-label="つくり手向けメモ への直接リンク" title="つくり手向けメモ への直接リンク" translate="no">​</a></h2>
<p>client価格をそのまま精算せず、version付きserver quote、net ID、plate、距離、車両区分を再検証します。価格は公開前の初期候補で、実際の燃費と収入を測ってから決めます。</p>
<blockquote>
<p><strong>現在地:</strong> LC Fuel候補と精算authorityの実装記録です。gas station運営はfail closedで、人間の実機比較も未完了です。</p>
</blockquote>
<p><a class="" href="https://gta.kogamai.com/blog/phone-connects-the-city">9日目・第三章へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/first-ten-minutes">10日目・第二章へ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>燃料</category>
        </item>
        <item>
            <title><![CDATA[街づくり10日目・第二章｜0円から始まる最初の仕事をつくる]]></title>
            <link>https://gta.kogamai.com/blog/first-ten-minutes</link>
            <guid>https://gta.kogamai.com/blog/first-ten-minutes</guid>
            <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[日本円の街で、所持金0円・無職・車なしでも始められる10分の清掃依頼を作りました。]]></description>
            <content:encoded><![CDATA[<p><img width="1600" height="900" alt="何も持たず街へ来たplayerの開発イメージ" aria-haspopup="dialog" aria-label="画像「何も持たず街へ来たplayerの開発イメージ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/first-arrival-scene-95aa0325d08cc5eee34f5e7b6447a458.webp" tabindex="0"></p>
<p><strong>2026年8月12日、街づくり10日目・第二章。</strong></p>
<p>新しい住人の所持金を0円にしました。そして、車も職業も知り合いもいらない、徒歩10分の清掃依頼を用意しました。</p>
<p><img width="1440" height="760" alt="キャラクター作成から最初の清掃へ進む流れ" aria-haspopup="dialog" aria-label="画像「キャラクター作成から最初の清掃へ進む流れ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNDQwIDc2MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsbGVkYnk9InRpdGxlIGRlc2MiPgogIDx0aXRsZSBpZD0idGl0bGUiPuWIneOCgeOBpuihl+OBuOadpeOBpuOBi+OCieacgOWIneOBruS7leS6i+OCkue1guOBiOOCi+OBvuOBpzwvdGl0bGU+CiAgPGRlc2MgaWQ9ImRlc2MiPuOCreODo+ODqeOCr+OCv+ODvOS9nOaIkOOAgeepuua4r+WIsOedgOOAgeeEoeaWmeOCt+ODo+ODiOODq+OAgeihl+OBruS4reW/g+OAgea4heaOg+S+nemgvOOBrjXmrrXpmo7jgajjgIHpgJTkuK3liIfmlq3mmYLjgavkv53lrZjlnLDngrnjgYvjgonlho3plovjgZnjgovmtYHjgow8L2Rlc2M+CiAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9ImJnIiB4MT0iMCIgeTE9IjAiIHgyPSIxIiB5Mj0iMSI+PHN0b3Agc3RvcC1jb2xvcj0iIzExMTgyNyIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzA5MGQxMyIvPjwvbGluZWFyR3JhZGllbnQ+CiAgICA8bWFya2VyIGlkPSJhcnJvdyIgbWFya2VyV2lkdGg9IjEyIiBtYXJrZXJIZWlnaHQ9IjEyIiByZWZYPSIxMCIgcmVmWT0iNiIgb3JpZW50PSJhdXRvIj48cGF0aCBkPSJNMCAwTDEyIDYgMCAxMloiIGZpbGw9IiM3ZmM2ZGQiLz48L21hcmtlcj4KICAgIDxzdHlsZT4KICAgICAgLmpwe2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsIk5vdG8gU2FucyBKUCIsc2Fucy1zZXJpZn0udGl0bGV7Zm9udC1zaXplOjM0cHg7Zm9udC13ZWlnaHQ6NzUwO2ZpbGw6I2Y3ZjRlZX0uc3Vie2ZvbnQtc2l6ZToxN3B4O2ZpbGw6IzljYThiYX0uc3RlcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo4MDA7ZmlsbDojMTAxNTFkfS5oZWFke2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0Ojc1MDtmaWxsOiNmN2Y0ZWV9LmJvZHl7Zm9udC1zaXplOjE1cHg7ZmlsbDojYmRjNmQ0fS5zbWFsbHtmb250LXNpemU6MTRweDtmaWxsOiM4ZTliYWV9LnNhZmV7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NzAwO2ZpbGw6I2FlZjJjZX0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IHdpZHRoPSIxNDQwIiBoZWlnaHQ9Ijc2MCIgZmlsbD0idXJsKCNiZykiLz4KICA8dGV4dCB4PSI3MCIgeT0iNzIiIGNsYXNzPSJqcCB0aXRsZSI+5Yid44KB44Gm44GuMTDliIbjgpLjgIHkuIDmnKzjga7lsI7nt5rjgavjgZnjgos8L3RleHQ+CiAgPHRleHQgeD0iNzAiIHk9IjEwNiIgY2xhc3M9ImpwIHN1YiI+5omA5oyB6YeRMOWGhuODu+eEoeiBt+ODu+aJgOaciei7iuOBquOBl+OBp+OCguOAgeS4gOS6uuOBp+ihl+OBuOWFpeOCiuacgOWIneOBruS7leS6i+OCkue1guOBiOOCieOCjOOCizwvdGV4dD4KICA8ZyBjbGFzcz0ianAiPgogICAgPHBhdGggZD0iTTE5MCAzMTZIMTI1MCIgc3Ryb2tlPSIjMzQ0MTUzIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgogICAgPHBhdGggZD0iTTI0NSAzMTZINDIwTTUxNSAzMTZINjkwTTc4NSAzMTZIOTYwTTEwNTUgMzE2SDEyMzAiIHN0cm9rZT0iIzdmYzZkZCIgc3Ryb2tlLXdpZHRoPSI0IiBtYXJrZXItZW5kPSJ1cmwoI2Fycm93KSIvPgogICAgPGc+CiAgICAgIDxjaXJjbGUgY3g9IjE3MCIgY3k9IjMxNiIgcj0iNjIiIGZpbGw9IiMxNzJjMjUiIHN0cm9rZT0iIzc4ZGJhOSIgc3Ryb2tlLXdpZHRoPSIzIi8+PGNpcmNsZSBjeD0iMTcwIiBjeT0iMzE2IiByPSIyMSIgZmlsbD0iIzc4ZGJhOSIvPjx0ZXh0IHg9IjE2NSIgeT0iMzIyIiBjbGFzcz0ic3RlcCI+MTwvdGV4dD4KICAgICAgPHRleHQgeD0iOTIiIHk9IjQxNCIgY2xhc3M9ImhlYWQiPuOCreODo+ODqeOCr+OCv+ODvOS9nOaIkDwvdGV4dD48dGV4dCB4PSI5NiIgeT0iNDQ0IiBjbGFzcz0iYm9keSI+6KaL44Gf55uu44Go5Z+65pys5oOF5aCxPC90ZXh0Pjx0ZXh0IHg9Ijk3IiB5PSI0NzAiIGNsYXNzPSJzbWFsbCI+5a6M5LqG5Zyw54K544KSc2VydmVy44G45L+d5a2YPC90ZXh0PgogICAgPC9nPgogICAgPGc+CiAgICAgIDxjaXJjbGUgY3g9IjQ0MCIgY3k9IjMxNiIgcj0iNjIiIGZpbGw9IiMxNzIxMmQiIHN0cm9rZT0iIzdmYzZkZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PGNpcmNsZSBjeD0iNDQwIiBjeT0iMzE2IiByPSIyMSIgZmlsbD0iIzdmYzZkZCIvPjx0ZXh0IHg9IjQzNSIgeT0iMzIyIiBjbGFzcz0ic3RlcCI+MjwvdGV4dD4KICAgICAgPHRleHQgeD0iMzgyIiB5PSI0MTQiIGNsYXNzPSJoZWFkIj7nqbrmuK/jgbjliLDnnYA8L3RleHQ+PHRleHQgeD0iMzY4IiB5PSI0NDQiIGNsYXNzPSJib2R5Ij7mvJTlh7rjgpLopovjgosgLyBza2lw44GZ44KLPC90ZXh0Pjx0ZXh0IHg9IjM3MSIgeT0iNDcwIiBjbGFzcz0ic21hbGwiPuOBqeOBoeOCieOCguaTjeS9nOWPr+iDveOBuOaIu+OCizwvdGV4dD4KICAgIDwvZz4KICAgIDxnPgogICAgICA8Y2lyY2xlIGN4PSI3MTAiIGN5PSIzMTYiIHI9IjYyIiBmaWxsPSIjMjkyMDE3IiBzdHJva2U9IiNmMGE4NDgiIHN0cm9rZS13aWR0aD0iMyIvPjxjaXJjbGUgY3g9IjcxMCIgY3k9IjMxNiIgcj0iMjEiIGZpbGw9IiNmMGE4NDgiLz48dGV4dCB4PSI3MDUiIHk9IjMyMiIgY2xhc3M9InN0ZXAiPjM8L3RleHQ+CiAgICAgIDx0ZXh0IHg9IjY1MCIgeT0iNDE0IiBjbGFzcz0iaGVhZCI+54Sh5paZ44K344Oj44OI44OrPC90ZXh0Pjx0ZXh0IHg9IjY0NCIgeT0iNDQ0IiBjbGFzcz0iYm9keSI+5qGI5YaF44KS6KaL44Gm5LmX6LuKPC90ZXh0Pjx0ZXh0IHg9IjY0MSIgeT0iNDcwIiBjbGFzcz0ic21hbGwiPui/juOBiOOChOiHquWIhuOBrui7iuOBr+S4jeimgTwvdGV4dD4KICAgIDwvZz4KICAgIDxnPgogICAgICA8Y2lyY2xlIGN4PSI5ODAiIGN5PSIzMTYiIHI9IjYyIiBmaWxsPSIjMTcyMTJkIiBzdHJva2U9IiM3ZmM2ZGQiIHN0cm9rZS13aWR0aD0iMyIvPjxjaXJjbGUgY3g9Ijk4MCIgY3k9IjMxNiIgcj0iMjEiIGZpbGw9IiM3ZmM2ZGQiLz48dGV4dCB4PSI5NzUiIHk9IjMyMiIgY2xhc3M9InN0ZXAiPjQ8L3RleHQ+CiAgICAgIDx0ZXh0IHg9IjkxNCIgeT0iNDE0IiBjbGFzcz0iaGVhZCI+6KGX44Gu5Lit5b+D44G4PC90ZXh0Pjx0ZXh0IHg9Ijg5OSIgeT0iNDQ0IiBjbGFzcz0iYm9keSI+R3VpZGVib29r44GoR1BT44KS6KGo56S6PC90ZXh0Pjx0ZXh0IHg9IjkwMCIgeT0iNDcwIiBjbGFzcz0ic21hbGwiPuahiOWGheOBr+OBguOBqOOBi+OCieWGjeihqOekuuWPr+iDvTwvdGV4dD4KICAgIDwvZz4KICAgIDxnPgogICAgICA8Y2lyY2xlIGN4PSIxMjUwIiBjeT0iMzE2IiByPSI2MiIgZmlsbD0iIzE3MmMyNSIgc3Ryb2tlPSIjNzhkYmE5IiBzdHJva2Utd2lkdGg9IjMiLz48Y2lyY2xlIGN4PSIxMjUwIiBjeT0iMzE2IiByPSIyMSIgZmlsbD0iIzc4ZGJhOSIvPjx0ZXh0IHg9IjEyNDUiIHk9IjMyMiIgY2xhc3M9InN0ZXAiPjU8L3RleHQ+CiAgICAgIDx0ZXh0IHg9IjExODciIHk9IjQxNCIgY2xhc3M9ImhlYWQiPuacgOWIneOBrua4heaOgzwvdGV4dD48dGV4dCB4PSIxMTcwIiB5PSI0NDQiIGNsYXNzPSJib2R5Ij7lvpLmranjgafkuIDjgaTjga7ku5XkuovjgpLlrozkuoY8L3RleHQ+PHRleHQgeD0iMTE2OSIgeT0iNDcwIiBjbGFzcz0ic21hbGwiPuaIkOWKn+aZguOBoOOBkeWgsemFrOOCkuS4gOW6puS7mOS4jjwvdGV4dD4KICAgIDwvZz4KICAgIDxyZWN0IHg9IjE2MCIgeT0iNTYwIiB3aWR0aD0iMTEyMCIgaGVpZ2h0PSIxMTYiIHJ4PSIxOCIgZmlsbD0iIzEzMjMxZiIgc3Ryb2tlPSIjNzhkYmE5IiBzdHJva2Utb3BhY2l0eT0iLjciLz4KICAgIDx0ZXh0IHg9IjIwMCIgeT0iNjAzIiBjbGFzcz0ic2FmZSI+6YCU5Lit44Gn5o6l57aa44GM5YiH44KM44Gm44KC44CB5pyA5b6M44Gr5L+d5a2Y44GX44GfcGhhc2XjgYvjgonlho3plos8L3RleHQ+CiAgICA8dGV4dCB4PSIyMDAiIHk9IjYzOCIgY2xhc3M9ImJvZHkiPumHjeikh2V2ZW5044O75a6M5LqG5riI44G/44O76aCG5bqP6YGV5Y+N44Gvc2VydmVy44GM5ouS5ZCm44CA77yP44CA5a6M5LqG5b6M44Gv5Yid5Zue5ryU5Ye644Go54Sh5paZ44K344Oj44OI44Or44KS57mw44KK6L+U44GV44Gq44GEPC90ZXh0PgogICAgPHBhdGggZD0iTTcxMCA1NjBWNTA4QzcxMCA0OTAgNjg2IDQ5MCA2ODYgNTA4IiBmaWxsPSJub25lIiBzdHJva2U9IiM3OGRiYTkiIHN0cm9rZS13aWR0aD0iMyIgbWFya2VyLWVuZD0idXJsKCNhcnJvdykiLz4KICA8L2c+Cjwvc3ZnPgo=" tabindex="0"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="この日に生まれたもの">この日に生まれたもの<a href="https://gta.kogamai.com/blog/first-ten-minutes#%E3%81%93%E3%81%AE%E6%97%A5%E3%81%AB%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE" class="hash-link" aria-label="この日に生まれたもの への直接リンク" title="この日に生まれたもの への直接リンク" translate="no">​</a></h2>
<p>12のcheckpointを順番に回る清掃です。開始場所は <code>/seisou</code> とPhone Servicesから日本語で案内し、完了時だけ銀行へ報酬が入ります。</p>
<p>同じ日に通貨表示を円へ揃え、万・億・兆を読みやすく表示しました。hunger/thirstを最初の負担から外し、身分証、日本語chat、Phone案内も整えています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プレイヤーから見える景色">プレイヤーから見える景色<a href="https://gta.kogamai.com/blog/first-ten-minutes#%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%8B%E3%82%89%E8%A6%8B%E3%81%88%E3%82%8B%E6%99%AF%E8%89%B2" class="hash-link" aria-label="プレイヤーから見える景色 への直接リンク" title="プレイヤーから見える景色 への直接リンク" translate="no">​</a></h2>
<p>最初から大金や車を与えられるのではなく、自分で地図を読み、一つの仕事を終え、最初の収入を得ます。「この街で自分にもできた」という小さな成功です。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="つくり手向けメモ">つくり手向けメモ<a href="https://gta.kogamai.com/blog/first-ten-minutes#%E3%81%A4%E3%81%8F%E3%82%8A%E6%89%8B%E5%90%91%E3%81%91%E3%83%A1%E3%83%A2" class="hash-link" aria-label="つくり手向けメモ への直接リンク" title="つくり手向けメモ への直接リンク" translate="no">​</a></h2>
<p>serverがnonce、順序、距離、最短時間、同時実行、source ID再利用を検証します。取消、切断、連打では入金しません。初心者jobほど、簡単な見た目の裏側に厳密な一回性が必要です。</p>
<blockquote>
<p><strong>現在地:</strong> 自動検査済み。実clientでの表示、歩きやすさ、10分の体感は人間によるDEV再確認対象です。</p>
</blockquote>
<p><a class="" href="https://gta.kogamai.com/blog/fuel-and-charging">10日目・第一章へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/automatic-vehicle-pricing">10日目・第三章へ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>初心者導線</category>
        </item>
        <item>
            <title><![CDATA[街づくり10日目・第三章｜496台の値札を、証拠からつくる]]></title>
            <link>https://gta.kogamai.com/blog/automatic-vehicle-pricing</link>
            <guid>https://gta.kogamai.com/blog/automatic-vehicle-pricing</guid>
            <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[GTA標準車両923候補を評価し、条件を満たした496台だけへ再現可能な販売価格を作りました。]]></description>
            <content:encoded><![CDATA[<p><img width="1672" height="941" alt="販売店に車が並び始めるKOGAMAI JUNCTIONの開発イメージ" aria-haspopup="dialog" aria-label="画像「販売店に車が並び始めるKOGAMAI JUNCTIONの開発イメージ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/fivem-development-update-5af8c72505b0096d0865ff916e649f9f.png" tabindex="0"></p>
<p><strong>2026年8月12日、街づくり10日目・第三章。</strong></p>
<p>一台ずつ「このくらいかな」と値札を付けず、固定した車両データから価格を生成しました。候補923台のうち、証拠と安全条件を満たした496台が最初のcatalogへ進みました。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="この日に生まれたもの">この日に生まれたもの<a href="https://gta.kogamai.com/blog/automatic-vehicle-pricing#%E3%81%93%E3%81%AE%E6%97%A5%E3%81%AB%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE" class="hash-link" aria-label="この日に生まれたもの への直接リンク" title="この日に生まれたもの への直接リンク" translate="no">​</a></h2>
<p>元価格、lap性能、最高速、customizationを同じ比較集合で評価します。性能が欠ける場合も、許可classに限ってhandlingから補います。entry車の中央値は約3時間の活動で届く帯を目標にしました。</p>
<p>武装、飛行、水陸両用などの特殊能力が未分類、元価格なし、model重複、必要性能なしなら、手入力価格で救わずblockedにします。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プレイヤーから見える景色">プレイヤーから見える景色<a href="https://gta.kogamai.com/blog/automatic-vehicle-pricing#%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%8B%E3%82%89%E8%A6%8B%E3%81%88%E3%82%8B%E6%99%AF%E8%89%B2" class="hash-link" aria-label="プレイヤーから見える景色 への直接リンク" title="プレイヤーから見える景色 への直接リンク" translate="no">​</a></h2>
<p>安い足から趣味の一台まで、価格に大まかな理由があります。購入前に販売店、model、価格、channel、権限を照合し、勝手に書き換えた価格では買えません。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="つくり手向けメモ">つくり手向けメモ<a href="https://gta.kogamai.com/blog/automatic-vehicle-pricing#%E3%81%A4%E3%81%8F%E3%82%8A%E6%89%8B%E5%90%91%E3%81%91%E3%83%A1%E3%83%A2" class="hash-link" aria-label="つくり手向けメモ への直接リンク" title="つくり手向けメモ への直接リンク" translate="no">​</a></h2>
<p>evidence、pricing policy、生成catalogを別成果物にし、digestを残します。game build上で全modelのnative auditに成功したexact catalogだけをactivateするfail-closed方式です。</p>
<blockquote>
<p><strong>現在地:</strong> 496台は価格決定候補であり、販売開始済みではありません。native auditとstock read-backが完了するまで購入gateは閉じています。</p>
</blockquote>
<p><a class="" href="https://gta.kogamai.com/blog/first-ten-minutes">10日目・第二章へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/postal-map-and-trucks">10日目・第四章へ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>車両</category>
        </item>
        <item>
            <title><![CDATA[街づくり10日目・第四章｜住所のない街に、地図と大型車を置く]]></title>
            <link>https://gta.kogamai.com/blog/postal-map-and-trucks</link>
            <guid>https://gta.kogamai.com/blog/postal-map-and-trucks</guid>
            <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[郵便番号地図と二台のaddon truckを固定し、迷わず移動し運搬を試せる街へ進めました。]]></description>
            <content:encoded><![CDATA[<p><img width="1672" height="941" alt="空港、シャトル、道路地図、大型トラックがつながる開発イメージ" aria-haspopup="dialog" aria-label="画像「空港、シャトル、道路地図、大型トラックがつながる開発イメージ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/postal-truck-arrival-scene-64d31135e17db6f63d4eadf354088c9d.png" tabindex="0"></p>
<p><strong>2026年8月12日、街づくり10日目・第四章。</strong></p>
<p>「あの交差点の近く」だけでは、知らない街で会えません。道路へpostal codeの目印を加え、同じ頃に二台の大型truckを試験できる状態へ置きました。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="この日に生まれたもの">この日に生まれたもの<a href="https://gta.kogamai.com/blog/postal-map-and-trucks#%E3%81%93%E3%81%AE%E6%97%A5%E3%81%AB%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE" class="hash-link" aria-label="この日に生まれたもの への直接リンク" title="この日に生まれたもの への直接リンク" translate="no">​</a></h2>
<p>postal mapは固定commitと展開後digestを検証し、HUDとのradar zoom競合を一方へ寄せました。map、HUD、MLOのstream asset名が衝突しないこともassembly全体で検査します。</p>
<p>大型車は提供packから <code>aerocab</code> と <code>blacktop</code> だけをallowlistで組み立てました。欠損やbase-game衝突のあるmodelは入れず、まずadmin spawn、native audit、通常運転だけを許可します。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プレイヤーから見える景色">プレイヤーから見える景色<a href="https://gta.kogamai.com/blog/postal-map-and-trucks#%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%8B%E3%82%89%E8%A6%8B%E3%81%88%E3%82%8B%E6%99%AF%E8%89%B2" class="hash-link" aria-label="プレイヤーから見える景色 への直接リンク" title="プレイヤーから見える景色 への直接リンク" translate="no">​</a></h2>
<p>「postalの近くで会おう」と場所を共有でき、いつか大型車で素材や燃料を運ぶ仕事へつながります。広い街を、人と仕事の距離として理解するための道具です。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="つくり手向けメモ">つくり手向けメモ<a href="https://gta.kogamai.com/blog/postal-map-and-trucks#%E3%81%A4%E3%81%8F%E3%82%8A%E6%89%8B%E5%90%91%E3%81%91%E3%83%A1%E3%83%A2" class="hash-link" aria-label="つくり手向けメモ への直接リンク" title="つくり手向けメモ への直接リンク" translate="no">​</a></h2>
<p>map resourceは見た目だけでなく、別resourceのradar loopやstream basenameと競合します。購入assetもpack全体を入れず、実file allowlistとtree digestで必要なmodelだけ組み立てます。</p>
<blockquote>
<p><strong>現在地:</strong> postal mapとtruckはplayer test-readyです。truckの販売、所有、garage、物流jobはまだ閉じています。</p>
</blockquote>
<p><a class="" href="https://gta.kogamai.com/blog/automatic-vehicle-pricing">10日目・第三章へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/material-economy">10日目・第五章へ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>地図</category>
        </item>
        <item>
            <title><![CDATA[街づくり10日目・第五章｜山、路地、海に仕事を生む]]></title>
            <link>https://gta.kogamai.com/blog/material-economy</link>
            <guid>https://gta.kogamai.com/blog/material-economy</guid>
            <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[採掘、リサイクル、ゴミ箱、農業、釣り、狩猟を、実物素材が残る活動としてつなぎました。]]></description>
            <content:encoded><![CDATA[<p><img width="1600" height="900" alt="採掘、リサイクル、釣りを一つの世界で楽しむ開発イメージ" aria-haspopup="dialog" aria-label="画像「採掘、リサイクル、釣りを一つの世界で楽しむ開発イメージ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/material-activities-scene-2e5c4975015c89a206d1cc4ef3eb958f.webp" tabindex="0"></p>
<p><strong>2026年8月12日、街づくり10日目・第五章。</strong></p>
<p>山、路地、農地、海へ仕事が広がりました。採掘、リサイクル、ゴミ箱漁り、農業、釣り、狩猟の六つです。</p>
<p><img width="1440" height="860" alt="六つの活動から素材、加工、部品、取引へ続く循環" aria-haspopup="dialog" aria-label="画像「六つの活動から素材、加工、部品、取引へ続く循環」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNDQwIDg2MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsbGVkYnk9InRpdGxlIGRlc2MiPgogIDx0aXRsZSBpZD0idGl0bGUiPue0oOadkOOCkumbhuOCgeOBpui7iuS4oemDqOWTgeOCkuS9nOOCiuihl+OBuOW+queSsOOBleOBm+OCi+a1geOCjDwvdGl0bGU+CiAgPGRlc2MgaWQ9ImRlc2MiPuWFreOBpOOBruaOoembhua0u+WLleOBi+OCiTU257Sg5p2Q44CBNDHkuK3plpPntKDmnZDjgIExOeWujOaIkOmDqOWTgeOCkue1jOOBpuOAgeiHquWIhuOBp+S9v+OBhuOAgeWjsuOCi+OAgeS+nemgvOOBp+WPluOCiuS7mOOBkeOCi+a1geOCjOOBqOOAgemcgOimgeOBjOasoeOBruaOoembhuOBuOaIu+OCi+W+queSsDwvZGVzYz4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iYmciIHgxPSIwIiB5MT0iMCIgeDI9IjEiIHkyPSIxIj48c3RvcCBzdG9wLWNvbG9yPSIjMTExODI3Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDkwZDEzIi8+PC9saW5lYXJHcmFkaWVudD4KICAgIDxtYXJrZXIgaWQ9ImFycm93IiBtYXJrZXJXaWR0aD0iMTIiIG1hcmtlckhlaWdodD0iMTIiIHJlZlg9IjEwIiByZWZZPSI2IiBvcmllbnQ9ImF1dG8iPjxwYXRoIGQ9Ik0wIDBMMTIgNiAwIDEyWiIgZmlsbD0iIzdmYzZkZCIvPjwvbWFya2VyPgogICAgPHN0eWxlPi5qcHtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLCJOb3RvIFNhbnMgSlAiLHNhbnMtc2VyaWZ9LnRpdGxle2ZvbnQtc2l6ZTozNHB4O2ZvbnQtd2VpZ2h0Ojc1MDtmaWxsOiNmN2Y0ZWV9LnN1Yntmb250LXNpemU6MTdweDtmaWxsOiM5Y2E4YmF9LnBoYXNle2ZvbnQtc2l6ZToyMnB4O2ZvbnQtd2VpZ2h0OjgwMDtmaWxsOiNmN2Y0ZWV9LmNvdW50e2ZvbnQtc2l6ZTozOHB4O2ZvbnQtd2VpZ2h0Ojg1MH0uYm9keXtmb250LXNpemU6MTZweDtmaWxsOiNiZGM2ZDR9LnNtYWxse2ZvbnQtc2l6ZToxNHB4O2ZpbGw6IzhlOWJhZX0uY2hpcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo3MDA7ZmlsbDojZGZlOGVmfTwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IHdpZHRoPSIxNDQwIiBoZWlnaHQ9Ijg2MCIgZmlsbD0idXJsKCNiZykiLz4KICA8dGV4dCB4PSI3MCIgeT0iNzIiIGNsYXNzPSJqcCB0aXRsZSI+5ou+44Gj44Gf44KC44Gu44GM44CB6Kqw44GL44Gu5oSb6LuK44G45bGK44GP44G+44GnPC90ZXh0PgogIDx0ZXh0IHg9IjcwIiB5PSIxMDYiIGNsYXNzPSJqcCBzdWIiPuaPm+mHkeOBl+OBpue1guOCj+OCieOBmuOAgeaOoembhiDihpIg5Yqg5belIOKGkiDoo73kvZwg4oaSIOWPluW8leODu+WPluS7mOOCkuS4gOOBpOOBruW+queSsOOBuOOBpOOBquOBkDwvdGV4dD4KICA8ZyBjbGFzcz0ianAiPgogICAgPGc+CiAgICAgIDxyZWN0IHg9IjYwIiB5PSIxNjAiIHdpZHRoPSIzMTAiIGhlaWdodD0iNDkwIiByeD0iMjIiIGZpbGw9IiMxNzIxMmQiIHN0cm9rZT0iIzdmYzZkZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICAgIDx0ZXh0IHg9IjkwIiB5PSIyMDciIGNsYXNzPSJwaGFzZSI+MeOAgOWFreOBpOOBrua0u+WLlTwvdGV4dD4KICAgICAgPGcgZmlsbD0iIzFiMmEzNiI+PHJlY3QgeD0iOTAiIHk9IjI0MCIgd2lkdGg9IjExNSIgaGVpZ2h0PSI1NCIgcng9IjEyIi8+PHJlY3QgeD0iMjI1IiB5PSIyNDAiIHdpZHRoPSIxMTUiIGhlaWdodD0iNTQiIHJ4PSIxMiIvPjxyZWN0IHg9IjkwIiB5PSIzMTQiIHdpZHRoPSIxMTUiIGhlaWdodD0iNTQiIHJ4PSIxMiIvPjxyZWN0IHg9IjIyNSIgeT0iMzE0IiB3aWR0aD0iMTE1IiBoZWlnaHQ9IjU0IiByeD0iMTIiLz48cmVjdCB4PSI5MCIgeT0iMzg4IiB3aWR0aD0iMTE1IiBoZWlnaHQ9IjU0IiByeD0iMTIiLz48cmVjdCB4PSIyMjUiIHk9IjM4OCIgd2lkdGg9IjExNSIgaGVpZ2h0PSI1NCIgcng9IjEyIi8+PC9nPgogICAgICA8ZyBjbGFzcz0iY2hpcCI+PHRleHQgeD0iMTI1IiB5PSIyNzQiPuaOoeaOmDwvdGV4dD48dGV4dCB4PSIyNDciIHk9IjI3NCI+44Oq44K144Kk44Kv44OrPC90ZXh0Pjx0ZXh0IHg9IjExMiIgeT0iMzQ4Ij7jgrTjg5/nrrHmvIHjgoo8L3RleHQ+PHRleHQgeD0iMjY1IiB5PSIzNDgiPui+sualrTwvdGV4dD48dGV4dCB4PSIxMzAiIHk9IjQyMiI+6Yej44KKPC90ZXh0Pjx0ZXh0IHg9IjI2NSIgeT0iNDIyIj7ni6nnjJ88L3RleHQ+PC9nPgogICAgICA8dGV4dCB4PSI5MCIgeT0iNDkyIiBjbGFzcz0iYm9keSI+5LiA5Lq644Gn5aeL44KB44KJ44KM44KLPC90ZXh0Pjx0ZXh0IHg9IjkwIiB5PSI1MjIiIGNsYXNzPSJib2R5Ij7loLTmiYDjgajkvZzmpa3mhJ/jgYznlbDjgarjgos8L3RleHQ+PHRleHQgeD0iOTAiIHk9IjU1MiIgY2xhc3M9ImJvZHkiPuePvueJqeOCkuasoeOBruW3peeoi+OBuOa4oeOBmTwvdGV4dD4KICAgICAgPHRleHQgeD0iOTAiIHk9IjYwOCIgY2xhc3M9InNtYWxsIj5jbGllbnTjga9pdGVt5ZCN44O75pWw6YeP44KS5rG644KB44Gq44GEPC90ZXh0PgogICAgPC9nPgogICAgPHBhdGggZD0iTTM3MCA0MDVINDUwIiBzdHJva2U9IiM3ZmM2ZGQiIHN0cm9rZS13aWR0aD0iNCIgbWFya2VyLWVuZD0idXJsKCNhcnJvdykiLz4KICAgIDxnPgogICAgICA8cmVjdCB4PSI0NTAiIHk9IjIyMCIgd2lkdGg9IjIzMCIgaGVpZ2h0PSIzNzAiIHJ4PSIyMiIgZmlsbD0iIzEzMjMxZiIgc3Ryb2tlPSIjNzhkYmE5IiBzdHJva2Utd2lkdGg9IjIiLz4KICAgICAgPHRleHQgeD0iNDgwIiB5PSIyNjciIGNsYXNzPSJwaGFzZSI+MuOAgOe0oOadkDwvdGV4dD48dGV4dCB4PSI0ODAiIHk9IjM0NCIgY2xhc3M9ImNvdW50IiBmaWxsPSIjNzhkYmE5Ij41NjwvdGV4dD48dGV4dCB4PSI0ODAiIHk9IjM3OCIgY2xhc3M9ImJvZHkiPueorumhnuOBrnJhd+e0oOadkDwvdGV4dD4KICAgICAgPHRleHQgeD0iNDgwIiB5PSI0NDAiIGNsYXNzPSJib2R5Ij7ph5HlsZ7jg7vmqLnohILjg7vnuYrntq08L3RleHQ+PHRleHQgeD0iNDgwIiB5PSI0NzAiIGNsYXNzPSJib2R5Ij7msrnohILjg7vlhYXloavmnZDjgarjgak8L3RleHQ+PHRleHQgeD0iNDgwIiB5PSI1MzIiIGNsYXNzPSJzbWFsbCI+5rqA5p2v44Gq44KJ6YOo5YiG5LuY5LiO44Gb44Ga5L+d55WZPC90ZXh0PgogICAgPC9nPgogICAgPHBhdGggZD0iTTY4MCA0MDVINzYwIiBzdHJva2U9IiM3OGRiYTkiIHN0cm9rZS13aWR0aD0iNCIgbWFya2VyLWVuZD0idXJsKCNhcnJvdykiLz4KICAgIDxnPgogICAgICA8cmVjdCB4PSI3NjAiIHk9IjIyMCIgd2lkdGg9IjIzMCIgaGVpZ2h0PSIzNzAiIHJ4PSIyMiIgZmlsbD0iIzI5MjAxNyIgc3Ryb2tlPSIjZjBhODQ4IiBzdHJva2Utd2lkdGg9IjIiLz4KICAgICAgPHRleHQgeD0iNzkwIiB5PSIyNjciIGNsYXNzPSJwaGFzZSI+M+OAgOS4remWk+WKoOW3pTwvdGV4dD48dGV4dCB4PSI3OTAiIHk9IjM0NCIgY2xhc3M9ImNvdW50IiBmaWxsPSIjZjBhODQ4Ij40MTwvdGV4dD48dGV4dCB4PSI3OTAiIHk9IjM3OCIgY2xhc3M9ImJvZHkiPueorumhnuOBruWKoOW3pee0oOadkDwvdGV4dD4KICAgICAgPHRleHQgeD0iNzkwIiB5PSI0NDAiIGNsYXNzPSJib2R5Ij7plovlp4vlj6/og708L3RleHQ+PHRleHQgeD0iNzkwIiB5PSI0NzAiIGNsYXNzPSJib2R5Ij7ntKDmnZDlvoXjgaEgLyDoo73kvZzkuK08L3RleHQ+PHRleHQgeD0iNzkwIiB5PSI1MDAiIGNsYXNzPSJib2R5Ij7lj5flj5blj6/og73jgpLljLrliKU8L3RleHQ+PHRleHQgeD0iNzkwIiB5PSI1NTIiIGNsYXNzPSJzbWFsbCI+5L6d5a2Y6aCG44Gr5qyh44Gu5bel56iL44KS6KGo56S6PC90ZXh0PgogICAgPC9nPgogICAgPHBhdGggZD0iTTk5MCA0MDVIMTA3MCIgc3Ryb2tlPSIjZjBhODQ4IiBzdHJva2Utd2lkdGg9IjQiIG1hcmtlci1lbmQ9InVybCgjYXJyb3cpIi8+CiAgICA8Zz4KICAgICAgPHJlY3QgeD0iMTA3MCIgeT0iMTYwIiB3aWR0aD0iMzEwIiBoZWlnaHQ9IjQ5MCIgcng9IjIyIiBmaWxsPSIjMjUxODE3IiBzdHJva2U9IiNlZjdiNjIiIHN0cm9rZS13aWR0aD0iMiIvPgogICAgICA8dGV4dCB4PSIxMTAwIiB5PSIyMDciIGNsYXNzPSJwaGFzZSI+NOOAgOWujOaIkOmDqOWTgTwvdGV4dD48dGV4dCB4PSIxMTAwIiB5PSIyODIiIGNsYXNzPSJjb3VudCIgZmlsbD0iI2VmN2I2MiI+MTk8L3RleHQ+PHRleHQgeD0iMTEwMCIgeT0iMzE2IiBjbGFzcz0iYm9keSI+56iu6aGe44GL44KJREVW5qSc6Ki844KS6ZaL5aeLPC90ZXh0PgogICAgICA8cmVjdCB4PSIxMTAwIiB5PSIzNTUiIHdpZHRoPSIyNTAiIGhlaWdodD0iNTQiIHJ4PSIxMiIgZmlsbD0iIzMxMWYxZCIvPjx0ZXh0IHg9IjExMjUiIHk9IjM4OSIgY2xhc3M9ImNoaXAiPuiHquWIhuOBrui7iuOBuOWPluOCiuS7mOOBkeOCizwvdGV4dD4KICAgICAgPHJlY3QgeD0iMTEwMCIgeT0iNDI5IiB3aWR0aD0iMjUwIiBoZWlnaHQ9IjU0IiByeD0iMTIiIGZpbGw9IiMzMTFmMWQiLz48dGV4dCB4PSIxMTI1IiB5PSI0NjMiIGNsYXNzPSJjaGlwIj7luILloLTjg7vnm7TmjqXlj5blvJXjgaflo7Ljgos8L3RleHQ+CiAgICAgIDxyZWN0IHg9IjExMDAiIHk9IjUwMyIgd2lkdGg9IjI1MCIgaGVpZ2h0PSI1NCIgcng9IjEyIiBmaWxsPSIjMzExZjFkIi8+PHRleHQgeD0iMTEyNSIgeT0iNTM3IiBjbGFzcz0iY2hpcCI+5L6d6aC844KS5Y+X44GR44Gm5L2c5qWt44GZ44KLPC90ZXh0PgogICAgICA8dGV4dCB4PSIxMTAwIiB5PSI2MDgiIGNsYXNzPSJzbWFsbCI+6KaP5qC85aSWIC8g5qiZ5rqWIC8g6auY5ZOB6LOqPC90ZXh0PgogICAgPC9nPgogICAgPHBhdGggZD0iTTEyMjUgNjUwVjczMkgyMTVWNjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiM3ZmM2ZGQiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWRhc2hhcnJheT0iOCA4IiBtYXJrZXItZW5kPSJ1cmwoI2Fycm93KSIvPgogICAgPHJlY3QgeD0iNDEwIiB5PSI3MDQiIHdpZHRoPSI2MjAiIGhlaWdodD0iODYiIHJ4PSIxNiIgZmlsbD0iIzE1MWMyNSIgc3Ryb2tlPSIjMzQ0MTUzIi8+CiAgICA8dGV4dCB4PSI0NjIiIHk9Ijc0MCIgY2xhc3M9ImJvZHkiPuWjsuiyt+ODu+WPluS7mOODu+a2iOiAl+OBjOasoeOBrumcgOimgeOCkuS9nOOCiuOAgeOBvuOBn+e0oOadkOOCkumbhuOCgeOCi+eQhueUseOBq+OBquOCizwvdGV4dD4KICAgIDx0ZXh0IHg9IjUzOCIgeT0iNzcwIiBjbGFzcz0ic21hbGwiPumAmuiyqOOBoOOBkeOBp+OBquOBj+OAgWl0ZW3jgahwbGF5ZXLplpPjga7kvp3poLzjgpLlvqrnkrDjgZXjgZvjgos8L3RleHQ+CiAgPC9nPgo8L3N2Zz4K" tabindex="0"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="この日に生まれたもの">この日に生まれたもの<a href="https://gta.kogamai.com/blog/material-economy#%E3%81%93%E3%81%AE%E6%97%A5%E3%81%AB%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE" class="hash-link" aria-label="この日に生まれたもの への直接リンク" title="この日に生まれたもの への直接リンク" translate="no">​</a></h2>
<p>成果はNPCへ消える換金物ではなく、金属、樹脂、繊維などの実物素材です。市場へ出す、自分で加工する、必要な人へ渡すという次の選択が生まれます。</p>
<p>採掘とrecycleのvendor処理はそのまま信用せず、JCTのwrapperがidentity、座標、生存、対象、cooldown、週上限をserverで確認します。inventory満杯なら一部だけ渡さず、一cycle全体を戻します。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プレイヤーから見える景色">プレイヤーから見える景色<a href="https://gta.kogamai.com/blog/material-economy#%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%8B%E3%82%89%E8%A6%8B%E3%81%88%E3%82%8B%E6%99%AF%E8%89%B2" class="hash-link" aria-label="プレイヤーから見える景色 への直接リンク" title="プレイヤーから見える景色 への直接リンク" translate="no">​</a></h2>
<p>今日は釣り、明日は山、仲間に頼まれた金属だけを探す。効率だけで同じ作業へ縛られず、場所と目的から一日を選べます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="つくり手向けメモ">つくり手向けメモ<a href="https://gta.kogamai.com/blog/material-economy#%E3%81%A4%E3%81%8F%E3%82%8A%E6%89%8B%E5%90%91%E3%81%91%E3%83%A1%E3%83%A2" class="hash-link" aria-label="つくり手向けメモ への直接リンク" title="つくり手向けメモ への直接リンク" translate="no">​</a></h2>
<p>収益はactive time、移動、待ち、整理を分けて測ります。同じ時給でも、待ち時間に次を考えられるかで遊び心地は変わります。claimと課金は冪等に保存し、切断後も増殖させません。</p>
<blockquote>
<p><strong>現在地:</strong> 六活動のwrapperと自動検査は実装済み。死亡、距離離脱、二人同時操作、実map propはDEV実機確認待ちです。</p>
</blockquote>
<p><a class="" href="https://gta.kogamai.com/blog/postal-map-and-trucks">10日目・第四章へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/phone-memories">10日目・第六章へ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>ゲーム経済</category>
        </item>
        <item>
            <title><![CDATA[街づくり10日目・第六章｜Phoneに、街の思い出を残す]]></title>
            <link>https://gta.kogamai.com/blog/phone-memories</link>
            <guid>https://gta.kogamai.com/blog/phone-memories</guid>
            <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[写真、短い動画、VoiceMemoをKOGAMAI mediaへ安全に保存する経路をつなぎました。]]></description>
            <content:encoded><![CDATA[<p><img width="1600" height="900" alt="Phoneで集まり、愛車の写真を残すplayerたちの開発イメージ" aria-haspopup="dialog" aria-label="画像「Phoneで集まり、愛車の写真を残すplayerたちの開発イメージ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/phone-meetup-scene-f5a412370daad64a60624afe66fc740c.webp" tabindex="0"></p>
<p><strong>2026年8月12日、街づくり10日目・第六章。</strong></p>
<p>昨日つながったPhoneに、写真、短い動画、VoiceMemoが加わりました。連絡する道具から、街で過ごした時間を残す道具へ進んだ日です。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="この日に生まれたもの">この日に生まれたもの<a href="https://gta.kogamai.com/blog/phone-memories#%E3%81%93%E3%81%AE%E6%97%A5%E3%81%AB%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE" class="hash-link" aria-label="この日に生まれたもの への直接リンク" title="この日に生まれたもの への直接リンク" translate="no">​</a></h2>
<p>LB PhoneのuploadをKOGAMAI media APIへ接続しました。serverがQboxのcitizen IDとFiveM identityを解決し、短時間のupload ticketを取得します。</p>
<p>storage credentialやCloudflare Access tokenをclient/NUIへ渡しません。Camera、Photos、VoiceMemoだけを有効にし、外部音楽機能は入れていません。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プレイヤーから見える景色">プレイヤーから見える景色<a href="https://gta.kogamai.com/blog/phone-memories#%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%8B%E3%82%89%E8%A6%8B%E3%81%88%E3%82%8B%E6%99%AF%E8%89%B2" class="hash-link" aria-label="プレイヤーから見える景色 への直接リンク" title="プレイヤーから見える景色 への直接リンク" translate="no">​</a></h2>
<p>初めて買った車、工房で完成した部品、仲間と集まった夜。その場で撮ったものがPhoneへ戻り、次の会話のきっかけになります。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="つくり手向けメモ">つくり手向けメモ<a href="https://gta.kogamai.com/blog/phone-memories#%E3%81%A4%E3%81%8F%E3%82%8A%E6%89%8B%E5%90%91%E3%81%91%E3%83%A1%E3%83%A2" class="hash-link" aria-label="つくり手向けメモ への直接リンク" title="つくり手向けメモ への直接リンク" translate="no">​</a></h2>
<p>「upload成功」だけでは不十分です。別playerが未共有mediaを読めないこと、再接続で重複しないこと、ownerが混ざらないことを確認します。永続credentialをNUIへ置かず、server-side identityから一回限りのticketを発行します。</p>
<blockquote>
<p><strong>現在地:</strong> bridgeとE2Eは実装済み。複数clientでの所有分離と実際の撮影・再生は人間確認待ちです。</p>
</blockquote>
<p><a class="" href="https://gta.kogamai.com/blog/material-economy">10日目・第五章へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/first-arrival-to-first-car">10日目・第七章へ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>Phone</category>
        </item>
        <item>
            <title><![CDATA[街づくり10日目・第七章｜空港から、最初の一歩をつくる]]></title>
            <link>https://gta.kogamai.com/blog/first-arrival-to-first-car</link>
            <guid>https://gta.kogamai.com/blog/first-arrival-to-first-car</guid>
            <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[キャラクター作成、空港到着、無料シャトル、街の中心、清掃までを一本につなぎました。]]></description>
            <content:encoded><![CDATA[<p><img width="1672" height="941" alt="空港から無料シャトルで街へ向かう開発イメージ" aria-haspopup="dialog" aria-label="画像「空港から無料シャトルで街へ向かう開発イメージ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/postal-truck-arrival-scene-64d31135e17db6f63d4eadf354088c9d.png" tabindex="0"></p>
<p><strong>2026年8月12日、街づくり10日目・第七章。</strong></p>
<p>長い一日の最後に、初めて来たplayerが空港へ降り立ちました。外見を選び、到着演出を見て、無料シャトルで中心街へ向かい、最初の清掃へ進みます。</p>
<p><img width="1440" height="760" alt="キャラクター作成から空港、シャトル、清掃へ続く流れ" aria-haspopup="dialog" aria-label="画像「キャラクター作成から空港、シャトル、清掃へ続く流れ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNDQwIDc2MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsbGVkYnk9InRpdGxlIGRlc2MiPgogIDx0aXRsZSBpZD0idGl0bGUiPuWIneOCgeOBpuihl+OBuOadpeOBpuOBi+OCieacgOWIneOBruS7leS6i+OCkue1guOBiOOCi+OBvuOBpzwvdGl0bGU+CiAgPGRlc2MgaWQ9ImRlc2MiPuOCreODo+ODqeOCr+OCv+ODvOS9nOaIkOOAgeepuua4r+WIsOedgOOAgeeEoeaWmeOCt+ODo+ODiOODq+OAgeihl+OBruS4reW/g+OAgea4heaOg+S+nemgvOOBrjXmrrXpmo7jgajjgIHpgJTkuK3liIfmlq3mmYLjgavkv53lrZjlnLDngrnjgYvjgonlho3plovjgZnjgovmtYHjgow8L2Rlc2M+CiAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9ImJnIiB4MT0iMCIgeTE9IjAiIHgyPSIxIiB5Mj0iMSI+PHN0b3Agc3RvcC1jb2xvcj0iIzExMTgyNyIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzA5MGQxMyIvPjwvbGluZWFyR3JhZGllbnQ+CiAgICA8bWFya2VyIGlkPSJhcnJvdyIgbWFya2VyV2lkdGg9IjEyIiBtYXJrZXJIZWlnaHQ9IjEyIiByZWZYPSIxMCIgcmVmWT0iNiIgb3JpZW50PSJhdXRvIj48cGF0aCBkPSJNMCAwTDEyIDYgMCAxMloiIGZpbGw9IiM3ZmM2ZGQiLz48L21hcmtlcj4KICAgIDxzdHlsZT4KICAgICAgLmpwe2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsIk5vdG8gU2FucyBKUCIsc2Fucy1zZXJpZn0udGl0bGV7Zm9udC1zaXplOjM0cHg7Zm9udC13ZWlnaHQ6NzUwO2ZpbGw6I2Y3ZjRlZX0uc3Vie2ZvbnQtc2l6ZToxN3B4O2ZpbGw6IzljYThiYX0uc3RlcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo4MDA7ZmlsbDojMTAxNTFkfS5oZWFke2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0Ojc1MDtmaWxsOiNmN2Y0ZWV9LmJvZHl7Zm9udC1zaXplOjE1cHg7ZmlsbDojYmRjNmQ0fS5zbWFsbHtmb250LXNpemU6MTRweDtmaWxsOiM4ZTliYWV9LnNhZmV7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NzAwO2ZpbGw6I2FlZjJjZX0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IHdpZHRoPSIxNDQwIiBoZWlnaHQ9Ijc2MCIgZmlsbD0idXJsKCNiZykiLz4KICA8dGV4dCB4PSI3MCIgeT0iNzIiIGNsYXNzPSJqcCB0aXRsZSI+5Yid44KB44Gm44GuMTDliIbjgpLjgIHkuIDmnKzjga7lsI7nt5rjgavjgZnjgos8L3RleHQ+CiAgPHRleHQgeD0iNzAiIHk9IjEwNiIgY2xhc3M9ImpwIHN1YiI+5omA5oyB6YeRMOWGhuODu+eEoeiBt+ODu+aJgOaciei7iuOBquOBl+OBp+OCguOAgeS4gOS6uuOBp+ihl+OBuOWFpeOCiuacgOWIneOBruS7leS6i+OCkue1guOBiOOCieOCjOOCizwvdGV4dD4KICA8ZyBjbGFzcz0ianAiPgogICAgPHBhdGggZD0iTTE5MCAzMTZIMTI1MCIgc3Ryb2tlPSIjMzQ0MTUzIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgogICAgPHBhdGggZD0iTTI0NSAzMTZINDIwTTUxNSAzMTZINjkwTTc4NSAzMTZIOTYwTTEwNTUgMzE2SDEyMzAiIHN0cm9rZT0iIzdmYzZkZCIgc3Ryb2tlLXdpZHRoPSI0IiBtYXJrZXItZW5kPSJ1cmwoI2Fycm93KSIvPgogICAgPGc+CiAgICAgIDxjaXJjbGUgY3g9IjE3MCIgY3k9IjMxNiIgcj0iNjIiIGZpbGw9IiMxNzJjMjUiIHN0cm9rZT0iIzc4ZGJhOSIgc3Ryb2tlLXdpZHRoPSIzIi8+PGNpcmNsZSBjeD0iMTcwIiBjeT0iMzE2IiByPSIyMSIgZmlsbD0iIzc4ZGJhOSIvPjx0ZXh0IHg9IjE2NSIgeT0iMzIyIiBjbGFzcz0ic3RlcCI+MTwvdGV4dD4KICAgICAgPHRleHQgeD0iOTIiIHk9IjQxNCIgY2xhc3M9ImhlYWQiPuOCreODo+ODqeOCr+OCv+ODvOS9nOaIkDwvdGV4dD48dGV4dCB4PSI5NiIgeT0iNDQ0IiBjbGFzcz0iYm9keSI+6KaL44Gf55uu44Go5Z+65pys5oOF5aCxPC90ZXh0Pjx0ZXh0IHg9Ijk3IiB5PSI0NzAiIGNsYXNzPSJzbWFsbCI+5a6M5LqG5Zyw54K544KSc2VydmVy44G45L+d5a2YPC90ZXh0PgogICAgPC9nPgogICAgPGc+CiAgICAgIDxjaXJjbGUgY3g9IjQ0MCIgY3k9IjMxNiIgcj0iNjIiIGZpbGw9IiMxNzIxMmQiIHN0cm9rZT0iIzdmYzZkZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PGNpcmNsZSBjeD0iNDQwIiBjeT0iMzE2IiByPSIyMSIgZmlsbD0iIzdmYzZkZCIvPjx0ZXh0IHg9IjQzNSIgeT0iMzIyIiBjbGFzcz0ic3RlcCI+MjwvdGV4dD4KICAgICAgPHRleHQgeD0iMzgyIiB5PSI0MTQiIGNsYXNzPSJoZWFkIj7nqbrmuK/jgbjliLDnnYA8L3RleHQ+PHRleHQgeD0iMzY4IiB5PSI0NDQiIGNsYXNzPSJib2R5Ij7mvJTlh7rjgpLopovjgosgLyBza2lw44GZ44KLPC90ZXh0Pjx0ZXh0IHg9IjM3MSIgeT0iNDcwIiBjbGFzcz0ic21hbGwiPuOBqeOBoeOCieOCguaTjeS9nOWPr+iDveOBuOaIu+OCizwvdGV4dD4KICAgIDwvZz4KICAgIDxnPgogICAgICA8Y2lyY2xlIGN4PSI3MTAiIGN5PSIzMTYiIHI9IjYyIiBmaWxsPSIjMjkyMDE3IiBzdHJva2U9IiNmMGE4NDgiIHN0cm9rZS13aWR0aD0iMyIvPjxjaXJjbGUgY3g9IjcxMCIgY3k9IjMxNiIgcj0iMjEiIGZpbGw9IiNmMGE4NDgiLz48dGV4dCB4PSI3MDUiIHk9IjMyMiIgY2xhc3M9InN0ZXAiPjM8L3RleHQ+CiAgICAgIDx0ZXh0IHg9IjY1MCIgeT0iNDE0IiBjbGFzcz0iaGVhZCI+54Sh5paZ44K344Oj44OI44OrPC90ZXh0Pjx0ZXh0IHg9IjY0NCIgeT0iNDQ0IiBjbGFzcz0iYm9keSI+5qGI5YaF44KS6KaL44Gm5LmX6LuKPC90ZXh0Pjx0ZXh0IHg9IjY0MSIgeT0iNDcwIiBjbGFzcz0ic21hbGwiPui/juOBiOOChOiHquWIhuOBrui7iuOBr+S4jeimgTwvdGV4dD4KICAgIDwvZz4KICAgIDxnPgogICAgICA8Y2lyY2xlIGN4PSI5ODAiIGN5PSIzMTYiIHI9IjYyIiBmaWxsPSIjMTcyMTJkIiBzdHJva2U9IiM3ZmM2ZGQiIHN0cm9rZS13aWR0aD0iMyIvPjxjaXJjbGUgY3g9Ijk4MCIgY3k9IjMxNiIgcj0iMjEiIGZpbGw9IiM3ZmM2ZGQiLz48dGV4dCB4PSI5NzUiIHk9IjMyMiIgY2xhc3M9InN0ZXAiPjQ8L3RleHQ+CiAgICAgIDx0ZXh0IHg9IjkxNCIgeT0iNDE0IiBjbGFzcz0iaGVhZCI+6KGX44Gu5Lit5b+D44G4PC90ZXh0Pjx0ZXh0IHg9Ijg5OSIgeT0iNDQ0IiBjbGFzcz0iYm9keSI+R3VpZGVib29r44GoR1BT44KS6KGo56S6PC90ZXh0Pjx0ZXh0IHg9IjkwMCIgeT0iNDcwIiBjbGFzcz0ic21hbGwiPuahiOWGheOBr+OBguOBqOOBi+OCieWGjeihqOekuuWPr+iDvTwvdGV4dD4KICAgIDwvZz4KICAgIDxnPgogICAgICA8Y2lyY2xlIGN4PSIxMjUwIiBjeT0iMzE2IiByPSI2MiIgZmlsbD0iIzE3MmMyNSIgc3Ryb2tlPSIjNzhkYmE5IiBzdHJva2Utd2lkdGg9IjMiLz48Y2lyY2xlIGN4PSIxMjUwIiBjeT0iMzE2IiByPSIyMSIgZmlsbD0iIzc4ZGJhOSIvPjx0ZXh0IHg9IjEyNDUiIHk9IjMyMiIgY2xhc3M9InN0ZXAiPjU8L3RleHQ+CiAgICAgIDx0ZXh0IHg9IjExODciIHk9IjQxNCIgY2xhc3M9ImhlYWQiPuacgOWIneOBrua4heaOgzwvdGV4dD48dGV4dCB4PSIxMTcwIiB5PSI0NDQiIGNsYXNzPSJib2R5Ij7lvpLmranjgafkuIDjgaTjga7ku5XkuovjgpLlrozkuoY8L3RleHQ+PHRleHQgeD0iMTE2OSIgeT0iNDcwIiBjbGFzcz0ic21hbGwiPuaIkOWKn+aZguOBoOOBkeWgsemFrOOCkuS4gOW6puS7mOS4jjwvdGV4dD4KICAgIDwvZz4KICAgIDxyZWN0IHg9IjE2MCIgeT0iNTYwIiB3aWR0aD0iMTEyMCIgaGVpZ2h0PSIxMTYiIHJ4PSIxOCIgZmlsbD0iIzEzMjMxZiIgc3Ryb2tlPSIjNzhkYmE5IiBzdHJva2Utb3BhY2l0eT0iLjciLz4KICAgIDx0ZXh0IHg9IjIwMCIgeT0iNjAzIiBjbGFzcz0ic2FmZSI+6YCU5Lit44Gn5o6l57aa44GM5YiH44KM44Gm44KC44CB5pyA5b6M44Gr5L+d5a2Y44GX44GfcGhhc2XjgYvjgonlho3plos8L3RleHQ+CiAgICA8dGV4dCB4PSIyMDAiIHk9IjYzOCIgY2xhc3M9ImJvZHkiPumHjeikh2V2ZW5044O75a6M5LqG5riI44G/44O76aCG5bqP6YGV5Y+N44Gvc2VydmVy44GM5ouS5ZCm44CA77yP44CA5a6M5LqG5b6M44Gv5Yid5Zue5ryU5Ye644Go54Sh5paZ44K344Oj44OI44Or44KS57mw44KK6L+U44GV44Gq44GEPC90ZXh0PgogICAgPHBhdGggZD0iTTcxMCA1NjBWNTA4QzcxMCA0OTAgNjg2IDQ5MCA2ODYgNTA4IiBmaWxsPSJub25lIiBzdHJva2U9IiM3OGRiYTkiIHN0cm9rZS13aWR0aD0iMyIgbWFya2VyLWVuZD0idXJsKCNhcnJvdykiLz4KICA8L2c+Cjwvc3ZnPgo=" tabindex="0"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="この日に生まれたもの">この日に生まれたもの<a href="https://gta.kogamai.com/blog/first-arrival-to-first-car#%E3%81%93%E3%81%AE%E6%97%A5%E3%81%AB%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE" class="hash-link" aria-label="この日に生まれたもの への直接リンク" title="この日に生まれたもの への直接リンク" translate="no">​</a></h2>
<p>Western Spawnroom、appearance、LSIA、FD Taxi、リージョン・スクエアを <code>kogamai_onboarding</code> がつなぎます。所持金0円、車なし、他player不在でも進めます。</p>
<p>途中phaseはQbox metadataへ保存し、切断後は未完了地点から再開します。Guidebookが利用できない場合も通常通知とcommandから目的地へ戻れます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プレイヤーから見える景色">プレイヤーから見える景色<a href="https://gta.kogamai.com/blog/first-arrival-to-first-car#%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%8B%E3%82%89%E8%A6%8B%E3%81%88%E3%82%8B%E6%99%AF%E8%89%B2" class="hash-link" aria-label="プレイヤーから見える景色 への直接リンク" title="プレイヤーから見える景色 への直接リンク" translate="no">​</a></h2>
<p>空港は説明書ではなく、物語の最初の場面です。迎えを待たずに街へ入り、自分の手で最初の報酬まで届きます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="つくり手向けメモ">つくり手向けメモ<a href="https://gta.kogamai.com/blog/first-arrival-to-first-car#%E3%81%A4%E3%81%8F%E3%82%8A%E6%89%8B%E5%90%91%E3%81%91%E3%83%A1%E3%83%A2" class="hash-link" aria-label="つくり手向けメモ への直接リンク" title="つくり手向けメモ への直接リンク" translate="no">​</a></h2>
<p>onboardingを短いphaseのstate machineに分け、clientの完了申告だけで進めません。identity、距離、順番、完了済みかをserverで再検証し、演出skipと再接続を同じ規則で扱います。</p>
<blockquote>
<p><strong>現在地:</strong> 実装と自動検査の記録です。翌日のDEV操作でシャトルや画面構図の問題が見つかり、修正へ続きます。</p>
</blockquote>
<p><a class="" href="https://gta.kogamai.com/blog/phone-memories">10日目・第六章へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/building-vehicle-parts">11日目・第一章へ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>初心者導線</category>
        </item>
        <item>
            <title><![CDATA[街づくり9日目・第一章｜品物が巡る市場をひらく]]></title>
            <link>https://gta.kogamai.com/blog/physical-amm-market</link>
            <guid>https://gta.kogamai.com/blog/physical-amm-market</guid>
            <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[仮想的な価格曲線と実際の円・在庫を組み合わせた、Cardinal管理型の現物市場を作りました。]]></description>
            <content:encoded><![CDATA[<p><img width="1672" height="941" alt="素材と部品が人から人へ渡る現物市場の開発イメージ" aria-haspopup="dialog" aria-label="画像「素材と部品が人から人へ渡る現物市場の開発イメージ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/physical-market-scene-4e00b97f9ad5324b4f97c483b7596ab9.png" tabindex="0"></p>
<p><strong>2026年8月11日、街づくり9日目・第一章。</strong></p>
<p>日付が変わって最初に開いたのは市場でした。採集した素材や作った部品が、NPCへ消えるのではなく、次のplayerへ渡る場所です。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="この日に生まれたもの">この日に生まれたもの<a href="https://gta.kogamai.com/blog/physical-amm-market#%E3%81%93%E3%81%AE%E6%97%A5%E3%81%AB%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE" class="hash-link" aria-label="この日に生まれたもの への直接リンク" title="この日に生まれたもの への直接リンク" translate="no">​</a></h2>
<p><code>kogamai_market</code> は、需要と供給に応じて価格を計算する現物AMMです。ただし計算上の在庫を無限に売りません。約定は、pool組織が銀行に持つ実円残高と、inventory lockerにある実物の範囲だけです。</p>
<p>quoteは短時間だけ固定され、数量、元本、価格影響へ上限を持ちます。途中切断や再送が起きても、売買、支払い、受取・返却を一度だけ進めます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プレイヤーから見える景色">プレイヤーから見える景色<a href="https://gta.kogamai.com/blog/physical-amm-market#%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%8B%E3%82%89%E8%A6%8B%E3%81%88%E3%82%8B%E6%99%AF%E8%89%B2" class="hash-link" aria-label="プレイヤーから見える景色 への直接リンク" title="プレイヤーから見える景色 への直接リンク" translate="no">​</a></h2>
<p>素材を売ると相場が動き、誰かが必要な品を買う。少人数の時間にも取引の入口がありながら、実際の在庫を作るplayerの仕事が消えない市場です。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="つくり手向けメモ">つくり手向けメモ<a href="https://gta.kogamai.com/blog/physical-amm-market#%E3%81%A4%E3%81%8F%E3%82%8A%E6%89%8B%E5%90%91%E3%81%91%E3%83%A1%E3%83%A2" class="hash-link" aria-label="つくり手向けメモ への直接リンク" title="つくり手向けメモ への直接リンク" translate="no">​</a></h2>
<p>price curveとsettlementを分離し、moneyとinventoryの両方を超えないようsagaで処理します。内部の仮想準備や政策値は公開せず、playerには価格、所有物、利用可否など必要な結果だけを示します。</p>
<blockquote>
<p><strong>現在地:</strong> 基盤とDEV用端末は実装済みですが、本番品目、国庫seed、active poolは空です。人の承認なしに市場を開始しません。</p>
</blockquote>
<p><a class="" href="https://gta.kogamai.com/blog/admin-control-room">8日目・第三章へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/durable-game-session">9日目・第二章へ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>市場</category>
        </item>
        <item>
            <title><![CDATA[街づくり9日目・第二章｜切断しても、遊びが続く時間をつくる]]></title>
            <link>https://gta.kogamai.com/blog/durable-game-session</link>
            <guid>https://gta.kogamai.com/blog/durable-game-session</guid>
            <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[参加費、途中離脱、再接続、期限切れ、精算を安全に扱う共通game sessionを作りました。]]></description>
            <content:encoded><![CDATA[<p><img width="1440" height="820" alt="開始から精算までを安全な段階に分ける開発図" aria-haspopup="dialog" aria-label="画像「開始から精算までを安全な段階に分ける開発図」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNDQwIDgyMCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsbGVkYnk9InRpdGxlIGRlc2MiPgogIDx0aXRsZSBpZD0idGl0bGUiPkZpdmVN44Gu5aSJ5pu044KS44OX44Os44Kk56K66KqN5riI44G/44Gr44GZ44KL44G+44Gn44Gu5LqU44Gk44GuZ2F0ZTwvdGl0bGU+CiAgPGRlc2MgaWQ9ImRlc2MiPuWbuuWumnJlbGVhc2XjgIHlk4Hos6rjgrLjg7zjg4jjgIHlronlhahwbGFu44Go5Y+N5pig44CB56i85YON54q25oWL44GucmVhZC1iYWNr44CB5Lq66ZaT44Gu44Ky44O844Og5YaF6Kmm6aiT44KS6aCG44Gr6KGM44GE44CB44Gp44GT44GL44Gn5aSx5pWX44GX44Gf44KJ6Ki85oug44KS5q6L44GX44Gm5YGc5q2i44GZ44KLPC9kZXNjPgogIDxkZWZzPgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJiZyIgeDE9IjAiIHkxPSIwIiB4Mj0iMSIgeTI9IjEiPjxzdG9wIHN0b3AtY29sb3I9IiMxMTE4MjciLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwOTBkMTMiLz48L2xpbmVhckdyYWRpZW50PgogICAgPG1hcmtlciBpZD0iYXJyb3ciIG1hcmtlcldpZHRoPSIxMiIgbWFya2VySGVpZ2h0PSIxMiIgcmVmWD0iMTAiIHJlZlk9IjYiIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMEwxMiA2IDAgMTJaIiBmaWxsPSIjN2ZjNmRkIi8+PC9tYXJrZXI+CiAgICA8bWFya2VyIGlkPSJzdG9wQXJyb3ciIG1hcmtlcldpZHRoPSIxMiIgbWFya2VySGVpZ2h0PSIxMiIgcmVmWD0iMTAiIHJlZlk9IjYiIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMEwxMiA2IDAgMTJaIiBmaWxsPSIjZWY3YjYyIi8+PC9tYXJrZXI+CiAgICA8c3R5bGU+Lmpwe2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsIk5vdG8gU2FucyBKUCIsc2Fucy1zZXJpZn0udGl0bGV7Zm9udC1zaXplOjM0cHg7Zm9udC13ZWlnaHQ6NzUwO2ZpbGw6I2Y3ZjRlZX0uc3Vie2ZvbnQtc2l6ZToxN3B4O2ZpbGw6IzljYThiYX0ubnVte2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0Ojg1MDtmaWxsOiMxMDE1MWR9LmhlYWR7Zm9udC1zaXplOjE5cHg7Zm9udC13ZWlnaHQ6NzUwO2ZpbGw6I2Y3ZjRlZX0uYm9keXtmb250LXNpemU6MTVweDtmaWxsOiNiZGM2ZDR9LnNtYWxse2ZvbnQtc2l6ZToxNHB4O2ZpbGw6IzhlOWJhZX0uc3RvcHtmb250LXNpemU6MThweDtmb250LXdlaWdodDo3NTA7ZmlsbDojZmZiM2E1fS5wYXNze2ZvbnQtc2l6ZToxOHB4O2ZvbnQtd2VpZ2h0Ojc1MDtmaWxsOiNhZWYyY2V9PC9zdHlsZT4KICA8L2RlZnM+CiAgPHJlY3Qgd2lkdGg9IjE0NDAiIGhlaWdodD0iODIwIiBmaWxsPSJ1cmwoI2JnKSIvPgogIDx0ZXh0IHg9IjcwIiB5PSI3MiIgY2xhc3M9ImpwIHRpdGxlIj7jgIzotbfli5XjgZfjgZ/jgI3jgajjgIzpgYrjgbnjgZ/jgI3jga7plpPjgavjgIHkupTjgaTjga5nYXRl44KS572u44GPPC90ZXh0PgogIDx0ZXh0IHg9IjcwIiB5PSIxMDYiIGNsYXNzPSJqcCBzdWIiPuapn+aisOOBjOeiuuiqjeOBp+OBjeOCi+OBk+OBqOOBqOOAgeS6uuOBjOWun+mam+OBq+S9k+mok+OBl+OBpuWIneOCgeOBpuWIhuOBi+OCi+OBk+OBqOOCkuWIhumbouOBmeOCizwvdGV4dD4KICA8ZyBjbGFzcz0ianAiPgogICAgPHBhdGggZD0iTTE3MCAzMzBIMTI3MCIgc3Ryb2tlPSIjMzQ0MTUzIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgogICAgPHBhdGggZD0iTTI2NiAzMzBIMzQwTTQ4NiAzMzBINTYwTTcwNiAzMzBINzgwTTkyNiAzMzBIMTAwMCIgc3Ryb2tlPSIjN2ZjNmRkIiBzdHJva2Utd2lkdGg9IjQiIG1hcmtlci1lbmQ9InVybCgjYXJyb3cpIi8+CiAgICA8Zz48cmVjdCB4PSI3MCIgeT0iMjAwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjI2MCIgcng9IjIwIiBmaWxsPSIjMTcyMTJkIiBzdHJva2U9IiM3ZmM2ZGQiIHN0cm9rZS13aWR0aD0iMiIvPjxjaXJjbGUgY3g9IjEwOCIgY3k9IjIzOCIgcj0iMTgiIGZpbGw9IiM3ZmM2ZGQiLz48dGV4dCB4PSIxMDMiIHk9IjI0NCIgY2xhc3M9Im51bSI+MTwvdGV4dD48dGV4dCB4PSIxMzUiIHk9IjI0NCIgY2xhc3M9ImhlYWQiPuWbuuWumnJlbGVhc2U8L3RleHQ+PHRleHQgeD0iOTYiIHk9IjI5MiIgY2xhc3M9ImJvZHkiPnNlcnZlciBjb21taXQ8L3RleHQ+PHRleHQgeD0iOTYiIHk9IjMyMiIgY2xhc3M9ImJvZHkiPnJlc291cmNlcyBjb21taXQ8L3RleHQ+PHRleHQgeD0iOTYiIHk9IjM1MiIgY2xhc3M9ImJvZHkiPmFydGlmYWN044O7ZGlnZXN0PC90ZXh0Pjx0ZXh0IHg9Ijk2IiB5PSI0MTQiIGNsYXNzPSJzbWFsbCI+5ZCM44GY5YWl5Yqb44KS5YaN54++44GZ44KLPC90ZXh0PjwvZz4KICAgIDxnPjxyZWN0IHg9IjI5MCIgeT0iMjAwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjI2MCIgcng9IjIwIiBmaWxsPSIjMTMyMzFmIiBzdHJva2U9IiM3OGRiYTkiIHN0cm9rZS13aWR0aD0iMiIvPjxjaXJjbGUgY3g9IjMyOCIgY3k9IjIzOCIgcj0iMTgiIGZpbGw9IiM3OGRiYTkiLz48dGV4dCB4PSIzMjMiIHk9IjI0NCIgY2xhc3M9Im51bSI+MjwvdGV4dD48dGV4dCB4PSIzNTUiIHk9IjI0NCIgY2xhc3M9ImhlYWQiPuWTgeizquOCsuODvOODiDwvdGV4dD48dGV4dCB4PSIzMTYiIHk9IjI5MiIgY2xhc3M9ImJvZHkiPuWei+ODu+mdmeeahOaknOafuzwvdGV4dD48dGV4dCB4PSIzMTYiIHk9IjMyMiIgY2xhc3M9ImJvZHkiPuWlkee0hOODu21pZ3JhdGlvbjwvdGV4dD48dGV4dCB4PSIzMTYiIHk9IjM1MiIgY2xhc3M9ImJvZHkiPue1hOeri+OBpmRpZ2VzdDwvdGV4dD48dGV4dCB4PSIzMTYiIHk9IjQxNCIgY2xhc3M9InNtYWxsIj4x5Lu244Gn44KC5aSx5pWX44Gq44KJ5YGc5q2iPC90ZXh0PjwvZz4KICAgIDxnPjxyZWN0IHg9IjUxMCIgeT0iMjAwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjI2MCIgcng9IjIwIiBmaWxsPSIjMjkyMDE3IiBzdHJva2U9IiNmMGE4NDgiIHN0cm9rZS13aWR0aD0iMiIvPjxjaXJjbGUgY3g9IjU0OCIgY3k9IjIzOCIgcj0iMTgiIGZpbGw9IiNmMGE4NDgiLz48dGV4dCB4PSI1NDMiIHk9IjI0NCIgY2xhc3M9Im51bSI+MzwvdGV4dD48dGV4dCB4PSI1NzUiIHk9IjI0NCIgY2xhc3M9ImhlYWQiPlBsYW7jg7vlj43mmKA8L3RleHQ+PHRleHQgeD0iNTM2IiB5PSIyOTIiIGNsYXNzPSJib2R5Ij7mhI/lm7PjgZfjgarjgYTlpInmm7QwPC90ZXh0Pjx0ZXh0IHg9IjUzNiIgeT0iMzIyIiBjbGFzcz0iYm9keSI+5om/6KqN44GV44KM44Gf57WM6LevPC90ZXh0Pjx0ZXh0IHg9IjUzNiIgeT0iMzUyIiBjbGFzcz0iYm9keSI+55Ww5bi45pmCZmFpbCBjbG9zZWQ8L3RleHQ+PHRleHQgeD0iNTM2IiB5PSI0MTQiIGNsYXNzPSJzbWFsbCI+ZmFsbGJhY2vjgpLph43jga3jgarjgYQ8L3RleHQ+PC9nPgogICAgPGc+PHJlY3QgeD0iNzMwIiB5PSIyMDAiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjYwIiByeD0iMjAiIGZpbGw9IiMxNzIxMmQiIHN0cm9rZT0iIzdmYzZkZCIgc3Ryb2tlLXdpZHRoPSIyIi8+PGNpcmNsZSBjeD0iNzY4IiBjeT0iMjM4IiByPSIxOCIgZmlsbD0iIzdmYzZkZCIvPjx0ZXh0IHg9Ijc2MyIgeT0iMjQ0IiBjbGFzcz0ibnVtIj40PC90ZXh0Pjx0ZXh0IHg9Ijc5NSIgeT0iMjQ0IiBjbGFzcz0iaGVhZCI+UmVhZC1iYWNrPC90ZXh0Pjx0ZXh0IHg9Ijc1NiIgeT0iMjkyIiBjbGFzcz0iYm9keSI+5a6f6Zqb44GucmVsZWFzZTwvdGV4dD48dGV4dCB4PSI3NTYiIHk9IjMyMiIgY2xhc3M9ImJvZHkiPnJlc291cmNl44O7ZW5kcG9pbnQ8L3RleHQ+PHRleHQgeD0iNzU2IiB5PSIzNTIiIGNsYXNzPSJib2R5Ij5jb25zb2xl44O7cHJvY2VzczwvdGV4dD48dGV4dCB4PSI3NTYiIHk9IjQxNCIgY2xhc3M9InNtYWxsIj7phY3nva7jgZfjgZ/jgaTjgoLjgorjgavjgZfjgarjgYQ8L3RleHQ+PC9nPgogICAgPGc+PHJlY3QgeD0iOTUwIiB5PSIyMDAiIHdpZHRoPSI0MjAiIGhlaWdodD0iMjYwIiByeD0iMjAiIGZpbGw9IiMyNTE4MTciIHN0cm9rZT0iI2VmN2I2MiIgc3Ryb2tlLXdpZHRoPSIyIi8+PGNpcmNsZSBjeD0iOTg4IiBjeT0iMjM4IiByPSIxOCIgZmlsbD0iI2VmN2I2MiIvPjx0ZXh0IHg9Ijk4MyIgeT0iMjQ0IiBjbGFzcz0ibnVtIj41PC90ZXh0Pjx0ZXh0IHg9IjEwMTUiIHk9IjI0NCIgY2xhc3M9ImhlYWQiPuS6uumWk+OBruOCsuODvOODoOWGheippumokzwvdGV4dD48dGV4dCB4PSI5NzYiIHk9IjI5MiIgY2xhc3M9ImJvZHkiPumAmuW4uHBsYXllcuOBqOOBl+OBpueVquWPt+S7mOOBjeaJi+mghuOCkuaTjeS9nDwvdGV4dD48dGV4dCB4PSI5NzYiIHk9IjMyMiIgY2xhc3M9ImJvZHkiPuikh+aVsGNsaWVudOODu+WGjeaOpee2muODu+WujOWFqOWGjei1t+WLlTwvdGV4dD48dGV4dCB4PSI5NzYiIHk9IjM1MiIgY2xhc3M9ImJvZHkiPuWIhuOBi+OCiuOChOOBmeOBleODu+alveOBl+OBleODu+eKtuaFi+S/neaMgTwvdGV4dD48dGV4dCB4PSI5NzYiIHk9IjQxNCIgY2xhc3M9InNtYWxsIj5QQVNTIC8gRkFJTCAvIE5PVCBSVU7jgpLjgZ3jga7jgb7jgb7oqJjpjLI8L3RleHQ+PC9nPgogICAgPHBhdGggZD0iTTE3MCA0NjBWNTc0SDEwNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2VmN2I2MiIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2UtZGFzaGFycmF5PSI3IDciIG1hcmtlci1lbmQ9InVybCgjc3RvcEFycm93KSIvPgogICAgPHBhdGggZD0iTTM5MCA0NjBWNTc0TTYxMCA0NjBWNTc0TTgzMCA0NjBWNTc0TTExNjAgNDYwVjU3NCIgc3Ryb2tlPSIjZWY3YjYyIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1kYXNoYXJyYXk9IjcgNyIvPgogICAgPHJlY3QgeD0iMTAyMCIgeT0iNTM2IiB3aWR0aD0iMzUwIiBoZWlnaHQ9Ijg2IiByeD0iMTYiIGZpbGw9IiMzMDFiMWEiIHN0cm9rZT0iI2VmN2I2MiIvPgogICAgPHRleHQgeD0iMTA1MCIgeT0iNTcwIiBjbGFzcz0ic3RvcCI+44Gp44GT44GL44Gn5aSx5pWXIOKGkiDoqLzmi6DjgpLmrovjgZfjgablgZzmraI8L3RleHQ+PHRleHQgeD0iMTA1MCIgeT0iNjAwIiBjbGFzcz0iYm9keSI+5qSc5p+744KS57ep44KB44Ga44CB5ZCM44GY5p2h5Lu244Gn5L+u5q2j5b6M44Gr5YaN6Kmm6aiTPC90ZXh0PgogICAgPHJlY3QgeD0iNzAiIHk9IjY3OCIgd2lkdGg9IjEzMDAiIGhlaWdodD0iNzYiIHJ4PSIxNiIgZmlsbD0iIzEzMjMxZiIgc3Ryb2tlPSIjNzhkYmE5Ii8+CiAgICA8dGV4dCB4PSIxMTAiIHk9IjcxMSIgY2xhc3M9InBhc3MiPuS6lOOBpOOBmeOBueOBpuOBjOaPg+OBo+OBpuOAgeWIneOCgeOBpuOAjOOBk+OBrnJlbGVhc2Xjgafjg5fjg6zjgqTnorroqo3muIjjgb/jgI08L3RleHQ+CiAgICA8dGV4dCB4PSIxMTAiIHk9IjczOSIgY2xhc3M9ImJvZHkiPndvcmtmbG935oiQ5Yqf44KEcmVzb3VyY2Ugc3RhcnRlZOOCkuOAgeS6uumWk+OBruOCsuODvOODoOWGhVBBU1Pjgbjnva7jgY3mj5vjgYjjgarjgYQ8L3RleHQ+CiAgPC9nPgo8L3N2Zz4K" tabindex="0"></p>
<p><strong>2026年8月11日、街づくり9日目・第二章。</strong></p>
<p>race、casino、共同作業。どの遊びにも「始める」「途中で抜ける」「戻る」「終わって精算する」があります。この日は、その時間を共通の仕組みにしました。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="この日に生まれたもの">この日に生まれたもの<a href="https://gta.kogamai.com/blog/durable-game-session#%E3%81%93%E3%81%AE%E6%97%A5%E3%81%AB%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE" class="hash-link" aria-label="この日に生まれたもの への直接リンク" title="この日に生まれたもの への直接リンク" translate="no">​</a></h2>
<p>game sessionはcommandの重複を防ぎ、versionを確認し、money effectを確実にsettleします。切断・再接続・期限切れ・server再起動が起きても、保存されたsessionから続きを判断できます。</p>
<p>同じ日のうちに銀行adapter、MariaDB永続化、FiveM runtime、読取専用のclient状態まで段階的につながりました。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プレイヤーから見える景色">プレイヤーから見える景色<a href="https://gta.kogamai.com/blog/durable-game-session#%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%8B%E3%82%89%E8%A6%8B%E3%81%88%E3%82%8B%E6%99%AF%E8%89%B2" class="hash-link" aria-label="プレイヤーから見える景色 への直接リンク" title="プレイヤーから見える景色 への直接リンク" translate="no">​</a></h2>
<p>参加費だけ消える、賞金が二重に出る、切断したら全員のgameが止まる。そうした理不尽を減らし、途中の事故から正しく戻れる遊びの器です。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="つくり手向けメモ">つくり手向けメモ<a href="https://gta.kogamai.com/blog/durable-game-session#%E3%81%A4%E3%81%8F%E3%82%8A%E6%89%8B%E5%90%91%E3%81%91%E3%83%A1%E3%83%A2" class="hash-link" aria-label="つくり手向けメモ への直接リンク" title="つくり手向けメモ への直接リンク" translate="no">​</a></h2>
<p>個別gameごとに精算を実装すると、同じ障害処理が増えます。session lifecycle、durable outbox、idempotent effectを共通coreへ置き、個別gameは「何を返すか」だけ決める構造にします。</p>
<blockquote>
<p><strong>現在地:</strong> 共通coreは実装されていますが、すべてのraceやcasinoが接続済みという意味ではありません。未接続gameは有効化しません。</p>
</blockquote>
<p><a class="" href="https://gta.kogamai.com/blog/physical-amm-market">9日目・第一章へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/phone-connects-the-city">9日目・第三章へ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>ゲーム基盤</category>
        </item>
        <item>
            <title><![CDATA[街づくり9日目・第三章｜電話一本で、人と仕事をつなぐ]]></title>
            <link>https://gta.kogamai.com/blog/phone-connects-the-city</link>
            <guid>https://gta.kogamai.com/blog/phone-connects-the-city</guid>
            <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[日本語のPhone、通話、メッセージ、ウォレットを街の銀行と人間関係へ接続しました。]]></description>
            <content:encoded><![CDATA[<p><img width="1672" height="941" alt="Phoneから街の仲間へつながるKOGAMAI JUNCTION" aria-haspopup="dialog" aria-label="画像「Phoneから街の仲間へつながるKOGAMAI JUNCTION」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/fivem-development-update-5af8c72505b0096d0865ff916e649f9f.png" tabindex="0"></p>
<p><strong>2026年8月11日、街づくり9日目・第三章。</strong></p>
<p>夜、街に電話が通りました。日本語のPhoneから、連絡、通話、サービス案内、銀行送金へ進めるようになった日です。</p>
<p><img width="1440" height="820" alt="Phoneの機能が街の行動へつながる構成" aria-haspopup="dialog" aria-label="画像「Phoneの機能が街の行動へつながる構成」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNDQwIDgyMCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsbGVkYnk9InRpdGxlIGRlc2MiPgogIDx0aXRsZSBpZD0idGl0bGUiPlBob25l44Gu5qmf6IO944KS6KGX44Gn44Gu6KGM5YuV44G444Gk44Gq44GQ5qeL5oiQPC90aXRsZT4KICA8ZGVzYyBpZD0iZGVzYyI+UGhvbmXjgpLkuK3lv4PjgavjgIHpgKPntaHjgIHjgqbjgqnjg6zjg4Pjg4jjgIHjgrXjg7zjg5PjgrnjgIHjgqvjg6Hjg6njgajjgIHkvJrjgYbjgIHkvp3poLzjgZnjgovjgIHmlK/miZXjgYbjgIHmgJ3jgYTlh7rjgpLlhbHmnInjgZnjgovooZfjgafjga7ooYzli5XjgpLlr77lv5zjgaXjgZHjgIFzZXJ2ZXLjgavjgojjgovmnKzkurrnorroqo3jgajkuIDluqbjgaDjgZHjga7lh6bnkIbjgaflrojjgos8L2Rlc2M+CiAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9ImJnIiB4MT0iMCIgeTE9IjAiIHgyPSIxIiB5Mj0iMSI+PHN0b3Agc3RvcC1jb2xvcj0iIzExMTgyNyIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzA5MGQxMyIvPjwvbGluZWFyR3JhZGllbnQ+CiAgICA8bWFya2VyIGlkPSJhcnJvdyIgbWFya2VyV2lkdGg9IjEyIiBtYXJrZXJIZWlnaHQ9IjEyIiByZWZYPSIxMCIgcmVmWT0iNiIgb3JpZW50PSJhdXRvIj48cGF0aCBkPSJNMCAwTDEyIDYgMCAxMloiIGZpbGw9IiM3ZmM2ZGQiLz48L21hcmtlcj4KICAgIDxzdHlsZT4uanB7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsIlNlZ29lIFVJIiwiTm90byBTYW5zIEpQIixzYW5zLXNlcmlmfS50aXRsZXtmb250LXNpemU6MzRweDtmb250LXdlaWdodDo3NTA7ZmlsbDojZjdmNGVlfS5zdWJ7Zm9udC1zaXplOjE3cHg7ZmlsbDojOWNhOGJhfS5oZWFke2ZvbnQtc2l6ZToyMXB4O2ZvbnQtd2VpZ2h0Ojc1MDtmaWxsOiNmN2Y0ZWV9LmJvZHl7Zm9udC1zaXplOjE2cHg7ZmlsbDojYmRjNmQ0fS5zbWFsbHtmb250LXNpemU6MTRweDtmaWxsOiM4ZTliYWV9LmFwcHtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo3MDA7ZmlsbDojZGZlOGVmfS5ndWFyZHtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo3MDA7ZmlsbDojYWVmMmNlfTwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IHdpZHRoPSIxNDQwIiBoZWlnaHQ9IjgyMCIgZmlsbD0idXJsKCNiZykiLz4KICA8dGV4dCB4PSI3MCIgeT0iNzIiIGNsYXNzPSJqcCB0aXRsZSI+UGhvbmXjga7kuK3jgafntYLjgo/jgonjgZrjgIHooZfjga7ooYzli5XjgbjjgaTjgarjgZA8L3RleHQ+CiAgPHRleHQgeD0iNzAiIHk9IjEwNiIgY2xhc3M9ImpwIHN1YiI+6YCj57Wh44O75pSv5omV44GE44O75qGI5YaF44O76KiY6Yyy44KS44CB5a6f6Zqb44Gr5Lya44GG44CB6aC844KA44CB5LiA57eS44Gr6YGK44G244GN44Gj44GL44GR44Gr44GZ44KLPC90ZXh0PgogIDxnIGNsYXNzPSJqcCI+CiAgICA8Zz4KICAgICAgPHJlY3QgeD0iNTc1IiB5PSIxNjAiIHdpZHRoPSIyOTAiIGhlaWdodD0iNDMwIiByeD0iNDIiIGZpbGw9IiMxNzFlMjkiIHN0cm9rZT0iIzdmYzZkZCIgc3Ryb2tlLXdpZHRoPSI0Ii8+CiAgICAgIDxyZWN0IHg9IjYwNSIgeT0iMjA1IiB3aWR0aD0iMjMwIiBoZWlnaHQ9IjMxNSIgcng9IjIyIiBmaWxsPSIjMTAyMDJhIi8+CiAgICAgIDx0ZXh0IHg9IjY2MCIgeT0iMjUyIiBjbGFzcz0iaGVhZCIgZmlsbD0iIzdmYzZkZCI+SkNUIFBob25lPC90ZXh0PgogICAgICA8ZyBmaWxsPSIjMWIyZjNhIj48cmVjdCB4PSI2MzAiIHk9IjI4OCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjY2IiByeD0iMTQiLz48cmVjdCB4PSI3MzAiIHk9IjI4OCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjY2IiByeD0iMTQiLz48cmVjdCB4PSI2MzAiIHk9IjM3NCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjY2IiByeD0iMTQiLz48cmVjdCB4PSI3MzAiIHk9IjM3NCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjY2IiByeD0iMTQiLz48L2c+CiAgICAgIDxnIGNsYXNzPSJhcHAiPjx0ZXh0IHg9IjY1MCIgeT0iMzI4Ij7pgKPntaE8L3RleHQ+PHRleHQgeD0iNzQ1IiB5PSIzMjgiPldhbGxldDwvdGV4dD48dGV4dCB4PSI2NDUiIHk9IjQxNCI+U2VydmljZTwvdGV4dD48dGV4dCB4PSI3NDgiIHk9IjQxNCI+Q2FtZXJhPC90ZXh0PjwvZz4KICAgICAgPHRleHQgeD0iNjMwIiB5PSI0ODIiIGNsYXNzPSJzbWFsbCI+5pel5pys6KqeVUnjg7vlkIzjgZhiYW5r5q6L6auYPC90ZXh0PgogICAgICA8Y2lyY2xlIGN4PSI3MjAiIGN5PSI1NTUiIHI9IjExIiBmaWxsPSIjMzQ0MTUzIi8+CiAgICA8L2c+CiAgICA8Zz4KICAgICAgPHJlY3QgeD0iODAiIHk9IjE5MCIgd2lkdGg9IjMzMCIgaGVpZ2h0PSIxMTIiIHJ4PSIxOCIgZmlsbD0iIzE3MjEyZCIgc3Ryb2tlPSIjN2ZjNmRkIi8+PHRleHQgeD0iMTEyIiB5PSIyMzIiIGNsYXNzPSJoZWFkIj7jg6Hjg4Pjgrvjg7zjgrjjg7vpgJroqbE8L3RleHQ+PHRleHQgeD0iMTEyIiB5PSIyNjYiIGNsYXNzPSJib2R5Ij7nm7jmiYvjgbjpgKPntaHjgZfjgIHlvoXjgaHlkIjjgo/jgZvjgos8L3RleHQ+CiAgICAgIDxyZWN0IHg9IjgwIiB5PSIzNTAiIHdpZHRoPSIzMzAiIGhlaWdodD0iMTEyIiByeD0iMTgiIGZpbGw9IiMxMzIzMWYiIHN0cm9rZT0iIzc4ZGJhOSIvPjx0ZXh0IHg9IjExMiIgeT0iMzkyIiBjbGFzcz0iaGVhZCI+V2FsbGV0PC90ZXh0Pjx0ZXh0IHg9IjExMiIgeT0iNDI2IiBjbGFzcz0iYm9keSI+5L6d6aC844KE5Y+W5byV44Gu5Luj6YeR44KS5pSv5omV44GGPC90ZXh0PgogICAgICA8cmVjdCB4PSI4MCIgeT0iNTEwIiB3aWR0aD0iMzMwIiBoZWlnaHQ9IjExMiIgcng9IjE4IiBmaWxsPSIjMjkyMDE3IiBzdHJva2U9IiNmMGE4NDgiLz48dGV4dCB4PSIxMTIiIHk9IjU1MiIgY2xhc3M9ImhlYWQiPuOCteODvOODk+OCueahiOWGhTwvdGV4dD48dGV4dCB4PSIxMTIiIHk9IjU4NiIgY2xhc3M9ImJvZHkiPuS7leS6i+OBqOihl+OBruWgtOaJgOOBuOWQkeOBi+OBhjwvdGV4dD4KICAgIDwvZz4KICAgIDxnPgogICAgICA8cmVjdCB4PSIxMDMwIiB5PSIxOTAiIHdpZHRoPSIzMzAiIGhlaWdodD0iMTEyIiByeD0iMTgiIGZpbGw9IiMyNTE4MTciIHN0cm9rZT0iI2VmN2I2MiIvPjx0ZXh0IHg9IjEwNjIiIHk9IjIzMiIgY2xhc3M9ImhlYWQiPkNhbWVyYeODu+WGmeecnzwvdGV4dD48dGV4dCB4PSIxMDYyIiB5PSIyNjYiIGNsYXNzPSJib2R5Ij7ou4rjgoTpm4bjgb7jgorjga7mgJ3jgYTlh7rjgpLmrovjgZk8L3RleHQ+CiAgICAgIDxyZWN0IHg9IjEwMzAiIHk9IjM1MCIgd2lkdGg9IjMzMCIgaGVpZ2h0PSIxMTIiIHJ4PSIxOCIgZmlsbD0iIzE3MjEyZCIgc3Ryb2tlPSIjN2ZjNmRkIi8+PHRleHQgeD0iMTA2MiIgeT0iMzkyIiBjbGFzcz0iaGVhZCI+5Lya44GE44Gr6KGM44GPPC90ZXh0Pjx0ZXh0IHg9IjEwNjIiIHk9IjQyNiIgY2xhc3M9ImJvZHkiPuWFseWQjOS9nOalreOAgeWjsuiyt+OAgemBiuOBs+OBuOWQiOa1gTwvdGV4dD4KICAgICAgPHJlY3QgeD0iMTAzMCIgeT0iNTEwIiB3aWR0aD0iMzMwIiBoZWlnaHQ9IjExMiIgcng9IjE4IiBmaWxsPSIjMTMyMzFmIiBzdHJva2U9IiM3OGRiYTkiLz48dGV4dCB4PSIxMDYyIiB5PSI1NTIiIGNsYXNzPSJoZWFkIj7lho3mjqXntprjgZfjgabntprjgZHjgos8L3RleHQ+PHRleHQgeD0iMTA2MiIgeT0iNTg2IiBjbGFzcz0iYm9keSI+6YCj57Wh44O75bGl5q2044O7bWVkaWHjgpLkv53mjIE8L3RleHQ+CiAgICA8L2c+CiAgICA8cGF0aCBkPSJNNDEwIDI0Nkg1NzVNNDEwIDQwNkg1NzVNNDEwIDU2Nkg1NzVNODY1IDI0NkgxMDMwTTg2NSA0MDZIMTAzME04NjUgNTY2SDEwMzAiIHN0cm9rZT0iIzdmYzZkZCIgc3Ryb2tlLXdpZHRoPSIzIiBtYXJrZXItZW5kPSJ1cmwoI2Fycm93KSIvPgogICAgPHJlY3QgeD0iMzEwIiB5PSI2ODQiIHdpZHRoPSI4MjAiIGhlaWdodD0iODYiIHJ4PSIxOCIgZmlsbD0iIzEzMjMxZiIgc3Ryb2tlPSIjNzhkYmE5IiBzdHJva2Utb3BhY2l0eT0iLjciLz4KICAgIDx0ZXh0IHg9IjM2MCIgeT0iNzE5IiBjbGFzcz0iZ3VhcmQiPnNlcnZlcuOBjOacrOS6uuODu+aui+mrmOODu+aJgOacieOCkueiuuiqjeOBl+OAgeWQjOOBmOaTjeS9nOOBr+S4gOW6puOBoOOBkeWHpueQhjwvdGV4dD4KICAgIDx0ZXh0IHg9IjM2MCIgeT0iNzUwIiBjbGFzcz0iYm9keSI+TlVJ44G45rC457aaY3JlZGVudGlhbOOCkua4oeOBleOBquOBhOOAgO+8j+OAgOWIpXBsYXllcuOBruacquWFseaciW1lZGlh44G45Yiw6YGU44GV44Gb44Gq44GEPC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==" tabindex="0"></p>
<p><img width="1600" height="900" alt="連絡したplayerが車のそばで出会う開発イメージ" aria-haspopup="dialog" aria-label="画像「連絡したplayerが車のそばで出会う開発イメージ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/phone-meetup-scene-f5a412370daad64a60624afe66fc740c.webp" tabindex="0"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="この日に生まれたもの">この日に生まれたもの<a href="https://gta.kogamai.com/blog/phone-connects-the-city#%E3%81%93%E3%81%AE%E6%97%A5%E3%81%AB%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE" class="hash-link" aria-label="この日に生まれたもの への直接リンク" title="この日に生まれたもの への直接リンク" translate="no">​</a></h2>
<p>最初に有効にしたのは電話、message、設定、wallet、servicesの五つです。27 appを並べるのではなく、実際につながった入口だけを見せました。</p>
<p>wallet送金はPhone独自の残高を持たず、8日目に作った銀行台帳へ接続します。日本語font、IME、禁則、長文折返し、keyboardとgamepad操作も検査します。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プレイヤーから見える景色">プレイヤーから見える景色<a href="https://gta.kogamai.com/blog/phone-connects-the-city#%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%8B%E3%82%89%E8%A6%8B%E3%81%88%E3%82%8B%E6%99%AF%E8%89%B2" class="hash-link" aria-label="プレイヤーから見える景色 への直接リンク" title="プレイヤーから見える景色 への直接リンク" translate="no">​</a></h2>
<p>仕事を探し、相手へ連絡し、会いに行き、代金を払う。Phoneの価値はapp数ではなく、画面の先で人と街が動き出すことです。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="つくり手向けメモ">つくり手向けメモ<a href="https://gta.kogamai.com/blog/phone-connects-the-city#%E3%81%A4%E3%81%8F%E3%82%8A%E6%89%8B%E5%90%91%E3%81%91%E3%83%A1%E3%83%A2" class="hash-link" aria-label="つくり手向けメモ への直接リンク" title="つくり手向けメモ への直接リンク" translate="no">​</a></h2>
<p>NUIが送る送信者や残高を信用せず、serverが電話番号とplayerを解決します。vendor schemaもruntime mutationへ任せずmigration台帳へ入れます。</p>
<blockquote>
<p><strong>現在地:</strong> coreと自動E2Eの記録です。二人の実clientによる通話、IME、再接続の人間確認は別gateです。画像・動画・音声は翌日に接続します。</p>
</blockquote>
<p><a class="" href="https://gta.kogamai.com/blog/durable-game-session">9日目・第二章へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/fuel-and-charging">10日目・第一章へ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>Phone</category>
        </item>
        <item>
            <title><![CDATA[街づくり8日目・第一章｜車庫、販売店、整備工場を建てる]]></title>
            <link>https://gta.kogamai.com/blog/vehicle-city-foundation</link>
            <guid>https://gta.kogamai.com/blog/vehicle-city-foundation</guid>
            <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[JGの車両群を統合し、所有、保管、販売、整備、走行距離を一つの車文化へつなぎました。]]></description>
            <content:encoded><![CDATA[<p><img width="1672" height="941" alt="ガレージと市場へ人が集まり始める開発イメージ" aria-haspopup="dialog" aria-label="画像「ガレージと市場へ人が集まり始める開発イメージ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/fivem-development-update-5af8c72505b0096d0865ff916e649f9f.png" tabindex="0"></p>
<p><strong>2026年8月10日、街づくり8日目・第一章。</strong></p>
<p>この朝、街に車庫、販売店、整備工場が一度に現れました。JG Advanced Garages、Dealerships、Handling、HUD、Mechanic、Mileageを、Qboxの所有車とつないだ日です。</p>
<p><img width="1440" height="860" alt="素材、部品、取引、取付へ続く車文化の流れ" aria-haspopup="dialog" aria-label="画像「素材、部品、取引、取付へ続く車文化の流れ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNDQwIDg2MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsbGVkYnk9InRpdGxlIGRlc2MiPgogIDx0aXRsZSBpZD0idGl0bGUiPue0oOadkOOCkumbhuOCgeOBpui7iuS4oemDqOWTgeOCkuS9nOOCiuihl+OBuOW+queSsOOBleOBm+OCi+a1geOCjDwvdGl0bGU+CiAgPGRlc2MgaWQ9ImRlc2MiPuWFreOBpOOBruaOoembhua0u+WLleOBi+OCiTU257Sg5p2Q44CBNDHkuK3plpPntKDmnZDjgIExOeWujOaIkOmDqOWTgeOCkue1jOOBpuOAgeiHquWIhuOBp+S9v+OBhuOAgeWjsuOCi+OAgeS+nemgvOOBp+WPluOCiuS7mOOBkeOCi+a1geOCjOOBqOOAgemcgOimgeOBjOasoeOBruaOoembhuOBuOaIu+OCi+W+queSsDwvZGVzYz4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iYmciIHgxPSIwIiB5MT0iMCIgeDI9IjEiIHkyPSIxIj48c3RvcCBzdG9wLWNvbG9yPSIjMTExODI3Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDkwZDEzIi8+PC9saW5lYXJHcmFkaWVudD4KICAgIDxtYXJrZXIgaWQ9ImFycm93IiBtYXJrZXJXaWR0aD0iMTIiIG1hcmtlckhlaWdodD0iMTIiIHJlZlg9IjEwIiByZWZZPSI2IiBvcmllbnQ9ImF1dG8iPjxwYXRoIGQ9Ik0wIDBMMTIgNiAwIDEyWiIgZmlsbD0iIzdmYzZkZCIvPjwvbWFya2VyPgogICAgPHN0eWxlPi5qcHtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLCJOb3RvIFNhbnMgSlAiLHNhbnMtc2VyaWZ9LnRpdGxle2ZvbnQtc2l6ZTozNHB4O2ZvbnQtd2VpZ2h0Ojc1MDtmaWxsOiNmN2Y0ZWV9LnN1Yntmb250LXNpemU6MTdweDtmaWxsOiM5Y2E4YmF9LnBoYXNle2ZvbnQtc2l6ZToyMnB4O2ZvbnQtd2VpZ2h0OjgwMDtmaWxsOiNmN2Y0ZWV9LmNvdW50e2ZvbnQtc2l6ZTozOHB4O2ZvbnQtd2VpZ2h0Ojg1MH0uYm9keXtmb250LXNpemU6MTZweDtmaWxsOiNiZGM2ZDR9LnNtYWxse2ZvbnQtc2l6ZToxNHB4O2ZpbGw6IzhlOWJhZX0uY2hpcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo3MDA7ZmlsbDojZGZlOGVmfTwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IHdpZHRoPSIxNDQwIiBoZWlnaHQ9Ijg2MCIgZmlsbD0idXJsKCNiZykiLz4KICA8dGV4dCB4PSI3MCIgeT0iNzIiIGNsYXNzPSJqcCB0aXRsZSI+5ou+44Gj44Gf44KC44Gu44GM44CB6Kqw44GL44Gu5oSb6LuK44G45bGK44GP44G+44GnPC90ZXh0PgogIDx0ZXh0IHg9IjcwIiB5PSIxMDYiIGNsYXNzPSJqcCBzdWIiPuaPm+mHkeOBl+OBpue1guOCj+OCieOBmuOAgeaOoembhiDihpIg5Yqg5belIOKGkiDoo73kvZwg4oaSIOWPluW8leODu+WPluS7mOOCkuS4gOOBpOOBruW+queSsOOBuOOBpOOBquOBkDwvdGV4dD4KICA8ZyBjbGFzcz0ianAiPgogICAgPGc+CiAgICAgIDxyZWN0IHg9IjYwIiB5PSIxNjAiIHdpZHRoPSIzMTAiIGhlaWdodD0iNDkwIiByeD0iMjIiIGZpbGw9IiMxNzIxMmQiIHN0cm9rZT0iIzdmYzZkZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICAgIDx0ZXh0IHg9IjkwIiB5PSIyMDciIGNsYXNzPSJwaGFzZSI+MeOAgOWFreOBpOOBrua0u+WLlTwvdGV4dD4KICAgICAgPGcgZmlsbD0iIzFiMmEzNiI+PHJlY3QgeD0iOTAiIHk9IjI0MCIgd2lkdGg9IjExNSIgaGVpZ2h0PSI1NCIgcng9IjEyIi8+PHJlY3QgeD0iMjI1IiB5PSIyNDAiIHdpZHRoPSIxMTUiIGhlaWdodD0iNTQiIHJ4PSIxMiIvPjxyZWN0IHg9IjkwIiB5PSIzMTQiIHdpZHRoPSIxMTUiIGhlaWdodD0iNTQiIHJ4PSIxMiIvPjxyZWN0IHg9IjIyNSIgeT0iMzE0IiB3aWR0aD0iMTE1IiBoZWlnaHQ9IjU0IiByeD0iMTIiLz48cmVjdCB4PSI5MCIgeT0iMzg4IiB3aWR0aD0iMTE1IiBoZWlnaHQ9IjU0IiByeD0iMTIiLz48cmVjdCB4PSIyMjUiIHk9IjM4OCIgd2lkdGg9IjExNSIgaGVpZ2h0PSI1NCIgcng9IjEyIi8+PC9nPgogICAgICA8ZyBjbGFzcz0iY2hpcCI+PHRleHQgeD0iMTI1IiB5PSIyNzQiPuaOoeaOmDwvdGV4dD48dGV4dCB4PSIyNDciIHk9IjI3NCI+44Oq44K144Kk44Kv44OrPC90ZXh0Pjx0ZXh0IHg9IjExMiIgeT0iMzQ4Ij7jgrTjg5/nrrHmvIHjgoo8L3RleHQ+PHRleHQgeD0iMjY1IiB5PSIzNDgiPui+sualrTwvdGV4dD48dGV4dCB4PSIxMzAiIHk9IjQyMiI+6Yej44KKPC90ZXh0Pjx0ZXh0IHg9IjI2NSIgeT0iNDIyIj7ni6nnjJ88L3RleHQ+PC9nPgogICAgICA8dGV4dCB4PSI5MCIgeT0iNDkyIiBjbGFzcz0iYm9keSI+5LiA5Lq644Gn5aeL44KB44KJ44KM44KLPC90ZXh0Pjx0ZXh0IHg9IjkwIiB5PSI1MjIiIGNsYXNzPSJib2R5Ij7loLTmiYDjgajkvZzmpa3mhJ/jgYznlbDjgarjgos8L3RleHQ+PHRleHQgeD0iOTAiIHk9IjU1MiIgY2xhc3M9ImJvZHkiPuePvueJqeOCkuasoeOBruW3peeoi+OBuOa4oeOBmTwvdGV4dD4KICAgICAgPHRleHQgeD0iOTAiIHk9IjYwOCIgY2xhc3M9InNtYWxsIj5jbGllbnTjga9pdGVt5ZCN44O75pWw6YeP44KS5rG644KB44Gq44GEPC90ZXh0PgogICAgPC9nPgogICAgPHBhdGggZD0iTTM3MCA0MDVINDUwIiBzdHJva2U9IiM3ZmM2ZGQiIHN0cm9rZS13aWR0aD0iNCIgbWFya2VyLWVuZD0idXJsKCNhcnJvdykiLz4KICAgIDxnPgogICAgICA8cmVjdCB4PSI0NTAiIHk9IjIyMCIgd2lkdGg9IjIzMCIgaGVpZ2h0PSIzNzAiIHJ4PSIyMiIgZmlsbD0iIzEzMjMxZiIgc3Ryb2tlPSIjNzhkYmE5IiBzdHJva2Utd2lkdGg9IjIiLz4KICAgICAgPHRleHQgeD0iNDgwIiB5PSIyNjciIGNsYXNzPSJwaGFzZSI+MuOAgOe0oOadkDwvdGV4dD48dGV4dCB4PSI0ODAiIHk9IjM0NCIgY2xhc3M9ImNvdW50IiBmaWxsPSIjNzhkYmE5Ij41NjwvdGV4dD48dGV4dCB4PSI0ODAiIHk9IjM3OCIgY2xhc3M9ImJvZHkiPueorumhnuOBrnJhd+e0oOadkDwvdGV4dD4KICAgICAgPHRleHQgeD0iNDgwIiB5PSI0NDAiIGNsYXNzPSJib2R5Ij7ph5HlsZ7jg7vmqLnohILjg7vnuYrntq08L3RleHQ+PHRleHQgeD0iNDgwIiB5PSI0NzAiIGNsYXNzPSJib2R5Ij7msrnohILjg7vlhYXloavmnZDjgarjgak8L3RleHQ+PHRleHQgeD0iNDgwIiB5PSI1MzIiIGNsYXNzPSJzbWFsbCI+5rqA5p2v44Gq44KJ6YOo5YiG5LuY5LiO44Gb44Ga5L+d55WZPC90ZXh0PgogICAgPC9nPgogICAgPHBhdGggZD0iTTY4MCA0MDVINzYwIiBzdHJva2U9IiM3OGRiYTkiIHN0cm9rZS13aWR0aD0iNCIgbWFya2VyLWVuZD0idXJsKCNhcnJvdykiLz4KICAgIDxnPgogICAgICA8cmVjdCB4PSI3NjAiIHk9IjIyMCIgd2lkdGg9IjIzMCIgaGVpZ2h0PSIzNzAiIHJ4PSIyMiIgZmlsbD0iIzI5MjAxNyIgc3Ryb2tlPSIjZjBhODQ4IiBzdHJva2Utd2lkdGg9IjIiLz4KICAgICAgPHRleHQgeD0iNzkwIiB5PSIyNjciIGNsYXNzPSJwaGFzZSI+M+OAgOS4remWk+WKoOW3pTwvdGV4dD48dGV4dCB4PSI3OTAiIHk9IjM0NCIgY2xhc3M9ImNvdW50IiBmaWxsPSIjZjBhODQ4Ij40MTwvdGV4dD48dGV4dCB4PSI3OTAiIHk9IjM3OCIgY2xhc3M9ImJvZHkiPueorumhnuOBruWKoOW3pee0oOadkDwvdGV4dD4KICAgICAgPHRleHQgeD0iNzkwIiB5PSI0NDAiIGNsYXNzPSJib2R5Ij7plovlp4vlj6/og708L3RleHQ+PHRleHQgeD0iNzkwIiB5PSI0NzAiIGNsYXNzPSJib2R5Ij7ntKDmnZDlvoXjgaEgLyDoo73kvZzkuK08L3RleHQ+PHRleHQgeD0iNzkwIiB5PSI1MDAiIGNsYXNzPSJib2R5Ij7lj5flj5blj6/og73jgpLljLrliKU8L3RleHQ+PHRleHQgeD0iNzkwIiB5PSI1NTIiIGNsYXNzPSJzbWFsbCI+5L6d5a2Y6aCG44Gr5qyh44Gu5bel56iL44KS6KGo56S6PC90ZXh0PgogICAgPC9nPgogICAgPHBhdGggZD0iTTk5MCA0MDVIMTA3MCIgc3Ryb2tlPSIjZjBhODQ4IiBzdHJva2Utd2lkdGg9IjQiIG1hcmtlci1lbmQ9InVybCgjYXJyb3cpIi8+CiAgICA8Zz4KICAgICAgPHJlY3QgeD0iMTA3MCIgeT0iMTYwIiB3aWR0aD0iMzEwIiBoZWlnaHQ9IjQ5MCIgcng9IjIyIiBmaWxsPSIjMjUxODE3IiBzdHJva2U9IiNlZjdiNjIiIHN0cm9rZS13aWR0aD0iMiIvPgogICAgICA8dGV4dCB4PSIxMTAwIiB5PSIyMDciIGNsYXNzPSJwaGFzZSI+NOOAgOWujOaIkOmDqOWTgTwvdGV4dD48dGV4dCB4PSIxMTAwIiB5PSIyODIiIGNsYXNzPSJjb3VudCIgZmlsbD0iI2VmN2I2MiI+MTk8L3RleHQ+PHRleHQgeD0iMTEwMCIgeT0iMzE2IiBjbGFzcz0iYm9keSI+56iu6aGe44GL44KJREVW5qSc6Ki844KS6ZaL5aeLPC90ZXh0PgogICAgICA8cmVjdCB4PSIxMTAwIiB5PSIzNTUiIHdpZHRoPSIyNTAiIGhlaWdodD0iNTQiIHJ4PSIxMiIgZmlsbD0iIzMxMWYxZCIvPjx0ZXh0IHg9IjExMjUiIHk9IjM4OSIgY2xhc3M9ImNoaXAiPuiHquWIhuOBrui7iuOBuOWPluOCiuS7mOOBkeOCizwvdGV4dD4KICAgICAgPHJlY3QgeD0iMTEwMCIgeT0iNDI5IiB3aWR0aD0iMjUwIiBoZWlnaHQ9IjU0IiByeD0iMTIiIGZpbGw9IiMzMTFmMWQiLz48dGV4dCB4PSIxMTI1IiB5PSI0NjMiIGNsYXNzPSJjaGlwIj7luILloLTjg7vnm7TmjqXlj5blvJXjgaflo7Ljgos8L3RleHQ+CiAgICAgIDxyZWN0IHg9IjExMDAiIHk9IjUwMyIgd2lkdGg9IjI1MCIgaGVpZ2h0PSI1NCIgcng9IjEyIiBmaWxsPSIjMzExZjFkIi8+PHRleHQgeD0iMTEyNSIgeT0iNTM3IiBjbGFzcz0iY2hpcCI+5L6d6aC844KS5Y+X44GR44Gm5L2c5qWt44GZ44KLPC90ZXh0PgogICAgICA8dGV4dCB4PSIxMTAwIiB5PSI2MDgiIGNsYXNzPSJzbWFsbCI+6KaP5qC85aSWIC8g5qiZ5rqWIC8g6auY5ZOB6LOqPC90ZXh0PgogICAgPC9nPgogICAgPHBhdGggZD0iTTEyMjUgNjUwVjczMkgyMTVWNjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiM3ZmM2ZGQiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWRhc2hhcnJheT0iOCA4IiBtYXJrZXItZW5kPSJ1cmwoI2Fycm93KSIvPgogICAgPHJlY3QgeD0iNDEwIiB5PSI3MDQiIHdpZHRoPSI2MjAiIGhlaWdodD0iODYiIHJ4PSIxNiIgZmlsbD0iIzE1MWMyNSIgc3Ryb2tlPSIjMzQ0MTUzIi8+CiAgICA8dGV4dCB4PSI0NjIiIHk9Ijc0MCIgY2xhc3M9ImJvZHkiPuWjsuiyt+ODu+WPluS7mOODu+a2iOiAl+OBjOasoeOBrumcgOimgeOCkuS9nOOCiuOAgeOBvuOBn+e0oOadkOOCkumbhuOCgeOCi+eQhueUseOBq+OBquOCizwvdGV4dD4KICAgIDx0ZXh0IHg9IjUzOCIgeT0iNzcwIiBjbGFzcz0ic21hbGwiPumAmuiyqOOBoOOBkeOBp+OBquOBj+OAgWl0ZW3jgahwbGF5ZXLplpPjga7kvp3poLzjgpLlvqrnkrDjgZXjgZvjgos8L3RleHQ+CiAgPC9nPgo8L3N2Zz4K" tabindex="0"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="この日に生まれたもの">この日に生まれたもの<a href="https://gta.kogamai.com/blog/vehicle-city-foundation#%E3%81%93%E3%81%AE%E6%97%A5%E3%81%AB%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE" class="hash-link" aria-label="この日に生まれたもの への直接リンク" title="この日に生まれたもの への直接リンク" translate="no">​</a></h2>
<p>車を買う、鍵を持つ、garageへ預ける、走行距離を刻む、整備するという責務を分けながら、同じ車両IDへ結びました。固定式のtuning部品は60種・15の排他categoryを用意し、wheelの外見とtyre性能も別に扱います。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プレイヤーから見える景色">プレイヤーから見える景色<a href="https://gta.kogamai.com/blog/vehicle-city-foundation#%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%8B%E3%82%89%E8%A6%8B%E3%81%88%E3%82%8B%E6%99%AF%E8%89%B2" class="hash-link" aria-label="プレイヤーから見える景色 への直接リンク" title="プレイヤーから見える景色 への直接リンク" translate="no">​</a></h2>
<p>車は移動menuではなく、長く付き合う相棒になります。買ったあとに走り、手入れし、部品を選び、誰かへ作業を頼む余白が生まれました。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="つくり手向けメモ">つくり手向けメモ<a href="https://gta.kogamai.com/blog/vehicle-city-foundation#%E3%81%A4%E3%81%8F%E3%82%8A%E6%89%8B%E5%90%91%E3%81%91%E3%83%A1%E3%83%A2" class="hash-link" aria-label="つくり手向けメモ への直接リンク" title="つくり手向けメモ への直接リンク" translate="no">​</a></h2>
<p>vendor側の機能を全部開けず、販売価格0、shop空、性能変更gate閉鎖から始めました。所有、消費、永続化、実車の安全性を確認する前に魅力的なmenuだけを公開しないためです。</p>
<blockquote>
<p><strong>現在地:</strong> resource統合と自動検査の節目です。実車native auditとplayerによる走行確認を終えるまで販売・tuningの一部はfail closedです。</p>
</blockquote>
<p><a class="" href="https://gta.kogamai.com/blog/preview-before-building">7日目へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/bank-ledger">8日目・第二章へ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>車両</category>
        </item>
        <item>
            <title><![CDATA[街づくり8日目・第二章｜街に銀行をつくる]]></title>
            <link>https://gta.kogamai.com/blog/bank-ledger</link>
            <guid>https://gta.kogamai.com/blog/bank-ledger</guid>
            <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[個人、組織、国庫を一つの複式台帳で結び、安全な入出金と承認の仕組みを作りました。]]></description>
            <content:encoded><![CDATA[<p><img width="1672" height="941" alt="個人と組織が同じ銀行台帳を使う開発イメージ" aria-haspopup="dialog" aria-label="画像「個人と組織が同じ銀行台帳を使う開発イメージ」を拡大表示" class="trigger_KtqA" decoding="async" loading="lazy" role="button" src="https://gta.kogamai.com/assets/images/bank-ledger-scene-09731dbebb586f7264a868caf1dc7688.png" tabindex="0"></p>
<p><strong>2026年8月10日、街づくり8日目・第二章。</strong></p>
<p>車や仕事が生まれると、お金の行き先が必要になります。この日の昼、個人口座、組織口座、国庫を扱うJCT独自の銀行台帳が生まれました。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="この日に生まれたもの">この日に生まれたもの<a href="https://gta.kogamai.com/blog/bank-ledger#%E3%81%93%E3%81%AE%E6%97%A5%E3%81%AB%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE" class="hash-link" aria-label="この日に生まれたもの への直接リンク" title="この日に生まれたもの への直接リンク" translate="no">​</a></h2>
<p><code>kogamai_money</code> は、入金と出金を必ず対になる記録へ残す複式台帳です。同じ依頼が届いても一度だけ処理する冪等key、組織membership、大きな操作の承認hold、誤りを履歴ごと戻すreversalを備えます。</p>
<p>player向けには日本語の銀行UIを用意し、後にPhone、仕事、市場、燃料、車両購入が同じ残高を見るための中心になりました。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プレイヤーから見える景色">プレイヤーから見える景色<a href="https://gta.kogamai.com/blog/bank-ledger#%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%8B%E3%82%89%E8%A6%8B%E3%81%88%E3%82%8B%E6%99%AF%E8%89%B2" class="hash-link" aria-label="プレイヤーから見える景色 への直接リンク" title="プレイヤーから見える景色 への直接リンク" translate="no">​</a></h2>
<p>働いた報酬を受け取り、仲間へ送金し、組織の資金を権限のある人が扱う。どの画面から見ても同じ残高と履歴へたどり着く、街のお金の基準点です。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="つくり手向けメモ">つくり手向けメモ<a href="https://gta.kogamai.com/blog/bank-ledger#%E3%81%A4%E3%81%8F%E3%82%8A%E6%89%8B%E5%90%91%E3%81%91%E3%83%A1%E3%83%A2" class="hash-link" aria-label="つくり手向けメモ への直接リンク" title="つくり手向けメモ への直接リンク" translate="no">​</a></h2>
<p>clientやNUIが送る残高、role、citizen IDを信用せず、server側でactorと口座を再構築します。各resourceがQbox残高を直接変える方式を避け、reason、caller、仕訳を単一authorityへ集めると監査と再送が扱いやすくなります。</p>
<blockquote>
<p><strong>現在地:</strong> 台帳、UI、MariaDB E2Eが実装された日の記録です。公開経済の開始や組織運営の最終ruleを意味しません。</p>
</blockquote>
<p><a class="" href="https://gta.kogamai.com/blog/vehicle-city-foundation">8日目・第一章へ戻る</a> · <a class="" href="https://gta.kogamai.com/blog/admin-control-room">8日目・第三章へ進む</a></p>]]></content:encoded>
            <category>KOGAMAI JUNCTION</category>
            <category>FiveM</category>
            <category>銀行</category>
        </item>
    </channel>
</rss>