1. 2 件の商品を渡したとき
  2. 商品が無いとき
コース一覧
Node.js入門
import/export

Node.js入門

Node.jsの実行モデル、npm、Expressによるルーティング、REST API設計、データベース接続、トランザクションを使った購入処理、トークン認証まで、バックエンド開発の基礎を、毎レッスン実際にコードを書き、フリマアプリのAPIを自分の手で作りながら学びます。

1
Node.jsとは
01. Node.jsとは15分
02. スクリプトを実行する15分
03. npmとは15分
04. package.json15分
05. npmスクリプト15分
06. つくる:プロジェクト始動20分
07. 第1章クイズ10分
2
モジュールと非同期の復習
01. import/export15分
02. ファイルを読み書きする15分
03. async/await復習15分
04. JSONの取り回し15分
05. つくる:データ層20分
06. 第2章クイズ10分
3
はじめてのサーバー
01. サーバーとリクエスト15分
02. Expressを導入する15分
03. ルーティング15分
04. JSONを返す15分
05. 開発の回し方15分
06. つくる:サーバー始動20分
07. 第3章クイズ10分
4
REST APIのきほん
01. RESTの考え方15分
02. 一覧を返す15分
03. 1件を返す15分
04. 登録を受ける15分
05. 更新と削除15分
06. ステータスコード15分
07. つくる:商品CRUD完成20分
08. 第4章クイズ10分
5
リクエスト処理と検証
01. クエリパラメータ15分
02. 並び替えとページング15分
03. 入力検証15分
04. ミドルウェア15分
05. エラーハンドリング15分
06. つくる:検索API完成20分
07. 第5章クイズ10分
6
データベース接続
01. DBにつなぐ15分
02. 一覧・詳細をDB化15分
03. 出品をDB化15分
04. SQLインジェクション20分
05. 更新・削除をDB化15分
06. 購入トランザクション20分
07. つくる:DB版fleama20分
08. 第6章クイズ10分
7
認証のきほん
01. 認証と認可15分
02. パスワードハッシュ15分
03. ログインとトークン15分
04. 保護ルート15分
05. 本人のものだけ15分
06. つくる:認証完備20分
07. 第7章クイズ10分
8
総合制作
01. fleama API完成20分
02. Reactと接続する20分
03. サーバーで常駐させる20分
04. 自由拡張20分
05. 完成と次のステップ15分

import/export

1 つのファイルに全部書かない

第1章では、商品データも整形もすべて 1 つのファイルに書いていました。小さいうちはそれで動きますが、API が育つと数百行になります。

直したい場所を探すのに時間がかかり、変えた場所が別の場所を壊していないかも分からなくなります。そこでファイルを役割ごとに分けます。

出す側と受け取る側

分けたファイルの中身は、そのままでは外から見えません。出したいものだけを明示的に出します。

JavaScript

// items.js const items = [ { id: 1, name: "レザースニーカー", price: 4800, sold: false }, { id: 2, name: "古着のデニムジャケット", price: 6200, sold: false }, ]; module.exports = { items };

受け取る側は require で読み込みます。第1章で npm の部品を読み込んだのと同じ書き方です。

JavaScript

// app.js const { items } = require("./items"); console.log(items.length);

違いは ./ が付くことだけです。./ が付いていれば自分が書いたファイル、付いていなければ npm で借りた部品、という見分けになります。

出していないものは触れない

module.exports に入れなかったものは、外からは存在しないのと同じです。

JavaScript

// items.js const SECRET_KEY = "内部でだけ使う値"; const items = []; module.exports = { items }; // SECRET_KEY は出していない

これは不便ではなく、利点です。外に出したものだけが約束になるので、出していないものは好きなときに変えられます。ファイルの中で使う一時的な変数まで全部見えていたら、どれが変えてよいものか分からなくなります。

import と export という書き方

import / export という別の書き方もあり、こちらが新しい標準です。ブラウザ側の JavaScript で見たことがあるかもしれません。

このコースでは require と module.exports で統一します。仕組みは同じで、どちらも「出す側」と「受け取る側」を決める話です。

手を動かす

演習では、商品データのファイルが module.exports で何を出すのかを組み立てます。外に見せるものと隠すものを、自分で線引きしてください。

要件

  1. 返すオブジェクトは items と count の 2 つのキーだけを持つ
  2. items は受け取った配列をそのまま、count はその件数にする
  3. 内部用の設定値は返すオブジェクトに含めない

入出力例

buildExports([{"id":1,"name":"レザースニーカー"},{"id":2,"name":"古着のデニムジャケット"}], {"dbPath":"./data"}) → {"count":2,"items":[{"id":1,"name":"レザースニーカー"},{"id":2,"name":"古着のデニムジャケット"}]} buildExports([], {"dbPath":"./data"}) → {"count":0,"items":[]}

ヒント

初期コードは内部用の設定値まで返しています。そのキーを消すのが最初の一歩です

`count` は固定の 0 ではなく、配列の件数から作ります

配列の件数は `items.length` で取れます

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/10

関連レッスン

  • ファイルを読み書きする

    items.jsonを読み込み、fsでJSONを扱えるようになります。

  • async/await復習

    読み込みから加工・表示までを非同期でつなぎ、処理の流れを追えるようになります。

  • JSONの取り回し

    商品追加をファイルに反映し、parseとstringifyを使い分けられるようになります。

  • つくる:データ層

    読む関数と書く関数をdata.jsに整え、ファイルベースのデータ層を作れるようになります。

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

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

  • エンドポイント「この URL を叩くとこの機能が動く」入口の住所
  • APIアプリ間でデータをやり取りする窓口
  • 変数データに名前をつけて参照する仕組み
  • ブラウザユーザーから見たWebのクライアント
  • JavaScriptWeb で動的な振る舞いを担う言語
  • オブジェクトキーと値のペアで構造を作るデータ
  • 配列サイズ固定の同型データの集まり
main.js
学習モード
エディタを読み込んでいます

メモ

import/export

⌘S で保存