1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【n8n×JS】ノーコードツールでこそ輝く!「かゆい所に手が届く」実務直結JavaScriptパターン集 🛠️⚡️

Posted at

こんにちは😊
株式会社プロドウガ@YushiYamamotoです!
らくらくサイトの開発・運営を担当しながら、React.js・Next.js専門のフリーランスエンジニアとしても活動しています❗️

この記事は JavaScript Advent Calendar 2025 の参加記事です🎄

みなさん、JavaScript書いてますか?
WebフロントエンドやNode.jsバックエンドはもちろんですが、最近は 「ノーコード/ローコードツールの中で書くJavaScript」 が熱いんです。

特に私が愛用しているワークフロー自動化ツール n8n では、「Codeノード」でJSを書くことで、ノーコードの限界を軽々と突破できます。

今回は、「ノーコードツールを使っている時によく遭遇する課題」 を、「モダンなJavaScript(ES2020+)」 でサクッと解決するパターンをいくつか紹介します。

🧩 なぜノーコードでJSを書くのか?

「ノーコードなんだからコード書きたくないよ」と思いますよね。
でも、実務ではこんな壁にぶつかります。

  • APIから返ってきたJSONが複雑すぎて、標準ノードで整形するのが面倒。
  • 「配列の中のオブジェクトの特定のキーだけを抽出して、カンマ区切りにしたい」みたいな微調整。
  • 生成AI(ChatGPT)が返してきたテキストから、JSON部分だけを抜き出したい。

こういう時、GUIでポチポチ設定するより、JSを5行書いたほうが圧倒的に早くて確実なのです。

💡 パターン1:複雑なJSONの整形(Map & Destructuring)

APIから取得したデータが「ネストが深くて使いにくい」場合、map分割代入(Destructuring) でフラットにします。

課題: ユーザーリストから、必要な情報だけを抜き出してリネームしたい。

Before: 複雑なデータ構造
// APIからのレスポンス(イメージ)
[
  {
    json: {
      id: 1,
      attributes: {
        fullName: "Yushi Yamamoto",
        contact: { email: "test@example.com", phone: "090-xxxx-xxxx" },
        status: "active"
      }
    }
  },
  // ...続く
]

解決コード:

// n8nのCodeノード内
const items = $input.all();

return items.map(item => {
  // 分割代入で深層のデータを取り出す
  const { fullName, contact: { email } } = item.json.attributes;

  return {
    json: {
      id: item.json.id,
      name: fullName,  // リネーム
      email: email,    // フラット化
      isActive: item.json.attributes.status === 'active' // 真偽値に変換
    }
  };
});

これだけで、後続のノード(Slack通知やスプレッドシート書き込み)が劇的に楽になります。

💡 パターン2:AI出力のクリーニング(Regex & JSON.parse)

最近流行りの「AI連携」。しかし、LLMは親切心でMarkdown記法を含めて返してくることがあります。これをそのまま JSON.parse するとエラーになります。

課題: ```json { "key": "value" } ``` という文字列からJSONオブジェクトを作りたい。

解決コード:

const aiResponse = $input.first().json.content; // AIの回答テキスト

// 正規表現で ```json ... ``` または ``` ... ``` の中身だけを抽出
// sフラグ(dotAll)で改行を含めてマッチさせる
const jsonMatch = aiResponse.match(/```(?:json)?\s*([\s\S]*?)\s*```/);

let result;
try {
  // マッチすればその中身を、しなければ全体をパースしてみる
  const jsonString = jsonMatch ? jsonMatch[1] : aiResponse;
  result = JSON.parse(jsonString);
} catch (e) {
  // エラーハンドリング(空のオブジェクトを返すなど)
  result = { error: "Failed to parse JSON", raw: aiResponse };
}

return { json: result };

この正規表現パターンは、AIエージェント開発で必須級のテクニックです。

💡 パターン3:安全なデータアクセス(Optional Chaining & Nullish Coalescing)

外部データは常に不完全です。「あるはずのキーがない」ことでワークフローが止まるのを防ぐために、ES2020の機能をフル活用します。

課題: user.profile.sns.twitter が存在しないかもしれないが、エラーにしたくない。

解決コード:

const items = $input.all();

return items.map(item => {
  const user = item.json;

  return {
    json: {
      // ?. で安全にアクセスし、 ?? でデフォルト値を設定
      twitterUrl: user?.profile?.sns?.twitter ?? "https://twitter.com/default",
      
      // 配列があるかわからない場合のmap処理
      tags: user?.tags?.map(t => t.name).join(',') ?? "no-tags"
    }
  };
});

if (user && user.profile && ...) と書いていた時代にはもう戻れませんね。

まとめ:JavaScriptは「最強の接着剤」

ノーコードツールは便利ですが、「あと1ミリ、ここを調整したい」 という場面でJavaScriptの知識が火を吹きます。

  • データの整形は map / filter / reduce
  • 安全なアクセスは ?. / ??
  • 文字列処理は RegExp

これらを使いこなせれば、n8nに限らず、GAS (Google Apps Script) や Zapier など、あらゆる自動化ツールで無双できます。

2025年も、「ノーコード × JavaScript」 で快適なエンジニアライフを送りましょう!🚀

最後に:業務委託のご相談を承ります

私は業務委託エンジニアとしてWEB制作やシステム開発を請け負っています。最新技術を活用したレスポンシブなWebサイト制作、インタラクティブなアプリケーション開発、API連携など幅広いご要望に対応可能です。

「課題解決に向けた即戦力が欲しい」「高品質なWeb制作を依頼したい」という方は、お気軽にご相談ください。一緒にビジネスの成長を目指しましょう!

👉 ポートフォリオ

🌳 らくらくサイト

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?