複数のウェブサービスを連携し、定型作業を自動化してくれるサービスは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」ノードがあるので、実質的には連携できるサービスは無限大。使い方によってはかなり便利な自動化サービスだと感じました。