🚀 n8nで業務を自動化！ノーコードツールの導入から実践活用まで 🤖

こんにちは😊
[株式会社プロドウガ](https://qiita.com/organizations/prodouga-com)の@YushiYamamotoです！
[らくらくサイト](https://rakuraku-site.prodouga.com/)の開発・運営を担当しながら、React.js・Next.js専門のフリーランスエンジニアとしても活動しています❗️

最近、業務効率化のためのツールとして「n8n（エヌエイトエヌ）」を使い始めたのですが、これがとても便利なんです！
今回は、このオープンソースのワークフロー自動化ツールについて、基本から応用まで分かりやすく解説していきます。プログラミング初心者の方もこの記事を読めば、n8nを使って業務自動化への第一歩を踏み出せること間違いなしです💪

## n8nとは？🧩

![n8n.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3637864/609f634d-e52b-4dc8-993e-2b38f2097c48.png)


n8nは、**オープンソースのローコードツール**で、様々なサービスやAPIを連携させて業務フローを自動化できるプラットフォームです。
簡単に言うと、「こんなときに、こうしたい」というワークフローを視覚的に組み立てられるツールということですね。

例えば、こんなことが可能です：

- GitHubのissueが作成されたらSlackに通知する
- JSONデータを自動的にスプレッドシートに取り込む
- Webサイトからデータを定期的に収集する
- ローコードでチャットボットを開発する

他のツール（ZapierやIFTTT）と違って、n8nはセルフホスティングが可能で、データを自分のサーバー内に保持できるのが大きな特徴です。

## n8nの基本概念📚

n8nの世界では、**ノード**と**ワークフロー**という概念が重要です。

- **ノード**：特定の処理を行うブロックのこと。例えば「Slackに投稿する」「データをフィルタリングする」などの機能を持つ[^6]
- **ワークフロー**：これらのノードを接続して作成した業務フローのこと

これを図で表すとこんな感じです：

```mermaid
flowchart LR
    A[トリガーノード] -->|データ| B[処理ノード]
    B -->|加工されたデータ| C[出力ノード]
    
    subgraph "n8nワークフロー"
    A
    B
    C
    end
```


## n8nのインストールと起動🚀

それでは早速、n8nを始めてみましょう！インストールは非常に簡単です。

### Dockerを使ったインストール

```bash
docker run -it --rm \
  --name n8n \
  -p 5678:5678 \
  -v ~/.n8n:/home/node/.n8n \
  docker.n8n.io/n8nio/n8n
```


### npm経由でのインストール

```bash
npm install n8n -g
```

インストールが完了したら、次のコマンドで起動します：

```bash
n8n start
```

これだけで、ブラウザから `http://localhost:5678` にアクセスすると、n8nのダッシュボードが表示されます！簡単ですね✨[^6]

## 最初のワークフローを作ってみよう🔧

n8nを起動したら、実際にワークフローを作成してみましょう。今回は「GitHubのissueが作成されたらSlackに通知する」という簡単なワークフローを例に解説します。

### ステップ1：ワークフローの作成

1. 「Create New」ボタンをクリック
2. 「Blank Workflow」を選択

### ステップ2：トリガーノードの追加

1. 「+」ボタンをクリック
2. 検索バーに「GitHub」と入力
3. 「GitHub Trigger」を選択
4. 認証情報を設定
5. トリガーイベントとして「Issue」→「Issue Created」を選択

### ステップ3：出力ノードの追加

1. GitHub Triggerノードの右側の「+」をクリック
2. 検索バーに「Slack」と入力
3. 「Slack」を選択
4. 認証情報を設定
5. 「Channel」「Message」を設定

### ステップ4：完成したワークフロー

```mermaid
flowchart LR
    A[GitHub Trigger] -->|issue情報| B[Slack]
    B -->|通知送信| C[完了]
```

このように、ノードを繋げるだけで簡単に自動化ワークフローが作成できます。

## カスタムノードを作ってみよう🛠️

n8nのすごいところは、既存のノードだけでなく、自分だけのカスタムノードも作れることです！これによって、n8nの可能性が無限に広がります。

### カスタムノードの作成手順

1. まずはn8nのノードスターターキットを使用します[^6]：
```bash
# スターターキットのクローン
git clone https://github.com/n8n-io/n8n-nodes-starter.git

# ディレクトリ移動
cd n8n-nodes-starter

# 依存関係インストール
npm install
```

2. `package.json`の設定を変更します：
```json
{
  "name": "n8n-nodes-my-custom-node",
  "version": "0.1.0",
  // 他の設定
}
```

3. ノードの実装を行います。以下は簡単な例です：
<details><summary>カスタムノードの実装例</summary>

```typescript
import { IExecuteFunctions } from 'n8n-core';
import {
  INodeExecutionData,
  INodeType,
  INodeTypeDescription,
} from 'n8n-workflow';

export class MyCustomNode implements INodeType {
  description: INodeTypeDescription = {
    displayName: 'My Custom Node',
    name: 'myCustomNode',
    group: ['transform'],
    version: 1,
    description: 'カスタムノードの説明',
    defaults: {
      name: 'My Custom Node',
    },
    inputs: ['main'],
    outputs: ['main'],
    properties: [
      {
        displayName: '対象テキスト',
        name: 'text',
        type: 'string',
        default: '',
        placeholder: '処理したいテキストを入力',
        description: 'このテキストを処理します。',
      },
    ],
  };

  async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
    const items = this.getInputData();
    const text = this.getNodeParameter('text', 0) as string;
    
    // テキストを大文字に変換するだけの簡単な処理
    const result = text.toUpperCase();
    
    // 結果を設定
    items[^0].json['result'] = result;
    
    return this.prepareOutputData(items);
  }
}
```

</details>

4. ビルドしてn8nに読み込ませます：
```bash
# ビルド
npm run build

# リンク作成
npm link

# n8nのカスタムノードディレクトリに移動
cd ~/.n8n/custom

# リンク
npm link n8n-nodes-my-custom-node

```

5. n8nを再起動して、新しいノードを使えるようになります！[^6]

:::note info
カスタムノードを変更した場合は、必ず`npm run build`を実行してから、n8nを再起動する必要があります。
:::

## 実践的なユースケース💼

n8nを使った実践的なユースケースをいくつか紹介します！

### 1. データ収集と分析の自動化


```mermaid
flowchart TD
    A[HTTP Request] -->|Webデータ取得| B[JSON Parse]
    B -->|データ整形| C[Filter]
    C -->|条件抽出| D[Google Sheets]
    D -->|保存| E[Send Email]
```

- Webサイトから定期的にデータを収集
- JSONデータを解析して必要な情報を抽出
- Googleスプレッドシートに保存
- 結果をメールで通知


### 2. 顧客サポートの効率化

```mermaid
flowchart TD
    A[Webhook] -->|新規問い合わせ| B[Function]
    B -->|感情分析| C{緊急度判定}
    C -->|高緊急| D[Slack通知]
    C -->|低緊急| E[CRM登録]
```

- 問い合わせフォームからの情報をWebhookで受け取る
- AIを使って感情分析を行い緊急度を判定
- 高緊急の場合はSlackに通知、それ以外はCRMに登録


### 3. マーケティング活動の自動化

SNSやブログの更新を一度の操作で複数プラットフォームに展開：

```mermaid
flowchart TD
    A[Manual Trigger] -->|記事情報入力| B[Function]
    B -->|コンテンツ生成| C[Split]
    C -->|TwitterVer| D[Twitter]
    C -->|FacebookVer| E[Facebook]
    C -->|LinkedInVer| F[LinkedIn]
```


## n8nの使用上の注意点⚠️

n8nを使う上での注意点もいくつか紹介します：

:::note warn
n8nは「ノーコード」を謳っていますが、実際には高度なカスタマイズにはJavaScriptの知識が必要なケースが多いです。完全にノーコードを求めている場合は注意が必要です。
:::

:::note alert
Webhookノードを本番環境で使う場合は、右上の「Inactive」ボタンをクリックして「Active」状態にする必要があります。テストモードではリクエストを常時受け付けません。
:::

## n8nとの相性が良いツール🔄

n8nと組み合わせると効果的なツールをいくつか紹介します：

1. **Slack/Discord** - チームコミュニケーションと連携
2. **Google Sheets/Airtable** - データ管理との連携
3. **GitHub/GitLab** - 開発ワークフローの自動化
4. **OpenAI API** - AI機能の組み込み
5. **MySQL/PostgreSQL** - データベース操作の自動化

## まとめ：n8nで始める業務自動化の第一歩🏁

この記事では、n8nの基本概念から実践的な使い方まで幅広く紹介しました。n8nはその柔軟性と拡張性から、多くの業務自動化シナリオに対応できる強力なツールです。

特に以下のようなケースでn8nの導入を検討してみてください：

- 複数のサービス間でデータを連携させたい
- 定型業務を自動化して時間を節約したい
- APIを活用した複雑なワークフローを構築したい
- データプライバシーを重視してセルフホスティングしたい

n8nはオープンソースで始められるので、まずは試してみることをおすすめします。業務効率化の新たな扉が開けるはずです！

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

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

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

👉 [ポートフォリオ](https://yushiyamamoto.vercel.app/)

🌳 [らくらくサイト](https://rakuraku-site.prodouga.com/)

📩 **お問い合わせ**: [お気軽にご連絡ください](https://prodouga.com/contact)



https://qiita.com/YushiYamamoto/items/022e2eb80dd11ca051ea

https://qiita.com/YushiYamamoto/items/1c6fa7d52a0186f58165

https://qiita.com/YushiYamamoto/items/447110485b071e66cd13

https://qiita.com/YushiYamamoto/items/c9bb311ceab05a6b2f1e