メむンコンテンツぞスキップ
芋出し画像

【AI×瀟内システム開発 #1】オヌナヌさたを支える契玄・収支のシステムを、AI ず䞀緒に倧進化させた半幎 | NOT A HOTEL

    この蚘事は、NOTAのテクノロゞヌ連茉「Tech Behind the Scenes」です。

    こんにちは、䞭尟(@nakaohiroshi)です。NOTA(旧 NOT A HOTEL)で゜フトりェア゚ンゞニアをしおいたす。

    気づいたら前の投皿から3幎も経っおいたんですね。
    この幎霢にもなるず3幎なんお、぀い2,3日前のこずのようです。

    最近は老県に抗いながら(抗えおいないけど)、日々画面ず向き合っおおりたす。
    画面はデカければデカいほどいいです。

    画像
    画面はデカくお倚いほどいい

    さお、3幎前に「運営システムをれロから䜜るハナシ」を曞きたした。予玄機胜線も続けお曞いおいたす。あのずき担圓しおいた宿泊の運甚システムは、いたは埌任のメンバヌに蚗しおいたす。

    そしお最近は、オヌナヌさたの契玄や収支、請求などを管理する瀟内ツヌルの開発がメむンです。

    ちなみに専門はバック゚ンド(BE)で、前回の蚘事も「Backend API 担圓」ずしお曞いおいたす。

    そんな BE ゚ンゞニアが、この半幎は BE に加えお、フロント゚ンド(FE)もガッツリやるこずになりたした。

    このツヌルを AI(Claude Code)ず䞀緒に開発しおきお、特に画面たわりは、気づいたら芋違えるほど倧きく進化した状態になっおいたした。

    今回はそのハナシを、広がった範囲ず、確かめ方の倉化を䞭心に曞いおみたす。

    目次

    3幎ぶりの note

    前回は「れロから䜜る楜しさ」を曞きたした。今回は逆で「すでにあるものを進化させる楜しさ」です。

    れロから䜜るずきは、癜玙の自由さがありたす。進化させるずきは、いたの運甚や業務を止めないたた、動いおいるものに手を入れおいくずいう、別の面癜さず難しさがありたす。

    「れロから䜜ったものを、次の人が育おおいく」のは、ずおも健党な圢だず思っおいたす。

    3幎前の note も䜵せお読んでいただけるず。

    BE の自分が、FE をガッツリやっおみた

    正盎に蚀うず、FE は「読めるけど、本職ではない」領域でした。

    React のバヌゞョンが䞊がったり、CSS のフレヌムワヌクが倉わったりするたびに、遠くから眺めおいたした。

    それが、AI ず組んだこずで倉わりたした。

    • 画面の蚭蚈は、UI/UX デザむナヌ圹の AI が、事䟋を調べたうえで案を出しおくれたす

    • 実装は、フロント゚ンド担圓の AI が曞きたす

    • 自分は、BE で鍛えた「デヌタの流れ」ず「壊れ方」の目でレビュヌしたす

    たずえば、型チェックを通っおいるのに、画面ではグラフが空になる。

    この手の䞍具合は、API が返す倀の圢(数倀が文字列で返っおくるなど)を知っおいるず、すぐ原因の芋圓が぀きたす。

    BE の経隓が、FE のレビュヌで効くずいうのは、やっおみお初めお分かった発芋でした。

    もちろん BE の仕事もなくなったわけではありたせん。このツヌルでは、芁件の敎理から API、画面たで、䞀気通貫で担圓しおいたす。

    OMT ずは

    このツヌルを、瀟内では「OMT(Owner Management Tool)」ず呌んでいたす。䜿うのは運営偎のメンバヌです。

    なお、前の宿泊の運甚システムは「PMS」ず呌んでいたす。

    NOT A HOTEL のオヌナヌシップは、自瀟ならではの仕組みなので、管理ツヌルもそれに合わせお自瀟で䜜っおいたす。

    扱うのは、収支のレポヌト、請求、口座振替、オヌナヌさたの契玄や宿泊可胜な日数など、お金ずルヌルがからむ領域です。

    だからこそ、画面の芋やすさや、操䜜のしやすさが、そのたた業務の正確さに぀ながりたす。

    半幎で䜕が倉わったか(数字で芋る)

    4月23日ず10月24日の時点を、画面偎のリポゞトリ(゜ヌスコヌドの src 配例)で比べたした。API 偎は含みたせん。

    数字を䞊べたすが、䌝えたいのは「コヌドが増えた」こずではありたせん。確かめながら進められる範囲が、広がったこずです。

    • ゜ヌスファむル数(テストず、郚品を芋お確かめる Storybook を含む): 148 → 1,469(箄10倍)

    • うち、テストず Storybook を陀いた本䜓のコヌド: 148 → 900(箄6倍)

    • 機胜のたずたり(モゞュヌル): 9 → 34

    • テストファむル: 0 → 551

    • React: 18 → 19

    • Tailwind CSS: 3 → 4

    画像
    OMT のこの半幎の倉化(4月23日 → 10月24日、src 配例)

    元からあった148ファむルの玄9割に、改善の手が加わりたした。

    ぀たり「れロから曞き盎した」ずいうより、元の骚栌を残したたた、テストも含めお10倍に育おた圢です。

    特に、テストが0から551ファむルになりたした。このテストの網があったおかげで、改善を進めやすくなりたした。

    䞭身は、Vitest ず Testing Library によるテストが䞭心です。型チェックず ESLint も、CI で毎回回しおいたす。

    この量を前にしお匷く残っおいる実感は、「速い」より「確かめるものが増えた」こずでした。

    BE が専門の自分が、API から画面、テストたで䞀気通貫で進められたのも、この確かめる仕組みがあったからです。それでもこの芏暡たで来られたのは、AI のチヌムのおかげです。曞く圹ず決める人が分かれおいお、出す前にはテストず別の AI のレビュヌを通し、最埌は人が確認しおいるからだず思いたす。

    月ごずに振り返る

    半幎の動きを、月ごずにざっくり䞊べおみたす。

    画像
    OMT の半幎の歩み(䜜る → 揃える → 磚く → 足腰を鍛える)

    6月: 土台づくり

    ダヌクモヌドやコマンドパレットなど、画面の「土台」の敎備に本栌的に取りかかりたした。

    7月: 䜿い心地の統䞀

    サむドバヌや怜玢を拡充し、詳现画面の芋せ方を統䞀したした。蚺断機胜も、段階的に育お始めたした。

    8月: 定着ず磚き蟌み

    お知らせの自動生成が定着し、眫線を薄くするなど、「足す」より「匕く」調敎に取り組みたした。

    9月: 業務機胜の拡充

    オヌナヌ登録たわりの画面や、口座振替の画面を敎理したした。

    10月: 足元の匷化

    React 19 ず Tailwind CSS 4 ぞの曎新、React Compiler(画面の描画を自動で効率化する仕組み)の導入、CI の高速化など、開発そのものの足腰に手を入れたした。

    振り返るず、「䜜る」→「揃える」→「磚く」→「足腰を鍛える」ず、自然に段階を螏んでいたした。

    どこを進化させたのか

    倧きく「土台」ず「機胜」に分けお、゚ピ゜ヌドを玹介したす。

    土台

    ダヌクモヌド

    色を「トヌクン」(意味を持った名前の倉数)で管理する方匏にしお、画面偎ではラむト甚ずダヌク甚を曞き分けないルヌルにしたした。

    新しい画面は、䜜った瞬間からダヌクモヌドに察応したす。AI が曞くコヌドにも、このルヌルを教えおありたす。

    コマンドパレット(⌘K)

    管理ツヌルは画面数が倚く、メニュヌをたどるのが倧倉です。そこで、⌘K で画面や顧客に盎接飛べるコマンドパレットを入れたした。

    最初は画面の怜玢だけでしたが、段階的に育おお、他のツヌル(PMS)ぞの移動もできるようにしたした。

    アニメヌション

    「動き」はふ぀う、業務ツヌルでは埌回しにされがちです。でも、画面の切り替えやパネルの開閉に自然な動きがあるず、今どこで䜕が起きたかが分かりやすくなりたす。

    基盀を敎えお、動きに酔いやすい人のための「動きを枛らす蚭定」にも察応したした。

    デヌタの芋せ方

    財務の画面は、もずもず数字の衚が䞭心でした。そこにグラフ(掚移やりォヌタヌフォヌルなど)を足しお、数字の背景にある流れが芋えるようにしたした。

    詳现画面にも、小さな掚移グラフ(スパヌクラむン)を暪展開しおいたす。

    共通郚品ずデザむンのルヌル化

    空の状態、絞り蟌み、金額の衚瀺、項目の䞀芧など、画面ごずに䜜られおいた郚品を、共通郚品にたずめたした。

    そのうえで、ルヌルを文曞に残し、AI 向けの芁玄版(DESIGN.md)も甚意したした。

    機胜

    ピン留めず最近開いたペヌゞ

    よく䜿う画面を、サむドバヌにピン留めできたす。最近開いた画面も、すぐに戻れたす。

    日々の運甚で「あの画面どこだっけ」を枛らすための機胜です。

    運営偎のオペレヌタヌは、担圓ごずに䞻に䜿う機胜が決たっおいたす。䜿う項目にすぐたどり着けるようにしたかったのが、きっかけです。

    収支デヌタの CSV 出力ず PDF プレビュヌ

    収支のデヌタを CSV で取り出せるようにし、PDF も画面䞊で確認できるようにしたした。

    経理や運営のメンバヌが、他のツヌルに枡す前に䞭身を確かめられるようになりたした。

    お知らせの自動生成

    新機胜をリリヌスしたずき、このツヌルの利甚者ぞのお知らせを曞くのは地味に手間でした。そこで、リリヌスをきっかけに、お知らせの䞋曞きが自動で䜜られる仕組みを䜜りたした。

    いたは毎週のように、お知らせが届いおいたす。

    蚺断機胜

    デヌタが「あるべき圢」に揃っおいるかを確かめる蚺断機胜は、段階的に育ちたした。

    デヌタが揃っおいるかの確認から始たり、敎合性のチェック、そしお、蚈算根拠たで可芖化する機胜たで。

    たずえば、オヌナヌさたの収支レポヌトの数字に、どの予玄の利甚が蚈䞊されおいるか、ずいった内蚳たで画面で確かめられたす。

    運営メンバヌが、デヌタの状態をすばやく確かめられるようにするのが狙いです。

    䞀芧画面の远加

    ハりス(オヌナヌさたが所有する物件)やガレヌゞ(NOT A GARAGE でオヌナヌさたが所有する乗り物)の䞀芧を、画面ずしお新しく䜜りたした。宿泊可胜な日数の管理など、運営に必芁な範囲で利甚状況を確認する画面も、ベヌタ版ずしお提䟛しおいたす。

    ここたで回せたのは「AI のチヌム」を䜜ったから

    Claude Code に党郚を任せおいるわけではなく、圹割ごずに AI を分けおいたす。

    • PM(䜕を䜜るかを敎理する)

    • UI/UX デザむナヌ(どう䜜るかを蚭蚈する)

    • バック゚ンド担圓

    • フロント゚ンド担圓

    • QA(確認項目を䜜る)

    • コヌドレビュヌ担圓

    • ドキュメント担圓

    • 調査担圓(他瀟事䟋などを調べる)

    ぀たり、がくらがかんがえたさいきょうの開発チヌムを、AI で組んだ圢です。(前回の「がくらがかんがえたさいきょうのPMS」のオマヌゞュです)

    芁件の敎理から API、画面たで䞀気通貫で進められたのは、この圹割分担のおかげだず思っおいたす。

    䜜った AI にそのたたレビュヌたでさせるのはやめお、別の AI の目でレビュヌや確認をしおもらいたす。

    画像
    䜜った AI ずは別の目で芋お、実行結果で確かめる(最埌の刀断は人)

    圹割の分け方や、各圹割の動かし方に぀いおは、次回以降の蚘事で詳しく曞きたす。

    倱敗を「仕組み」に倉えおいく

    もちろん、うたくいかないこずもたくさんありたした。そのたびに、同じ倱敗が起きないように仕組みに倉えおきたので、その䞀郚を玹介したす。

    • AI の報告は「仮説」ずしお扱う: 「できたした」ず蚀われおも、実行結果で確かめるたで完了にしたせん。

    • 完了条件を先に決める: 䜜り始める前に「䜕ができたら終わりか」を1行で曞きたす。

    • PR(倉曎の提案)は1぀の関心事だけ: 小さく切るほど、レビュヌも速く、盎しやすくなりたす。

    • 自動レビュヌは2巡で区切る: 现かい指摘を远い続けるず終わらないので、実害のあるものだけ盎したす。

    • 䜜業ごずに䜜業堎所を分ける: 䞊行で動かしおも、お互いの倉曎が混ざりたせん。

    具䜓的な倱敗䟋を、1぀玹介したす。

    送信䞭は閉じないはずの確認モヌダルに぀いお、AI が「倖偎をクリックしおも閉じないこずをテストしたした。通っおたす」ず報告しおくれたした。でもあずで、閉じないようにしおいるコヌドをわざず倖しおみるず、テストは普通に通りたした。

    芋るず、テストが確かめおいたのは「モヌダルの文字が画面にあるか」だけ。このモヌダル、閉じたあずも文字は裏に残っおいるので、閉じおも閉じなくおも「ある」んですよね。䜕をやっおも通るテストでした。

    それ以来、「閉じない」「出ない」系のテストは、守っおいるコヌドを倖しお、ちゃんず萜ちるずころたで芋おから「できた」にしおいたす。

    画像
    倱敗するたびにルヌルず道具に倉えお、AI にも読める文章で残しおいる

    たずえば CI(自動テストなどの埅ち時間)も、枬るずころから始めお改善したした。

    実枬しおみるず、テストが想定より少ない䞊列床で動いおいたこずが分かり、蚭定を芋盎したずころ、確認䜜業の埅ち時間は、1回ず぀の比范ですが、3〜4割ほど短くなりたした(実行環境の揺れが倧きいので、目安です)。

    人間の仕事が倉わった

    この半幎で䞀番倉わったのは、自分の仕事の䞭身です。

    • 前: コヌドを曞く

    • いた: 䜕をもっお完了ずするかを決めお、確かめる

    曞く量は枛りたしたが、決める・確かめるこずの重みは、むしろ増えたした。さきほどの「グラフが空になる」ような䞍具合に気づけるかどうか。腕が詊される堎所が、コヌドを曞く手から、芋る目に移りたした。

    これから

    PMS ず OMT で、開発の進め方を揃えおいく取り組みも進めおいたす。片方で芋぀けたよい仕組みを、もう片方にも入れおいきたす。

    PMS を匕き継いでくれたメンバヌずも、お互いの知芋を持ち寄れる関係でいたいず思っおいたす。

    今回は党䜓のハナシでしたが、次回以降は、AI の報告を仮説ずしお扱う習慣、AI のチヌムの䜜り方、蚘憶(ナレッゞ)の残し方、画面をもっず䜿いやすくするための枬り方などを、もう少し掘り䞋げお曞いおいきたす。

    技術環境

    • フロント゚ンド: TypeScript / Next.js / React 19 / Tailwind CSS 4 / Ant Design

    • バック゚ンド: Go / gRPC / Protocol Buffers

    • むンフラ: Google Cloud (Cloud Run、Cloud Spanner、BigQuery ほか)

    • テスト: Vitest

    • 開発環境: Claude Code / GitHub / Notion / Slack

    NOTAでは、䞀緒に働く仲間を募集しおいたす。気になった方は、ぜひ採甚ペヌゞものぞいおみおください。

    テクノロゞヌ関係䞭途採甚はこちら

    採甚党般はこちら

    カゞュアル面談からでもお気軜にどうぞ

    あなたぞのおすすめ