【コピペで完成】JavaScriptだけで作る「ミニ相談チャットアプリ」

Web開発の学習では、「とりあえず動くものを作ってみる」ことが大きな自信につながります。今回は、HTML・CSS・JavaScript を1ファイルにまとめた“コピペするだけで動く”簡単アプリをご紹介します。

テーマは 「あなたの悩みに答えるミニ相談チャット」
AIっぽい応答をランダムに返す仕組みなので、JavaScript の基本的な DOM 操作やイベント処理の理解にも役立ちます。


完成イメージ

  • 画面下部に入力欄
  • 上部に会話ログが表示
  • 入力したら即座に“AI風の返答”が返ってくる
  • スマホ表示にも対応

コードをそのままコピペすれば動きます

以下のコードを index.html にまるごと貼り付けるだけで起動します。


<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>相談チャットアプリ</title>
<style>
  body {
    font-family: sans-serif;
    background: #f3f7ff;
    margin: 0;
    display: flex;
    flex-direction: column;
    height: 100vh;
  }
  #chat {
    flex: 1;
    padding: 15px;
    overflow-y: auto;
  }
  .msg {
    margin-bottom: 12px;
    line-height: 1.6;
  }
  .user { text-align: right; color: #0078ff; }
  .bot  { text-align: left;  color: #444; }

  #inputArea {
    display: flex;
    border-top: 1px solid #ccc;
    background: white;
  }
  #inputArea input {
    flex: 1;
    border: none;
    padding: 12px;
    font-size: 16px;
  }
  #inputArea button {
    border: none;
    padding: 12px 20px;
    background: #0078ff;
    color: white;
    font-size: 16px;
    cursor: pointer;
  }
</style>
</head>
<body>

<div id="chat"></div>

<div id="inputArea">
  <input id="textInput" type="text" placeholder="相談内容を入力..." />
  <button id="sendBtn">送信</button>
</div>

<script>
  const chat = document.getElementById('chat');
  const input = document.getElementById('textInput');
  const sendBtn = document.getElementById('sendBtn');

  // AI風のランダム返答
  const replies = [
    "それはとても大切な視点ですね。",
    "まずは一歩ずつ進めていけば大丈夫ですよ。",
    "気持ちを整理する時間も必要です。",
    "あなたの選択は間違っていません。",
    "もう少し詳しく教えていただけますか?",
    "それについて、あなたはどう感じていますか?"
  ];

  function addMessage(text, type) {
    const div = document.createElement('div');
    div.className = `msg ${type}`;
    div.textContent = text;
    chat.appendChild(div);
    chat.scrollTop = chat.scrollHeight;
  }

  function botReply() {
    const reply = replies[Math.floor(Math.random() * replies.length)];
    addMessage(reply, 'bot');
  }

  function send() {
    const text = input.value.trim();
    if (!text) return;

    addMessage(text, 'user');
    input.value = "";

    setTimeout(botReply, 500);
  }

  sendBtn.addEventListener('click', send);
  input.addEventListener('keypress', e => {
    if (e.key === 'Enter') send();
  });
</script>

</body>
</html>

動作のポイント

1. メッセージを追加する関数

addMessage() でログに DOM 要素を追加しています。

2. “AI風”のランダム応答

配列 replies からランダムで返すだけのシンプルな仕組み。
初心者でもカスタマイズしやすい設計です。

3. Enterキー送信にも対応

自然なユーザー体験を実現しています。


拡張アイデア

このミニアプリは非常にシンプルなので、以下のような機能追加も簡単です。

  • 応答メッセージを増やす
  • 時間ごとに返答内容を変える
  • 会話ログをローカルストレージに保存
  • テーマカラーを変更
  • 名前をつけて「マイ個人アシスタント化」

学習用にも実践用にも応用が効く良い題材になります。


まとめ

JavaScript は、少しのコードで手軽に動くアプリを作れる魅力があります。
今回のミニチャットアプリは、その第一歩として最適です。

おすすめの記事