1. 登録されている名前のとき
  2. start を呼んだとき
  3. 登録されていない名前のとき
  4. 空文字で登録されているとき
コース一覧
Node.js入門
npmスクリプト

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分

npmスクリプト

長いコマンドに名前を付ける

開発を進めると、起動のコマンドはだんだん長くなります。環境変数を付けたり、監視の指定を足したりするからです。

毎回それを打つ代わりに、package.json の scripts に名前を付けて登録できます。

JSON

{ "scripts": { "start": "node app.js", "dev": "node --watch app.js" } }

登録したら、次のように呼び出します。

プレーンテキスト

npm run dev

打つのは短い名前だけです。中身が変わっても、チームの全員が同じ npm run dev を打ち続けられます。手順を覚えるのではなく、手順をファイルに書いておくという考え方です。

start だけは run を省ける

start は特別扱いされていて、npm start でも動きます。npm run start と書いても同じです。

それ以外の名前は npm run が必要です。npm dev では動きません。

よく置かれる名前

決まりはありませんが、慣習はあります。

名前何をするか
start本番の形で起動する
dev開発用に起動する(自動再起動あり)
testテストを走らせる

この 3 つは多くのプロジェクトで同じ意味で使われています。初めて触るプロジェクトでも、package.json の scripts を見れば動かし方が分かります。

手を動かす

演習では、スクリプト名を受け取って、実際に実行されるコマンドを返す関数を書きます。npm run が何をしているのかを、仕組みの側から確かめてください。

要件

  1. 登録されている名前なら、その値のコマンド文字列をそのまま返す
  2. 登録されていない名前なら dev というスクリプトはありません の形で返す(名前の部分は渡されたもの)
  3. 値が空文字で登録されている場合も、登録されているものとして扱う

入出力例

resolveScript({"dev":"node --watch app.js","start":"node app.js"}, "dev") → "node --watch app.js" resolveScript({"dev":"node --watch app.js","start":"node app.js"}, "start") → "node app.js" resolveScript({"start":"node app.js"}, "dev") → "dev というスクリプトはありません" resolveScript({"test":""}, "test") → ""

ヒント

初期コードは、登録が無いときに `undefined` を返してしまいます。そこが直すところです

キーがあるかどうかは `Object.prototype.hasOwnProperty.call(scripts, name)` で確かめられます

値が空文字のときも「登録はされている」ので、値の中身では判定できません

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

関連レッスン

  • つくる:プロジェクト始動

    第1章の知識を統合し、fleamaの土台一式を初期化できるようになります。

  • 第1章クイズ

    Node.jsとnpmの理解を4択で確認します。

  • import/export

    商品データを別ファイルに分離し、ファイルを分割できるようになります。

  • サーバーとリクエスト

    待ち受けから応答までの流れをたどり、サーバーの役割を説明できるようになります。

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

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

  • 環境変数JWT_SECRET など秘匿値を渡す手段
  • 変数データに名前をつけて参照する仕組み
  • テストバグを見つける工程
  • 関数処理に名前を付けて再利用できる単位
main.js
学習モード
エディタを読み込んでいます

メモ

npmスクリプト

⌘S で保存