スタックチャンのアイデアをブレストしよう
では、ChatGPTと相談しながら「どのようなスタックチャンを作るか」を考えていきます。
会話のねらい
今回は、実装方法や具体的なコードは出さずに、開発する機能の方向性を決めることに焦点を当てます。組み込み開発に慣れていない状態で最初からコードを書こうとすると、開発環境、利用するライブラリ、デバイス固有のAPI、センサーの扱いなど、考えることが一気に増えてしまうからです。
その代わり、AIとの会話では次のステップを踏んで進めます。
- 家族が見て楽しい、少し役に立つアイデアを広げる
- スタックチャンで使えそうな入力と出力を整理する
- 面白そうなアイデアを、実装できる小さな機能に分解する
- 最初に開発するMVP(Minimum Viable Product:要求を満たす最小限のプロダクト)の範囲を決める
実際の会話と返答例
まずは、こちらの状況を簡潔に伝えます。自分のスキルセットと、スタックチャンアプリケーションを使う相手の情報を挙げてみましょう。例えば、次のようなプロンプトを入力します。
私はWeb開発者ですが、組み込み開発やハードウェア制御はほとんど経験がありません。 スタックチャンを使って、家族が見て楽しい、少し役に立つような機能を作ってみたいです。 実装方法は後回しにして、まずはアイデアを10個出してください。 3人の子どもたちが気に入るアイデアはありますか? ・長男…何か作るのが好き。国語が苦手で作文の練習中。 ・次男…電車が大好き。人の話を聞かない。 ・長女…歌と踊りが好き。元気すぎて夜なかなか寝てくれない。
これに対して、ChatGPTからは次のようなアイデアが返ってきました。
1. 作文おうえんロボ 2. 今日の工作ミッション 3. 電車の発車アナウンス係 4. 車掌さんの「聞く力」ゲーム 5. おやすみダンス卒業ロボ 6. 家族の朝あいさつ係 7. ほめほめスタンプロボ 8. リビング劇場ロボ 9. 家族クイズ司会者 10. 静かにしてほしい時の「お願いロボ」
ペルソナの情報を与えたことで、具体的な利用シーンとともにアプリケーションのアイデアを提案してくれました。「組み込み開発初心者」である点も考慮され、それぞれの機能は比較的簡単に実装できそうなものになっています。
ここで候補がしっくりこなければ、条件を変えて追加案を出してもらいます。人間相手なら躊躇するような追加依頼でも、AIなら条件を変えて何度でも頼めます。20個、100個と増やしても構いません。
今回は「家族の生活の中で本当に使いたくなるか」という観点から、人間目線の率直なフィードバックを返してみます。候補の中で特に気になったのが、長女向けの「おやすみダンス卒業ロボ」でした。この案を、寝る前の流れと子どもの参加方法に分けて具体化していきます。
スタックチャンのダンスは楽しそうです。機能を深掘りしてみてください。
ChatGPTは、ダンス機能を「家族の生活リズムを整えるキャラクター」として設計する案を出してきました。
例えば、夜にテンションが上がっている子どもに対して、親が「もう寝なさい」と言う代わりに、スタックチャンが「最後のダンスをしよう」と誘う、という流れです。元気があり余っている長女には、正面から言うだけでは言葉が届きにくいため、これは筋が良さそうです。
返答から要点だけを抜き出すと、次のような提案でした。
中心アイデアは「おやすみダンスロボ」です。 夜に長女がテンション高めのとき、スタックチャンが「最後のダンスをしよう」と誘います。 最初は明るく楽しく踊り、だんだん動き・音・光を小さくして、最後は深呼吸やおやすみの挨拶に移行します。 流れは次のようにできます。 1. はじまりのダンス 2. まねっこタイム 3. だんだん静かになるダンス 4. おやすみポーズ
入眠儀式としてのダンスは、非常に魅力的なアプローチです。スタックチャンの動きや音、光の組み合わせも活かせます。
ただ、一方的にスタックチャンが踊るだけでは、動画を視聴するのと大きな差がありません。子どもが操作して反応を楽しめるようなインタラクションを追加できれば、ロボットならではの魅力をさらに引き出せそうです。具体的には、声をかける、手拍子をする、頭をなでるといったアクションに反応させたいところです。
そこで、次のように追加で問いかけてみました。
スタックチャンが踊るだけで終わらず、双方向のやりとりがあると嬉しいです。 声をかける、手拍子をする、頭をなでるなど。
ChatGPTは問いかけを受けて、ダンスを「鑑賞型」の機能から、子どもが参加する「インタラクティブな体験」へ整理し直しました。
ダンスは「見せる」より、一緒に遊ぶ/反応してくれる体験にすると、子どもが操作と反応の関係を理解しやすくなります。 具体的には、次のようなやりとりが考えられます。 1. 声かけスタート 2. 手拍子でテンポを決める 3. 頭なでリアクション 4. コールアンドレスポンス 5. まねっこダンス 6. ふりつけ作成 7. 夜専用の「だんだん静かになる」やりとり
この中で、特に取り入れたいと思ったのが「手拍子でテンポを決める」アイデアです。手拍子なら、子どもにとっても操作が分かりやすく、画面やキーボードを使わなくても参加できます。
「手拍子の検出」や「テンポの推定」などの実装詳細が気になりますが、まずは全体像を理解するために、トップダウンで機能を分割してもらいます。
手拍子認識は他にない感じで良さそうですね。 入力→処理→出力に分けて実装方法の見通しを立てたいです。
すると、ChatGPTは一連の処理をイベント駆動の構造に置き換えて、次のように整理してくれました。「Web開発者」という文脈もしっかりと考慮してくれているようです。
見通しとしては、Web開発でいう「入力イベント → 状態管理 → UI/アニメーション出力」と同じ構造にすると考えやすいです。
入力
手拍子 / 頭なで / 画面タッチ / 声の大きさ / 本体の揺れ
↓
処理
イベント化 → ノイズ除去 → 状態管理 → ダンス進行判定
↓
出力
首振り / うなずき / 回転 / LED / 効果音 / 表情 / セリフ
この整理によって、入力をイベントとして受け取り、状態を更新し、出力へ反映する流れが見えてきました。
Webアプリでも、ユーザーのクリックや入力をイベントとして受け取り、状態を更新し、その状態に応じてUIを描画します。スタックチャンのような実体のあるロボットでも、インタラクションの骨格は同じです。
マイクからの音声処理やサーボの動作など、組み込みならではの要素は次回以降で個別に扱います。例えば手拍子は、まず「音が急に大きくなった瞬間」を拾うイベントとして処理します。
マイク入力 ↓ 短い時間ごとの音量を計算 ↓ 周囲の平均音量より急に大きいか判定 ↓ 150〜250msくらいは連続検出を無視 ↓ 1回の手拍子イベントとして扱う
アイデアが広がってきたので、最後にMVPのスコープを絞り込みます。最初から音声認識、画面タッチ、表情、スピーカー、LLM連携まで詰め込んでしまうと、後からの方向修正が大変になるからです。そこでMVPでは、最初に試す機能をできるだけ少なくします。
MVPについて「手拍子でテンポを決める」というアイデアが気に入ったので取り入れたいです。 簡単のために入力は頭なでと手拍子のみにします。 また出力は首振りとLEDのみで始めます。 実装詳細には触れず、まずMermaidでモジュール構成図とシーケンスを書き下してください。
ChatGPTの返答は、次のようなものでした。
前提をかなり絞ると、MVPは「頭なでで開始 → 手拍子でテンポ決定 → 首振りとLEDがそのテンポで動く」です。
ここまでで、開発する機能を4つの動作に整理できました。一言でいえば「手拍子で踊るスタックチャン」です。
- 頭をなでることで開始する。
- 手拍子を聞いてテンポを決める。
- 決まったテンポに合わせて首を振る。
- 同じテンポに合わせてLEDを光らせる。
一連の会話では、候補を洗い出し(発散)、長女向けの案をピックアップして(収束)、入力・処理・出力に分解しました。このような整理はAIが得意とするところです。その代わりに、「誰のために作るのか、どの場面で使うのか」といったコンテキストの提供、そして「何を作るか」という好みや判断は、人間の役割です。
もちろん、実際にはこの記事のように一直線に会話が進むことばかりではありません。大抵の場合は会話が行ったり来たりして、そもそもの要求を表現するのすら苦労するものです。
AIとの会話では、まだ整っていない考えもすべてそのまま出してみるのが有効です。人に相談するときは、前提をきれいにまとめようとして手が止まることがありますが、AI相手なら「長女が夜なかなか寝ない」「手拍子で遊べると楽しそう」「実装はまだ考えたくない」のように、断片的な要望から始められます。候補を増やす、条件を足す、不要な入力や出力を削る、という順で、作りたいものを具体的にしていきましょう。
最後にここまでのMVPをもとに、ChatGPTに動作イメージの画像も作ってもらいました。
このイメージを目標に、次回から実機で動く部品を1つずつ作っていきます。
