12.2 基本構造の準備
まずは、アプリケーションの土台となる HTML ファイルを作成しましょう。
本章の演習では、すべてのプログラムを book-search.js という 1 つのファイルに集約して記述していきます。
ソースフォルダ:public/ch12
ファイル名:book-search.js
➢ book-search.html
public フォルダに ch12 フォルダを追加し、book-search.html を作成します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>JavaScript の練習: book-search.js を実行中</title>
<style>
body { font-family: sans-serif; margin: 20px; }
#message { color: blue; margin-bottom: 10px; }
input { padding: 5px; width: 250px; margin-bottom: 15px; }
li { margin-bottom: 5px; }
</style>
</head>
<body>
<h1>書籍検索(練習用アプリ)</h1>
<!-- メッセージ表示領域 -->
<div id="message"></div>
<!-- 検索ボックス -->
<input type="text" id="search-box" placeholder="タイトルで検索...">
<!-- 書籍リスト表示領域 -->
<ul id="book-list"></ul>
<!-- 重要要素: defer 属性を追加して読み込みます -->
<script src="book-search.js" defer></script>
</body>
</html>
➢ book-search.js
同じく ch12 フォルダに、book-search.js を作成します。
// book-search.js
// HTML の解析(パース)がすべて終わった後に実行されるように設定します
document.addEventListener("DOMContentLoaded", async () => {
// 最初に実行する関数を呼び出します
await fetchBookData();
});
// 書籍データを取得する非同期関数(枠組み)
async function fetchBookData() {
console.log("アプリを起動しました。book-search.js を実行中です。");
}
実行結果
まずは、この状態が完成したら動かしてみましょう。
ブラウザで実行して、コンソールに以下の表示が出ることを確認してください。

解説
HTML も JavaScript も、まだ空っぽの状態です。
book-search.js には、ここまで学習した async/await で、fetchBookData()という関数が作られています。
この中では、単に 11 行目で console.log() を使い、「アプリを起動しました。book-search.js を実行中です。」と短いメッセージを表示しているだけです。
defer 属性と DOMContentLoaded については第 8 章で学んだ内容です。コードの動きを確認しながら進めてください。
