Ubuntu Weekly Recipe

第607回 n8nでWebサービスを繋いだワークフローを自動化する

この記事を読むのに必要な時間:およそ 3.5 分

n8nとは

IFTTTというWebサービスがあります。IFTTTはWebサービス同士を連携させられるサービスで,トリガーとアクションを組み合わせることで,様々なワークフローをプログラミングなしで構築できます。たとえば「Twitterに誰かがツイートをしたら,それをSlackに通知する」といったワークフローも,簡単に作ることができます。

今回紹介するn8nは,一言で言ってしまうと「セルフホストできるオープンソースのIFTTT」です。IFTTTとは対応しているサービスに違いがありますが,セルフホストしていることから,⁠ローカルサーバー上で任意のコマンドを実行する」⁠ローカルのストレージにデータを保存する」といったアクションも実行できるというメリットがあります。プライバシーポリシー上の理由から外部サービスを利用できなかったり,自作アプリと連携したいような場合に便利なサービスだと言えるでしょう。

n8nサーバーの構築

それではまずn8nサーバーを構築しましょう。n8nのインストール方法は大きく分けて,npmでサーバー上にインストールするか,Dockerコンテナ内で起動させるかの2通りです。この手の(APTでインストールできない)アプリは,ホストを汚さず,また不要になったら後腐れなく捨てられるコンテナ内で運用するのが楽ですから,今回はDockerを使って動かすことにしましょう。

まずはdocker.ioパッケージをインストールしてください。その後,dockerコマンドを実行するユーザーをdockerグループに追加して,ログインし直しておきましょう。

$ sudo apt install docker.io
$ sudo gpasswd -a (ユーザー名) docker

n8nはコンテナ内の/root/.n8nディレクトリに設定を保存します。そのためホスト上に設定を保存するディレクトリを作成し,-vオプションでbind mountしてください。これを行わないと,コンテナを作り直した際に設定したワークフローが失われてしまいます。今回はホームディレクトリ直下に.n8nディレクトリを作成しました。

$ mkdir ~/.n8n
$ docker run --rm -it --name n8n -p 5678:5678 -v ~/.n8n/:/root/.n8n n8nio/n8n

Dockerコンテナが起動したら,Webブラウザでhttp://localhost:5678を開いてください。n8nの新規ワークフロー画面が表示されます。

図1 n8nのワークフロー編集画面

画像

ワークフローの作成

それでは実際にワークフローを作成してみましょう。今回はシンプルに「一定時間ごとに,Slackにランダムな猫の画像を投稿する」というワークフローを作ってみます。ブラウザに表示されているワークフロー画面に,以下の手順に従ってノードを配置してください。

HTTP Requestノードの作成

ランダムな猫の画像の取得には,TheCatApiを利用することにします。これはAPIを叩くと,ランダムな猫の画像の情報をJSONで返してくれるサービスです。n8nからHTTPでAPIを叩くためには,⁠HTTP Request」ノードを使います。ワークフロー画面に右上にある「+」をクリックすると,配置できるノードの一覧がリストアップされます。この中から「HTTP Request」をクリックしてください。ノードが配置され,ノードの設定ダイアログが表示されます。以下のパラメーターを設定します。

パラメーター 設定値
Authentication None
Request Method GET
URL https://api.thecatapi.com/v1/images/search?format=json
Ignore SSL Issues OFF
Response Format JSON
JSON/RAW Param OFF

図2 Regularノードの一覧から,
HTTP Requestノードを探して配置する

画像

設定値を入力したら,ダイアログ右上にある「Execute Node」をクリックしてください。設定した内容でノードが処理を実行し,結果が表示されます。画像のURLを含むJSONが取得できていれば問題ありません。右上の「×」をクリックしてダイアログを閉じてください。

図3 HTTP Requestノードにパラメータを設定し,実行してみた状態。ResultsとしてAPIが返したJSONが表示されていれば成功

画像

著者プロフィール

水野源(みずのはじめ)

Ubuntu Japanese Teamメンバー。理想のフリーデスクトップ環境を求めて東へ西へ……のはずが,気がついたら北の大地で就職していたインフラ寄りのエンジニア。最近レンズ沼にハマる。