Vibe Coding(バイブコーディング)とは
Vibe Coding(バイブコーディング)とは、AIを活用して、開発者がコードを直接書くのではなく、実現したい「雰囲気(vibe)」や要件を自然言語で伝えるだけで、AIがコードを生成・実行する新しい開発手法です。従来のプログラミングのように、詳細なコード記述やデバッグに時間を費やすのではなく、AIに指示を出しながら、アプリケーションのアーキテクチャや機能の設計に集中できるのが特徴です。
Google AI Studioとは
Google AI Studioは、Googleが提供するブラウザベースのAI開発プラットフォームです。Googleの最新AIモデルであるGeminiシリーズを、プロンプトを入力して試したり、API経由で利用したりすることができます。初心者でも直感的に操作できるインターフェースを備えており、AI開発の経験が少ない人でも気軽に利用できます。また、無料プランも提供されており、コストを抑えながらAI開発を試すことができます。
作成するもの
テーマ/目的
「酒好きな人が楽しめるゲーム集」というwebサイトを作成する
なぜやるか
お酒が好きなので、お酒をテーマにAI活用を模索したい(笑)
+VibeCodingの経験を得るため
+Google AI Stuidoに慣れるため
企画・アイデア出しフェーズ用プロンプト
企画・アイデア出しフェーズ用プロンプト①
酒好きな人が楽しめるゲームを作りたい
回答
details
お酒好きが楽しめるゲーム、素晴らしいアイデアですね!
飲むだけでなく、知識や感覚を使いながら仲間と盛り上がれるゲームは、お酒の席を何倍も楽しくしてくれます。
ターゲット(ガチな愛好家向けか、ライトなファンも混ざるのか)や、シチュエーション(宅飲み、オンライン飲み会など)に合わせて、いくつかゲームのアイデアを提案します。
カテゴリー1:アナログゲーム(宅飲み・パーティー向け)
実際に顔を合わせて、お酒を飲みながらワイワイ楽しむゲームです。
1. 利き酒ブラインドテスト「利き酒マイスター」
定番ですが、最も盛り上がるゲームの一つです。
概要: 銘柄を隠した複数のお酒を飲み比べ、どれがどのお酒かを当てるゲーム。
準備するもの:
特徴の違う日本酒やワインなどを3〜5種類(純米酒、吟醸酒、本醸造酒など)
中身が見えない同じ形のグラスやお猪口
目隠し(任意)
回答用紙とペン
答え合わせ用のボトル
遊び方:
ホストは各グラスに違うお酒を注ぎ、番号を振っておく。
参加者はテイスティングし、香りや味わいの感想をメモする。
「1番は爽やかな吟醸香がするから、きっとAの酒だ」というように予想を立て、回答用紙に記入する。
全員の回答が終わったら答え合わせ。正解数が最も多い人が「利き酒マイスター」の称号を得る。
楽しむポイント:
自分の味覚・嗅覚に挑戦するワクワク感。
「これはフルーティー」「いや、米の旨味が強い」など、感想を言い合うのが楽しい。
意外な結果に一喜一憂できる。
2. 日本酒全国漫遊すごろく
知識と運が試される、旅情感あふれるゲームです。
概要: 日本地図が描かれたすごろく盤の上をコマで進み、止まったマス(都道府県)にちなんだお題に挑戦する。
準備するもの:
日本地図を模した手作りのすごろく盤
サイコロ、コマ
イベントカード(「新潟に到着!地酒(を用意してあれば)を一杯飲む」「灘の酒蔵クイズ!正解すれば2マス進む」など)
遊び方:
サイコロを振ってコマを進める。
止まったマスの指示に従う(クイズ、ミニゲーム、お酒を飲むなど)。
最初にゴール(例えば東京や自分の故郷)にたどり着いた人が勝ち。
楽しむポイント:
日本各地の酒蔵や名産品に詳しくなれる。
クイズやイベントを通して、自然とお酒の知識が深まる。
3. 最強のマリアージュ・カードゲーム
食とお酒の組み合わせ(マリアージュ)を考える創造的なゲームです。
概要: 「お酒カード」と「おつまみカード」を組み合わせて、指定されたテーマに最も合う「最強のマリアージュ」を提案する。
準備するもの:
お酒カード(「キレのある辛口純米酒」「フルーティーな白ワイン」など)
おつまみカード(「刺身の盛り合わせ」「ブルーチーズ」「唐揚げ」など)
お題カード(「真夏の夜に最高の一杯」「失恋した友達を慰める組み合わせ」など)
遊び方:
各プレイヤーに手札としてお酒・おつまみカードを配る。
親が山札からお題カードを1枚引いて読み上げる。
プレイヤーは手札から「これだ!」と思うお酒とおつまみの組み合わせを場に出し、その理由をプレゼンする。
親が最も良いと思った組み合わせを選び、選ばれたプレイヤーがポイント獲得。
楽しむポイント:
プレゼン次第で、意外な組み合わせが評価されることも。
人の好みや発想の違いが面白い。
実際にそのおつまみを用意しておくと、さらに盛り上がる。
カテゴリー2:アプリ・デジタルゲーム(オンライン飲み会・一人でも)
スマホやPCで手軽に楽しめるゲームです。
1. 酒蔵経営シミュレーションゲーム「俺の酒蔵」
概要: プレイヤーが酒蔵の当主(杜氏)となり、米や水を選び、独自の製法で日本酒を造り、鑑評会での金賞を目指す育成シミュレーションゲーム。
ゲーム要素:
原料選び: 山田錦、五百万石など、様々な酒米を栽培・購入。
醸造プロセス: 精米歩合、酵母の種類、温度管理などを細かく設定。
販売・経営: 出来上がったお酒に名前をつけ、ラベルをデザインし、販売戦略を立てる。
イベント: 全国新酒鑑評会、季節のイベントなど。
楽しむポイント:
お酒造りの奥深さを疑似体験できる。
自分が作った「理想の酒」が評価された時の達成感。
2. SAKEクイズ・トリビアアプリ
概要: お酒に関する知識を問うクイズアプリ。早押しやオンライン対戦機能も搭載。
クイズのジャンル:
歴史: 日本酒やビールの歴史。
製法: 専門用語(生酛、山廃など)の意味。
地域: 各地の有名な銘柄や酒蔵。
雑学: 有名な文豪が好きだったお酒など。
楽しむポイント:
スキマ時間に手軽に知識を増やせる。
全国の酒好きとランキングを競える。
カテゴリー3:コミュニケーション・心理ゲーム(パーティー向け)
お酒の場での会話を主体とした、よりインタラクティブなゲームです。
1. 偽ソムリエを探せ!(人狼ゲーム風)
概要: 参加者の中に一人だけいる「知ったかぶり(偽ソムリエ)」を会話の中から見つけ出すゲーム。
準備するもの:
少し特徴的なお酒(日本酒、ワイン、ウイスキーなど)
役割カード(「ソムリエ」「偽ソムリエ」)
遊び方:
全員で同じお酒をテイスティングする。
一人ずつ、そのお酒の感想を「ソムリエっぽく」語る。
本物のソムリエは、本当に感じた香りや味を表現する。
偽ソムリエは、他の人の感想を真似したり、適当なことを言ってごまかす。
全員の発表後、「誰が偽ソムリエか」を議論し、投票で追放する。
楽しむポイント:
もっともらしい嘘をつくスリルと、それを見破る快感。
人の表現力や観察力が試される。
ゲームを面白くするコツ
ターゲットを明確に: 超マニアックなクイズは初心者にはつらい。誰もが楽しめるように、知識レベルを調整する。
五感を刺激する: ただ飲むだけでなく、「香り」「色」「味」について言葉で表現する機会を作ると、お酒をより深く味わえる。
主役はお酒: ゲームに夢中になりすぎて、お酒の味が分からなくならないように注意。あくまで「お酒をより楽しむためのツール」と位置づける。
飲み過ぎ防止: ゲームの罰ゲームを「一気飲み」にするのは避けるなど、安全に楽しめるルール作りを心がけましょう。
ぜひ、これらのアイデアを元に、世界に一つだけの楽しいお酒ゲームを企画してみてください!
企画・アイデア出しフェーズ用プロンプト②
簡単に作れてwebで公開できるゲームのアイデアを6つ教えてください。
お酒を飲ませるゲームではなく、場の話題作りやお酒の知識の幅を広げるためにみんなが使いやすいゲームツールを考えてください。
回答
details
承知いたしました。
お酒を飲むことを強制せず、場の会話を豊かにし、知識の幅も広がるような、**「簡単に作れてWebで公開できるゲームツール」**のアイデアを6つ提案します。
どれも基本的なWeb技術(HTML, CSS, JavaScript)で実装可能で、スマホのブラウザからみんなで手軽に使えるものを想定しています。
1. SAKEガチャ / カクテルガチャ
今日の最初の一杯や、次に飲むお酒のヒントをくれるシンプルなツールです。
概要:
ボタンをタップすると、ランダムでお酒の銘柄(日本酒、ワイン、ビールなど)やカクテルの名前が、それにまつわる豆知識と共に表示されます。
使い方:
サイトにアクセスし、「ガチャを回す!」ボタンをタップ。
例:「【獺祭 純米大吟醸45】が登場! 山口県のお酒で、フルーティーな香りが特徴。海外でも大人気なんだって!」のように表示される。
盛り上がるポイント:
「あ、これ知ってる!」「こんなお酒あるんだ、飲んでみたいね」という会話のきっかけに。
表示されたお酒を、その場で注文してみるのも一興です。
作りやすさ:
お酒のデータ(名前、豆知識)を配列で用意し、ボタンクリックでランダムに一つ選んで表示するだけなので、非常に簡単に作れます。
2. おつまみルーレット
「次、何食べる?」の会話を楽しくするマリアージュ提案ツールです。
概要:
ルーレットを回すと、今飲んでいるお酒に合うおつまみをランダムで提案してくれます。「日本酒」「ビール」「ワイン」など、お酒のジャンルごとにルーレットを切り替えられると更に便利です。
使い方:
お酒のジャンルを選択(例:日本酒)。
「ルーレットを回す」ボタンをタップ。
ルーレットが回り、「エイヒレ」「塩辛」「チーズ」などで止まる。
盛り上がるポイント:
「日本酒にチーズ!?意外だけど試してみる?」など、新しい発見があります。
「コンビニで買えるもの限定」など、その場の状況に合わせたテーマで遊べます。
作りやすさ:
おつまみリストを用意し、ランダム表示するだけでも作れます。CSSアニメーションを使えば、見た目も楽しいルーレットが実装可能です。
3. SAKE用語 三択クイズ
知っているようで知らない、お酒の専門用語を楽しく学べるクイズツールです。
概要:
「生酛(きもと)」「テロワール」といったお酒に関する専門用語の意味を、三択クイズ形式で出題します。
使い方:
「クイズ開始」ボタンを押すと、問題が表示される。
例:「Q. ワインでよく聞く『テロワール』ってどういう意味?」
A. ブドウの品種名
B. ワインの熟成樽の種類
C. ブドウ畑の土壌や気候などの生育環境
回答を選ぶと、正解・不正解と詳しい解説が表示される。
盛り上がるポイント:
オンライン飲み会で画面共有し、みんなで相談しながら解くと盛り上がります。
「へぇ〜!」という発見が多く、自然とお酒の知識が深まります。
作りやすさ:
クイズデータ(問題、選択肢、正解、解説)をJSONなどで用意し、それを表示・判定するロジックを組むことで作成できます。
4. 今夜の気分で選ぶお酒診断
簡単な質問に答えるだけで、今の気分にぴったりのお酒を提案してくれる診断ツールです。
概要:
「今日はどんな気分?」「甘いのと辛いの、どっちが好き?」といった複数の質問に答えていくと、おすすめのお酒のジャンルと、その理由を教えてくれます。
使い方:
「診断スタート」を押し、2〜3個の質問に答える。
例:「今のあなたには…キリッと冷えた【辛口の白ワイン】がおすすめ!頑張った自分へのご褒美に、スッキリした味わいでリフレッシュしませんか?」のように結果が表示される。
盛り上がるポイント:
「当たってる!」「私はこれだったよ」と診断結果をシェアし合うのが楽しい。
普段選ばないお酒が提案され、新しい扉を開くきっかけになります。
作りやすさ:
質問と回答に応じた結果を予め用意し、簡単な条件分岐で表示させるだけで作れます。
5. 酒蔵・ワイナリー日本地図
日本各地のお酒を旅する気分が味わえる、インタラクティブな地図ツールです。
概要:
日本地図が表示され、都道府県をタップすると、その土地の代表的な酒蔵、ワイナリー、地ビール、銘柄などの情報がポップアップで表示されます。
使い方:
気になる都道府県を地図上でタップ。
例:新潟県をタップ→「久保田(朝日酒造)」「八海山(八海醸造)」などの情報が表示される。
盛り上がるポイント:
「自分の出身地はこれだ!」「旅行で行った〇〇の酒、美味しかったよね」と、思い出話や地元トークに花が咲きます。
次に行きたい旅行先の話にも繋がります。
作りやすさ:
SVG形式の日本地図を使えば、各都道府県をクリック可能にできます。表示するデータを用意する手間はありますが、有名なものを数件に絞れば実現可能です。
6. ブラインドテイスティング・サポートツール
宅飲みでの「利き酒」を、スマホでスマートに楽しめるようにする補助ツールです。
概要:
銘柄を隠したお酒を飲み比べ、どれがどのお酒かを当てるゲーム(ブラインドテイスティング)の回答入力と結果発表をWeb上で行います。
使い方:
ホスト(出題者)がお酒を3種類用意し、A, B, Cと番号を振る。
参加者はそれぞれスマホでツールにアクセスし、テイスティングしながら「Aは〇〇、Bは△△…」と予想を入力・送信する。
全員の入力が終わったら、ホストが正解を入力して「結果発表!」ボタンをタップ。
全員の画面に、それぞれの正解数とランキングが一斉に表示される。
盛り上がるポイント:
紙とペンが不要で、集計の手間もかからず、スムーズにゲームが進行します。
結果発表の瞬間は、リアルタイムならではのドキドキ感があります。
作りやすさ:
簡単なフォームと、送信されたデータを集計して表示するページがあれば作れます。リアルタイム性を求めなければ、比較的シンプルに実装できます。
企画・アイデア出しフェーズ用プロンプト③
「おつまみルーレット」のような、もう少しシンプルにwebで実現できるアイデアをください。
例:「酔いどれ名言ジェネレーター」「今日の乾杯ムードメーカー」
回答
details
承知いたしました。「おつまみルーレット」のように、シンプルで、Webで手軽に実現でき、お酒の場の会話のきっかけになるツールのアイデアを提案します。
例として挙げていただいた「酔いどれ名言ジェネレーター」「今日の乾杯ムードメーカー」の方向性も踏まえ、JavaScriptの基本的な機能(ランダムな要素の選択、表示)だけで作れるものを中心に考えました。
1. 酔いどれ名言ジェネレーター
ご提案いただいたアイデアを具体化しました。歴史上の偉人や文豪の「お酒にまつわる名言」をランダムに表示するツールです。
概要:
ボタンを押すと、画面に「お酒の名言」と「誰の言葉か」がランダムに表示されます。
使い方:
「名言を表示」ボタンをタップ。
例:「酒の良さは、ただ酔うことにあるのではない。無礼講の雰囲気で、ふだん言えないような本音を語り合えることにあるのだ。 - 本田宗一郎」のように表示される。
盛り上がるポイント:
「深いね〜」「この人、こんなこと言ってたんだ!」と、知的な会話のきっかけに。
表示された名言に共感したり、ツッコミを入れたりして楽しめます。
作りやすさ:
名言と人物名のペアを配列で複数用意し、ボタンクリックでランダムに1つを選んで表示するだけ。非常にシンプルです。
2. 今日の乾杯コールメーカー
乾杯の音頭をマンネリ化させないための、ユニークな乾杯コールを生成するツールです。
概要:
「形容詞」「名詞」「締めの言葉」の3つのパーツをランダムに組み合わせて、オリジナルの乾杯コールを自動生成します。
使い方:
「乾杯コールを作る!」ボタンをタップ。
例:「【輝ける未来】に【幸多かれと願って】、【みんなで乾杯!】」のような文章が生成される。
生成されたコールを、誰かが代表して読み上げる。
盛り上がるポイント:
時に面白く、時にカッコいい、予想外の組み合わせが生まれて笑いを誘います。
オンライン飲み会で、毎回違う人がこのツールを使って乾杯の音頭を取る、というルールにすると一体感が生まれます。
作りやすさ:
各パーツの単語リスト(配列)を3つ用意し、それぞれからランダムに1つずつ選んで連結させるだけ。簡単に作れます。
3. SAKEフレーバー・ワードパレット
日本酒やワインの味を表現する言葉が思いつかない時に助けてくれる、語彙力サポートツールです。
概要:
「香り」「味わい」「後味」などのカテゴリー別に、テイスティングで使える表現(ボキャブラリー)をランダムに複数表示します。
使い方:
「言葉を探す」ボタンをタップ。
例:
香り: 「華やか」「フルーティー」「炊き立てのご飯」
味わい: 「米の旨味」「キレが良い」「ふくよか」
のように、表現のヒントがリストアップされる。
盛り上がるポイント:
「あ、そうそう!この『ふくよか』って感じがする!」「『炊き立てのご飯』は言い過ぎじゃない?笑」など、感想を言語化する手助けになります。
自分の感覚に合う言葉を探すゲーム感覚で使え、自然と表現力が豊かになります。
作りやすさ:
カテゴリーごとに表現の単語リストを用意し、ランダムに数個ピックアップして表示するだけです。
4. 次の一杯、どうする?シチュエーションガチャ
次に何を飲むか、気分や状況からヒントをくれるツールです。
概要:
ボタンを押すと、「〇〇な気分のあなたには、△△がおすすめ!」というように、シチュエーションとそれに合ったお酒のジャンルをランダムに提案します。
使い方:
「次のヒント」ボタンをタップ。
例:「じっくり語り合いたい夜には、【落ち着いた味わいの赤ワイン】はいかが?」や「揚げ物との相性抜群!【爽快なハイボール】で乾杯!」のように表示される。
盛り上がるポイント:
お店のメニューを見ながら、「じゃあ、この提案に乗ってみるか!」と次のオーダーを決めるのが楽しい。
宅飲みなら「ハイボール作ろうか」「赤ワイン、あったかな?」という会話につながります。
作りやすさ:
「シチュエーション」と「お酒のジャンル」のペアを配列で用意し、ランダムに表示するだけです。
5. あの頃のお酒ジェネレーター
指定した「年」に流行ったお酒や、その年に起こったお酒関連の出来事を表示するツールです。
概要:
ユーザーが西暦(例:1995年)を入力すると、その年にまつわるお酒のトピックを表示します。
使い方:
思い出の年(自分が生まれた年、社会人になった年など)を入力ボックスに入れる。
「表示」ボタンをタップ。
例:「1995年:この頃、地ビール(クラフトビール)がブームに!酒税法改正がきっかけでした。」のように表示される。
盛り上がるポイント:
「あー、あったあった!」「その頃、俺は〇〇飲んでたな」など、昔話に花が咲きます。
ジェネレーションギャップもまた一興です。
作りやすさ:
年ごとのデータを事前に調べて用意しておく必要がありますが、表示ロジック自体は入力された年に対応するデータを表示するだけなのでシンプルです。最初は数年分のデータから始められます。
6. 空想おつまみクリエイター
二つの食材をランダムに組み合わせて、奇想天外な「空想のおつまみ」を生成するツールです。
概要:
ボタンを押すと、「食材A」と「食材B」をランダムに組み合わせて、「〇〇と△△の〜」というおつまみ名を生成します。
使い方:
「おつまみ創造!」ボタンをタップ。
例:「アボカドと塩辛のブルスケッタ」「チーズとたくあんの春巻き」のような名前が表示される。
盛り上がるポイント:
「それ、意外と美味いかも!?」「いや、絶対マズいだろ!」と、想像力をかき立てる会話が生まれます。
実際に作ってみるチャレンジ企画に発展するかもしれません。
作りやすさ:
食材リストを2つ(または1つ)用意し、ランダムに2つ選んで連結させるだけ。非常に簡単に作れます。
コーディング・生成フェーズ用プロンプト
コーディング・生成フェーズ用プロンプト①
「酔いどれ名言ジェネレーター」面白いね!
シンプルな実装方法を教えて
回答
details
はい、承知いたしました。「酔いどれ名言ジェネレーター」はとてもシンプルに作れます!
HTML、CSS、JavaScriptというWebの基本技術だけで実装可能です。
ここでは、コピペしてPCのメモ帳などに保存し、ブラウザで開くだけで動く、一番簡単なサンプルコードをご紹介します。
完成イメージ
中央に名言を表示するエリアとボタンがある。
ボタンを押すたびに、名言と人物名がランダムに切り替わる。
シンプル実装コード(HTMLファイル1つで完結)
以下のコードをすべてコピーして、PCのメモ帳アプリ(Windows)やテキストエディット(Mac)に貼り付けます。
そして、ファイル名を「meigen.html」のように、末尾を「.html」にして保存してください。
保存したファイルをダブルクリックしてブラウザで開くと、もうジェネレーターが動きます!
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>酔いどれ名言ジェネレーター</title>
<!-- ここからCSS(デザイン部分) -->
<style>
/* ページ全体の基本設定 */
body {
font-family: 'Helvetica Neue', 'Hiragino Kaku Gothic ProN', 'Meiryo', sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f4f4f4; /* 背景色 */
text-align: center;
}
/* 全体を囲むコンテナ */
.container {
background-color: white;
padding: 40px;
border-radius: 10px;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
max-width: 90%;
width: 600px;
}
/* 名言を表示するエリア */
#quote-display {
min-height: 100px; /* 名言が変わっても高さがガタつかないように */
margin-bottom: 30px;
}
/* 名言のテキスト */
#quote-text {
font-size: 1.5em; /* 文字を少し大きく */
font-weight: bold;
color: #333;
}
/* 人物名 */
#quote-person {
font-size: 1.1em;
color: #555;
margin-top: 15px;
}
/* ボタンのデザイン */
button {
background-color: #ff9800; /* ボタンの色(オレンジ系) */
color: white;
border: none;
padding: 15px 30px;
font-size: 1em;
font-weight: bold;
border-radius: 50px; /* 角を丸くしてカプセル型に */
cursor: pointer; /* マウスを乗せると指マークに */
transition: background-color 0.3s; /* 色が変わるアニメーション */
}
/* ボタンにマウスを乗せた時の色 */
button:hover {
background-color: #e68900;
}
</style>
<!-- ここまでCSS -->
</head>
<body>
<div class="container">
<!-- 名言が表示される場所 -->
<div id="quote-display">
<p id="quote-text">ボタンを押して、今日の酔いどれ名言をチェック!</p>
<p id="quote-person"></p>
</div>
<!-- 名言を生成するボタン -->
<button id="generate-btn">次の名言へ</button>
</div>
<!-- ここからJavaScript(プログラム部分) -->
<script>
// 1. 名言のリストを用意する
// ここの中身を自由に追加・変更してください!
const quotes = [
{
text: "酒は百薬の長。されど万病の元。",
person: "ことわざ"
},
{
text: "酒の良さは、ただ酔うことにあるのではない。無礼講の雰囲気で、ふだん言えないような本音を語り合えることにあるのだ。",
person: "本田宗一郎"
},
{
text: "アルコールは、手術の痛みは消してくれないが、失恋の痛みは消してくれる。",
person: "ヴォルテール"
},
{
text: "一杯の酒は我々を饒舌にするが、二杯の酒は我々を粗暴にする。",
person: "吉田兼好(徒然草)"
},
{
text: "人生にビールを。ハッピーエンドに乾杯を。",
person: "スティーヴン・キング"
},
{
text: "まずい酒をうまそうに飲むのが、本当の酒飲みだ。",
person: "開高健"
},
{
text: "世界には、一杯のワインでしか開かない扉がある。",
person: "グレアム・グリーン"
}
];
// 2. HTMLの要素を取得する
const quoteTextElement = document.getElementById('quote-text');
const quotePersonElement = document.getElementById('quote-person');
const generateBtn = document.getElementById('generate-btn');
// 3. ボタンがクリックされたときの処理を定義する
generateBtn.addEventListener('click', () => {
// 名言リストの中からランダムに1つ選ぶ
const randomIndex = Math.floor(Math.random() * quotes.length);
const randomQuote = quotes[randomIndex];
// 選ばれた名言をHTMLに表示する
quoteTextElement.textContent = `「${randomQuote.text}」`;
quotePersonElement.textContent = `- ${randomQuote.person} -`;
});
</script>
<!-- ここまでJavaScript -->
</body>
</html>
コードの簡単な解説
<style>タグ内 (CSS)
ページ全体の見た目(デザイン)を決めています。
文字の大きさや色、背景色、ボタンの形などを指定しています。この中の色コード(#ff9800など)を変えると、簡単にデザインをカスタマイズできます。
<body>タグ内 (HTML)
実際に画面に表示される骨組みです。
id="quote-text" や id="quote-person" を付けた<p>タグが、JavaScriptによって書き換えられる場所になります。
id="generate-btn" を付けた<button>が、クリックイベントの引き金になります。
<script>タグ内 (JavaScript)
このジェネレーターの心臓部です。
const quotes = [...] の部分に、表示したい名言のデータを { text: "名言本文", person: "人物名" } の形式で入れています。ここを編集すれば、自分だけの名言集を作れます!
generateBtn.addEventListener('click', ...) は、「ボタンがクリックされたら、中の処理を実行せよ」という命令です。
クリックされるたびに、Math.random()を使ってランダムな名言を選び、textContentプロパティでHTMLの表示を書き換えています。
Webで公開するには?
このmeigen.htmlファイルを、GitHub PagesやNetlify、Cloudflare Pagesといった無料のホスティングサービスにアップロードするだけで、世界中の誰でもアクセスできるWebサイトとして公開できます。
まずはこのコードをベースに、好きな名言を追加したり、デザインを変えたりして遊んでみてください!
コーディング・生成フェーズ用プロンプト②
HTML, CSS, Scriptはファイルを分けて
回答
details
承知いたしました。
HTML、CSS、JavaScriptのファイルをそれぞれ分割して管理するのは、コードが整理されて見やすくなるため、とても良い方法です。
以下に、ファイルを3つに分けた場合の「酔いどれ名言ジェネレーター」の実装方法を説明します。
ステップ1:フォルダとファイルの準備
まず、PCに新しいフォルダを1つ作成します。名前は「meigen-generator」など、分かりやすいものにしましょう。
そのフォルダの中に、以下の3つのファイルを作成します。
index.html (HTMLファイル)
style.css (CSSファイル)
script.js (JavaScriptファイル)
これで準備は完了です。
ステップ2:各ファイルにコードを記述
それぞれのファイルに、以下のコードをコピーして貼り付けてください。
1. index.html(骨組み)
このファイルがWebページの本体です。CSSとJavaScriptファイルを読み込む記述が追加されています。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>酔いどれ名言ジェネレーター</title>
<!-- CSSファイルを読み込む -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<!-- 名言が表示される場所 -->
<div id="quote-display">
<p id="quote-text">ボタンを押して、今日の酔いどれ名言をチェック!</p>
<p id="quote-person"></p>
</div>
<!-- 名言を生成するボタン -->
<button id="generate-btn">次の名言へ</button>
</div>
<!-- JavaScriptファイルを読み込む(bodyの最後が推奨) -->
<script src="script.js"></script>
</body>
</html>
ポイント:
<link rel="stylesheet" href="style.css"> で、style.cssを読み込んでいます。
<script src="script.js"></script> で、script.jsを読み込んでいます。scriptタグは</body>の直前に置くのが一般的です。
2. style.css(デザイン)
このファイルで、ページの見た目をすべて管理します。
/* ページ全体の基本設定 */
body {
font-family: 'Helvetica Neue', 'Hiragino Kaku Gothic ProN', 'Meiryo', sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f4f4f4; /* 背景色 */
text-align: center;
}
/* 全体を囲むコンテナ */
.container {
background-color: white;
padding: 40px;
border-radius: 10px;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
max-width: 90%;
width: 600px;
}
/* 名言を表示するエリア */
#quote-display {
min-height: 100px; /* 名言が変わっても高さがガタつかないように */
margin-bottom: 30px;
}
/* 名言のテキスト */
#quote-text {
font-size: 1.5em; /* 文字を少し大きく */
font-weight: bold;
color: #333;
}
/* 人物名 */
#quote-person {
font-size: 1.1em;
color: #555;
margin-top: 15px;
}
/* ボタンのデザイン */
#generate-btn {
background-color: #ff9800; /* ボタンの色(オレンジ系) */
color: white;
border: none;
padding: 15px 30px;
font-size: 1em;
font-weight: bold;
border-radius: 50px; /* 角を丸くしてカプセル型に */
cursor: pointer; /* マウスを乗せると指マークに */
transition: background-color 0.3s; /* 色が変わるアニメーション */
}
/* ボタンにマウスを乗せた時の色 */
#generate-btn:hover {
background-color: #e68900;
}
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Css
IGNORE_WHEN_COPYING_END
3. script.js(プログラムの動作)
このファイルで、ボタンが押されたときの処理など、ページの動的な部分をすべて管理します。
// 1. 名言のリストを用意する
// ここの中身を自由に追加・変更してください!
const quotes = [
{
text: "酒は百薬の長。されど万病の元。",
person: "ことわざ"
},
{
text: "酒の良さは、ただ酔うことにあるのではない。無礼講の雰囲気で、ふだん言えないような本音を語り合えることにあるのだ。",
person: "本田宗一郎"
},
{
text: "アルコールは、手術の痛みは消してくれないが、失恋の痛みは消してくれる。",
person: "ヴォルテール"
},
{
text: "一杯の酒は我々を饒舌にするが、二杯の酒は我々を粗暴にする。",
person: "吉田兼好(徒然草)"
},
{
text: "人生にビールを。ハッピーエンドに乾杯を。",
person: "スティーヴン・キング"
},
{
text: "まずい酒をうまそうに飲むのが、本当の酒飲みだ。",
person: "開高健"
},
{
text: "世界には、一杯のワインでしか開かない扉がある。",
person: "グレアム・グリーン"
}
];
// 2. HTMLの要素を取得する
const quoteTextElement = document.getElementById('quote-text');
const quotePersonElement = document.getElementById('quote-person');
const generateBtn = document.getElementById('generate-btn');
// 3. ボタンがクリックされたときの処理を定義する
generateBtn.addEventListener('click', () => {
// 名言リストの中からランダムに1つ選ぶ
const randomIndex = Math.floor(Math.random() * quotes.length);
const randomQuote = quotes[randomIndex];
// 選ばれた名言をHTMLに表示する
quoteTextElement.textContent = `「${randomQuote.text}」`;
quotePersonElement.textContent = `- ${randomQuote.person} -`;
});
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
JavaScript
IGNORE_WHEN_COPYING_END
ステップ3:動作確認
上記3つのファイルが同じフォルダ(例:meigen-generator)に入っていることを確認します。
index.html ファイルをブラウザで開きます。
正しく表示され、ボタンを押すと名言が切り替われば成功です!
このようにファイルを分割することで、
HTML: ページの構造
CSS: デザイン・見た目
JavaScript: 動き・機能
という役割分担が明確になり、後から修正や機能追加がしやすくなります。
Webで公開する場合も、このフォルダ構成のままアップロードすれば問題ありません。
ここで生成されたファイルをダウンロードしてみる→ブラウザで確認
※生成されたCSS,JSファイル名と、htmlで呼び出すCSS,JSファイル名が異なるので、修正の必要あり!
名言か???
まあでも画面イメージは概ね期待通りかな。
コーディング・生成フェーズ用プロンプト③
「酒好きな人が楽しめるゲーム集」というwebサイトを作成します。
・Indexにはゲームのリストが表示されます。
・リストは、カード型のレイアウトにしてください。カードにはゲームのタイトルと簡単な説明キャプションを表示します。
・カードをクリックすると、ゲームの詳細画面が表示されます。
・デザインはポップで見やすいけど和を感じるテイストで
回答
details
素晴らしいですね!
「酒好きな人が楽しめるゲーム集」のWebサイト、一緒に作っていきましょう。
ご要望の**「ポップで見やすいけど和を感じるテイスト」**を意識して、トップページ(ゲーム一覧)と、そこから飛ぶゲーム詳細ページのサンプルを作成しました。
以下の手順でファイルを作成すれば、すぐにブラウザで確認できます。
ステップ1:ファイル構成の準備
まず、PCにsake-gamesというフォルダを作成し、その中に以下のファイルとフォルダを用意します。
sake-games/
├── index.html (トップページ、ゲーム一覧)
├── style.css (デザインを決めるファイル)
└── games/ (各ゲームページを格納するフォルダ)
├── meigen.html (酔いどれ名言ジェネレーターのページ)
└── (ここに他のゲームページを追加していく)
※ gamesフォルダを作ることで、将来ゲームが増えたときに整理しやすくなります。
ステップ2:各ファイルにコードを記述
それぞれのファイルに、以下のコードをコピー&ペーストしてください。
1. index.html (トップページ)
ゲーム一覧をカード形式で表示するメインページです。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>酒好きな人が楽しめるゲーム集</title>
<link rel="stylesheet" href="style.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=M+PLUS+Rounded+1c:wght@400;700&family=Noto+Serif+JP:wght@600&display=swap" rel="stylesheet">
</head>
<body>
<header>
<div class="container">
<h1>🍶 酒好きな人が楽しめるゲーム集 🍶</h1>
</div>
</header>
<main>
<div class="container">
<div class="card-container">
<!-- ゲームカード 1 -->
<a href="games/meigen.html" class="card">
<div class="card-icon">📜</div>
<h2 class="card-title">酔いどれ名言ジェネレーター</h2>
<p class="card-caption">歴史上の偉人や文豪の「お酒の名言」をランダムに表示。知的な会話のきっかけに。</p>
</a>
<!-- ゲームカード 2 (サンプル) -->
<a href="#" class="card">
<div class="card-icon">👨🍳</div>
<h2 class="card-title">空想おつまみクリエイター</h2>
<p class="card-caption">食材をランダムに組合せ!奇想天外な創作おつまみで想像力をかき立てよう。</p>
</a>
<!-- ゲームカード 3 (サンプル) -->
<a href="#" class="card">
<div class="card-icon">🍻</div>
<h2 class="card-title">今日の乾杯コールメーカー</h2>
<p class="card-caption">マンネリ打破!ユニークな乾杯コールを自動生成して、飲み会を盛り上げよう。</p>
</a>
<!-- ここに新しいゲームカードを追加していく -->
</div>
</div>
</main>
<footer>
<div class="container">
<p>© 2023 酒好きゲーム制作委員会</p>
</div>
</footer>
</body>
</html>
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Html
IGNORE_WHEN_COPYING_END
2. style.css (デザイン)
サイト全体のデザイン。「ポップさ」と「和のテイスト」をここで表現します。
/* --- 全体の設定 --- */
:root {
--bg-color: #F8F4E6; /* 背景色(生成り色) */
--main-text-color: #3D3D3D; /* メインテキスト(墨色) */
--accent-color: #D9534F; /* アクセント(朱色) */
--card-bg: #FFFFFF; /* カード背景 */
--card-shadow: rgba(0, 0, 0, 0.08);
--font-sans: 'M PLUS Rounded 1c', sans-serif;
--font-serif: 'Noto Serif JP', serif;
}
body {
background-color: var(--bg-color);
color: var(--main-text-color);
font-family: var(--font-sans);
margin: 0;
line-height: 1.7;
}
.container {
max-width: 960px;
margin: 0 auto;
padding: 0 20px;
}
a {
color: var(--accent-color);
text-decoration: none;
}
/* --- ヘッダーとフッター --- */
header {
background-color: var(--card-bg);
padding: 20px 0;
text-align: center;
border-bottom: 3px solid var(--accent-color);
}
header h1 {
font-family: var(--font-serif);
font-size: 2em;
color: var(--main-text-color);
margin: 0;
}
footer {
text-align: center;
padding: 30px 0;
font-size: 0.9em;
color: #888;
}
/* --- カードレイアウト --- */
.card-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 30px;
padding: 40px 0;
}
.card {
background-color: var(--card-bg);
border-radius: 12px;
padding: 25px;
text-align: center;
text-decoration: none;
color: inherit;
box-shadow: 0 4px 10px var(--card-shadow);
transition: transform 0.3s ease, box-shadow 0.3s ease;
display: flex;
flex-direction: column;
}
.card:hover {
transform: translateY(-8px);
box-shadow: 0 8px 20px var(--card-shadow);
}
.card-icon {
font-size: 3em;
margin-bottom: 15px;
}
.card-title {
font-family: var(--font-serif);
color: var(--accent-color);
font-size: 1.5em;
margin: 0 0 10px 0;
}
.card-caption {
font-size: 0.95em;
margin: 0;
flex-grow: 1; /* カードの高さを揃えるため */
}
/* --- ゲーム詳細ページ用スタイル --- */
.game-container {
background-color: var(--card-bg);
border-radius: 12px;
padding: 40px;
margin: 40px 0;
box-shadow: 0 4px 10px var(--card-shadow);
}
.game-title {
font-family: var(--font-serif);
text-align: center;
font-size: 2.2em;
color: var(--accent-color);
margin-top: 0;
}
.game-description {
text-align: center;
max-width: 600px;
margin: -10px auto 40px auto;
}
.back-to-index {
display: inline-block;
margin-top: 40px;
font-weight: bold;
}
.back-to-index:hover {
text-decoration: underline;
}
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Css
IGNORE_WHEN_COPYING_END
3. games/meigen.html (酔いどれ名言ジェネレーター)
1つ目のゲームの詳細ページです。このページでゲームが遊べます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>酔いどれ名言ジェネレーター | 酒好きな人が楽しめるゲーム集</title>
<!-- ../ で一つ上の階層のstyle.cssを読み込む -->
<link rel="stylesheet" href="../style.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=M+PLUS+Rounded+1c:wght@400;700&family=Noto+Serif+JP:wght@600&display=swap" rel="stylesheet">
<style>
/* このページ専用のスタイル */
#quote-display {
background-color: var(--bg-color);
border-radius: 8px;
padding: 30px;
min-height: 120px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
margin-bottom: 30px;
}
#quote-text {
font-size: 1.4em;
font-weight: bold;
color: var(--main-text-color);
}
#quote-person {
font-size: 1.1em;
color: #777;
margin-top: 15px;
}
.generator-button {
display: block;
margin: 0 auto;
background-color: var(--accent-color);
color: white;
border: none;
padding: 15px 40px;
font-size: 1.1em;
font-family: var(--font-sans);
font-weight: bold;
border-radius: 50px;
cursor: pointer;
transition: background-color 0.3s;
}
.generator-button:hover {
background-color: #c4433f;
}
</style>
</head>
<body>
<main>
<div class="container">
<div class="game-container">
<h2 class="game-title">酔いどれ名言ジェネレーター</h2>
<p class="game-description">ボタンを押して、今日の会話の肴になる名言を引き当てよう。</p>
<!-- 名言ジェネレーター本体 -->
<div id="quote-display">
<p id="quote-text">ボタンを押してね</p>
<p id="quote-person"></p>
</div>
<button id="generate-btn" class="generator-button">次の名言へ</button>
<!-- /名言ジェネレーター本体 -->
<a href="../index.html" class="back-to-index">← ゲーム一覧へ戻る</a>
</div>
</div>
</main>
<script>
// 名言リスト
const quotes = [
{ text: "酒は百薬の長。されど万病の元。", person: "ことわざ" },
{ text: "酒の良さは、ただ酔うことにあるのではない。無礼講の雰囲気で、ふだん言えないような本音を語り合えることにあるのだ。", person: "本田宗一郎" },
{ text: "アルコールは、手術の痛みは消してくれないが、失恋の痛みは消してくれる。", person: "ヴォルテール" },
{ text: "一杯の酒は我々を饒舌にするが、二杯の酒は我々を粗暴にする。", person: "吉田兼好(徒然草)" },
{ text: "人生にビールを。ハッピーエンドに乾杯を。", person: "スティーヴン・キング" },
{ text: "まずい酒をうまそうに飲むのが、本当の酒飲みだ。", person: "開高健" },
{ text: "世界には、一杯のワインでしか開かない扉がある。", person: "グレアム・グリーン" }
];
// HTML要素の取得
const quoteTextElement = document.getElementById('quote-text');
const quotePersonElement = document.getElementById('quote-person');
const generateBtn = document.getElementById('generate-btn');
// ボタンクリック時の処理
generateBtn.addEventListener('click', () => {
const randomIndex = Math.floor(Math.random() * quotes.length);
const randomQuote = quotes[randomIndex];
quoteTextElement.textContent = `「${randomQuote.text}」`;
quotePersonElement.textContent = `- ${randomQuote.person} -`;
});
</script>
</body>
</html>
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
Html
IGNORE_WHEN_COPYING_END
ステップ3:動作確認と解説
sake-gamesフォルダの中にあるindex.htmlをブラウザで開きます。
ゲーム一覧がカード形式で表示されます。カードにマウスを乗せると少し浮き上がるアニメーションが起こります。
「酔いどれ名言ジェネレーター」のカードをクリックすると、ゲームページに移動します。
ゲームページで「次の名言へ」ボタンを押すと、名言がランダムに切り替わります。
「← ゲーム一覧へ戻る」リンクでトップページに戻れます。
デザインのポイント
ポップさ:
丸みのあるフォント(M PLUS Rounded 1c)をメインに使用。
カードの角を丸くし(border-radius)、影をつけて(box-shadow)立体感を演出。
ホバー時の浮き上がるアニメーションで操作する楽しさをプラス。
和のテイスト:
背景に生成り色、アクセントに朱色、テキストに墨色という伝統色を意識した配色。
見出しに少し明朝体寄りのフォント(Noto Serif JP)を使い、引き締まった印象に。
アイコンに絵文字(🍶📜)を使い、堅苦しくなりすぎない和の雰囲気を表現。
今後の拡張
ゲームの追加:
gamesフォルダに新しいHTMLファイル(例:creator.html)を作成します。
index.htmlのカードリストに、新しいゲームのカード(<a>タグ)を追加し、リンク先をgames/creator.htmlに設定します。
デザインの変更:
style.cssの--bg-colorや--accent-colorなどの色コードを変えるだけで、サイト全体の配色を簡単に変更できます。
このサンプルをベースに、ぜひあなただけの「酒好きな人が楽しめるゲーム集」を育てていってください!
ここで生成されたファイルをダウンロードしてみる→ブラウザで確認
名言か???
まあ、とりあえず、基本のコードファイルの作成はできた。
最後に、今後コンテンツを増やすことを考えたファイル構造の質問。
コーディング・生成フェーズ用プロンプト④
これからもコンテンツを増やしていく予定だけど、ファイル構造は適切ですか?
回答
details
はい、ご提示したファイル構造は非常に適切です。
コンテンツを増やしていく上で、とても管理しやすく、拡張性の高い構造になっています。
その理由と、さらに大規模になった場合を想定した発展形についても解説します。
現在の構造が「適切」である理由
sake-games/
├── index.html (トップページ)
├── style.css (共通のスタイル)
└── games/ (ゲームページをまとめる場所)
└── meigen.html (個別のゲームページ)
役割分担が明確(関心の分離):
index.html: サイトの入り口・案内役。
style.css: サイト全体のデザイン担当。
games/: ゲームコンテンツ置き場。
このように役割がはっきり分かれているため、どこを修正すればよいか一目瞭然です。例えば、サイト全体のデザインを変えたいときはstyle.cssだけを触ればOKです。
拡張性が高い:
新しいゲームを追加したい場合、games/フォルダの中に新しいHTMLファイルを追加し、index.htmlにカードを1つ増やすだけで完了します。他のファイルを壊す心配がありません。
URLが綺麗になる:
サイトを公開したとき、URLが https://example.com/games/meigen.html のようになります。gamesというフォルダ名が入ることで、「これはゲームのページなんだな」とURLを見ただけで内容が推測しやすくなります。
メンテナンスが容易:
ゲームの数が増えても、games/フォルダにすべてまとまっているので、ファイルが散らかりません。例えば、ゲームページに共通の修正を加えたい場合でも、games/フォルダ内を探せばよいので効率的です。
結論として、個人開発や中小規模のサイトにおいては、この構造はベストプラクティスの一つと言えます。
さらに大規模になった場合の発展形(参考)
もし将来的にゲームが数十個になり、画像やJavaScriptのコードも複雑化してきた場合は、以下のようなさらに詳細なフォルダ分けも考えられます。今の段階で導入する必要は全くありませんが、知識として知っておくと良いでしょう。
発展形1:アセット(画像など)をまとめる
sake-games/
├── index.html
├── style.css
├── script.js (サイト全体で使う共通スクリプト)
├── assets/ (画像やアイコンなどをまとめる)
│ ├── images/
│ │ └── sake-bottle.png
│ └── icons/
│ └── favicon.ico
└── games/
├── meigen.html
└── kaisou-otsumami.html
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
IGNORE_WHEN_COPYING_END
assets/フォルダ: 画像、アイコン、動画などの静的ファイル(アセット)を格納します。
script.js(ルート): 全ページで共通して使うJavaScriptがあれば、ここに置くと管理しやすいです。
発展形2:ゲームごとにフォルダを分ける
各ゲームが独自のCSSやJavaScript、画像を持つほど複雑になった場合の最終形です。
sake-games/
├── index.html
├── assets/
│ └── css/
│ └── common.css (全ページ共通のスタイル)
│ └── js/
│ └── common.js (全ページ共通のスクリプト)
│ └── images/
└── games/
├── meigen/ (「名言ジェネレーター」専用フォルダ)
│ ├── index.html (旧meigen.html)
│ ├── script.js (名言ジェネレーター専用のJS)
│ └── style.css (名言ジェネレーター専用のCSS)
└── kaisou-otsumami/ (「空想おつまみ」専用フォルダ)
├── index.html
├── script.js
└── style.css
IGNORE_WHEN_COPYING_START
content_copy
download
Use code with caution.
IGNORE_WHEN_COPYING_END
ゲームごとにフォルダを作成: 各ゲームが必要とするファイル(HTML, CSS, JS)を一つのフォルダにまとめます。これにより、ゲームごとの独立性が非常に高くなります。
共通ファイル: サイト全体の共通スタイルやスクリプトはassets/フォルダなどにまとめ、各ページから読み込みます。
まとめ
現状のファイル構造は、これからコンテンツを増やしていく上で全く問題なく、むしろ理想的です。
安心して、今の構造のまま新しいゲームコンテンツの制作に集中してください。
サイトがどんどん成長して、管理が大変になってきたなと感じた時に、初めて「発展形」のような構造へのステップアップを検討すれば大丈夫です。
To Be Continue...
この投稿はGoogle AI Studio に閉じたシンプルなVibeCodingの企画・コーディングに留める。
githubを利用したweb公開方法や、ここからのブラッシュアップについては、別で投稿する。