
ビジネススクールで受講した「テクノベート・シンキング」の学びを全12回でまとめるシリーズ、その9。
第5回の事前課題は「自分のビジネスや生活に役立つアプリケーションを、何らかのツールを使って実装する」。前回学んだノーコードツールの世界を、実際に手を動かして体験する回だ。正直なところ、「アプリを作れ」と言われて最初に感じたのは不安ではなく、むしろワクワクだった。IT畑で長年やってきた人間として、「自分の問題を自分で解く」チャンスが来たと感じた。
ペインポイント:毎朝の体組成データを活かしきれていない
何を作るかを考えたとき、真っ先に浮かんだのが毎朝の習慣だった。
私はタニタの体組成計を毎朝使っている。体重、体脂肪率、筋肉量、内臓脂肪レベル──データはBluetoothでスマホに自動連携される。毎日欠かさず測り続けて、もう何年にもなる。しかし、このデータを「活かす」仕組みがない。
グラフ化して推移を見たい。でも、まともなグラフ機能を持つ市販アプリはだいたい有料だ。月額課金してまで使いたいかというと、微妙なところ。そもそも市販のフィットネスアプリは汎用的すぎて、私の文脈──ゴルフのパフォーマンス向上のために筋肉量を増やしたい──にはフィットしない。「体重を減らしましょう」「カロリーを制限しましょう」ではなくて、「筋肉量を維持しつつ体脂肪を落とすにはどうすればいいか」「明日の食事は何を食べればいいか」──そういうパーソナルなアドバイスが欲しいのだ。
ChatGPTに体組成のスクリーンショットを送ればアドバイスはもらえる。実際に何度かやった。でも、グラフ化や継続的なトラッキングまではできない。毎朝スクショを撮ってChatGPTに貼り付けて……という手作業は続かない。データは毎日取っているのに、それを活かす「仕組み」がない。このもどかしさが、そのまま今回のアプリ開発のテーマになった。
作ったもの:My AI Coach – Eat & Training
そこで作ったのが「My AI Coach – Eat & Training」。個人向けにカスタマイズされたAI専属コーチアプリだ。コンセプトはシンプル──「毎朝のデータ入力だけで、AIが私専用の食事・運動プランを自動で作ってくれる仕組み」を、すべて無料ツールで実現すること。
主な機能は3つ。
- 日次データ入力 → AI自動アドバイス生成:毎日の体組成データ(体重・体脂肪率・筋肉量・内臓脂肪レベル)を入力するだけで、AIが目標に合わせた食事メニューと運動プランを自動生成する
- 過去3日間との比較分析:直近のデータ推移を踏まえて、「前日より筋肉量が0.2kg減っている。たんぱく質の摂取量を増やしましょう」といった具体的な変動分析をしてくれる
- 体重・体脂肪率・筋肉量のグラフ表示:数値の羅列ではなく、視覚的にトレンドを把握できるようにした
「ChatGPTに聞けばいいのでは?」という声が聞こえそうだが、ポイントは「仕組み化」にある。毎朝データを入れるだけで、何も考えなくても最適なアドバイスが出てくる。この「認知コストゼロ」の状態を作ることが、継続の鍵だと考えた。
アーキテクチャ:4つの無料ツールをつなぎ合わせる
使ったツールはすべて無料枠で動かした。4つのツールがそれぞれ異なる役割を担い、パイプラインを構成する。
AppSheet:モバイルUIの顔
Googleが提供するノーコードアプリ開発プラットフォーム。スマホで体組成データを入力するフォームと、過去のデータやAIアドバイスを閲覧する画面を構築した。Google Sheetをデータソースとして指定するだけで、CRUDアプリが自動的に生成される。UIのカスタマイズもドラッグ&ドロップで直感的にできる。「データ入力はスマホから、開発はブラウザから」という分業が自然にできるのがAppSheetの強みだ。
Google Sheet:データのハブ
すべてのデータが集まる中央データベースの役割。体組成データの保存、AIからの応答の格納、グラフ生成のソースデータ──すべてをGoogle Sheetが担う。シートの構造は、日付・体重・体脂肪率・筋肉量・内臓脂肪レベル・AIアドバイス(テキスト)・グラフ画像URL、というカラム構成にした。
Zapier:自動化のエンジン
Google Sheetに新しい行が追加されたことを検知し、OpenAI APIを自動で呼び出すトリガーの役割を果たす。「データ入力 → AI応答」の自動化がZapierによって実現される。Zapierがなければ、毎回手動でAPIを叩く必要があり、仕組みとして成立しない。
OpenAI API(GPT-3.5-turbo):頭脳
体組成データを受け取り、目標(筋肉量増加)に基づいたアドバイスを生成する。食事メニューの提案、運動プランの提示、数値の変動に対するコメント──すべてをGPT-3.5-turboが担当する。
データの流れを整理するとこうなる。AppSheetでデータ入力 → Google Sheetに保存 → Zapierがトリガーで起動 → OpenAI APIにプロンプトを送信 → 返ってきたアドバイスをSheetに書き戻す → AppSheetで表示。この一連のパイプラインが、ユーザーから見ると「データを入れたらアドバイスが出てくる」というシンプルな体験になる。
また、音声UIにも挑戦した。VoiceFlowを使って「OK Google、今日のアドバイスは?」と話しかけるとAIコーチの回答が返ってくる──という構想だったが、VoiceFlowとGoogle Sheetの連携部分がうまく動かず、今回は未完成に終わった。ただ、音声インターフェースへの拡張可能性を確認できたこと自体は収穫だった。
ぶつかった壁:無料ツールの制約との格闘
動くものは作れた。しかし、「動く」と「使える」の間には大きな溝がある。無料ツールの制約に何度もぶつかり、そのたびに回避策を考える──この繰り返しが開発の大半を占めた。
AppSheetの壁:グラフとデータ型
最も困ったのはグラフ機能の制約だ。AppSheetのチャート機能は2軸グラフに対応していない。体重と体脂肪率を同じグラフにプロットしたいのに、それができない。単位もスケールも違う2つの指標を並べて見ることで初めて「体重は落ちたけど筋肉量も落ちている」といった洞察が得られるのだが、その表現ができない。
回避策として、Google Sheet側でグラフを作成し、そのグラフを画像として公開URLを取得、AppSheetに画像として埋め込むという方法を採った。エレガントではないが、機能する。
もうひとつ地味にハマったのが浮動小数点の誤差問題。体脂肪率「51.2」と入力したはずが、Sheet上では「51.200000001」と表示される。AppSheet経由でSheetにデータを書き込む際に、内部的に浮動小数点変換が発生するらしい。見た目の問題だけでなく、AIに渡すプロンプトにもこの不正確な数値が載ってしまう。テキスト型に変換してから保存する処理を入れることで対処したが、データ型の扱いはノーコードツールの泣き所だと痛感した。
Zapierの壁:リアルタイム性とモデルの制約
Zapierの無料プランでは、トリガーの実行間隔が15分。つまりデータを入力しても、AIの応答が返ってくるまで最大15分待つことになる。朝の忙しい時間帯に15分待てるかというと、正直厳しい。「即座にアドバイスが欲しい」というUXの理想と、無料枠の現実との間にギャップがあった。
さらに、ループ処理(複数のデータ行を一括処理する)は有料プランのみ。使えるAIモデルもGPT-3.5-turboに限定されており、GPT-4は選択肢にない。「無料でできること」の天井が明確に見えた瞬間だった。
OpenAI APIの壁:会話履歴とプロンプト設計
ChatGPTのWeb版には会話の文脈を保持する機能がある。しかしAPI経由だと、毎回のリクエストは独立している。会話履歴が保持されない。つまり「昨日のアドバイスの続き」という概念がない。
この制約を回避するため、毎回のプロンプトに過去3日分のデータを丸ごと入れて送る方式にした。トークン消費は増えるが、文脈を担保するにはこれしかなかった。
そして最大の学びがプロンプト設計の重要性だ。最初に書いたプロンプトは「体組成データに基づいてアドバイスをください」程度のものだった。返ってきたのは「バランスの良い食事を心がけましょう」「適度な運動を取り入れましょう」──まるで保健室のポスターのような一般論。これでは仕組み化した意味がない。
試行錯誤を重ねて、最終的に効果が出たプロンプトはこういうものだった。
「以下の3日間の体組成データを分析してください。目標は筋肉量の増加です。具体的な数値を引用して、前日との変化を指摘し、筋肉量増加を目標に、明日の食事メニューを3パターン(和食・洋食・コンビニ活用)で提示してください。各メニューにたんぱく質量の概算を付けてください。」
ここまで具体的に指定して、ようやく「使える」レベルのアドバイスが返ってくるようになった。プロンプトの具体性がAI出力の品質を決定的に左右する──これはChatGPTを普段使いしているだけでは気づきにくい真理だ。
データ入力の自動化に挫折
理想を言えば、体組成計のアプリ画面からOCR(画像認識)でデータを自動取得したかった。毎朝手入力するのは面倒だし、入力ミスのリスクもある。スクレイピングやOCRの技術を使えば自動化できるのではと試みたが、体組成計アプリの画面構成が複雑で、精度の高い自動認識ができなかった。ここは今後の課題として残った。
ちなみに、開発途中でAI(Gemini)にツールの設定方法を聞いたら、存在しないメニュー項目を自信満々に教えてくれた場面があった。AIのハルシネーション(幻覚)は、自分にベースとなる知識がないと見抜けない。AIを使いこなすには、AIの出力を検証できるだけの基礎知識が必要だという教訓も得た。
制約の中で学んだ7つのこと
開発を通じて得た学びを7つに整理した。どれも教科書には載っていない、手を動かしたからこそ得られた実感だ。
- AIエージェント開発は「直接AIを使う」を超える価値がないと意味がない──ChatGPTに直接聞けば5秒で返ってくるのに、わざわざ仕組みを作って15分待つのでは本末転倒。仕組み化するなら、「毎日自動で」「入力だけで」「比較分析付きで」といった、直接使用にはない付加価値が必要だ
- 自分専用AIには「文脈」が不可欠──汎用のAIは誰にでも使えるが、誰にとっても最適ではない。個人の目標(筋肉量増加)、生活パターン(朝型)、食の好み(和食中心)──こうした文脈情報が蓄積されて初めて「私専用」のコーチになる
- データ型の扱いには細心の注意を──浮動小数点の誤差、日付フォーマットの不一致、文字コード問題。どれも地味だが、放置するとデータの信頼性が損なわれ、AIへの入力も狂う。目に見えないからこそ厄介だ
- 仕組み化の前提はデータの定量化と構造化──「なんとなく調子がいい」「最近太った気がする」では仕組みに載せられない。数値で測り、構造化されたフォーマットで保存して初めて、自動化の土台になる
- AIはプログラミングの工数を大幅に削減する──Google Sheet関数の書き方、APIの呼び出しコード、エラーハンドリングの実装──こうした「調べれば分かるが面倒な作業」はAIに聞けば一瞬で出てくる。開発速度は体感で3倍以上になった
- 無料ツールは「制約を理解した上で使う」が前提──無料だからダメではない。何ができて何ができないかを最初に把握し、制約の範囲内で設計すれば十分に実用的なものが作れる。逆に、制約を知らずに理想の要件で設計すると、途中で行き詰まる
- プロンプト設計がAI出力の品質を決定的に左右する──「アドバイスをください」と「具体的な数値を引用して3パターンの食事メニューを提示してください」では、返ってくる内容の質がまったく違う。AIは指示した通りにしか動かない
「制約下の判断」こそテクノベート・シンキングだった
この7つの学びを俯瞰して気づいたのは、すべてが「制約の中でどう判断するか」という問いに収束するということだ。
AppSheetで2軸グラフが使えない → Google Sheetの画像埋め込みで回避する。Zapierの反応が15分遅い → リアルタイム性を諦めて「朝入力、出勤時に確認」というユースケースに切り替える。GPT-3.5しか使えない → プロンプトの精度で補う。
制約にぶつかるたびに、「これは有料プランなら解決するのか」「アーキテクチャを変えれば回避できるのか」「そもそも要件を変えるべきか」と判断を迫られる。この制約下での意思決定の連続こそが、テクノベート・シンキングの問題解決プロセスそのものだったと今は思う。
学び:「自分の問題を自分で解く」体験のインパクト
課題の内容自体は「何かアプリを作ってください」というオープンなものだった。しかし、自分自身の日々のペインポイントを解決するためにツールを組み合わせる体験は、架空のケーススタディとはまったく違う手触りがあった。
ケーススタディでは「この企業はどうすべきか」を論じる。それはそれで知的な訓練になる。でも、自分の毎朝の行動を変える仕組みを自分で作るとなると、要件の優先順位のつけ方が変わる。「あったらいいな」ではなく「これがないと使い続けられない」──本当に必要な機能だけを見極める力が鍛えられた。
そしてもうひとつ。完璧でなくても「動くもの」を作り切ることの価値を実感した。VoiceFlowは未完成、OCRは断念、グラフは画像埋め込みという回避策。どれもスマートではない。でも、毎朝データを入力すればAIアドバイスが返ってくる──その一連の体験は「動いている」。不完全でも動く仕組みがあることで、次に何を改善すべきかが見えてくる。完璧を目指して何も作らないよりも、不完全でも動くものを作る方がはるかに多くのことを学べる。
次回:ビジネスにおけるAI活用──期待と脅威を考察する
第5回の後半課題は、自分のビジネス領域でAIがどう使われ、今後何が期待され、何が脅威になるかを考察するもの。実際にAIアプリを作った体験を踏まえて、より広い視点でAI活用を論じた話を次回書く。手を動かした人間だからこそ見える「脅威」がある。

