無料でIFTTTやZapierっぽく全自動連携できる「n8n」を自サーバー上に構築してみた
複数のウェブサービスを連携し、定型作業を自動化してくれるサービスはIFTTTやZapierが有名ですが、特定のサービス以外は使えなかったり、有料プランでしか使用できない機能があったりします。オープンソースで使える自動化サービス「n8n」は無料で利用でき、自社製ソフトのような他の自動化サービスでは未対応のサービスも自動化できるとのことなので、実際に使ってみました。
n8n.io - Workflow Automation
https://n8n.io/
まずはn8nのホームページにアクセスします。
ホームページ下部へと進むとインストール方法が記載されていました。今回はWindows 10の機能の一つであるWSL上のUbuntuにn8nをインストールします。
n8nを動作させるにはNode.jsが必要なので、記事作成時点で最新の推奨バージョンのNode.jsをインストールしておきます。
Node.js
https://nodejs.org/ja/
公式ページに記載されているコマンドではパーミッションが足りずインストール時にエラーが発生したので、下記コマンドを実行してn8nをインストールしました。
sudo npm install n8n -g --unsafe-perm=true --allow-root
インストールが完了したら、下記コマンドを実行してn8nを起動させます。
n8n
n8n起動後、ブラウザから「http://localhost:5678」へアクセスすると、n8nの画面が表示されました。n8nでは「ノード」と呼ばれる作業の単位をつなぎ合わせて、一連の作業の流れである「ワークフロー」を作成していきます。
n8nで実際にワークフローを登録している様子を記録した公式動画がこれ。
n8n.io - Slack Notification on Github Star - YouTube
試しに「GIGAZINEのRSSフィードを取得し、JSON形式でローカルに保存する」ワークフローを作ってみます。「+」ボタンを押すと……
作業の単位である「ノード」のリストが表示されました。IFTTTやZapierに比べると連携できるサービスの数は少なめです。
まずはRSSフィードを取得したいので「RSS」で検索してみると、「RSS Read」がヒットしたのでクリックします。
RSSフィードのURLの入力を促されました。
URLの入力が完了したら、きちんとRSSフィードを取得できるかどうか確認するために「Execute Node」をクリックします。
JSON形式でRSSフィードを取得できました。
ホームに戻ると「RSS Feed Read」のノードが表示されました。「Start」ノードが作業のスタート地点なので、2つのノードの端と端をドラッグしてつなげます。
つなげると、2つのノード間に線が表示されました。
次は「RSS Feed Read」ノードで取得したJSON情報をファイルに書き込める形式に変換します。ノードの検索画面に「binary」と検索し、「Move Binary Data」をクリック。
JSONからファイルに書き込める形式に変換するので「JSON to Binary」にモードを設定。
「RSS Feed Read」ノードと「Move Binary Data」ノードもドラッグしてつなげます。
最後に変換したJSON情報をファイルに書き込むため、「Write Binary File」ノードを使用します。
ファイル名を入力してホームに戻ります。
すべてのノードをつないで「Execute Workflow」ボタンを押すと……
ワークフローが実行され、右下に実行成功のメッセージが表示されました。
出力したファイルはn8nを実行した時のカレントディレクトリに保存されています。ファイルの中身を見ると、きちんとRSSフィードが出力されていました。
決まった時間にワークフローを開始する「Cron」ノードなど、何かのアクションをきっかけに動作するワークフローを作成することもできます。その場合は右上の「Active」をオンにしておく必要があります。
左側のリストの一番上のアイコンにカーソルを合わせると、ワークフローの保存や削除が行えます。
二番目の鍵マークをクリックすると、連携するウェブサービスのアカウントを管理する画面が現れます。
三番目のリストマークをクリックすると、ノードの動作履歴を確認できます。
ワークフローはn8nの公式ページにアップロードされているものを簡単に使うこともできます。使いたいワークフローのページへ進んで……
ワークフローのコード部分をクリック。これでワークフローがコピーされた状態になります。
n8nのホームに戻りCtrl+Vを押すと、ワークフローを簡単にコピーできました。
連携できるサービスは少ないですが、「Execute Command」ノードという、n8nを実行しているサーバーのコマンドを実行できる便利なノードを使えば自動化の可能性はかなり広がります。
基本的なコマンドの実行結果はもちろん出力可能。
n8nが対応していないウェブサービスの各種APIも利用することができます。例えばLINE Messeging APIを利用すれば……
RSSフィードをLINEに投稿することができます。
サーバーで収集している各種ログももちろん取得可能。
UPSから入力側の電圧を取得して毎分LINEに投稿するというマニアックな使い方もできます。
実際に使用してみたところ、公式に連携できるサービスは少ないものの、サーバー側のコマンドを実行できる「Execute Command」ノードがあるので、実質的には連携できるサービスは無限大。使い方によってはかなり便利な自動化サービスだと感じました。
・関連記事
ツイート・メール・株価などあらゆる情報を表示&IFTTT連携で無限の可能性を感じるスマートクロック「LaMetric TIME」を使ってみた - GIGAZINE
Gmailがあらゆるサービス同士を連携させる「IFTTT」のサポートを打ち切る模様 - GIGAZINE
リアルタイムでアニメを4Kサイズにアップスケーリングできるオープンソースのアルゴリズム「Anime4K」 - GIGAZINE
オープンソースで誰でも簡単に短縮URLを生成できるWebサービス「Kutt.it」レビュー - GIGAZINE
わずか11万円で自動車を「完全自動運転車」に改造できる手作りキット「comma two devkit」発売 - GIGAZINE
・関連コンテンツ