コース一覧
非同期JavaScript:API通信とモジュール
ファイルを分けるという考えかた

非同期JavaScript:API通信とモジュール

Promise と async/await、非同期エラー、HTTP/REST、fetch による GET、読み込み・成功・失敗の表示、モジュールの読み方を学ぶ全 19 レッスン(380 分)のコースです。最後は承認済みの読み取り専用 API から作品データを取得して表示します。POST はリクエストの組み立てまでで、外部サービスへの書き込みは行いません。

1
非同期処理
0. 同期と非同期15分
1. Promise をつくって返す20分
2. async と await20分
3. Promise.all で同時に待つ20分
4. 非同期のエラーを捕まえる20分
5. つくる 読み込み中の表示を出す30分
6. 第1章まとめクイズ10分
2
fetch で外のデータを使う
0. HTTP と REST の読みかた15分
1. fetch でデータを取る25分
2. 取ったデータを描画する25分
3. response.ok と失敗時の表示25分
4. POST のリクエストを組み立てる20分
5. つくる 作品データを API から読む30分
6. 第2章まとめクイズ10分
3
モジュールと総仕上げ
0. ファイルを分けるという考えかた15分
1. named export と default export15分
2. つくる ポートフォリオアプリを仕上げる40分
3. ここから先の学びかた15分
4. 第3章まとめクイズ10分

非同期JavaScript:API通信とモジュール

01同期と非同期
02Promise をつくって返す
03async と await
04Promise.all で同時に待つ
05非同期のエラーを捕まえる
06つくる 読み込み中の表示を出す
07第1章まとめクイズ
08HTTP と REST の読みかた
09fetch でデータを取る
10取ったデータを描画する
11response.ok と失敗時の表示
12POST のリクエストを組み立てる
13つくる 作品データを API から読む
14第2章まとめクイズ
15ファイルを分けるという考えかた
16named export と default export
17つくる ポートフォリオアプリを仕上げる
18ここから先の学びかた
19第3章まとめクイズ

非同期JavaScript:API通信とモジュール

ファイルを分けるという考えかた

ファイルを分けると名前が見えなくなる
解説

このレッスンで分かること

  • export で外に出すものを選び、import で名前を指定して受け取ります
  • type="module" を付けると、読み込み順を人間が管理しなくてよくなります

1 枚の app.js で名前を取り合う

いまの app.js には、作品データの加工、カードを組み立てる関数、エラー表示、fetch、フォームの検証が同居しています。動いてはいますが、困りごとが 3 つ出ています。

1 つめは名前の取り合いです。update という名前を作品一覧でもフォームでも使いたくなったとき、ファイルが 1 枚なら片方を改名して逃げるしかありません。2 つめは、読む範囲が絞れないことです。並び替えの不具合を直したいだけなのに、上から下まで目で追う羽目になります。

3 つめは読み込み順です。<script> を 2 枚に分けて逃げようとすると、今度は先に読んだほうにある関数しか呼べないという別の縛りが生まれます。しかも片方が読めていなくてもエラーにならず、undefined として静かに壊れます。

解説

ファイルを分ける目的は、行数を減らすことではありません。どこを読めば分かるかを、名前ではなくファイルの境界で示すことです。300 行のうち関係するのが 40 行だと分かっているなら、その 40 行を別のファイルに出す価値があります。

外に出すものだけを選ぶ

分けた側のファイルでは、外から使ってよいものにだけ export を付けます。

JavaScript

// works.js export function publishedWorks(works) { return works.filter((work) => work.published); } // export していないので、このファイルの外からは名前すら見えない function debugLabel(work) { return work.category ?? "その他"; }

使う側は import で受け取ります。from に書くのは道順で、同じフォルダなら ./works.js、1 つ上なら ../works.js です。

JavaScript

// app.js import { publishedWorks } from "./works.js";

拡張子の .js は省略できません。Node.js のクセに慣れている人ほど、ここで詰まります。また import は関数の中には書けません。どのファイルを読むかはコードが動く前に決まる約束なので、ファイルのいちばん上に置きます。

type="module" を付けると何が変わるか

import を含むファイルは、属性を 1 つ足して読み込みます。

HTML

<script type="module" src="app.js"></script>

たったこれだけですが、変わることは 4 つあります。

普通の scripttype="module"
import と export構文エラーになる書ける
トップレベルの constwindow に共有されるそのファイルの中だけ
実行のタイミング読んだ場所ですぐHTML を読み終えてから
strict mode自分で書けば有効常に有効

3 番目のおかげで、<head> に書いても querySelector が null を返しません。読み込み順の心配も消えます。app.js が works.js を必要としていると import の行に書いてあるので、ブラウザが先に works.js を読みます。

ただし、このコースの実行環境では import と export を動かせません。採点もプレビューも、書いたコードを普通の script として扱う作りだからです。手を動かすのは自分のパソコンでどうぞ。加工の関数を works.js に移して export を付け、app.js の先頭で import し、script に type="module" を足したら、そのフォルダで python3 -m http.server 8000 を実行して http://localhost:8000 を開きます。

index.html をダブルクリックして file:/// で開くと、モジュールの読み込みは CORS のエラーで止まります。普通の script なら開けるので、昨日まで開けたのに真っ白になった、という形で出ます。

よくある間違い

  • 拡張子を省く — import { publishedWorks } from "./works"; と書いてもブラウザは探しに行きません。./works.js と書きます
  • type="module" を付け忘れる — Cannot use import statement outside a module と出ます。原因は JavaScript ではなく HTML 側にあります
  • export していないものを import する — 読み込み前に照合されるので、呼び出す行まで進む前にページごと止まります。静かに undefined になる普通の script より、むしろ親切な壊れかたです

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • 関数処理に名前を付けて再利用できる単位
  • フォームinput(text, email, password, checkbox, radio)、select、textarea、button。
  • Node.jsJavaScript をサーバ側で動かすランタイム
  • 属性インスタンス属性=各インスタンス固有の値(self.name)。
  • HTMLHyperText Markup Languageの略。
  • ブラウザユーザーから見たWebのクライアント
  • レビューコードを読み合い品質を上げる工程
  • ビュークエリに名前をつけて再利用する仮想表
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/03/27·更新 2026/08/26

関連レッスン

  • named export と default export

    名前を付けて何個でも出す named export と、1 ファイルに 1 つだけの default export の違いを読みます。as で名前を替える形も扱います。

  • つくる ポートフォリオアプリを仕上げる

    API から作品を取り、公開ずみだけを選び、タグでしぼり、並び替え、問い合わせフォームを検証します。第2章から第9章までを 1 枚に集める総仕上げです。

  • ここから先の学びかた

    55 レッスンで書けるようになったことを棚おろしし、TypeScript React Node.js ビルドツールに、いまの知識がそれぞれどう効くのかを結びつけます。

  • 第3章まとめクイズ

    モジュールの export と import を、コードを読んで結果が言えるか確かめます。

分からないところは Tap (AI先生) に質問できます

24 時間いつでも、あなたのレベルに合わせて日本語で答えます。