coding-node について
coding-nodeは、Node.js 22以降でサーバーサイド開発を行う開発者向けのスキルです。非同期処理、モジュール、ストリーム、パッケージ管理、主要なWebフレームワークを扱います。
主な機能
- 01非同期プログラミングパターン
- 02ECMAScript Modules対応
- 03npmとpnpmによる依存関係管理
- 04イベントループとストリーム
- 05Express、Fastify、Honoのサーバー構築
活用シーン
- 01Node.jsでHTTP APIを作成
- 02イベントループのブロックを調査
- 03ストリームでファイルを処理
- 04npmまたはpnpmで依存関係を管理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill coding-nodeインストール後、Claude Code で/coding-nodeを入力して読み込まれたか確認します。
詳細
coding-node
目的
このスキルは、非同期プログラミングのパターン、ECMAScript モジュール(ESM)、npm や pnpm などのパッケージマネージャー、イベントループ、ストリーム、Express、Fastify、Hono などのフレームワークを含む、Node.js 22 以降の専門知識を提供します。効率的でモダンなサーバーサイドアプリケーションの構築をユーザーに案内するために使用してください。
使用する場面
Node.js で非同期処理を扱う、npm または pnpm で依存関係を管理する、イベントループの問題をデバッグする、ストリームを処理する、Express、Fastify、Hono でウェブサーバーをセットアップするといったニーズがある場合に、このスキルを適用してください。JavaScript 環境での API 作成、ファイル処理、リアルタイムアプリケーションなどのバックエンド開発タスクにも使用してください。
主な機能
- 非同期パターン:ノンブロッキングコードには
async/awaitを使用します。例:async function fetchData() { const data = await fetch('url'); return data; }。 - ESM のサポート:
import構文でモジュールをインポートします。例:Node.js 22 以降では、拡張子.mjsのファイル、または package.json の"type": "module"を設定したファイルでimport express from 'express';を使用します。 - パッケージマネージャー:npm(例:
npm install express --save)または pnpm(例:pnpm add fastify)で依存関係を管理します。ワークスペースをサポートし、インストールがより高速な pnpm を使用してください。 - イベントループ:ブロッキング処理について説明し、最適化します。
process.nextTick()を使用すると、次のイベントループフェーズより前にコールバックをスケジュールできます。 - ストリーム:Readable、Writable、Transform ストリームを使ってデータをチャンク単位で処理します。例:
const fs = require('fs'); const readStream = fs.createReadStream('file.txt'); readStream.on('data', chunk => console.log(chunk));。 - フレームワーク:Express(例:
app.use(express.json()))、Fastify(例:fastify.get('/path', handler))、または Hono(例:app.get('/route', c => c.text('Hello')))でサーバーをセットアップします。
使用パターン
タスクを実行する際は、プロジェクトのセットアップで Node.js のバージョンを必ず 22 以降に指定してください。ESM を使う場合は、package.json に "type": "module" を追加し、import 文を使用します。非同期タスクでは、async 関数を try-catch ブロックで囲みます。npm を使用する場合は、npm init -y を実行して package.json を作成してから、パッケージをインストールします。pnpm を使用する場合は、pnpm init で初期化し、npm コマンドのドロップイン置換として使用します。ストリームを扱うには、直接パイプで接続します。例:readStream.pipe(writeStream)。フレームワークを使用する場合は、HTTP サーバーのインスタンスを作成し、ルートを定義します。例:app.listen(3000) で Express を起動します。
主なコマンド/API
- Npm コマンド:プロジェクトを初期化:
npm init -y。パッケージをインストール:npm install express --save-prod。依存関係を更新:npm update。package.json からスクリプトを実行:npm run start。 - Pnpm コマンド:パッケージを追加:
pnpm add fastify。パッケージを削除:pnpm remove package。すべてをインストール:pnpm install。 - API エンドポイント:Express では、
app.get('/users', (req, res) => res.json(users))のようにルートを定義します。Fastify では、fastify.post('/login', async (req, reply) => { /* auth logic */ reply.send({ token: 'abc' }); })を使用します。Hono では、const app = new Hono(); app.get('/api/data', c => c.json({ data: 'value' }));のようにセットアップします。 - イベントループとのやり取り:I/O コールバックには
setImmediate()を使用します。例:setImmediate(() => console.log('After current event loop'));。 - Streams API:読み取り可能なストリームを作成します:
const { Readable } = require('stream'); const readable = Readable.from(['line1', 'line2']); readable.pipe(process.stdout);。 外部サービスなどで API キーが必要な場合は、環境変数として設定します:process.env.API_KEY = 'your_key'。コマンドでは$YOUR_API_KEYを使ってアクセスします。
統合に関するメモ
Node.js をランタイムとして使用し、このスキルを他のツールと統合します。たとえば、MongoDB 用の mongoose を使ってデータベースと連携するには、pnpm add mongoose でインストールし、コード内で接続します:const mongoose = require('mongoose'); mongoose.connect(process.env.MONGO_URI);。環境変数には dotenv を使用します:npm install dotenv でインストールし、require して設定します:require('dotenv').config(); const key = process.env.API_KEY;。デプロイするには、サーバーを Vercel や Heroku などのツールにエクスポートします。たとえば、package.json の start スクリプトを "start": "node server.js" に設定します。互換性を確保するため、package.json でエンジンを指定します:"engines": { "node": ">=22" }。ストリームを統合する場合は、圧縮用の zlib など、他のモジュールと連結します:readStream.pipe(zlib.createGzip()).pipe(writeStream)。
エラー処理
非同期関数では必ず try-catch を使用します。例:try { const result = await someAsyncFunction(); } catch (error) { console.error(error.message); }。ストリームでは、'error' イベントをリッスンします。例:readStream.on('error', err => { console.error('Stream error:', err); process.exit(1); })。Express では、エラー処理にミドルウェアを使用します:app.use((err, req, res, next) => { res.status(500).send('Server Error'); })。npm/pnpm では、終了コードを確認します。例:スクリプト内で if [ $? -ne 0 ]; then echo "Command failed"; fi を使用します。イベントループのブロックを防ぐために入力を検証し、未処理のエラーには process.on('uncaughtException', (err) => { console.error(err); process.exit(); }) を使用します。
具体的な使用例
- 基本的な Express サーバーをセットアップする:ファイル
server.jsを作成し、次の内容を記述します:import express from 'express'; const app = express(); app.get('/', (req, res) => res.send('Hello World')); app.listen(3000, () => console.log('Server running'));。ESM を使用している場合はnode --experimental-vm-modules server.jsで実行し、http://localhost:3000 にアクセスします。 - Pnpm でファイルストリームを処理する:まず、依存関係をインストールします:
pnpm add fs。次に、コードに以下を記述します:const fs = require('fs'); const readStream = fs.createReadStream('input.txt'); readStream.on('data', chunk => console.log(chunk.toString())); readStream.on('end', () => console.log('Done'));。node script.jsで実行すると、ファイルの内容をチャンク単位で読み取り、ログに出力します。
グラフの関係
- 関連:コーディング(同じクラスター)。JavaScript の基礎を共有しています。
- 接続: "nodejs" や "javascript" などのタグを介して他のコーディングスキルとつながり、フルスタック開発向けのフロントエンドスキルにもつながる可能性があります。
- 統合:"coding" クラスター内のツール(データベースやデプロイのスキルなど)と統合し、エンドツーエンドのアプリケーションを構築できます。