総合 486 位⌘ 開発・コードClaude Code 対応Codex 対応MIT

nodejs-backend-patterns

Node.js のサーバーを、受け口・業務の処理・データの出し入れの 3 層に分け、認証・入力の確かめ・回数の制限・記録・誤りの扱いを Express と Fastify の例で組ませる。15 項目の心得と、接続の使い回しや取引の例も添える

wshobsonagentsSKILL.md の原文

npx skills add wshobson/agents/nodejs-backend-patterns

入れる前にこのスキルがすること・注意点・SKILL.md の原文を確かめてください。解析は安全性の判定ではありません。

インストール
49,184
実用度
2
GitHub star
42,260
最終更新
2026/11/6

頼み方の例

そのままコピーして使えます

nodejs-backend-patternsスキルを使って、この Express のサーバーの作りを点検してください。受け口・業務の処理・データの出し入れが分かれているか、誤りの扱いが 1 か所に集まっているか、入力の確かめと回数の制限があるかを一覧にし、直し方の案を添えてください。コードはまだ書き換えないでください。

対象のファイルや状況は、ご自身の作業に合わせて置き換えてください。

このスキルがすること

SKILL.md の記述から機械的に抽出
  • 外部通信・シェル実行・ファイル操作の記述は見つかりませんでした

これは安全性の判定ではありません。 SKILL.md にそう書かれているという事実だけを並べています。実際に問題があるかは使い方と文脈で決まるため、当サイトでは断定しません。導入前に SKILL.md の原文を確認してください。

SKILL.md の規模

文字数
1,995
手順
15
コード例
0
同梱ファイル
2

いつ使うか

Node.js で、REST の API や GraphQL のサーバー、小さなサービスの集まりを作るときに効きます。サーバーの骨組み(層の分け方、ミドルウェア、誤りの扱い、認証、データベースとのつなぎ)を、そのまま写せる TypeScript の例で示すスキルです。

本文が挙げる使う場面
8 つ
本番に向けた心得
15 項目
受け口・業務の処理・データの出し入れ
3 層
同梱ファイル(2026-10-23 時点)
2 件

SKILL.md は目次で、中身は同梱の文書

SKILL.md 自体は約 2KB(1,995 バイト、2026-10-23 時点)で、使う場面と心得の一覧だけです。例とその説明は references/details.md と references/advanced-patterns.md にあり、要約で足りないときに読め、と書かれています。実際に効くのは、この 2 つの文書の例です。

本文が挙げる場面

使う場面は 8 つです。主なものは次のとおりです。

  • REST の API や GraphQL のサーバーを作る
  • Node.js で小さなサービスの集まりを作る
  • 認証と権限の確かめを入れる
  • ミドルウェアと誤りの扱いを組む
  • SQL と NoSQL のデータベースをつなぐ
  • WebSocket での即時のやりとりや、裏で走る仕事の処理を作る

3 層に分ける

同梱の文書の中心は、受け口(controller)・業務の処理(service)・データの出し入れ(repository)の 3 層です。フォルダは controllers/・services/・repositories/・models/・middleware/・routes/・utils/・config/・types/ の 9 つに分けます。

  1. 受け口HTTP の要求を受け、業務の処理を呼び、状態の番号と JSON を返す。誤りは next() で渡す
  2. 業務の処理メールアドレスの重複を確かめ、パスワードを bcrypt で変換して保存する。返す前にパスワードを外す
  3. データの出し入れpg の Pool に、値を $1 のような置き場所で渡す SQL を投げる

利用者の作成・取得・更新・削除の 4 つが、3 層それぞれで書かれています。層をつなぐのは、依存を登録して取り出す小さな入れ物(DI のコンテナ)で、advanced-patterns.md に全体が載っています。

ミドルウェアの 4 つ

  • 認証Authorization の見出しから Bearer の値を取り出し、JWT を確かめて req.user に入れる。役割の確かめもある
  • 入力の確かめZod の形で本文・問い合わせ・経路の値を確かめ、誤りを項目ごとに返す
  • 回数の制限Redis に数を置く。全体は 15 分に 100 回、認証の口は 15 分に 5 回
  • 要求の記録pino で、方法・URL・状態・かかった時間・利用者の道具・IP を 1 行に残す

誤りの扱い

誤りの型は、元になる AppError と、その下の 5 つ(入力の誤り 400、見つからない 404、未認証 401、権限なし 403、重複 409)です。最後に置く誤りの受け手が、AppError ならその状態の番号で返し、それ以外は記録して 500 を返します。

本番では内部の誤りの文を見せず、「Internal server error」とだけ返す書き方です。非同期の処理の失敗を受け手に渡す包み(asyncHandler)も載っています。

データベース・認証・一時保存

advanced-patterns.md に、残りの型があります。

型中身
PostgreSQL の接続の使い回し最大 20 本、使っていない接続は 30 秒で閉じ、つなぐのは 2 秒で諦める
MongoDBMongoose の接続、最大 10 本、メールアドレスに一意の索引
取引BEGIN から COMMIT、失敗したら ROLLBACK、最後に接続を返す
JWT呼び出し用は 15 分、更新用は 7 日。秘密の値は別々
一時保存Redis で取得・保存・削除と、型に合うキーをまとめて消す処理。関数の結果を覚える飾り付け(@Cacheable)も
返す形成功・失敗・ページ分けの 3 つの書き方を揃える

15 項目の心得

SKILL.md の心得は 15 項目です。主なものは次のとおりです。

  • TypeScript を使い、誤りは自分で作った型で扱う
  • 入力は Zod や Joi で確かめる
  • 秘密の値は環境変数に置き、コードに書かない
  • 記録は Pino や Winston で構造を持たせる
  • 回数の制限、本番の HTTPS、本番で * を使わない CORS
  • 止めるときの後片付け、データベースの接続の使い回し、稼働の確かめの口

使わないほうがいいとき

Fastify を本気で使うとき

同梱の文書の Fastify の例は、立ち上げの 1 本だけです。層の分け方・ミドルウェア・誤りの受け手など、残りの例はすべて Express の書き方です。Fastify のプラグインやフックの作法は、このスキルでは扱われていません。

テストの書き方を知りたいとき

心得の 10 番目に「テストを書け」とありますが、テストの書き方は同じプラグインの javascript-testing-patterns を見よ、と本文が回しています。

型そのものを設計したいとき

同じプラグインの typescript-advanced-types が、ジェネリクスや条件型で呼び出し口の型を作る担当です。

注意点

解析で見つかった記述

SKILL.md と同梱の文書に、外部との通信、シェルでの実行、ファイルの書き換えの手順はありません。中身はすべてコード例と説明です。例のコードは、動かせばデータベース・Redis につなぎ、JWT の秘密の値を環境変数から読みます。同梱ファイルは references/ の 2 件です(2026-10-23 時点)。

例をそのまま写すと動かないところ

同じ authorize は、権限が足りないときに 403 の ForbiddenError ではなく 401 の UnauthorizedError を返しています。誤りの受け手の例は ValidationError を使っていますが、読み込んでいるのは AppError だけです。

更新の SQL は、項目の名前をそのまま入れる

データの出し入れの層の更新は、渡されたオブジェクトのキーをそのまま SQL の列の名前として組み立てます。値は置き場所で渡していますが、列の名前は文字列として埋め込まれます。要求の本文をそのまま渡すと、想定していない列まで書き換えられるので、入力の確かめで許す項目を絞ってから渡してください。

一時保存のまとめて消す処理

invalidatePattern は Redis の KEYS を使っています。Redis の文書(2026-10-23 確認)は、KEYS は大きなデータベースで性能を損なうので普段のアプリのコードで使わず、SCAN や集合を使え、と書いています。

CORS の設定が心得と食い違う

心得の 8 番目は「本番で * を使うな」ですが、Fastify の例は origin: true です。@fastify/cors の README(2026-10-23 確認)は、origin: true は要求の出どころをそのまま返して許す設定で、本番には勧めない、と書いています。Express の例のほうは、許す出どころを環境変数で並べる形です。

そのほかの細かい点

  • Express の立ち上げの例は、要求の記録を console.log で書いている(心得の 5 番目とは別の書き方)
  • 本文の大きさの上限は 10MB にしている
  • PostgreSQL の接続で予期しない誤りが出ると、process.exit(-1) で処理ごと止める
  • 取引の例は在庫を減らすだけで、在庫が足りるかは確かめていない

インストール数の推移

日次で記録

9月18日 〜 11月7日(49日分)

インストール数と 1 日あたりの増加は Skillselion が に集計した値です。上流の更新は数日おきなので、前日比ではありません。GitHub star と最終更新は に GitHub から取得しました。

よくある質問

Express と Fastify のどちらを前提にしていますか

両方の立ち上げの例がありますが、層の分け方・ミドルウェア・誤りの受け手・返す形の例は Express の書き方です。Fastify の例は、立ち上げと、形を確かめる経路 1 本だけです。

JWT の有効期限はどう決めていますか

同梱の文書の認証の例では、呼び出し用の JWT が 15 分、更新用が 7 日です。2 つは別の秘密の値(JWT_SECRET と REFRESH_TOKEN_SECRET)で署名します。更新用の値を渡すと、新しい呼び出し用の JWT を返す処理も載っています。

回数の制限はどこで数えていますか

Redis に数を置く形です。全体の口は 15 分に 100 回、認証の口は 15 分に 5 回で、認証は成功した回を数えません。サーバーが複数台でも、同じ Redis を見るので数が揃います。

同梱ファイルには何がありますか

references/details.md に、Express と Fastify の立ち上げ、3 層の例、ミドルウェア 4 つ、誤りの型と受け手があります。references/advanced-patterns.md には、DI のコンテナ、PostgreSQL・MongoDB・取引、JWT、Redis の一時保存、返す形の揃え方があります(2026-10-23 時点)。

同じ分類のスキル

⌘ 開発・コード

開発・コードのスキルをすべて見る →

← スキル一覧に戻る/ このスキルを他と比べる