IFTTTやZapierのようなサービスを自前で構築して使用できるオープンソースn8n
はじめに
複数のアプリを連携させて何かしらの処理をさせることができるサービスとして、IFTTTやZapier、Microsft Flowなどが有名です。n8nはこれらののオープンソース版です。この記事では、n8nをインストールして実際に使用してみるまでの手順をまとめます。
n8nでできるようになること
以下のようなGUIの管理画面にブラウザからアクセスし、ノードを設置して繋げていくことで色々な処理を実行させることができます。なお、n8nではノードを繋げて処理を実施する一連のノード郡を「ワークフロー」と呼んでいるのでこの記事でもワークフローと呼びます。
処理を担うノードには色々な種類があります。Google DriveやDropboxのようなクラウドストレージにアクセスできるノードや、AsanaやTrelloのようなタスク管理サービスにアクセスできるノードも用意されています。SlackやDiscordにメッセージを投稿するノードもあります。 ユーザが作成したワークフローがn8nで公開されており、これらをインポートして使うことも可能です。以下のページで公開されています。
公開されているワークフローをいくつか例として以下に載せます。
- ローカルにあるファイルを定期的にDropboxにバックアップする
- 複数のGoogleスプレッドシートを同期する
- GitHubで自分のリポジトリにスターが付いたらSlackに通知する
なお、自前のスクリプト(Node.jsやシェル等)を実行できるノードも用意されているので、他のノードとの組み合わせによって色々な処理を自由に実現できると思います。 この記事では、n8nをインストールし、簡単な例として適当なRSSフィードを取得してローカルに保存するワークフローを作成する手順をまとめます。 以下がn8nの公式サイトです。
また、公式リポジトリは以下になります。
n8n is a free node based "Open Source" (with Commons Clause) Workflow Automation Tool. It can be self-hosted, easily extended, and so also used with internal tools.
前提と環境
n8nをインストールして動かすにはNode.jsがインストールされている必要があります。この記事では以下のバージョンのNode.js環境でインストールしました。
- Node.js : 10.16.0
n8nをインストールする
Node.jsが使用できる環境で、npm
を使用して以下のコマンドでn8nをインストールします。以下はグローバルにインストールします。
$ npm install n8n -g
もし適当なディレクトリ配下のみにインストールしたい場合は、そのディレクトリに移動した上で--save
オプションを付けて実行します。
$ npm install n8n --save
以上でインストールは完了です。 あとは、以下でn8nを起動します。
$ n8n
特定のディレクトリ配下にインストールした場合は、そのディレクトリで以下を実行します。
$ ./node_modules/n8n/bin/n8n
n8nを起動したらブラウザでhttp://localhost:5678
にアクセスします。以下のような画面が表示されます。
上記で色々なノードを設置して繋げていき、ワークフローを作成します。
RSSフィードを取得してJSONファイルに書き込むワークフローを作成する
簡単な例として、RSSフィードを取得してJSONファイルに書き込むワークフローを作成してみます。 この処理を遂行するワークフローとして使用するノードとしては、以下になります。
- 指定したURLからRSSフィードを取得する
- 取得したRSSフィードをJSON形式に変換する
- JSONデータをローカルに保存する
それぞれについて説明します。
指定したURLからRSSフィードを取得する
まずノードを追加するために以下のように画面右上にある「+」ボタンをクリックします。
すると以下のようにノードを検索できるので、ここで「http」と入力します。以下のように「HTTP Request」という名前のノードが表示されます。これをクリックします。
「HTTP Request」ノードが設置されて「HTTP Request」ノードの設定ダイアログが開きます。ここで以下のように「URL」部分に取得したいRSSフィードのURLを入力します。またここではフォーマットとして「String」(文字列)を選択していますが、JSON形式のデータを配布しているAPIなどでは「JSON」を選択できます。ここでは使用しませんが、この「HTTP Request」ノードはGET以外のHTTPリクエストも使用でき、認証が必要な場合も対応可能です。
RSSフィードのURLを入力したら、ダイアログの右上にある「Execute Node」をクリックします。すると以下のようにHTTPリクエストの結果が表示されます。
これで指定したURLからRSSフィードを取得するノードの準備が完了です。
取得したRSSフィードをJSON形式に変換する
RSSフィード取得用のノードを追加した時と同様に、以下のように「xml」と検索し、表示された「XML」ノードをクリックして追加します。
「XML」ノードの設定ダイアログが開くので、「Mode」が「XML to JSON」になっていることを確認します。その後「Execute Node」をクリックすると以下のように変換結果が表示されます。「Mode」で「JSON to XML」を選択すればJSON形式をXML形式に変換することができます。
これで取得したRSSフィードをJSON形式に変換するノードの準備が完了です。
JSONデータをローカルに保存する
JSONデータをローカルに保存するためのノードを作成します。これは単体のノードでは用意されていないため、n8nの公式サイトで公開されているJSONデータを保存するためのワークフローを使用します。ワークフローのページにアクセスすると、以下のようにワークフローの説明とそのコード(JSON形式)が記載されています。そしてこのコード部分をクリックするとそのワークフローがクリップボードにコピーされます。
後は自分のn8nの画面に戻り、 Ctrl + Vなどでペーストすれば使用できます。そして最終的には各ノードを以下のように配置し、接続します。
ワークフローを実行する
ワークフローが完成したら以下のようにn8nの画面下部にある「Execute Workflow」ボタンをクリックして実行します。
各ノードが順番に実行されて最終的に「test.json」というJSONファイルが作成されます。作成されるディレクトリは、n8n
コマンドを実行したディレクトリです。もしファイル名やパスを変更したい場合は、「Write Binary File1」ノードをダブルクリックして設定ダイアログを開き、「File Name:」に好きなファイルパス、ファイル名を入力します。
なお、このワークフローを保存するには以下のように左側のメニューから「Save as」をクリックして名前を付けて保存します。
トリガを設定する
n8nではトリガ用のノードも色々と用意されています。ノードを追加する時に、以下のように「Trigger」タブから検索できます。
トリガ用のノードをワークフローの先頭に設置してつなげれば色々な条件をトリガにできます。cronのような定期実行も可能ですし、何かしらのアプリのイベントやWebhookもトリガとして用意されています。これらについては、公式ドキュメントや冒頭に載せた公開されているワークフローを参考に見てみてください。
まとめ
n8nをインストールして実際に使ってみるまでの手順をまとめました。n8nは大体のことができそうなぐらいにはノードも揃っており、随時ノードが追加されているので楽しみです。日頃の面倒な業務や作業を自動化するのに検討する価値があると思います。ぜひ試してみてください。
関連記事
- 公開日:2020/02/16 更新日:2020/02/16
圧縮、暗号化、リモート対応の差分バックアップを作成できる「Borg Backup」の使い方
圧縮、暗号化に対応し差分バックアップを作成できるソフトウェアである「Borg Backup」をUbuntuにインストールして使ってみたのでその手順をまとめます。「Borg Backup」はLinux、macOSに対応しています。
- 公開日:2020/02/13 更新日:2020/02/13
モダンで美しいRSS&ポッドキャストリーダー「Winds」をUbuntuで使用する
RSSリーダーアプリは色々ありますが、結構見た目が古く更新されていないものも多いです。Windsはモダンな見た目で綺麗な上、WebサイトのRSSフィードだけでなくポッドキャストのフィードにも対応しています。この記事ではWindsをUbuntuにインストールして使用する手順をまとめます。
- 公開日:2020/02/07 更新日:2020/02/07
Jitsiで特定ユーザーのみビデオチャットを作成できるように設定を変更する
URLを発行するだけでブラウザでビデオチャットを開始できるオープンソースのJitsiで、特定ユーザーのみが新しいチャットルームを作成できるよう設定を変更したのでその手順をまとめます。
- 公開日:2020/02/07 更新日:2020/02/07
URL発行のみでビデオチャットやビデオ会議を開始できるオープンソース「Jitsi」
URL1つを発行するだけでその他のアカウント登録等不要にビデオチャットや複数人でのビデオ会議をブラウザで開始できる「Jitsi」を実際にインストールして使ってみたのでその手順をまとめます。
- 公開日:2019/12/23 更新日:2019/12/23
複数デバイス間でローカルのファイルを無制限に同期できるSyncthingをLinuxで使用する手順
Syncthingはローカルにあるファイルを複数のデバイス間で同期することができるオープンソースソフトウェアです。クラウド経由でファイルを同期するのではなく、ローカル同士で同期します。この記事ではUbuntuとAndroidでSyncthingを使用してファイルを同期するまでをまとめます。