メインコンテンツへスキップ
見出し画像

AIと一緒に観戦記録アプリをブラッシュアップした話

    先週末から、明治安田J1百年構想リーグがスタートし、その前の週にはプレシーズンマッチの「第30回ちばぎんカップ」が開催されました。

    巷では「世界三大カップ」の一つとも言われている(笑)この大会で、柏レイソルは、17年ぶりにJ1復帰したジェフユナイテッド千葉と対戦、会場はホーム三協フロンテア柏スタジアム(通称:日立台)です。
    今回は、新しいシーズンに向けて、自作の観戦記録アプリをブラッシュアップした過程について書いていきたいと思います。

    前回の振り返りと今回のアプローチ

    前回は ChatGPT と相談しながらコードを生成してもらい、「自分で」 Xcode 上にファイルやフォルダを作成し、そこにChatGPTで生成したコードをコピー&ペーストしていくという手順でアプリを作りました。
    それでも動くものが完成したので、自分としては非常に嬉しい体験だったのですが、会社のメンバーからは「前時代的」「根性的開発」というツッコミが😂。

    そこで今回は、改めてGeorgeのノートをもとに、Codex を活用するアプローチに切り替えました。前回の反省を踏まえ、アプリを一から作り直し!!

    今回の主な手順は、以下の3つです。(Georgeのnote通り)

    1. ChatGPT と相談して AGENTS.md ファイルを作成する

    2. Codex にそのファイルを読み込ませ、プログラムを生成してもらう

    3. Xcode からビルドして iPhone に反映する

    この3ステップだけで、新しいアプリを作ることができました🙌
    私は日本語をタイプしただけで、コードは1行も書いていません。
    ただし、その過程でいくつかうまくいかなかった部分もあったので、備忘録として残しておきたいと思います。


    気づき① ─ 要件を正しく伝える

    最初は、ChatGPT とアプリの企画を相談していたチャットの続きで
    「以上をもとに agents.md ファイルを作ってほしい」と指示を出しました。そして、生成されたファイルを Codex に読み込ませてビルドしたのですが、修正箇所がかなり多い状態でした😨
    ChatGPT とやり取りした内容全てが、どうも生成された AGENTS.md へ反映されていなかったようです。

    しばらく修正を続けたものの、このままでは手間と時間がかかりすぎてしまう…
    Codex と ChatGPT それぞれに相談し、「AGENTS.md ファイル自体を新しく置き換えること」にし、ChatGPT に企画と仕様を改めて整理し直してもらいましたが、日付の表示形式や項目の漏れなど、抜けている部分がいくつも…

    AGENTS.md を再作成し、もう一度ビルドしたところ、もともと思い描いていた理想にかなり近いアプリに仕上がりました🙌

    プログラムは1行も書かず、ChatGPTと相談して企画を作り、Codexにお願いして出来た私のための観戦記録用iPhoneアプリ。
    明日のちばぎんカップから使うよー✨

    Special Thanks @geeorgey ‘s notehttps://t.co/IXwU8j7phN pic.twitter.com/Pj2pJgh4AF

    — Yuka_23_www (@Yuka_23_www) January 30, 2026

    そしてこの経験は、どのような開発であっても、元々の仕様や企画がズレていれば意図したものはできあがらない、という「当たり前の原則」を改めて実感する機会になりました。
    次に作るときや追加仕様を指示するときには、特に気をつけたい部分です!
    そしてこれは日常の業務でも同じで、最初に固めるべきところを固めてから進める重要性を、身をもって学びました!

    気づき② ─ 用意せねばならぬものもある

    企画段階で「こういうアイコンにしたい」という話は ChatGPT にしていたのですが、画像がないアプリができてしまいました。
    Codex に確認したら「アイコンは画像がないと反映できない」とのこと。
    画像は自分で別途作成する必要があったのです。

    ただ、Codex も ChatGPT も、アイコンに必要な画像サイズや仕様を明確に教えてくれたので、その指示をもとに今回は nano banana🍌 を使ってアイコンを作成しました。
    何度か試行錯誤を繰り返し、100点満点とは言えないものの、ある程度満足のいくものができました🙌

    画像
    左は最初に作ったもの(微妙…)、右は今回何度もnano bananaとやり取りして作ったもの
    (本当はもっとカッコいい筆文字感がほしい)

    気づき③ ─ 仕様を変更

    試合ごとに添付できる画像枚数は、もともと3枚の仕様としていました。
    しかし、実際に試合の記録を残そうとすると、たくさん撮った写真の中から3枚だけを選ぶのは想像以上に大変...…足りない!!

    そこで、6枚まで添付できるよう Codex に変更を依頼しました。これ自体はそれほど大きな作業にはならず、スムーズに対応してもらえました。
    詳細画面では小さなサムネイルとして表示され、タップすると拡大表示、左右スワイプで6枚を確認できる形式になっています。

    画像
    試合ごとに写真を保存できる。保存後は↑のようにサムネイル表示(あと右側に2枚ある)
    画像
    今年から背もたれ・ドリンクホルダー付きになり、黄色から黒くなったバックスタンド😎
    サムネイルをタップすると拡大表示ができる。左右にスワイプで全部大きく見える!

    気づき④ ─ 判断を求められる

    アプリを更新するために再ビルドを行ったところ、保存していた画像がサムネイルではなくファイル名のテキストで表示されてしまう事象が発生😨。
    この問題について Codex に相談すると、画像の保管方式について2つの案が提示されました。

    何がどう違うのか、また、それぞれのメリット・デメリットが分からず困ってしまいましたが、判断材料を整理して教えてほしいと伝えたところ、以下のように非常に明確な回答が返ってきました。

    • A案: 実装が簡単だが、メンテナンス性が良くない

    • B案: プログラムは複雑になるが、メンテナンス性に優れる

    今回はAIがプログラミングするので、実装の複雑さは工数に直結しません。そこで、メンテナンス性に優れたB案を選択して実装を依頼。
    結果、プログラムの量はこれまでの倍ほどに増えたようですが、待ち時間は10分程度。過去の画像データも正しく保持したまま、新しいバージョンへビルドできるようになりました🙌

    気づき⑤ ─ 時間経過の動作確認

    1月31日、ちばぎんカップが終わった後、スタジアムから自宅まで歩きながら「アプリにどう記録しようか」「MVPは誰にしようか」と考えつつ、アプリを使えるワクワク感も持ちつつ帰宅しました。
    ところが、いざアプリを開くと、その日の試合情報がどこにもない!!!。

    現在のアプリでは、一番上に直近の試合予定を表示し、その下に過去の試合情報を年度ごとに配置しています。

    「結果のスコアが入るまでは試合予定の一番上に表示しておく」
    「結果を入力したら年度ごとのセクションに移動する」
    という実装をしていたつもりでしたが、Codexに確認したところ、
    ・試合が終了したことで「予定」ではなくなった
    ・かつ結果もまだ入力されていないから、どのセクションにも該当せず表示されない

    という感じで「私とAIの間で認識齟齬」があったようです。。

    そしてCodexから「キックオフ時間を過ぎてから結果を入力するまでの間は、試合予定の上に『結果待ち』セクションを作って表示する」という提案がありました(優秀…!)。
    そして、無事にちばぎんカップが「結果待ち」セクションに表示されるようになり、観戦記録を残すことができました🙌

    昨日帰ってから早速観戦ログを残そうとしたら…昨日の試合情報が見当たらなくなってて、試合時間が過ぎるとなくなる不具合が😱
    Codexでアプリを修正し、無事ログを残せたよ!修正も10分ほどで完了✅
    後になればなるほど忘れるから、すぐに残せるようになったのは嬉しいなぁ☺️ pic.twitter.com/zTnvFhPIBZ

    — Yuka_23_www (@Yuka_23_www) February 1, 2026

    私は顧客(ユーザー)でありPM

    気づき①〜⑤を振り返ると、私の立ち位置は以下でした。

    • 顧客:要件(少なくとも要望)を正しく伝え、必要なものを提供する

    • PM:設計を伝えて実装してもらう。判断を求められたら確認し、最後は動作確認する

    ざっくりですが、実際の業務とリンクする部分が多々あると思いました。

    相手がAIということもあり、若干雑にコメントすることもあるのですが(笑)
    アウトプットが良くないときは、大抵こちらの指示の問題だったりします。「どちらにも取れるような(他の意味に捉えられてしまいそうな)言い方は避ける」「明確に具体的に表現する」ということが非常に重要だと思うとともに、AIに対してだけでなく、人間相手にも気をつけるべき部分だと改めて感じました。
    「ふんわり」や「雰囲気」はダメよ!ということですね。


    形になることで見えてくるもの

    上記以外にも色々なアレコレがありましたが、無事に自分専用の観戦記録アプリを作り、実際に使える状態にすることができました🙌
    柏レイソルが好きな友人やサッカー仲間に見せたところ、「とてもいいね!」と言ってもらえたことが素直に嬉しく、友人からは以下のような追加機能のリクエストもありました!

    • おこづかい帳機能

    • アウェイ戦のチケット発売日管理機能(チケット購入忘れ防止!)

    今後はこれらの機能も追加していきたいと考えています。
    現在は自分だけが使う形ですが、将来的にはこんなこともできるといいなぁ。

    • 他のチームも使えるよう、チームカラーの自動反映や色の選択機能

    • 試合情報の自動更新(現在は手入力 or CSVアップロード形式だが、Jリーグ公式サイトからの自動取得へ)

    形になると、欲しい機能や追加したいアイデアが次々と湧いてきます。
    人に見せて反応を得ることは、自分にとっても大きな学びであり、喜びでもありました🙌
    今後も継続してブラッシュアップを続けていきたいです💪


    一行もコードを書いていない、という事実

    最後に、改めて振り返ると、これだけのプログラムを完成させたにもかかわらず、自分では一行もコードを書いていません。文字通り一行も。(そもそも書けない)

    私がやったのは、日本語で ChatGPT や Codex に指示を出し、判断を求められたら判断をし、画像などの必要な素材を用意する。それだけです。
    自然言語だけでアプリが完成しました。

    最初の Xcode プロジェクト作成以外、フォルダ構成や中身のプログラムがどうなっているかは一切把握していません。それでも、自分が使いたいものが出来上がりました。
    やり方さえわかれば、誰でもアプリが作れる時代になったのだと実感しています。

    そうなると、単に「プログラムが書ける」──Salesforce に置き換えれば「設定ができる」──というスキルだけでは、仕事は徐々に減っていくのではないかと感じます。
    今後ますます求められるのは、仕様を整理する力、その前段階の企画を考える力、そして出来上がったものを検証する力ではないでしょうか。
    現時点では、こうした部分が人間の役割です。AIに代替される仕事が増えていく中で、どう共生していくかが鍵になります。

    最後に少し告知

    ちょうど来週2/20(金)、「Salesforce User Group, Tokyo」にて「AIとの協働」を考える会、というイベントを開催します。どう向き合っていけばいいのかを一緒に考える場にしたいと思っていますので、ご興味のある方はぜひお越しください!

    2/20(金) 16時〜 Salesforce User Group, Tokyo「AIとの協働」を考える会開催!@otoan_u さん @hiroki_iida_ さんご登壇✨️
    生成AIとの付き合い方を一緒に考えてみませんか?
    現地でのグループディスカッションはまだお席ありますよ!ぜひご参加ください🙌#UGTokyohttps://t.co/d9w4VO5syi

    — Yuka_23_www (@Yuka_23_www) February 5, 2026

    そしてもう一つ。
    リバネスナレッジでは、ChatGPT、Codex、Claude、Gemini、Manus、Genspark など多様な生成AIを活用できる環境があり、業務にいかに「使い倒す」かということに日々取り組んでいます。そうした環境で働くことに興味のある方は、ぜひお気軽にご連絡ください!


     
     
    2025/9/1〜リバネスナレッジ Customer Success Lead SWTT2018でGolden Hoodie受賞。Salesforce User Group, Tokyoリーダー ※個人の発言です

    あなたへのおすすめ