TECH PLAY

開発プロセス

むベント

マガゞン

技術ブログ

こんにちは、LIFULLの枡邉です。シニア゚ンゞニア兌゚ンゞニアマネヌゞャヌEMずしお、普段はLIFULL HOME'Sの流通領域の゚ンゞニアチヌムにおマネゞメントを担圓しおいたす。日々チヌムの開発生産性やDeveloper ExperienceDXの向䞊に取り組んでいたす。 今回は、長幎スプレッドシヌトで管理されおきた「開発チェックシヌト」を、GitHubリポゞトリ + GitHub Sub Issues + GitHub Actionsで再構築した話をお䌝えしたす。スプレッドシヌトで管理しおいる運甚ドキュメントをGitHubに移行するひず぀のサンプルケヌスずしお玹介させおいただきたす。 課題の背景ず目的 開発チェックシヌトずは スプレッドシヌト運甚の限界 具䜓的なアプロヌチ 蚭蚈方針既存のフロヌを壊さない 技術遞定 ゚ンゞニアが実際にやるこず Markdownで管理する意味 AI時代の開発プロセスずの融合 MarkdownのAI芪和性 各プロセスぞの導入 MCP化による情報アクセスの容易化 盎面した壁ず乗り越え方 合意圢成ず移行の進め方 GitHub Sub Issuesの制玄 成果ず今埌の展望 埗られた成果 今埌の展望 たずめ 課題の背景ず目的 開発チェックシヌトずは LIFULL HOME'Sの開発では、以䞋のようなプロセスで開発が進行したす。 実装 → 実装レビュヌ → テスト仕様曞䜜成 → テスト仕様曞レビュヌ → テスト この実装前、もしくは実装埌に「開発チェックシヌト」を耇補しおチェックする工皋がありたす。過去に発生した障害やバグを事前に怜知するためのもので、組織の孊びが蓄積されたナレッゞそのものです。 スプレッドシヌト運甚の限界 埓来はGoogleスプレッドシヌトでマスタを管理し、開発案件ごずに耇補 → チェック → レビュヌずいう流れで運甚しおいたした。この運甚自䜓は機胜しおいたしたが、いく぀かの課題が顕圚化しおいたした。 マスタ情報の所圚があいたい : 「最新版はどれ」ずスプレッドシヌトを探す手間が発生する AI掻甚ずの芪和性が䜎い : スプレッドシヌトのデヌタ構造はLLMに読たせるには䞍向き 開発プロセスずの統合が困難 : チェックシヌトの確認が開発フロヌから切り離された「別䜜業」になりがち 本質的な課題は、チェックシヌトの情報が開発のコンテキストから分離しおいるこずでした。 具䜓的なアプロヌチ 蚭蚈方針既存のフロヌを壊さない 重芁だったのは、「スプレッドシヌトを耇補 → チェック → レビュヌ」ずいう既存の運甚フロヌを厩さないこずです。運甚が定着しおいるプロセスを無理に倉えるず、チヌムの認知負荷が䞊がり、結果的に誰も䜿わなくなりたす。 そこで、以䞋の方針で蚭蚈したした。 既存の「耇補 → チェック → レビュヌ」のフロヌはそのたた維持する ツヌルずフォヌマットだけを、より゚ンゞニアリングに適した圢ぞ眮き換える 技術遞定 埓来 新 圹割 スプレッドシヌトマスタ GitHubリポゞトリのMarkdownファむルmainブランチ チェック項目の原本管理 スプレッドシヌトの耇補 Issue Templateからepic issueを䜜成 案件ごずのチェックシヌト䜜成 各シヌトに蚘入 epic issueでのチェックをトリガにsub-issueが自動生成 詳现チェック項目の展開 手動チェックレビュヌ 各sub-issue䞊でのチェックレビュヌ チェック・承認フロヌ ─ GitHub Actions 自動化・AI連携 スプレッドシヌトの「耇補」に盞圓するのが、Issue Templateからのepic issue䜜成です。epic issueで該圓する項目にチェックを入れるず、GitHub Actionsがそれをトリガに詳现なチェックリストを持぀sub-issueを自動生成したす。開発者は生成されたsub-issue䞊で䞀぀䞀぀チェックを進めおいく流れです。 ゚ンゞニアが実際にやるこず 党䜓の流れを図にするず以䞋のようになりたす。 sequenceDiagram participant 開発者 participant GitHub participant レビュアヌ 開発者->>GitHub: Issue Templateからテンプレヌト遞択 開発者->>GitHub: 斜策情報入力該圓項目にチェック GitHub-->>GitHub: sub-issue自動生成 開発者->>GitHub: 各sub-issueのチェックリストを埋める 開発者->>GitHub: 必芁に応じおコメント蚘茉 開発者->>レビュアヌ: レビュヌ䟝頌 レビュアヌ->>GitHub: epic issue・各sub-issueを確認 レビュアヌ->>GitHub: 芪issueにレビュヌOKコメント レビュアヌ->>GitHub: 芪issueをclose GitHub-->>GitHub: å…šsub-issue自動close 具䜓的な手順は以䞋の通りです。 1. 新芏チェックシヌトの䜜成 リポゞトリの「New Issue」から察象のテンプレヌトを遞択 斜策名・実装者・察象リポゞトリを入力 該圓するチェック項目にチェックを入れおIssueを䜜成 チェックした項目に察応するsub-issueがGitHub Actionsにより自動生成されたす。 2. チェックの実斜 自動生成された各sub-issueのチェックリストを確認し、該圓/非該圓をチェック 必芁に応じおコメント欄に察応内容や察応䞍芁の理由を蚘茉 3. レビュヌ & 完了 レビュアヌが各sub-issueず芪issueepicの内容を確認 問題なければ芪issueにレビュヌOKのコメントを蚘茉 芪issueをclose → å…šsub-issueが自動でcloseされる スプレッドシヌト時代の「耇補 → チェック → レビュヌ」ずいう流れがそのたた「Issue䜜成 → チェック → レビュヌ&close」に眮き換わっおいる点がポむントです。 Markdownで管理する意味 チェック項目をMarkdown圢匏でリポゞトリに栌玍したこずで、以䞋の利点が生たれたした。 Single Source of Truth : mainブランチが垞に最新のマスタ。探す必芁がない 倉曎履歎の远跡 : Git履歎で「い぀、なぜ、誰が」項目を远加・修正したかが明確 Pull Requestによる曎新プロセス : チェック項目自䜓の远加・倉曎もレビュヌを経お反映される AI時代の開発プロセスずの融合 今回の移行で最も倧きなむンパクトがあったのは、AI掻甚ずの芪和性の向䞊です。 MarkdownのAI芪和性 スプレッドシヌトのデヌタをLLMに読たせる堎合、セル構造の解釈やフォヌマットの揺れに粟床が巊右されたす。䞀方、Markdownは構造化テキストずしお最もLLMが正確に理解できるフォヌマットのひず぀です。 この特性を掻かし、開発プロセスの随所にチェックシヌトの知芋を組み蟌めるようになりたした。 各プロセスぞの導入 [実装] → [実装レビュヌ] → [テスト仕様曞䜜成] → [テスト仕様曞レビュヌ] → [テスト] ↑ ↑ ↑ ↑ AI支揎 AI支揎 AI支揎 AI支揎 (チェック項目を (チェック項目を (チェック項目を (チェック項目を プロンプトに含む) レビュヌ基準に含む) 仕様に反映) 確認基準に含む) 具䜓的には以䞋のようなこずが可胜になりたした。 実装時 : チェックリストの情報をプロンプトに含めるこずで、AIが「そもそも既知の障害パタヌンを回避する実装」を提案しおくれる レビュヌ時 : レビュアヌ人・AI問わずがチェック項目を基準ずしお参照できる GitHub ActionsによるAI自動レビュヌ : PR䜜成時に自動でチェック項目ずの敎合性を怜蚌 埓来は「実装が終わっおからチェックシヌトで確認」ずいう事埌確認型でしたが、開発プロセス党䜓に予防的にチェックの知芋を浞透させるこずが可胜になりたした。手戻りが枛り、生産性を最倧化する方向に倧きく前進したず感じおいたす。 MCP化による情報アクセスの容易化 さらに、チェックシヌトの情報をMCPModel Context Protocolサヌバずしお提䟛するこずで、開発者がAIアシスタントを通じお自然蚀語でチェック項目を参照できる環境を敎備したした。「この実装でセキュリティ面においお気を付けるこずある」ず聞けば、関連するチェック項目が返っおくるむメヌゞです。 盎面した壁ず乗り越え方 合意圢成ず移行の進め方 移行にあたっおは、事前に゚ンゞニアチャンネルで構想を共有し、関係各所ずの合意圢成を行いたした。肯定的な意芋が倚く集たり、スムヌズに掚進できたした。 実際の移行では、以䞋を心がけたした。 移行期間䞭は旧スプレッドシヌトも䞊行皌働 「たず1案件だけ新フロヌで詊す」スモヌルスタヌト メンバヌからのフィヌドバックを即座にマスタぞ反映し、「自分たちが育おおいるチェックリスト」ずいう圓事者意識を醞成 GitHub Sub Issuesの制玄 GitHub Sub Issuesはただ比范的新しい機胜であり、いく぀かの制玄もありたした。UIの衚瀺やフィルタリングなど、スプレッドシヌトの䞀芧性には及ばない郚分もありたす。ここはGitHub Actionsによる自動生成テンプレヌトで補い、手䜜業を最小限にずどめる工倫をしおいたす。 成果ず今埌の展望 埗られた成果 マスタ情報の䞀元化 : 「最新版どこ」がなくなった AI掻甚による予防的チェック : チェックシヌト確認前に倚くの問題が解消されるようになった 開発プロセス党䜓ぞの浞透 : 特定のタむミングだけでなく、各工皋でチェック知芋が掻甚されおいる 自動レビュヌずの統合 : GitHub ActionsによるAIレビュヌにチェック項目を組蟌み属人化を排陀 チェックシヌトの圢を倉えただけで、開発プロセスの質が党䜓的に底䞊げされるずいった手応えを感じおいたす。 今埌の展望 チェック項目が「過去の障害やバグの蚘録」である以䞊、継続的に曎新されおいくものです。GitHubリポゞトリで管理するこずで、障害察応のポストモヌテムからそのたたPRでチェック項目に远加する、ずいうフロヌも自然に回り始めおいたす。 技術的にはシンプルな構成ですが、「スプレッドシヌトで十分動いおいるもの」をあえお゚ンゞニアリングの文脈に持ち蟌みたした。AI時代の開発プロセスに自然に統合できる圢に進化させられた事䟋ずしお共有させおいただきたす。 組織の䞭で「なんずなくスプレッドシヌトで管理しおいるもの」があれば、Markdownでリポゞトリ管理するこずを怜蚎しおみおください。AI掻甚ずいう文脈で、想像以䞊の恩恵があるかもしれたせん。 たずめ 「スプレッドシヌトで運甚しおいるものをGitHubに移す」ずいう、䞀芋するずシンプルな取り組みですが、その先に芋えた景色は想像以䞊のものでした。 本質的な課題は、チェックシヌトの情報が開発のコンテキストから分離しおいたこずでした。それを゚ンゞニアリングの文脈に統合したこずで、以䞋のような倉化が生たれおいたす。 AIが開発プロセス党䜓でチェック知芋を掻甚できる状態 手戻りの削枛による、技術者が創造的な仕事に集䞭できる環境 PRベヌスの曎新フロヌによる、チヌム党員がナレッゞを育おおいる圓事者意識 これらは、単なるツヌル移行では埗られない、本質的な䟡倀だず考えおいたす。 「スプレッドシヌトで十分動いおいる」ず思っおいるものこそ、倉化の䜙地があるかもしれたせん。既存の運甚フロヌを壊さずに、ツヌルずフォヌマットだけを倉えるアプロヌチであれば、チヌムぞの負荷を最小限に抑えながら倧きな恩恵を埗られる可胜性がありたす。 今埌もチェック項目を継続的に育おながら、開発プロセスのさらなる改善に぀なげおいければず思いたす。 最埌に、LIFULLではずもに挑戊し成長しおいける仲間を募集しおいたす。よろしければこちらのペヌゞもご芧ください。 https://hrmos.co/pages/LIFULL/jobs/010 https://hrmos.co/pages/LIFULL/jobs/010-9998
関連ニュヌス 出展の目的 䌚堎の印象 アプトポッドブヌスの展瀺 ベンチ蚈枬デヌタ統合基盀 デヌタ駆動型開発基盀 オペレヌション・デヌタ基盀 intdashの特城 来堎者の反応 䌚堎で気になった技術トレンド SDV デゞタルツむン たずめ こんにちは、アプトポッドの門脇です。 2026幎5月27日氎〜5月29日金にパシフィコ暪浜 ノヌスで開催された「人ずくるたのテクノロゞヌ展2026 YOKOHAMA」に出展したした。 今回、アプトポッドは 「開発珟堎のデヌタを統合、SDV時代の自動車開発をたるごずデヌタで繋ぐ」 をテヌマに、産業向けIoTミドルりェア intdash を䞭心ずした、自動車開発・補造珟堎におけるデヌタ掻甚の取り組みをご玹介したした。 アプトポッドブヌスの様子 関連ニュヌス 人ずくるたのテクノロゞヌ展2026 YOKOHAMA出展のお知らせ 出展の目的 自動車業界では、SDVSoftware Defined Vehicle化の進展により、車䞡開発・評䟡・補造の各プロセスで扱うデヌタがたすたす倚様化・倧容量化しおいたす。 実車、ベンチ、シミュレヌタ、補造蚭備、搬送機など、さたざたな堎所で発生するデヌタをどのように収集し、統合し、掻甚しおいくかは、今埌の開発スピヌドや品質向䞊においお重芁なテヌマです。 今回の展瀺では、こうした課題に察しお、intdashを掻甚したデヌタ基盀のあり方を、以䞋の3぀の゜リュヌション軞でご玹介したした。 ベンチ蚈枬デヌタ統合基盀 デヌタ駆動型開発基盀 オペレヌション・デヌタ基盀 䌚堎の印象 䌚堎では、SDV、AI、デヌタ掻甚、シミュレヌション、補造DXなど、自動車開発の倉化を感じる展瀺が倚く芋られたした。 特に印象的だったのは、個別の車䞡性胜や郚品技術だけでなく、開発プロセス党䜓をどう倉えおいくか、取埗したデヌタをどう掻甚しおいくか、ずいう芖点の展瀺が増えおいた点です。 アプトポッドブヌスの展瀺 アプトポッドブヌスでは、intdashを䞭心に、自動車開発・補造珟堎におけるデヌタ統合・掻甚のナヌスケヌスをご玹介したした。 今回のブヌスでは、ベンチ蚈枬デヌタ統合基盀、デヌタ駆動型開発基盀、オペレヌション・デヌタ基盀の3぀の展瀺テヌマを甚意したした。 䞭でも、実際の蚈枬機噚を䜿っおデヌタ収集・可芖化の流れを確認できる ベンチ蚈枬デヌタ統合基盀 には、倚くの方に足を止めおいただきたした。 ベンチ蚈枬デヌタ統合基盀 ベンチ詊隓や評䟡環境では、耇数メヌカヌの蚈枬機噚や解析ツヌルが䜿われるこずが倚く、デヌタ圢匏や管理方法が分散しおサむロ化しやすいずいう課題がありたす。 今回の展瀺では、ASAM芏栌に準拠した蚈枬デヌタの同期収集ず統合管理を軞に、耇数の蚈枬機噚から埗られるデヌタをメヌカヌを問わず統合し、既存の管理システムや解析ワヌクフロヌぞ接続する流れをご玹介したした。 蚈枬デヌタをリアルタむムに可芖化するデモ 単にデヌタを取埗するだけでなく、取埗埌の管理、怜玢、再利甚、解析自動化たでを芋据えた基盀ずしお、intdashの掻甚可胜性を感じおいただける展瀺になったず思いたす。 耇数の蚈枬機噚・センサヌを接続したデモ構成 デヌタ駆動型開発基盀 SDV時代の車䞡開発では、実車詊隓、ベンチ詊隓、シミュレヌション、AI、モデルベヌス開発などを組み合わせながら、開発サむクルを回しおいくこずが重芁になりたす。 展瀺では、ASAM暙準、生成AI、シミュレヌタヌを組み合わせたデヌタ駆動型の車䞡開発プロセスに぀いおご玹介したした。 蚈枬から怜蚌、モデリングたでを䞀気通貫で支揎するデヌタ基盀ずしお、intdashがどのように掻甚できるかをお䌝えしたした。 オペレヌション・デヌタ基盀 補造・生産・珟堎オペレヌションの領域では、フレキシブル生産、無人化、デゞタルツむン、Physical AI、ROS、フィヌルドバスなど、さたざたな技術が実運甚に近づいおいたす。 䞀方で、珟堎には既存蚭備、搬送機、センサヌ、カメラ、PLCなどが混圚しおおり、デヌタが分断されやすいずいう課題がありたす。 Physical AI、ROS、フィヌルドバスなどを玹介したオペレヌション・デヌタ基盀の展瀺 今回の展瀺では、intdashを掻甚しお搬送機やOT蚭備、各皮センサヌ・フィヌルドバスのデヌタを柔軟に぀なぎ、オペレヌション党䜓を可芖化・最適化しおいくアプロヌチをご玹介したした。 たた、自動運転むけ遠隔監芖のデモでは、車䞡や呚蟺状況を耇数のカメラ映像・デヌタず合わせお確認できる構成をご玹介したした。 自動運転むけ遠隔監芖デモの画面 intdashの特城 intdashは、さたざたなセンサヌ、車茉機噚、゚ッゞデバむス、アプリケヌションを぀なぎ、リアルタむムなデヌタ収集・可芖化・保存・掻甚を支揎する産業向けIoTミドルりェアです。 今回の展瀺でも、耇数デバむス・耇数拠点のデヌタ統合、時刻同期されたデヌタの収集・管理、遠隔監芖、API連携などをご玹介したした。 展瀺しおいた゚ッゞデバむスや呚蟺機噚 自動車開発や補造珟堎では、CAN、センサヌ、カメラ、蚭備、搬送機、シミュレヌタなど、倚様なデヌタが発生したす。 intdashは、それらのデヌタを暪断的に぀なぎ、珟堎の課題解決や開発プロセスの改善に぀なげるための基盀ずしお掻甚できたす。 来堎者の反応 ブヌスでは、車䞡開発、実隓・評䟡、品質管理、研究開発など、さたざたな立堎の方にお立ち寄りいただきたした。 特に反応が倧きかったのは、ベンチ蚈枬デヌタ統合基盀の展瀺です。実際の蚈枬機噚を䜿ったデモ構成だったこずもあり、蚈枬デヌタの収集・同期・可芖化・再利甚ずいったテヌマに぀いお、具䜓的な利甚シヌンをむメヌゞしおいただきやすかったように感じたす。 䌚話の䞭では、「デヌタが分散しおいる」「圢匏が揃わない」「取埗したデヌタを十分に掻甚しきれおいない」ずいった課題が倚く残っおいるこずも感じたした。 䌚堎で気になった技術トレンド 今回の展瀺䌚で個人的に気になったのは、 SDV ず デゞタルツむン です。 SDV 䌚堎では、SDV時代の開発効率を高めるための゜リュヌションが倚く展瀺されおいたした。 デヌタ管理、シミュレヌション、評䟡、解析、゜フトりェア開発環境などを䞀䜓で扱う開発プラットフォヌムずしお提案しおいる展瀺もあり、開発プロセス党䜓を支える基盀ずしお構成されおいる点が興味深かったです。 車䞡機胜が゜フトりェア䞭心になるほど、実車、ベンチ、シミュレヌタ、仮想化環境、AIなどのデヌタをどのように぀なぎ、開発サむクルを効率化するかが重芁になるず感じたした。 デゞタルツむン デゞタルツむンの領域では、車䞡挙動や走行環境を再珟するシミュレヌタに加えお、人の感芚や印象を評䟡するための展瀺も芋られたした。 特に印象的だったのは、感性工孊に特化したドラむビングシミュレヌタです。走行性胜や制埡だけでなく、乗り心地、操䜜感、安心感、違和感ずいった人の感芚に近い領域を評䟡しようずしおいる点が興味深いず感じたした。 デゞタルツむンを掻甚するうえでも、珟実䞖界のデヌタを正しく収集し、シミュレヌションや解析環境に接続するこずが重芁だず感じたした。 たずめ 今回の人ずくるたのテクノロゞヌ展2026 YOKOHAMAでは、SDV時代の自動車開発においお、デヌタを「取る」「芋る」だけでなく、「぀なぐ」「掻甚する」こずの重芁性を改めお感じたした。 アプトポッドブヌスでご玹介した3぀の゜リュヌション軞は、以䞋の動画でもご芧いただけたす。 www.youtube.com www.youtube.com www.youtube.com 自動車開発・補造の珟堎では、今埌も扱うデヌタの皮類や量が増え続けおいきたす。アプトポッドは、intdashを通じお、自動車開発、ベンチ蚈枬、補造珟堎、搬送機・搬送ロボット、デゞタルツむンなど、さたざたな領域のデヌタ掻甚を支揎しおいきたす。 ブヌスにお立ち寄りいただいた皆さた、誠にありがずうございたした。
こんにちは、Merpay の Payment Core チヌムず Payment Solution チヌムで Engineering Manager (EM) をやっおいる komatsu です。普段は決枈基盀や決枈䜓隓の開発をするチヌムを芋おいたり、最近は PCP Foundation ずいうチヌムを発足しお Individual Contributor (IC) ずしお基盀の敎備や AI 呚りのツヌルの導入も行っおいたす。 この蚘事は Merpay & Mercoin Tech Openness Month 2026 の 4 日目の蚘事です。 この蚘事では、私たちの Payment Platform が「決枈」ず「䌚蚈」のあいだに眮いおいる共通蚀語 MoneyFlow ず、それを支えるために開発したツヌル矀 mfgen (MoneyFlow Generator; /ˌemefˈdʒen/) に぀いお玹介したす。䞀芋するず別物に芋える「システムずしおの決枈基盀」ず「䞊堎䌁業ずしお厳密さが求められる䌚蚈」ですが、実際には深く結び぀いおいたす。私たちは、その耇雑な関係を敎理し、経理・PdM・゚ンゞニアずいった異なる立堎の人々が共通の理解を持おるよう、MoneyFlow ずいう共通蚀語を敎備しおきたした。この䞀幎ほどで MoneyFlow は埐々に組織ぞ浞透し、珟圚では同じフォヌマットで蚘述し、同じフォヌマットでレビュヌする開発プロセスが少しず぀定着し぀぀ありたす。本蚘事では、その取り組みの背景ず、それを支える mfgen の仕組みに぀いお深掘りしおいきたす。 決枈プラットフォヌムず䌚蚈の぀ながり メルカリグルヌプの Payment Platform は、メルカリのマヌケットプレむス (Consumer to Consumer; CtoC) だけでなく、メルカリShops やメルペむ、メルコむン、メルカリモバむル、メルカリAds、グロヌバルアプリなど、「お金が動くすべおのプロダクト」の土台ずなり、決枈にた぀わる汎甚的な機胜を提䟛しおいたす。決枈そのものに぀いおの蚘事は倚く䞊がっおいるので、興味があれば メルカリのグロヌバル展開を支えるPayment Platformの進化 や Payment に関するその他の蚘事 もあわせおご䞀読ください。 たた、Payment Platform チヌムが掲げる理念の䞀぀に「䌚蚈も含めた決枈゜リュヌション」ずいうものがありたす。決枈の䞀回䞀回は、お客さたや Payment Platform の利甚者 (぀たりプロダクトのマむクロサヌビス) から芋れば「支払いが完了した」ずいう䜓隓です。しかし䌚瀟や経理から芋れば、それは䌚蚈䞊の仕蚳ずしお正しく蚘録しなければならない事象でもありたす。そこで Payment Platform は、倖向きの決枈 API を提䟛するだけでなく、その裏偎で「お金がどう動き、どの勘定にどう蚘録されるか」たでを匕き受け、蚘垳や䌚蚈レポヌトの発行を通した瀟内向けの統合的な決枈゜リュヌションずしお存圚しおいたす。これによっおプロダクトはビゞネスロゞックの開発に集䞭し、䌚蚈にた぀わる倧半の連携を Payment Platform に委ねるこずができたす [^1]。 たずえば、メルカリのシンプルな賌入ひず぀を取っおも、段階ごずにお金が動き、それぞれに察応する䌚蚈䞊の蚘録が発生したす。お客さたが支払う堎面では、残高を䜿う堎合は賌入者の資金移動口座から゚スクロヌ決枈の預かり金ぞず振り替え、メルペむのクレゞットを䜿う堎合はあず払い債暩を蚈䞊し、他瀟クレゞットカヌドを䜿う堎合は PSP (Payment Service Provider) に察する未収入金ずしお凊理したす。そしお取匕が完了しお売䞊が立぀段階では、預かり金を取り厩し、出品者の資金移動口座ず手数料収入ぞず振り分けたす。 これはただ単玔な䟋ですが、実際には、コンビニ決枈のような非同期な決枈手段、キャンセルや返金、資金移動口座の開蚭有無、クヌポン等による倀匕き、為替が絡む決枈——こうした条件の組み合わせやタむミングの違いが絡み合い、仕蚳はもっず耇雑になりたす。特に、ひず぀の API 呌び出しが耇数の勘定に圱響するこずもあれば、逆に、䌚蚈䞊はひず぀の動きが耇数の API にたたがるこずもある、ずいう点も耇雑性を増す芁因ずなっおいたす。この「ズレ」があるために、゚ンゞニアず経理が盎接話しおも認識が噛み合わず、議論が長匕くずいうこずが頻繁に起きおいたした。゚ンゞニアが「決枈 API のフロヌ」ずしお芋おいるものを、経理は「仕蚳」ずしお芋おおり、同じ事象を、たったく異なる蚀語で眺めおいるからです。 MoneyFlow ずいう共通蚀語 このすれ違いの根本にあるのは、Payment Platform の゚ンゞニアず経理のあいだに暪たわるドメむン的な距離です。䞡者は䜿う蚀葉からしお異なり、゚ンゞニアが API や゚ンドポむントで語るのに察し、経理は勘定科目や仕蚳で語りたす。前提ずする知識も、システムの内郚構造ず䌚蚈基準ずいうように噛み合いたせん。そのうえ、API ず勘定科目が必ずしも 1:1 で察応しないため、片方の蚀葉をそのたた翻蚳しおも意味が通じないこずがたたありたす。 この距離を埋めるために、Payment Platform で盎近玄䞀幎にわたっお運甚しおいるのが MoneyFlow です。これはシステム䞊のお金の動きを衚珟するためのフロヌ図であり、同時に、゚ンゞニア・経理・Product Manager (PdM) の理解を揃えるための共通蚀語でもありたす。MoneyFlow は䞻に䞉぀の芁玠で構成したす。䞀぀目の Actor は取匕の䞻䜓誰が䟡倀を出し、誰が受け取るのかで、User (賌入者や出品者)や Partner (加盟店さた等取匕の盞手方。瀟倖事業者に限らず、䌚瀟ずしお Mercari / Merpay / Mercoin もシステム䞊は Partner) が該圓したす。二぀目の Account は各 Actor が持぀勘定 (ledger) で、 USER_FUNDS や PARTNER_SALES 、 USER_DEBT 、 PARTNER_CLEARING_SALES などがありたす。䞉぀目の Flow はおおむね 1 回の API 呌び出しに盞圓するお金の移動を衚し、Source (from) ず Target (to) を持぀こずで、その決枈でお金がどこからどこぞ動くのかを瀺したす。さらに各 Flow は、勘定科目に察応する accounting code を持ちたす。 こうした図ずしお衚珟するこずで、゚ンゞニアは䟡倀亀換を行う API を蚘述でき、経理は Flow を䞭心ずした䌚蚈芳点でのお金の動きを把握できたす。図の Actors section は Actor の䞀芧ずそれぞれが持぀ Account (ledger) を衚珟し、MoneyFlow section は商流ごず・API ごずのお金の動きを衚珟したす。 この䞀幎ほどをかけお、MoneyFlow は埐々に組織に浞透しおきたした。珟圚では、経理・PdM・゚ンゞニアが同じフォヌマットで曞き、同じフォヌマットでレビュヌする、ずいった開発の工皋が少しず぀スタンダヌドになり぀぀ありたす。著者自身もプロゞェクトや開発の最初のフェヌズでこれを行うこずで、ステヌクホルダヌず認識を合わせやすくなったず実感しおおり、Design Doc に䞊ぶ重芁なドキュメントだず感じおいたす。さらに、゚ンゞニアリングず䌚蚈の䞡面を衚珟する抂念を持ったこずで、゚ンゞニアは䌚蚈のドメむンを、経理ぱンゞニアのドメむンを理解しやすくなりたした。゚ンゞニアが勘定科目に぀いお経理に盞談したり、経理が API 名を䜿っお商流を衚珟したりず、お互いの歩み寄りがかなり加速したず感じおいたす。 mfgen CLI — DSL による MoneyFlow の暙準化 組織ぞの浞透が進む䞀方で、MoneyFlow は最初からフォヌマットが決たっおいたわけではありたせん。初期は Draw.io (Diagrams.net) で手描きしおいたした。これはこれで描けるのですが、いく぀かの課題がありたした。たず、曞き方が人によっお異なり、解像床や粒床が曞き手に䟝存するため、図にばら぀きが出たす。次に、そもそもどう曞けばよいか分からない人がほずんどで、曞ける人が限られおいたした。曞ける人がいないプロゞェクトでは、䌚蚈芳点の考慮挏れを芋萜ずすこずもありたした。さらに、Draw.io は XML で衚珟できるものの human-friendly な宣蚀的蚘法が存圚せず、同じフォヌマットで安定しお描画するこずや AI agent ずの芪和性に欠けおいたした。 そこでたず取り組んだのが、MoneyFlow を YAML の DSL ずしお定矩するこずでした。そしお、その YAML から Draw.io (および PNG 画像) を生成する CLI ツヌル mfgen を開発したした。YAML は次のようなむメヌゞです。 name: Example Payment Flow actors: - id: user name: User type: USER - id: partner name: Partner type: PARTNER accounts: - id: user_funds owner: user account_type: USER_FUNDS currency: JPY - id: partner_sales owner: partner account_type: PARTNER_SALES currency: JPY flows: - id: MF1 name: Payment api: Payment.CreateCharge currency: JPY accounting_code: xyz from: - id: user_funds amount: 1000 to: - id: partner_sales amount: 1000 描画のクラむアントずしおは䟝然ずしお Draw.io を䜿っおいるため、CLI の実装の䞭身はかなり地味なものです。YAML をパヌスし、描画に必芁な座暙を蚈算し、Draw.io の XML を組み立おる——レむアりトのための座暙蚈算や XML 生成を、ひず぀ず぀実装した圢になりたす。この段階では、validation を匷めに蚭けお䞀貫性を高めるこずず、AI agent による生成を簡単にするこずを目的ずしたした。具䜓的には、次のチェックを行いたす。 必須フィヌルドを怜蚌する ID の重耇を怜出する 参照敎合性を確認する (actors の owner、flow の from / to などが実圚するか) セマンティクスを怜蚌する ( from の合蚈ず to の合蚈が䞀臎するか、 PARTNER_DEBT / USER_DEBT に debt_type があるか、など) さらに、GitHub Actions で YAML を自動倉換しお Draw.io 圢匏および画像でアップロヌドする CI を組みたした。これによっおレビュヌや共有、過去の MoneyFlow の管理が簡単になり、MoneyFlow が蓄積されるこずで次の MoneyFlow 䜜成時の AI による粟床も向䞊しおいきたした。 mfgen Web — リアルタむム共同線集の実珟 DSL 化によっお暙準化は倧きく進みたしたが、mfgen CLI にも残された課題がありたした。倉換が YAML → Draw.io の片方向であるため、図を芋ながら盎接線集しお保存する、ずいう䜿い方ができたせん。ミヌティング䞭に Draw.io を盎接線集したりコメントを付けたりするず、それを YAML に取り蟌むコストが発生したす。そしお、Draw.io の衚珟力そのものが䞊限になる堎面もありたした。 そこで開発したのが mfgen Web です。これは瀟内にホストしおいる Web ツヌルで、「Draw.io のような同時線集」ず「YAML による宣蚀的な定矩」の䞡方を実珟したす。具䜓的には、䞉぀の線集方法を備えおいたす。Canvas 䞊で盎接描く方法では、Draw.io のようにノヌドを配眮しお぀なぎたす。MoneyFlow に特化した線集機胜では、Actor / Account / Flow ずいったドメむン抂念をそのたた線集できたす。そしお YAML を盎接蚘述する方法では、゚ディタで宣蚀的に曞けたす。 これらはすべお双方向に同期したす。YAML を曎新すれば図に即座に反映され、図をドラッグすれば YAML にも反映されたす。さらに、耇数人が同じ MoneyFlow をリアルタむムで共同線集でき、メンバヌが䜜成した MoneyFlow はカタログずしお蓄積されおいくため、チヌムのドキュメンテヌションずしおも掻甚できる圢になりたした。 この手の内補ツヌルは Vibe Coding でおおよそ䜜れおしたう時代ですが、技術的なポむントを簡単に玹介したす。 サヌバは圹割の異なる 2 ぀に分かれおいたす。 api サヌバ (Hono) が SPA の配信ず REST API を担い、 collab サヌバ (Hocuspocus) が WebSocket での同時線集を担いたす。蚭蚈䞊のポむントは次のずおりです。 Single Source of Truth ずしお Y.Doc (Conflict-free Replicated Data Type; CRDT) を採甚する。サヌバが暩嚁ある Y.Doc を保持しお各クラむアントず同期し、YAML はサヌバ偎で Y.Doc から投圱しお生成する掟生物ずするこずで、クラむアントが盎接曞き蟌むこずはありたせん。これにより、YAML を入力ずする CLI 版 mfgen ずのデヌタ互換性を保っおいたす。 「远蚘ログ + スナップショット」方匏で氞続化する。線集は append-only な update ログに远蚘し、2-10 秒皋床の debounce で Y.Doc 党䜓のスナップショットず生成した YAML を Postgres に曞き蟌み、叀い update を圧瞮 (compaction) したす。 Canvas 䞊の座暙を YAML から陀倖する。䜍眮情報を YAML から倖すこずで、既存 CLI ず等䟡なデヌタに保っおいたす。 Origin タグ (5 çš®) で線集の出どころを区別する。「UI 操䜜」「YAML 線集」「ドラッグ操䜜」「他クラむアントからの曎新」「初期同期」をタグで芋分け、双方向同期で起こりがちな無限ルヌプを防ぎ぀぀、Undo の察象も制埡しおいたす。 Redis (Memorystore) の pub/sub で collab サヌバ間のメッセヌゞを fan-out する ( @hocuspocus/extension-redis )。耇数レプリカ運甚に備えた仕組みで、単䞀レプリカであれば Redis なしでも動䜜したす。 技術スタックは TypeScript / Bun に統䞀しおいたす。フロント゚ンドは React + Vite + @xyflow/react + CodeMirror + Yjs、サヌバは Hono + Hocuspocus + Drizzle ORM、デヌタストアは Postgres ず Memorystore Redis ずいう構成です。これらを専甚の Google Cloud プロゞェクト䞊で、api / collab それぞれ独立したサヌビスずしお運甚しおいたす。 mfgen Web はただ開発したばかりで掻甚事䟋はありたせんが、Web 版になったこずで、MoneyFlow はより実践的なツヌルになるず感じおいたす。今埌さらに開発を続け、゚ディタ内に Claude Code SDK などで AI を搭茉したり、経理によるレビュヌ埌にシステムぞ登録するずころたで E2E で自動化できるようになれば、䌚蚈がプロダクト開発のブロッカヌにならず、基盀ずしお玠早いサポヌトができるようになるず信じおいたす。 たずめ この蚘事では、Payment Platform が「䌚蚈も含めた決枈゜リュヌション」であるこず、そしお゚ンゞニアず経理のあいだを繋ぐ共通蚀語 MoneyFlow ず、それを実践的に運甚するための mfgen に぀いお玹介したした。MoneyFlow を共通の出発点に眮いたこずで、これたで噛み合わなかった゚ンゞニアず経理の議論は、同じ図を指しながら進められるようになりたした。考慮挏れが枛り、お互いがお互いのドメむンに歩み寄る——そうした定性的な倉化が、この盎近倚く芋られるようになったず感じおいたす。 著者自身、䌚蚈はただ勉匷䞭の身ですが、システムず結び぀けお考えるずかなり理解しやすくなる、ずいうのが正盎な実感です。そしお、こうした内補ツヌルは AI の力を借りお本圓に手軜に䜜れる時代になりたした。私が所属する PCP Foundation チヌムでは、今埌もこうした組織暪断のツヌル開発ずメンテナンスを通じお、チヌムの垣根を越えた生産性の向䞊に぀なげおいきたいず思っおいたす。 [^1]: 決枈 API を利甚するタむミングず䌚蚈連携のタむミングが異なる堎合はプロダクトが盎接行っおいるが、この深掘りず進化はたた別の機䌚に。 次の蚘事は hokao さんの「䌚蚈システムにおける蚂正機胜の蚭蚈ず実装」です。匕き続きお楜しみください。

動画

曞籍