JavaScript コース
7
7 STEP 7 / 7

レッスン7:ミニアプリを作ろう

⏱ 約25分 やってみよう 1 クイズ 1

🎯 このレッスンで学ぶこと

  • addEventListenerでイベントを登録できます。
  • input.valueで入力値を取得できます。
  • createElementとappendChildで要素を追加できます。
  • HTML・CSS・JavaScriptを組み合わせてアプリを作れます。

📖 前回の復習(レッスン6)

  • document.getElementById()querySelector() でHTML要素を取得する
  • textContent でテキストを変更、style でスタイルを変更できる
  • 要素.addEventListener("click", 関数) でボタンクリックに反応させる

📖 導入 — 全部つなげてアプリを作ろう!

HTMLでページの骨格を作り、CSSで見た目を整え、JavaScriptで動きをつける。この3つを組み合わせれば、本物のウェブアプリが作れます。このレッスンはJavaScriptコースの最終回です。これまで学んだ変数・条件分岐・ループ・関数・DOM操作をすべて使って、ToDoリストアプリを一から作り上げましょう!

📝 新しく使うAPI

イベントリスナー:

addEventListener("イベント名", 実行する関数) の形で書きます。

const btn = document.getElementById("btn");
btn.addEventListener("click", function() {
  console.log("ボタンが押された!");
});
イベント名タイミング
"click"クリックされたとき
"input"入力欄の値が変わったとき
"keydown"キーが押されたとき

入力値の取得:

const input = document.getElementById("text-input");
console.log(input.value);  // 入力欄に書かれたテキストが表示される

要素の追加: /

const li = document.createElement("li");  // 新しい要素を作る
li.textContent = "新しい項目";             // テキストを設定する
document.getElementById("list").appendChild(li);  // 追加する

💻 ToDoリストアプリを作ろう!

ToDoアプリ用のフォルダを作ります。

ToDoアプリは複数のファイルを使うため、専用のフォルダを作ります。

  1. VS Codeで my-practice フォルダを開く
  2. my-practice フォルダの中に todo-app フォルダを作る
  3. todo-app フォルダの中に3つのファイルを作る:index.htmlstyle.cssscript.js3つのファイルは必ず同じフォルダに置いてください
  4. 各ファイルに以下のコードを書く
  5. index.html をダブルクリックしてブラウザで確認する

HTML

index.html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ToDoリスト</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <div id="app">
      <h1>ToDoリスト</h1>
      <div class="input-area">
        <input type="text" id="todo-input" placeholder="やることを入力...">
        <button id="add-btn">追加</button>
      </div>
      <ul id="todo-list"></ul>
    </div>
    <script src="script.js"></script>
  </body>
</html>
ここまでの確認: HTMLだけ書いてブラウザで開いてみよう。入力欄とボタンが表示されていればOK!(まだ動かなくて大丈夫)

CSS(style.css)

* { box-sizing: border-box; }

body {
  font-family: sans-serif;
  background-color: #f5f5f5;
  margin: 0;
  padding: 40px 16px;
}

#app {
  background-color: #fff;
  border-radius: 12px;
  padding: 24px;
  max-width: 480px;
  margin: 0 auto;
}

h1 { text-align: center; color: #333; }

.input-area {
  display: flex;
  gap: 8px;
  margin-bottom: 16px;
}

#todo-input {
  flex: 1;
  padding: 8px 12px;
  border: 1px solid #ccc;
  border-radius: 6px;
  font-size: 16px;
}

button {
  padding: 8px 16px;
  background-color: #3a86ff;
  color: white;
  border: none;
  border-radius: 6px;
  cursor: pointer;
  font-size: 16px;
}

#todo-list { list-style: none; padding: 0; margin: 0; }

#todo-list li {
  padding: 12px;
  border-bottom: 1px solid #eee;
}

▶ プレビュー

ここまでの確認: CSSを保存してブラウザをリロード。白いカード風のデザインになり、入力欄とボタンが横並びになっていればOK!

JavaScript(script.js)

script.js
const input = document.getElementById("todo-input");
const addBtn = document.getElementById("add-btn");
const list = document.getElementById("todo-list");

function addTodo() {
  const text = input.value.trim();
  if (text === "") return;  // 空のときは何もしない

  const li = document.createElement("li");
  li.textContent = text;
  list.appendChild(li);

  input.value = "";  // 入力欄をリセット
  input.focus();     // 入力欄にカーソルを戻す
}

addBtn.addEventListener("click", addTodo);

// Enterキーでも追加できるようにする
input.addEventListener("keydown", function(e) {
  if (e.key === "Enter") addTodo();
});

ブラウザで開いて、やることを入力して「追加」ボタンを押してみましょう。リストに項目が追加されたら完成です! 🎉

最終確認:
・入力欄に文字を入力して「追加」ボタンを押す → リストに追加される
・Enter キーでも追加できる
・空のまま追加しても何も起きない
3つとも動けば完成です!

⚠️ よくあるミス

  • input.value ではなく input.textContent を使ってしまう:入力欄の値を取得するには input.value を使います。textContent は入力欄には使えません。
  • HTML・CSS・JS のファイルが別のフォルダにある:index.htmlstyle.cssscript.js は同じフォルダに置きましょう。別のフォルダにあるとファイルが読み込めません。
  • 空文字のチェックを忘れる:入力欄が空のまま追加ボタンを押すと、空の項目が追加されてしまいます。if (text === "") return; のように空チェックを入れましょう。

📌 まとめ

操作書き方
イベントを設定要素.addEventListener("click", 関数)
入力値を取得input要素.value
新しい要素を作るdocument.createElement("タグ名")
要素を追加する親要素.appendChild(子要素)

🚀 チャレンジ

ToDoの削除機能を追加してみよう! ヒント:親要素.removeChild(子要素) を使います。

🎓 全コース完了おめでとうございます!

HTML・CSS・JavaScriptの3コースをすべて終えました。

  • HTML:ページの骨格を作る
  • CSS:見た目をデザインする
  • JavaScript:動きをつけてアプリにする

この3つを組み合わせれば、あなたのアイデアをウェブページとして形にできます。プロフィールページ、クイズアプリ、ゲーム…何でも作れます。プログラミングに終わりはありません。楽しみながら続けていきましょう! 🚀

🔍 もっと調べてみよう:JavaScript addEventListener イベント」で検索してみよう。わからないことはどんどん検索する習慣をつけよう!
🚀 作ったアプリを世界に公開しよう! 環境構築ガイドへ →
🎉 全コース完了!トップページへ →

🎉 全コース修了おめでとう!次に挑戦できること

✅ HTML・CSS・JavaScript の3コースを修了しました!
ゼロから始めて、動くウェブアプリを自分で作れるようになりました。最初は「難しそう」と思っていたコードが、今では自分で書けるようになっています。これは本当にすごいことです。

ここからが本当のスタートです。次に何をするか、4つの選択肢を紹介します。

🛠️ 1. 環境を整えて本格的に開発する

VS Code の拡張機能や GitHub の使い方を学んで、より快適な開発環境を整えましょう。

→ 環境構築ガイドへ

🎨 2. オリジナル作品を作る

テーマは自由。クイズアプリ・自己紹介サイト・好きなものまとめページ——何でも OK です。

→ プロジェクトアイデア集へ

🌏 3. 作ったサイトを世界に公開する

GitHub Pages を使えば、自分のサイトを無料でインターネットに公開できます。

→ GitHub Pages で公開する方法へ

📚 4. もっと先へ進む

  • React:大きなウェブアプリを作るJSライブラリ
  • Node.js:サーバー側でJavaScriptを動かす技術
  • Python:データ分析・AI・自動化に人気の言語

まずは今の知識でオリジナル作品を作ってみよう!

💪 プログラミングの旅は、ここから始まります。
「コードを書く → エラーを読む → 調べて直す」の繰り返しは、どんな言語・どんな技術を学ぶときにも使えるスキルです。作りたいものを作り続けてください。あなたが作ったものが、誰かの役に立つかもしれません。

🎮 作ったアプリのイベントをさらに深掘りしよう!

ToDoアプリで使った addEventListener を、インタラクティブに試せる無料ツールがあります。

イベント プレイグラウンド →

🚀 次のコースへ

JavaScriptコースはこれで完了です!次はGitコースで、コードのバージョン管理とチーム開発を学びましょう! 🎉

🏆 JSチャレンジに挑戦 → クイズアプリを作ろう

Gitコースを始める →

🏆 コース全体の理解度をチェック!

総合復習クイズに挑戦して、学んだ知識を確認しましょう。

総合復習クイズに挑戦 →

このレッスンは役に立ちましたか?

目次

    📖 このレッスンの用語

    ⚠️ よくあるエラー

    🏋️ 練習問題

    このレッスンの練習問題に挑戦(Q41〜Q50)→

    📋 チートシート

    チートシートを見る →

    🎉 JavaScript コース完了おめでとう!

    次のステップに進みましょう。

    次のコース: Git → JS問題ドリルに挑戦 → 実践チャレンジに挑戦 →