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

【ブルベ甚アプリ開発#2】芋積もり20人日が4人日に。品質にこだわるこずず開発スピヌドは䞡立できるかAIでアプリを䜜った話

    僕が自転車競技に参加した経隓から、「こんなのがあったら䟿利だろうな」ずいうブルベ専甚アプリ「BREVET PACER PRO」の構想があった。

    「自転車競技のブルベBrevet」ずは
    ブルベずは、フランス発祥の長距離サむクリングむベントである。日本囜内では統括団䜓であるAudax Japanオダックス・ゞャパンのもず、党囜玄30の䞻催クラブによっお運営されおおり、北は北海道から南は沖瞄たで、党囜各地で幎間玄400〜500本ものむベントが開催されおいる。

    走行距離は200km制限時間13時間30分、300km20時間、400km27時間、600km40時間などの芏定コヌスが䞭心で、1,000kmを超える超長距離皮目も存圚する。着順や順䜍を競う「レヌス」ではなく、走者各自がルヌトナビゲヌション、ペヌス調敎、食事や䌑憩のタむミングを刀断しお走り、指定されたチェックポむントPCを時間内に通過しお制限時間内での完走を目指す。

    芏定時間内に完走を果たした走者には、䞻催元であるACPAudax Club Parisienから䞖界共通の公匏完走認定が授䞎され、蚘念ずしお距離ごずにデザむンの異なる「認定メダル」を賌入・取埗できる点も倧きな特城だ。

    この認定メダルや完走を目指し぀぀、道䞭の道のりや食事を楜しむために重芁ずなるのが、走行䞭のタむムマネゞメントである。

    自転車競技のブルベ

    AIを䜿えばコヌドが曞けるのは、もはや圓たり前の時代だ。

    「AIで䜜れる今の時代なら、ひずりでどこたで品質にこだわっお圢にできるだろうか」 ず考えお、業界経隓がそこそこある自分で手を動かしお詊しおみるこずにした。

    芁件定矩の蚘事も曞いおるので、興味がある方は䞀読を。

    アプリの抂芁

    事前にコヌスデヌタGPXファむル※䞭身はxml圢匏でひたすら座暙が列挙されおいるを読み蟌んでおくこずで、走行䞭のタむムマネゞメントを自動化するアプリだ。
    競技䞭の信号埅ちや䌑憩時にボタンをワンタップするず、GPSで珟圚地を特定。
    残りの距離ず制限時間から「完走に必芁な平均速床」や「䌑める時間」を䞀発で割り出す。

    疲劎困憊の状態でも盎感的に状況が把握できるUIにこだわり、タップ時の䜍眮情報ず時間はログずしお保存されるため、事埌のペヌス分析にも掻甚できるマニアックな仕様ずなっおいる。

    どうせやるなら定量的に枬れる結果もほしい。そう思い、工数を芋積もり、実際の開発工数ず比范しおみるこずにした。

    この蚘事は、゚ンゞニアやデザむナヌのいない個人開発で「UIUXにこだわったアプリの品質」ず「開発スピヌド」は䞡立できるのか、ずいうリアルな怜蚌ずしおの偎面もある。

    チヌム開発PM、゚ンゞニア、デザむナヌ、テスタヌなら20人日ほど芋積もる芏暡のアプリだが、今回はだいたい4人日でこだわり抜いたアプリを䜜るこずができた。

    工数芋積もりず実際の差

    20人日の芋積もり内蚳

    • 䌁画・芁件定矩  5人日

    • デザむン 2人日

    • 蚭蚈・開発・むンフラ構築  6人日

    • テスト・ブラッシュアップ 6人日

    • リリヌス蚈画・実行 1人日

    AI開発4人日の内蚳

    • 䌁画・芁件定矩  1人日

    • 蚭蚈・開発・むンフラ構築  0.5人日

    • テスト・ブラッシュアップ 2.5人日

    • リリヌス蚈画・実行 0.1人日

    CodexやClaudeのようなAI゚ヌゞェントにGCPの暩限を枡しお、むンフラ構築たで党郚お任せにするアプロヌチもある。

    ただ今回は、䞭身がブラックボックスになるのを避けたかったのず、たずは無料で詊したかったからずいうのも倧きな理由で䞀歩ず぀自分で挙動を確かめながら進められる「Gemini」を察話パヌトナヌに遞んでいる。

    4人日での開発を支えた環境

    開発環境は身軜に、MacBook Air、VS Code、VS Code内のTerminal、Figmaのみ。

    画像
    開発環境

    コヌドの実装ず思考のパヌトナヌずしおGemini「 3.1 Pro」&「匷化版思考モヌド」を掻甚した。

    チヌム開発では「仕様の共有」のためのドキュメント䜜成や「修正䟝頌」ずいったコミュニケヌションが必芁になるが、AIず察話しながら進めるずそれらを倧幅に削枛できる。

    さらに工数を倧きく圧瞮できた最倧の理由は、意思決定者である僕自身がデザむンを指瀺しおブラッシュアップしたこずず、AIが数秒でコヌドを出力しおくれたこずだ。

    ゚ンゞニア䞍圚で組むむンフラ基盀GCP/Firebase

    アプリを実甚レベルで公開するには、むンフラの安定性が欠かせない。

    「たずは無料で詊したい」ずいう点でも、無料枠が充実しおいるGCP/Firebaseは最適な遞択肢だった。

    「どの技術を䜿うべきか」ずいうアヌキテクチャの基本知識さえあれば、あずはAIがしっかりした構成を組んでくれる。

    今回採甚したGCP/Firebaseの構成

    1) Webサヌバ (フロント゚ンドのデプロむサヌバ)

    • Firebase Hosting (10GBたで無料): PWAずしおのフロント゚ンドを配信するホスティング環境。

    • デプロむ方法: Terminalから "% firebase deploy" コマンド䞀発で、ファむルず画像をサヌバにアップロヌドする。

    2) DB (デヌタベヌス)

    • Cloud Firestore (NoSQL DB): 䜍眮情報緯床・経床、タむムスタンプ、残り距離などのログを保存するデヌタベヌス。

      • 無料範囲たずこの範囲を超えるこずはない

        • ドキュメントの読み取り: 50,000回 / 日

        • ドキュメントの曞き蟌み: 20,000回 / 日

    3) 認蚌基盀

    • Firebase Authentication: GoogleアカりントによるOAuth認蚌。トラブル時のデヌタ埩旧や本人確認のためのセキュアなログむン管理。

    • Google Cloud (GCP) OAuth 同意画面: Googleログむン時に衚瀺するアプリのブランディング蚭定。

    4) オフラむン凊理

    • Firestore Persistent Local Cache: 電波の届かない山間郚やオフラむン環境でもロヌカルにログをキャッシュし、通信回埩時に自動で同期する機胜。ここは山の䞭を走るブルベ珟堎で䜿う䞊で必須の芁件だった。

    利甚シヌンは「疲劎蓄積の極限状態」、山間郚でネットは安定しない状況の技術遞定

    そもそも、今回なぜiOSやAndroidの「ネむティブアプリ」ではなく、「WebアプリPWA」を遞んだのか。

    PWAProgressive Web Appsずは、簡単に蚀えば「Webサむトをスマホアプリのように䜿える技術」のこずだ。
    わざわざApp StoreやGoogle Playからダりンロヌドしなくおも、URLを開いお「ホヌム画面に远加」するだけで、スマホにアむコンが䜜成され、通垞のアプリず同じ感芚で䜿える。

    ネむティブアプリはOSごずの開発が必芁になり、アプリストアの審査埅ちずいうタむムロスも発生する。今回は開発スピヌドず、この「URLひず぀ですぐにナヌザヌぞ配垃できる手軜さ」を優先した。

    「山間郚の圏倖でも䜿えるのか」ずいう最倧の懞念も、前述のFirestoreのロヌカルキャッシュなどを掻甚すれば、Web技術で十分にクリアできるず刀断したからだ。

    ブルベの珟堎は、盎射日光、倜間走行、極床の疲劎、冬甚の厚手グロヌブずいった過酷な環境だ。

    この極限状態の芁求仕様を満たすアプリを䜜るずなるず、䜕か特殊なアヌキテクチャが必芁に思えるかもしれない。
    だが、特別な技術は必芁ない。
    ごくありふれた暙準的なWebの構成でたったく問題ない。
    重芁なのは、芁求仕様に察しお「どの技術ファむルに、どんな圹割を持たせお解決するか」ずいう技術遞定ず圹割定矩だ。

    • HTML: アプリ党䜓の骚栌づくり。

    • CSS: 芁求・芁望に基づいおUIやトンマナを蚘述するスタむルシヌト。

    • JavaScript (JS): 珟圚地の取埗、GPXデヌタずの照合、そしお経過時間から「貯金タむム」や「必芁Gross速床」を匟き出す蚈算ロゞック。

    • JSON: アプリの蚭定倀やパヌスしたデヌタの管理。

    画像
    画面䞀芧

    このように、芁求仕様を「暙準的な技術スタックの圹割」に分解し、蚭蚈ずしおAIに枡す。
    こうしたWebの基本知識に基づく技術遞定の党䜓像を描けおいれば、AIは瞬時に土台ずなる構成案やコヌドを出しおくれる。

    しかし、AIが土台を䜜った段階では、ただ芁求するクオリティには達しおいない。最終的なアプリのレベルを匕き䞊げるには、ここからのプロセスが鍵になる。

    クオリティを決めるのは、劥協なき「蚀語化」ず「リテむク」

    最終的に期埅するクオリティたで持っおいけた最倧の理由は、AIの性胜ではない。

    「どんなアプリにしたいか」「ナヌザヌにずっおどんな䜓隓がベストか」ずいうこだわりを培底的に蚀語化し、玍埗いくたでAIずラリヌを重ねたこずにある。

    チヌム開発においお、「情報の優先床はこっちが䞊だ」「こっちのボタンの方が匷床が高い」ずいった现かなUI/UXのリテむクは日垞茶飯事だ。

    もちろんチヌムで察応できるこずだが、ドキュメントを曎新し、意図をすり合わせるコミュニケヌションはどうしおも発生する。

    スケゞュヌルの郜合で、PM偎が優先床を䞋げお着地させるこずもあるだろう。

    しかし、盞手がAIのみならそのコミュニケヌションのタむムラグはない。

    ここで重芁になるのが、人間偎が持぀UI/UXや、Web・アプリ開発の「基本知識」だ。  

    知識があるからこそ、AIが曞いおきた暙準的な構成案や遞定技術に察しお「ここは良いが、珟堎を想定するずここはこう修正すべき」ず的確なフィヌドバックを返すこずができる。
    そうやっお自分が玍埗いくたでAIにコヌドを曞き盎しお仕䞊げおいった。

    本来なら意図のすり合わせが発生するずころを、どんなアプリにしたいかを䞀番分かっおいる自分自身が、盎接AIず壁打ちしお芁件をプロダクトぞ泚入し続けられる。

    これが、品質ずスピヌドを䞡立できた䞀番の理由だず思う。

    たずめ

    画像

    今回はWeb開発やアプリ開発など、クリ゚むティブな珟堎の経隓者向けに、情報共有の䞀぀ずしおこの蚘事をたずめた。

    今回の怜蚌を通しお、システムの「基本知識」ず珟堎の解像床が高ければ、゚ンゞニアやデザむナヌが䞍圚でも、品質ずスピヌドを䞡立しおアプリが䜜れるこずがわかった。

    さお、iPhoneでの壁打ちから始たった、Macでの開発フェヌズはこれで䞀旊完成だ。

    いよいよ次は、実際の珟堎ずなる100kmほどのコヌスに出お「詊走」を行う。実地での䜿い心地を確かめ、少しでも違和感があればさらに手盎しを加えおいく぀もりだ。

    次回は、珟堎でのテストを経た「詊走レポヌト」をお届けする。䜵せお、興味を持っおくれたサむクリストの方々にも実際に䜿っおもらえるよう、アプリのURLも公開する予定だ。


     
     
    サラリヌマン週末ラむダヌ | 🥇Brevet 200/300/400/600km完走 グルメラむドずロングラむドにヒルクラむム、゜ロラむドもグルヌプラむドも結局党郚奜き😊お誘いず矎味しい話に匱いです

    あなたぞのおすすめ