コマンドを打ち込むと自動でdockerイメージがプルされ、サーバーが起動します。
ブラウザを立ち上げて「localhost:3000」を開くとHuginnにアクセス可能。「Login」をクリック。
デフォルトではユーザー名が「admin」で、パスワードが「password」となっています。入力して「Log in」をクリックします。
ダッシュボードが開きました。Huginnではデータの処理を「エージェント」と呼ばれる単位で行っていき、外部からのデータを受け取るエージェントや、外部へ送り出すエージェントを組み合わせてデータを連携していきます。「View」をクリック。
エージェントの一覧ページが開きました。「New Agent」から新しいエージェントを作成してみます。
「Tweetを検知」「内部でブラウザを立ち上げてスクレイピング」「メールの受信・送信」「CSV・JSONなどの解析」「RSS受信」「ファイル読み込み」「天気予報を確認」「データ整形」など山のようにエージェントの種類が用意されています。今回はGIGAZINEの新着記事をまとめてメールで送信する仕組みを構築してみることに。まず「Rss Agent」タイプのエージェントを作成していきます。
タイプの他に、名前やスケジュールを決めていきます。分かりにくい概念の欄にはヘルプが付いており、それによると、Controller欄ではそのエージェントを起動できるエージェントを設定することができ、「Sources」「Recievers」「Scenarios」は主に他のエージェントとの連携に利用する模様です。Keep events欄ではイベントの残存時間を設定できます。他のエージェントと連携する際に、このエージェントが発行したイベントを利用したい場合は他のエージェントの起動時までイベントが残っている必要があるとのこと。
Options欄でその他の設定をします。設定可能な項目については右側で詳しく説明されているので、この説明を見ながら入力すればOK。
URLをGIGAZINEのRSSフィードに設定して、「Save」をクリックします。
今回は「1時間おき」というスケジュール設定にしましたが、作成したエージェントの「Actions」から「Run」をクリックすることで手動で起動することも可能です。
上のタブから「Events」ページに切り替えることで、発行されたイベントを一覧で見ることができます。
続いてメールを送信するエージェントを作成していきます。種類を「Email Digest Agent」に設定し、名前を付けて「Sources」欄に先ほど作成したエージェントを追加。
公式ドキュメントの例を参考に、Options欄を設定していきます。
早速メールを送ろうとしてみたところ、メールサーバーが設定されていないというエラーになりました。サーバーの環境変数で設定すればOKなのですが、環境変数を反映するにはサーバーの再起動が必要で、サーバーを再起動するとこれまで作成したエージェントのデータが消えてしまうので先にエクスポートしていきます。
上のタブから「Scenarios」を選択し、「New Scenario」をクリック。
名前と説明を入力し、先ほど作成した二つのエージェントを追加して「Save Scenario」をクリックします。
「downloading and sharing your export file」をクリックすると、データファイルがダウンロードされるので保存しておきます。
メールサーバーの設定については、公式の例を参考に、環境変数で設定すればOK。ここで外部のSQLサーバーとの接続設定もしておけば毎回データが消えてしまうことはないのですが、今回は使い勝手を試すだけなのでメールの設定だけにします。
環境変数を読ませるために「--env-file」のオプションを追加して再度起動。
今度は「Scenarios」の「Import Scenario」をクリックし……
先ほど保存しておいたファイルを選択し、「Start Import」をクリックします。
プレビューが表示されるので確認ボタンにチェックを入れて「Finish Import」をクリック。
無事メールが送られてきました。しかし、生のRSSデータがそのまま送られてきているため非常に読みにくくなっています。
そこで、間にデータを整えるためのエージェントを用意します。「GIGAZINE新着記事チェッカー」からイベントを受け取って処理し、イベントの送信先として「メール送信エージェント」を選択。
「Options」の「message」でどんなデータにするかを設定後、「Save」をクリックして保存します。
「Agents」タブの「View Diagram」を見るとデータの流れが確認可能です。今回はこんな感じになりました。
「メール整形エージェント」にイベントを読ませるために、「GIGAZINE新着記事チェッカー」のイベントを再送信し……
メール送信エージェントを手動で起動。
比較的読みやすい形式に整えることができました。
一度設定しておけば、後は定期的にHuginnがエージェントを起動して自動で処理をしてくれるようになるというわけ。公式に用意されているエージェントは下記の通りです。これだけでも十分さまざまな作業を自動化することが可能ですが、オープンソースというだけあってエージェントを自作することも可能で、データを外部に流さずにすむだけでなく非常に拡張性に優れているアプリとなっています。
CSV Agent
Webhook Agent
Tumblr Likes Agent
Twilio agent
Javascript Agent
Dropbox Watch Agent
Aftership Agent
Manual Event Agent
Telegram Agent
Attribute Difference Agent
JSON Parse Agent
Jabber Agent
De Duplicate Agent
Google Translation Agent
Data output Agent
Adioso Agent
Email Digest Agent
The Tumblr Publish Agent
Weibo User Agent
Pushover Agent
S3 Agent
Post Agent
Twitter Action Agent
Twitter Favourites
Twitter User Agent
Twitter Search Agent
Twitter Stream Agent
Twitter Publish Agent
Delay Agent
RSS Agent
Google Calendar Agent
Local File Agent
User Location Agent
Wunderlist Agent
Weibo Publish Agent
Growl Agent
IMAP Folder Agent
Evernote Agent
Twilio Receive Agent
Hipchat Agent
Commander Agent
Peak Detector Agent
Dropbox File URL Agent
Liquid Output Agent
Read File Agent
Change Detector Agent
Witai Agent
Public Transport Agent
Shell Command Agent
Phantom JS Cloud Agent
Digest Agent
PDF Info Agent
Human Task Agent
Stubhub Agent
Website Agent
Sentiment Agent
Gap Detector Agent
Email Agent
Boxcar Agent
FTPSite Agent
Scheduler Agent
Pushbullet Agent
Trigger Agent
Jira Agent
Event Formatting Agent
MQTT Agent
HTTP Status Agent
Basecamp Agent
Weather Agent
Slack Agent
Google Flights Agent