【JS第10回】実践!タイマーアプリを開発する
ついに最終講義です!これまでに学んだプログラミング概念(変数、関数、DOM操作、イベントリスナー)と、ブラウザの繰り返し実行API(setInterval)を融合し、実際に動作するWebタイマーを開発しましょう。
1. タイマーアプリの設計と仕様決定
今回作成するWebタイマーは、以下のシンプルな操作性を持ちます。
- 画面構成: 秒数を表示する領域、および「スタート」「ストップ」「リセット」の3つの操作ボタン。
- スタートボタンクリック: 1秒ごとに画面の数値が「1, 2, 3…」と増えていきます。
- ストップボタンクリック: カウントアップが一時停止します。
- リセットボタンクリック: 計測が停止し、画面の数値が「0」に戻ります。
2. 土台となるHTML/CSS(骨組みとデザイン)
まずは画面に表示するための簡単なマークアップを用意します。HTML基礎・CSS基礎の知識を思い出しながら配置しましょう。
<div class="timer-card"> <div id="display">0</div> <div class="btn-group"> <button id="start-btn">スタート</button> <button id="stop-btn">ストップ</button> <button id="reset-btn">リセット</button> </div> </div>
3. JavaScriptでの制御ロジック
このアプリの心臓部は、ブラウザの非同期繰り返し機能である `setInterval(処理, 時間)` です。これは、指定したミリ秒の間隔(1秒=1000ミリ秒)ごとに、第1引数に渡した関数を繰り返し自動実行するブラウザ提供の強力なAPIです。
また、ループを一時停止(解除)するために、setIntervalが生成する「タイマーID」を保持しておき、ストップ時に `clearInterval(タイマーID)` へ引き渡して破棄します。
4. タイマーアプリを動かす完全なJavaScriptコード
以下のコードを `script.js` に書いて読み込ませることで、スタートからストップ、リセットまでの一連のシステムが完璧に連動して動き出します。
/* 1. 操作・表示を行うDOM要素を取得する */ const display = document.querySelector("#display"); const startBtn = document.querySelector("#start-btn"); const stopBtn = document.querySelector("#stop-btn"); const resetBtn = document.querySelector("#reset-btn"); /* 2. アプリの状態を管理する変数(秒数、タイマーID) */ let seconds = 0; let timerId = null; /* 動いている間はここにIDが入る */ /* 3. スタートボタンのクリック処理 */ startBtn.addEventListener("click", () => { /* すでにタイマーが動いている場合は、重複起動を防ぐため何もしない */ if (timerId !== null) return; /* 1000ミリ秒(1秒)ごとに処理をループ実行 */ timerId = setInterval(() => { seconds++; display.textContent = seconds; /* 画面の数値を書き換える */ }, 1000); }); /* 4. ストップボタンのクリック処理 */ stopBtn.addEventListener("click", () => { if (timerId !== null) { clearInterval(timerId); /* タイマー処理を停止する */ timerId = null; /* IDを空に戻す */ } }); /* 5. リセットボタンのクリック処理 */ resetBtn.addEventListener("click", () => { /* 計測を止めてクリア */ clearInterval(timerId); timerId = null; seconds = 0; display.textContent = seconds; /* 表示を0に戻す */ });
5. JavaScript基礎講座の完結にあたって
全10回に及んだJavaScript基礎講座を修了されたこと、本当におめでとうございます!🎉
プログラムの基本である変数や計算から、条件による分岐、自動化ループ、処理の部品化、そして画面要素をプログラム制御するDOM操作、ユーザーの意思を受け取るイベントリスナーなど、フロントエンドエンジニアの「基盤」をすべて網羅して習得されました。
プログラミングは魔法のツールです。HTML/CSSで作った静的な画面に、JavaScriptで生命とロジックを吹き込むことで、あらゆる動的体験を生み出すことができます。これからも多くの素晴らしいアプリケーションやサービスを、あなたの手で作り上げてください!
あなたのエンジニアリングとしてのこれからの挑戦を、全力で楽しみにしています!