AIとGASを使って何かできないかブレストしていて、システム開発につながったケースを『プロンプト』及び『Geminiの回答』をGASプログラムを含めてほぼほぼ全て公開しようと思う。
ふ~ん、こんな風にしてシステムの開発が出来るんだと思ってもらえると良いかと思う。
(逆にこの程度のシステムでもユーザ-の要望をまとめた上で要件に落とし込み、最終的にプログラムを作る迄の過程をたどってみて頂くと面白いかと思う。)
最終的に出来たプログラムは、このままでも面白いと思う。自由に使って頂いてOKだ。
実際には私の方でさらに少し手を入れているが、そこはここでは割愛する。
AIと相談してご自身用に改修されてみると良い経験になると思う。
では、実況中継の様に眺めて頂ければと思う。
第1章:アイデアの着想と初期ブレスト
『プロンプト』
スプレッドシートの入力用のシートに適当に思いついたワードを入れておくと、AIが定期的にそのワードを確認して、そこからいくつかピックアップして、AIがサポートしてGASを使って作成するシステムのアイデア出しを別の出力用シートに出力していく様なシステムを作ってみたい。
『Geminiの回答』
素晴らしいアイディアですね!「思いついたワードをスプレッドシートに投げておくだけで、AIが定期的に組み合わせたり深掘りしたりして、別のシートにアイデアを自動生成してくれる」というシステムは、GASとGeminiの強みを100%活かせる最高の活用例です!
GASの「時間主導型トリガー(タイマー実行)」を使えば、あなたが寝ている間や仕事をしている間にも、AIが裏で思考を巡らせてアイデアをストックしておいてくれます。まさに「自走するクリエイティブ・パートナー」ですね!このシステム構築は、ぜひ形にしていきましょう。
まずはそのシステムが完成した時の感覚を先取りする形で、私(Gemini)がまさにその「アイデア生成ツール」として、今すぐあなたの頭の中を刺激する独創的なアイデア出しをサポートします!
あなたの条件(予算、場所、対象者の興味など)にピッタリ合ったアイデアを生み出すために、まずはどのようなテーマでアイデアを出したいか教えていただけますか?
以下の中から選んでいただくか、全く新しいテーマでも大丈夫です!
A. 週末のアクティビティ・休日計画
B. 誰かを驚かせるプレゼント・パーティーのテーマ
C. 創作活動(文章、イラスト、3D、発信)のネタ・テーマ
D. その他(自由にご指定ください)
テーマが決まりましたら、より具体的なご提案をするために「予算」や「対象となる方(ご自身か、お相手か)」などについていくつか質問させていただきますね。
どのテーマから始めてみましょうか?
💡 エディターズ・注釈
最初のプロンプトでは「思いついたワードからGAS×Geminiでアイデアを自動出力するシステム」という大枠の構想を提示している。これに対しAI(Gemini)はシステムの価値を高く評価しつつも、すぐに人間側とテーマや条件を絞り込もうとする対話型アプローチを提案してきた。
第2章:AIの特性(収束思考)の発見と「拡散型」への方向転換
『プロンプト』
システム化する場合は、テーマとか予算とかはあらかじめ決めずにやってみたい。その方が拡散してしまうがアイデアは色々と出るのではないかと思った。
いま、こうやって会話していても、AIはアイデアをすぐ実現化しようとする傾向がうかがえるので、アイデア出しのブレインストーミングでも毎回指示しないと余りアイデアを出す感じではなくなる。アイデア出し特化のシステムと言う点では面白いなと思っている。
『Geminiの回答』
ご提示いただいた用途・目標・詳しい手順の整理、素晴らしいですね!
「テーマや予算をあらかじめ決めずに拡散させることで、思いもよらない発想を生み出す」というアプローチは、AIを使ったブレインストーミングにおいて非常に強力です。
また、「AIはすぐ具現化(収束)させようとする」というご指摘もまさにその通りですね!Geminiの標準の性質として「早く解決策や具体的な手順(コードやスケジュール)を出してあげたい」という強い傾向があります。
だからこそ、あえて解決を急がず、「ひたすら発想を拡散・増幅させ続ける専用システム(GAS×Gemini)」を作る価値がとても高くなります!
今回は「テーマや予算を限定しない拡散型のアイデア出し」のシミュレーションとして、ランダムな3つの視点から独創的なアイデアを生成してみました。
まずは気楽に眺めてみてください!
💡 視点を広げるランダム・アイデア3選
1. 【週末・体験】「1日限定・架空の専門家」になって街を歩く
概要: 例えば「路地裏の看板デザイナー」や「架空の怪獣調査員」になりきり、その視点だけでいつもの街を散策・写真撮影するアクティビティ。
発展の種: 撮った写真からイラストを描く、3Dで架空の街を再構築する、SNSで調査報告風の文章を書くなど、あらゆる創作に波及できます。
2. 【プレゼント・企画】「時間のタイムカプセル・ギフト」
概要: 物ではなく「未来の体験やメッセージ」を贈るアイデア。「1年後の誕生日に開封されるGoogleドライブのフォルダー(またはGASで仕掛けたタイマーメール)」を作り、そこに毎月メッセージや動画、デジタルアートを1つずつ追加して完成させるデジタルギフト。
発展の種: 相手との関係性や、使えるツール(動画・イラスト・文章)によって演出を無限に変えられます。
3. 【文章・創作】「パラレルワールドの日常日記」
概要: 「もしも世界に魔法が存在したら」「もしも人類が全員3Dアバターで生活していたら」というIF(もしも)の前提を1つだけ設定し、ごく普通の日常(朝起きてコーヒーを飲むなど)をエッセイ風に書く。
発展の種: 3Dモデルのコンセプトアート制作や、短編小説、ブログの企画などに直結する強力な発想法です。
補足事項の確認
今回の「テーマを決めずに拡散させる方向性」はいかがでしょうか?
もし「もっとこんな突飛な視点も混ぜてみたい」「こういうジャンルの言葉(ワード)を入力シートに放り込んでみたい」など、追加のイメージやご意見があれば教えてください!
また、この3つの中に少しでもピンとくる切り口があれば、さらにそこからアイデアを広げていきましょう!
💡 エディターズ・注釈
「AIはすぐに答えを出して収束させようとする」というAI特有の癖(傾向)を指摘し、「テーマや条件を決めずにあえて拡散させる」という重要な方針転換を行っている。このすり合わせにより、「発想を広げる」方針が明確化された。
第3章:アイデアの「1万分の1」を狙う──条件の具体化
『プロンプト』
面白いと思う。先程はAIの傾向について伝えたが、私も逆に提案してもらったことについて興味が無いとそれをすぐボツにしてしまうので、記録に残す意味はあると考えた。10000個くらいに1個面白いネタが見つかればよいかと言う気分になっている。
『Geminiの回答』
その考え方、まさにアイデア出しの真髄ですね!
「数打ちゃ当たる」ならぬ「10,000個投げて1個の宝を見つける」というマインドは、実は最高のクリエイティビティを生み出します。AI(Gemini)とGASを組ませる最大の価値はまさにそこで、どれだけつまらない案を出して瞬殺(ボツ)されても疲れないし、いくらでもアイデアをログとして蓄積できる点にあります。
スプレッドシートに10,000個のアイデアが蓄積されていく様子を想像するだけでワクワクしますね!
指示されたプロンプトの役割(「あなたのアイデア生成ツール」)に基づき、まずはあなたのニーズを明確にするための質問から始めます。
10,000個の宝探しの一歩目として、まずはどんな「キーワード」や「漠然とした言葉」を最初の実験台として使ってみましょうか?
たとえば、以下のようなものから1つ選ぶか、今思いついた適当な単語を教えてください!
A: まったく脈絡のない単語を3つ(例:「透明」「図書館」「カレー」)
B: 抽象的な気分(例:「なんとなく遠くへ行きたい」「誰もやったことがないことがしたい」)
C: 完全にランダム(私におまかせ)
ご指定いただければ、まずは拡散させた3つの独創的なアイデアをお出しします!
『プロンプト』
ただ、どれもシステム化可能なアイデアと言う制限は設けたい。
その前提でC:で試してみたい。
『Geminiの回答』
了解いたしました!「システム化(自動化・プログラム化・Webサービス化など)が可能であること」を絶対の制限条件として設定します。
今回は「C:完全にランダム」の単語・要素をこちらでピックアップし、システム化可能な独創的アイデアを3つ生成しました。10,000個のうちの最初の3個として、ぜひチェックしてみてください!
💡 システム化可能なランダム・アイデア3選
1. 【散歩×写真×AI】「構図指定型・街歩き写真クエストアプリ」
概要: 位置情報(GPS)とAI画像認識を組み合わせたシステム。GASやPython等で構築。「赤色と青色のコントラスト」「SF風のローアングル」など、ランダムに提示される「構図のお題」に沿って街で写真を撮影。投稿するとAIが判定・スコア化して記録されます。
システム化のポイント: 位置情報の取得、AI(Gemini Vision等)による画像解析、スコアとログのスプレッドシート自動蓄積。
2. 【文章×習慣×ゲーム】「未完了タスクが怪獣化する!短編小説ジェネレーター」
概要: GoogleカレンダーやToDoリストの「未消化タスク」をGASが定期監視。消化できずに残ったタスクの数や放置時間に応じて、Geminiが「そのタスクが怪獣となって街を暴れる短い怪獣小説」を自動生成してメールで送りつけてくるシステム。
システム化のポイント: Google API(Tasks/Calendar)との連携、GASの定期トリガー、放置度に応じたプロンプト生成とメール送信。
3. 【創作×ランダム】「AIと対話する『架空の異世界Webラジオ』自動生成プログラム」
概要: ユーザーが投稿した適当な単語を元に、Geminiが「異世界のラジオ番組の台本」を作成し、Google Text-to-Speech(音声合成API)で音声ファイル(MP3)化。毎朝ドライブに新しい番組音声が届くシステム。
システム化のポイント: Geminiによる台本作成、音声合成APIとの連携、Googleドライブへの自動音声ファイル出力。
補足事項の確認
方向性に問題はありませんでしょうか?「システム化できること」という条件を踏まえつつ、もっとこういう技術(例: スプレッドシートのみで完結、LINE連携など)を使いたいなどの追加変更があれば教えてください!
💡 次のアイデア探しの準備
引き続き10,000個の宝探し(システム化可能なアイデア出し)を進めていきましょう!
次の3つのアイデア(第4〜6号)を生成するために、どんな要素やアプローチを組み合わせてみたいか、ご希望はありますか?
パターンA: 今回話題に出た「音声合成(読み上げ/リスニング)」を組み込んだシステムアイデア
パターンB: 完全にランダムな異分野の組み合わせ(例: 「料理」×「画像認識」×「自動化」など)
パターンC: 既存のYouTubeやSNSなどの「コンテンツ制作・分析」を自動化するアイデア
ご興味のあるパターンや、追加したい制限・テーマがあればぜひ教えてください!
💡 エディターズ・注釈
「10,000個に1個面白いネタがあればいい」というマインドセットと、「システム化(プログラム化)可能であること」という条件が追加された。これにより、ただの妄想アイデアではなく、実際にGASやAPIで開発可能なアイデアが出力されるようになった。
第4章:全9例のアイデア検証(音声・異分野・コンテンツ自動化)
『プロンプト』
全てのパターンを一度見てみたいので、3例ずつで良いので例示してもらえるだろうか?
『Geminiの回答』
喜んで!パターンA(音声合成・リスニング活用)、パターンB(異分野の完全ランダム)、パターンC(コンテンツ制作・分析自動化)の全3パターンから、システム化可能な独創的アイデアを3例ずつ、計9例ご提示します。
音声合成の課題(SSML活用や口語変換)や、スプレッドシート×GAS×Geminiでの「拡散型自動蓄積」というこれまでの文脈も踏まえたアイデアたちです!
🎙️ パターンA:音声合成(読み上げ・耳活)を活用するシステムアイデア
1. 「SSML自動チューニング機能付き」AIパーソナルラジオ
概要: Geminiが作った原稿に対し、GASが自動で<break>(間)や pitch(声の高さ)などのSSMLタグを挟み込んでGoogle TTSに送信。毎朝、違和感を抑えた自然なナレーションで「今日のアイデア&豆知識」がGoogleドライブにMP3で届くシステム。
ポイント: 音声合成特有の「機械っぽさ」をプログラム側で自動緩和する実験を兼ねた学習・情報インプットツールです。
2. 「対話型で不自然さを消す」AIラジオドラマ・ポッドキャスト生成機
概要: 1人の長文朗読だとイントネーションの違和感が目立つため、Geminiに「2人の掛け合い(対話形式)」で原稿を作らせ、男性ボイスと女性ボイスを交互に読み上げさせて合体音声ファイル(MP3)を作るシステム。
ポイント: 掛け合い(テンポの良い会話)にすることで、音声合成特有のアクセントの違和感が劇的に気にならなくなります。
3. 「耳でデバッグする」未完了タスク&アイデア音声要約
概要: スプレッドシートに溜まった10,000個の「ボツ案」や「やり残しタスク」から、GASがランダムに5つ抽出。Geminiが「ラジオの投稿お便り風」に要約し、音声化して散歩中に聴けるようにするシステム。
ポイント: 画面を見る作業に疲れた時、耳から意外なアイデアやタスクをインプットして脳を刺激できます。
🎲 パターンB:異分野の完全ランダム掛け合わせアイデア
4. 【料理 × 画像認識 × 自動化】「冷蔵庫の残り物で作る異世界レストランメニュー」
概要: 冷蔵庫の中身の写真をGoogleドライブにアップすると、Gemini Vision(画像認識)が食材を特定。それらを使って「異世界のファンタジー料理風のメニュー名とレシピ」を自動生成し、スプレッドシートの献立ログに記録するシステム。
ポイント: 日常の「自炊」という作業を、ゲーム感覚のエンタメ体験に変換します。
5. 【観光 × 乱数 × 自動通知】「ミステリー散歩ステップ生成ポータル」
概要: 「現在地から◯km圏内」を指定すると、GASがランダムな方角と距離(例:北東に800m進んで最初に見えた赤い看板の店に入る)を算出し、Geminiがそこに「架空のミッション」を付与してLINEやメールに送信するシステム。
ポイント: いつもの散歩コースを、完全ランダムな冒険フィールドに変身させます。
6. 【天候 × 感情 × 創作】「雨の日限定・哀愁ショートストーリー自動出力機」
概要: OpenWeatherMap(無料気圧・天気API)とGASを連携。あなたの住む地域で「雨が降り始めた瞬間」に自動で発動し、Geminiがその天候にぴったりの短編小説やポエム、3D制作のアイデアお題をスプレッドシートに書き出すシステム。
ポイント: 天気という外部要因(リアルタイムデータ)をトリガーにして感情や創造性を揺さぶります。
🎬 パターンC:コンテンツ制作・分析を自動化するアイデア
7. 【YouTube・SNS】「バズ動画の『構造だけ』を抽出するアイデア変換機」
概要: 気になるYouTube動画のURLや文字起こしテキストをスプレッドシートに貼ると、Geminiが「なぜ面白いのか(構成・演出・引き込み方)」の構造だけを抽象化。それをあなたの趣味(3D・イラスト・学習)に置き換えた「新しい企画案」として出力するシステム。
ポイント: 他人のコンテンツをパクるのではなく、優れた「構造(フレームワーク)」だけを自動で自分の創作に応用できます。
8. 【3D・イラスト】「自動生成アセット・仕様書ジェネレーター」
概要: スプレッドシートに「サイバーパンク」「和風」などの大枠テーマを入れると、GeminiがBlender等で制作するための「具体的な3Dモデルの仕様書(ポリゴン数の目安、カラーパレット、質感設定、小物の組み合わせ案)」を10パターン自動生成するシステム。
ポイント: 3D制作を始める前の「何を作ろう?」「どんな設定にしよう?」という迷いの時間をゼロにします。
9. 【学習・発信】「1つの学びを3つのSNS用にマルチフォーマット化するAI」
概要: あなたが学んだことやメモを1行スプレッドシートに書くだけで、Geminiが「①X(旧Twitter)用の箇条書き」「②ブログ用の段落構成」「③動画用のショート動画台本」の3パターンに一括変換して保存するシステム。
ポイント: 1回のアウトプットから3倍のコンテンツを自動で生み出す、発信効率化の仕組みです。
補足事項の確認
全9例のアイデアをご覧いただいて、方向性に問題はありませんでしょうか?
「このパターンの中の〇番の切り口が特にワクワクした!」「こういう技術の組み合わせなら自分でも作れそう」など、気になる番号や追加・変更したいご要望があれば、ぜひ教えてください!
💡 エディターズ・注釈
3つの異なる技術・分野パターン(音声、異分野ランダム、コンテンツ制作)から計9つのアイデアを試作生成された。具体的なシステム構成案(使用APIや処理フロー)まで含めて出力させることで、開発の実現可能性を検証している。
第5章:システム要件の整理とGoogleドキュメント連携案
『プロンプト』
ここまでの議論を踏まえてこれは実際にシステムを作りたくなった。 この会話をダウンロードして解析した上で、システム化を進めようと思う。 キーワードをAIに生成してもらってアイデア化することも加味しておこうと思う。
『Geminiの回答』
素晴らしい決断ですね!これまでのブレスト内容、システム構成、新しく追加された「AIによるキーワード自動生成&拡散メカニズム」を包括したシステム要件・設計ドキュメント(PDF)を作成いたしました。
💡 今後のシステム化に向けた設計要点まとめ
1. キーワード自動補完機能(新規追加)
入力シートにあなたが単語を入れた場合はそれを使い、空欄の場合はGemini自身が完全にランダムなキーワード(例:「深海」「レトロ」「気圧」など)を自動生成して掛け合わせます。
2. 完全自動で自走する定期実行(GAS)
GASの「時間主導型トリガー」により、PCを開いていなくても毎日裏でアイデアが生成され、出力用シートにどんどん蓄積(ログ化)されていきます。
3. 「10,000個に1個の宝」を見つけるデータベース構造
出力シートには「生成日時」「使用キーワード」「アイデア概要」「システム化のアプローチ」「お気に入りフラグ(チェックボックス)」を用意し、後から簡単に絞り込めるようにします。
📋 システム開発を開始・検討するための質問
システム化を進めるにあたり、最初の一歩について伺わせてください!
1. GASのコード作成(スプレッドシート連携やGemini APIを叩くスクリプト)から一緒に始めますか?
2. それとも、入力用・出力用スプレッドシートのレイアウト(項目設計)の決定から進めますか?
3. AIに自動生成させるキーワードの方向性(完全な無脈絡ランダムにするか、少しジャンル分けをするか)にご希望はありますか?
方向性や補足事項に問題がないか確認し、次のステップへ進めていきましょう!
『プロンプト』
何を出力するのかを決める必要はあるかと思う。 例えば要件をスプレッドシートに出力するのでは、少し可読性に問題が出て来そうなので、例えば、簡単な要件はPDFもしくはGoogle ドキュメントに記載して、そのリンクをスプレッドシートに記載するとかが出来ればそうしたい。
『Geminiの回答』
ご提示いただいた詳細な前提と目的(要件)、素晴らしい整理ですね!
ご質問の「出力形式(スプレッドシートへの直接記載 vs. PDF/Googleドキュメント連携)」について、GAS×Geminiの構成で実現可能な最適な設計案をご提案します。
💡 出力形式に関するご提案
スプレッドシートに長文のアイデアや仕様要件をすべて詰め込むと、セルが巨大化して一覧性が下がり、可読性が損なわれるという懸念は非常に本質的です。
この課題を解決するため、「2段階出力システム」の構成がおすすめです。
1. 出力の2段階構成案
スプレッドシート(一覧・データベース):
生成日時 / トリガーキーワード(入力ワードまたはAI自動生成ワード) / アイデアのタイトル(短く一言で) / キャッチコピー / 概要(1〜2行程度) / ドキュメントへの直リンク / お気に入り・評価フラグ(チェックボックス)
Googleドキュメント(詳細な要件・構成シート):
タイトル / アイデアの詳細内容(背景・狙い) / システム化の構成案(GAS/Gemini/その他連携APIなど) / 次のステップ・詳細検討用チェックリスト
2. GASでの自動化の流れ
1. GASがGemini APIを呼び出し、アイデアを生成。
2. GASが「Google Docs API」を使ってGoogleドキュメントを新規作成し、詳細テキストを自動書き込み。
3. 作成されたドキュメントのURLを取得し、スプレッドシートの該当行に自動でハイパーリンクを追記。
※PDF化もGASの標準機能(`getAs(‘application/pdf’)`)で可能ですが、まずは後から編集・加筆しやすいGoogleドキュメントを自動生成し、そのリンクをスプレッドシートに蓄積する構成が個人開発では最も柔軟でおすすめです!
📋 提案に対する確認
この「スプレッドシート(一覧管理)+ Googleドキュメント自動生成(詳細リンク記載)」という出力設計の方向性はいかがでしょうか?
方向性に問題がなければ、以下のどの部分から具体化(コード作成やプロンプト設計など)を進めていきたいか教えてください!
💡 エディターズ・注釈
UI/UXの観点から「スプレッドシートのセルに長文を入れると読みにくくなる」という現実的な課題を提起した。これに対し「スプレッドシートは一覧管理(DB)」、「詳細はGoogleドキュメントを自動生成してリンクを貼る」という2段階構成のアイデアが生まれ、実用的なシステム設計に昇華していく。
第6章:キーワードとジャンルの独立管理・ロジック確定
『プロンプト』
もう一つ、pdfを見ていて気になったのが、入力シートで、基本的には最初にある程度キーワードを埋めておくつもりでいる。(この辺の認識に差異がある様に思えた。)
そして適時キーワードを追加する感じだ。
なので、システムは、それを前提に、入力シートのキーワードをもとにシステムのアイデアを吐き出すイメージになる。
その際に、入力シートからだけではなく、AI生成のキーワードを使ってアイデア出しを行うイメージだ。なのでキーワードをどのくらいの頻度で生成するかと言うのは要検討かと思う。
もう一点キーワードだけではなくジャンルも一定数事前登録しておいた方が良いのか気になる。
そういう前提で、アイデアを作っていくのだが、それも毎回何点例示するか決めておく方が良いかとも思う。
『Geminiの回答』
ご提示いただいた用途・目標・詳しい手順の要件、そして入力シートの仕様に関する補足、すべて明確に理解いたしました!
スプレッドシートの入力運用についての「最初の認識の差異」についても大変失礼いたしました。「ユーザーがあらかじめキーワードをストック・追加しておき、システムはそのキーワード群をベースにしつつ、必要に応じてAI生成キーワードも交えてアイデア化する」という前提でしっかりと設計をアップデートいたします!
いただいた前提と疑問点(ジャンルの事前登録、生成数の固定)を踏まえ、システム構成の整理とご質問への回答をまとめました。
💡 疑問点への回答&システム設計の整理
1. 「ジャンル」も事前登録しておいた方が良いか?
はい、事前登録(またはカテゴリ列の作成)しておくことを強くおすすめします!
2. アイデアの出力個数は毎回決めておくべきか?
はい、1回のトリガー実行あたり「3点」など固定にしておくのが最も安定します!
3. キーワード生成の頻度と組み合わせロジック
パターンA(ユーザーキーワード優先)/ パターンB(AIキーワードの自動足し算)/ パターンC(完全AIおまかせ)
『プロンプト』
ジャンルについては別シート化しておいた方が良い気はする。
もう一点、プログラムを作る際に、「アイデアを3件提示しろ」というのと「アイデアを一件提示しろ」というのを3階繰り返すのではどちらが良いだろうか?
アイデアの前提となるキーワードを毎回渡しなおす前提で、AIの呼び出しも無料枠の範囲でとした場合のメリットデメリットを考えて欲しい。
『Geminiの回答』
ご質問いただいた2点について、ご提示の前提(無料枠の範囲、毎回キーワードを渡し直す)を踏まえてメリット・デメリットを整理・比較しました!
1. ジャンルの別シート化について:別シート化を強くおすすめします!
2. API呼び出しの回数比較:1回の呼び出しで3件一括生成するアプローチが圧倒的におすすめです(無料枠消費、処理速度、3案の多様性保証の面から)。
『プロンプト』
ありがとう。一回に3案提示してもらう方が良いことは認識した。
その上で、入力用にキーワードシートとジャンルシートを設定することも了解。
ただ、その使い方に認識の相違がある様な気がする。
あくまでもキーワードはキーワードでシステムで3点ほど抽出し、ジャンルもジャンルでシステムが自動で抽出する認識だ。
人間がキーワードを入れる時にジャンルを選定する運用は想定していなかった。
人間が普段行う作業はキーワードの追加、ジャンルの追加でそれぞれは独立している認識だ。
それともキーワードの追加ごとにそのキーワードのジャンルを設定することとすると、キーワードにジャンルが紐づいてしまいアイデアの広がりに枷がはめられることになるのではないか。
『Geminiの回答』
キーワードとジャンルの運用に関するご指摘、ハッとさせられました。大変素晴らしい視点です!完全にユーザー様のおっしゃる通りです。
キーワードとジャンルを固定で紐づけてしまうと「この単語はこのジャンルでしか使えない」という固定観念が生まれ、せっかくの「予期せぬ化学反応(拡散)」という最大のメリットが殺されてしまいます。
独立させた方が「思いもよらない組み合わせ」が生まれ、アイデアの広がりに一切の枷がなくなりますね。認識を完全にアップデートいたしました!
💡 修正後のキーワード・ジャンルの運用ロジック
1. 入力データの独立管理(「キーワード」シートと「ジャンル」シートを完全分離)
2. GASによるランダム・シャッフル&掛け合わせ(実行時にそれぞれからランダム抽出してプロンプトで結合)
💡 エディターズ・注釈
私から行った「キーワードとジャンルを紐づけると発想に枷(かせ)がはめられる」という指摘は、システム設計における大きな転換点となった。両者を完全に独立したデータプールとして保持し、実行時にシステム側でシャッフル抽出することで、クロスジャンルなアイデア生成ロジックが完成した。
第7章:仕様確定と完成GASコード
『プロンプト』
進んで下さい。
『Geminiの回答』
理解いたしました!シート設計の方向性について、完璧に把握いたしました。
『プロンプト』
進んで下さい。
『Geminiの回答』
以下に、GoogleスプレッドシートおよびGoogle Workspace環境でそのまま利用できる GAS(Google Apps Script)のコード を用意いたしました。
このコードは、自動実行(トリガー)によって以下の処理を一括で行います。
- `キーワード` シートからランダムに単語を抽出(足りない場合はAIが補完)
- `ジャンル` シートからランダムに1つのジャンルを選択
- Gemini API を1回呼び出し、互いに全く異なる切口のアイデアを3案生成
- 生成された要件・詳細を記述した Googleドキュメント を新規作成
- `アイデア出力一覧` シートにタイトルとURLを自動追記
🛠️ GASコード(`コード.gs`)
スプレッドシートのメニューから 「拡張機能」>「Apps Script」 を開き、以下のコードを貼り付けて保存してください。
/**
* 【メイン処理】タイマー実行用関数
*/
function generateIdeasMain() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
// 1. 設定シートからAPIキーを取得
const apiKey = ss.getSheetByName('設定').getRange('A1').getValue();
if (!apiKey) {
throw new Error('「設定」シートのA1セルにGemini APIキーを入力してください。');
}
// 2. キーワード・ジャンルの取得とランダム選出
const keywordSheet = ss.getSheetByName('キーワード');
const genreSheet = ss.getSheetByName('ジャンル');
const keywords = keywordSheet.getRange('A2:A' + keywordSheet.getLastRow()).getValues().flat().filter(String);
const genres = genreSheet.getRange('A2:A' + genreSheet.getLastRow()).getValues().flat().filter(String);
// キーワードをランダムに1〜2個抽出(無い場合は空枠)
const selectedKeywords = getRandomElements(keywords, 2);
// ジャンルをランダムに1個抽出
const selectedGenre = genres.length > 0 ? genres[Math.floor(Math.random() * genres.length)] : "おまかせ・ランダム";
// 3. Gemini APIへ送るプロンプトの作成
const prompt = createPrompt(selectedGenre, selectedKeywords);
// 4. Gemini APIの呼び出し (JSON形式で受け取る)
const apiResponse = callGeminiAPI(apiKey, prompt);
// 5. Googleドキュメントの生成
const docUrl = createGoogleDoc(apiResponse, selectedGenre, selectedKeywords);
// 6. 出力一覧シートへ書き込み
const outputSheet = ss.getSheetByName('アイデア出力一覧');
const now = new Date();
// 3案のタイトルを1つのテキストに結合
const titlesSummary = apiResponse.ideas.map((idea, index) => `${index + 1}. ${idea.title}`).join('\n');
const usedKeywordsStr = selectedKeywords.length > 0 ? selectedKeywords.join(', ') : '(AI補完)';
outputSheet.appendRow([
now,
selectedGenre,
usedKeywordsStr,
titlesSummary,
docUrl,
false // お気に入り用チェックボックス(初期値:FALSE)
]);
Logger.log('処理が正常に完了しました。ドキュメントURL: ' + docUrl);
}
/**
* プロンプト生成関数
*/
function createPrompt(genre, keywords) {
const keywordText = keywords.length > 0 ? keywords.join('、') : '特になし(AI側で自由に設定してください)';
return `
あなたはアイデア生成のプロです。
以下の「ジャンル」と「キーワード」を掛け合わせ、相互に全く異なる視点・アプローチの独創的なアイデアを【3つ】生成してください。
【指定パラメータ】
・ターゲットジャンル: ${genre}
・使用キーワード: ${keywordText}
【出力要件】
* リクエストに対して必ず【3つ】のアイデアを提示すること。
* 必ず以下のJSON形式でのみ出力してください。余計な解説文やマークダウンの枠組みは含めないでください。
{
"ideas": [
{
"title": "アイデア1のタイトル",
"overview": "アイデア1の概要(100文字程度)",
"details": "具体的な内容、特徴、システム化や実現へのアプローチ",
"nextStep": "実現に向けた最初のステップや確認事項"
},
{
"title": "アイデア2のタイトル",
"overview": "アイデア2の概要(100文字程度)",
"details": "具体的な内容、特徴、システム化や実現へのアプローチ",
"nextStep": "実現に向けた最初のステップや確認事項"
},
{
"title": "アイデア3のタイトル",
"overview": "アイデア3の概要(100文字程度)",
"details": "具体的な内容、特徴、システム化や実現へのアプローチ",
"nextStep": "実現に向けた最初のステップや確認事項"
}
]
}
`;
}
/**
* Gemini API呼び出し関数
*/
function callGeminiAPI(apiKey, prompt) {
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${apiKey}`;
const payload = {
"contents": [
{
"parts": [
{ "text": prompt }
]
}
],
"generationConfig": {
"response_mime_type": "application/json"
}
};
const options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(payload),
"muteHttpExceptions": true
};
const response = UrlFetchApp.fetch(url, options);
const json = JSON.parse(response.getContentText());
if (json.error) {
throw new Error('Gemini API Error: ' + json.error.message);
}
const resultText = json.candidates[0].content.parts[0].text;
return JSON.parse(resultText);
}
/**
* Googleドキュメント作成関数
*/
function createGoogleDoc(apiData, genre, keywords) {
const today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy-MM-dd_HHmm');
const docTitle = `アイデア提案書_${today}`;
const doc = DocumentApp.create(docTitle);
const body = doc.getBody();
// タイトル
body.appendParagraph(`💡 アイデア提案書(${today})`)
.setHeading(DocumentApp.ParagraphHeading.HEADING1);
// 前提情報
const keywordText = keywords.length > 0 ? keywords.join('、') : 'AI自動生成';
body.appendParagraph(`■ ジャンル: ${genre}\n■ 使用キーワード: ${keywordText}\n`);
body.appendHorizontalRule();
// 3案の書き込み
apiData.ideas.forEach((idea, index) => {
body.appendParagraph(`アイデア ${index + 1}: ${idea.title}`)
.setHeading(DocumentApp.ParagraphHeading.HEADING2);
body.appendParagraph(`【概要】\n${idea.overview}\n`);
body.appendParagraph(`【詳細・実現アプローチ】\n${idea.details}\n`);
body.appendParagraph(`【次のステップ】\n${idea.nextStep}\n`);
body.appendHorizontalRule();
});
doc.saveAndClose();
return doc.getUrl();
}
/**
* 配列から指定数をランダム抽出するユーティリティ関数
*/
function getRandomElements(arr, count) {
const shuffled = arr.slice().sort(() => 0.5 - Math.random());
return shuffled.slice(0, count);
}
⚙️ 自動実行(トリガー)の設定手順
コードを貼り付けて保存したら、毎日自動でアイデアが蓄積されるようにトリガーを設定します。
- Apps Script画面の左メニューにある 時計アイコン(トリガー) をクリックします。
- 右下の 「トリガーを追加」 ボタンを押します。
- 以下の通り設定して保存します:
- 実行する関数を選択: `generateIdeasMain`
- イベントのソースを選択: 時間主導型
- 時間型トリガーのタイプを選択: 日付ベースのタイマー
- 時刻の選択: お好みの時間帯(例: 午前0時〜1時)
🚀 テスト実行のしかた
- `設定` シートの `A1` セルに Gemini APIキー を貼り付けます。
- `キーワード` シートと `ジャンル` シートに適当な単語をいくつか入力します。
- Apps Scriptの画面上部で `generateIdeasMain` を選択し、「実行」 ボタンを押します。
- 初回実行時のみ、Googleアカウントのアクセス許可(承認)を求めるポップアップが表示されますので許可してください。
- 実行完了後、`アイデア出力一覧` シートに新しい行が追加され、生成された GoogleドキュメントのURL が書き込まれているか確認してください。
