29
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Fringe81Advent Calendar 2017

Day 21

Node-Redを利用して、非エンジニアでもらくらくTwitterなどでエゴサーチを無料で行う。

Last updated at Posted at 2017-12-20

皆さんエゴサーチしてますか? こんにちは。

個人で利用することはそんなに無いと思いますが、サービスなどを運営しているとサクッとエゴサーチ的なものをしたくなる時があるかもしれません。
そんな時に非エンジニアの方でもかんたんに無料でできる方法がある、となれば利用しない手はないですよね。

利用するもの

  • Node-Red
  • heroku
  • Slack
  • twitter

そんなところ。

事前に必要なもの

herokuにアカウントを作成しておく必要があります。
https://signup.heroku.com/login
ここからちゃちゃっと作ってしまいましょう。

プラスアルファで、クレジットカードを登録する必要があります。
herokuは1アカウント辺り、1000時間/月の範囲で無料で利用できるようなので、アカウントにひとつだけデプロイしている状態であれば課金されません。安心してクレジットカード番号を預けましょう。(実際に起きた問題などに関しては責任は負いかねます。)

Node-Redをherokuにインストールする

インストールは超簡単。
Node-RedのGitHubのReadmeにある Deploy to heroku ボタンを押すだけ。

一応ここにも置いて置きます。これを「ぽちっとな」します。
Deploy

こんな感じの画面が表示されますが、

image.png

  • App name : アプリケーション名。アクセスする際にドメインにもなるので少しかっこいい感じにしましょう。
  • Choose a resion : USとヨーロッパが選択できますが、どっちでもいいと思います。
  • NODE_RED_USERNAME : アプリケーションにログインする際のユーザ名です。予測されやすいものはxです。
  • NODE_RED_PASSWORD : アプリケーションにログインする際のユーザ名です。これも予測されやすいものは当然xです。

全て入力できたら Deploy app を押します。

image.png

ログが流れていきますので、眺めながら心を落ち着けてのんびりまちましょう。

image.png

デプロイが終わるとこんなボタンが表示されますので View のボタンを押してアプリケーション画面を表示します。

Node-Redにログインする。

image.png

Node-Redの画面が表示されているはずなので、赤い大きめのボタンを押し、先程のIDとパスワードでログインします。

画面の説明

image.png

いろいろ表示されていると思います。
左側にならんでいる札みたいなものを、真ん中の画面に並べていろいろ作っていく。という感じになります。

ちょっと脇道。hello-worldと返すwebサーバを作ってみましょう。

入力の http 、機能の template 、出力の http response を以下のように並べてつなぎます。

image.png

GETのパスを決める

httpの入力の札のようなものをダブルクリックし、URLに /hello と入力し、完了を押しましょう。

image.png

レスポンスを作成する

テンプレートの札のようなものをダブルクリックし、テンプレートを <H2>Hello World!!!</H2> と入力して完了を押します。

image.png

デプロイする

右上の デプロイ ボタンを押し、デプロイします。

動作確認する

Node-Redの管理画面のURLの末尾を先程の /hello に変えてアクセスしてみます。

image.png

いい感じですね!

Slackとの接続を設定する

右上のハンバーガーボタンから、「パレットの管理」を選択する

image.png

「ノードを追加」タブを選択し、「Slack」と入力して検索する。

image.png

「node-red-contrib-Slack」の「ノードを追加」ボタンを押し、追加する。

フローを作成する

ソーシャルの twitter -> Slack というフローを作成する

image.png

twitterから検索する条件を設定する

このような画面が表示されるので

image.png

twitterの札のようなものをダブルクリックし、「新規にtwitter-credentialsを追加」を選択し、横のペンボタンをクリックする。

twitter側で連携の認証が表示されるので、許可し、node-redの画面に戻る。

検索範囲は適宜適切なものを選択し、検索条件はtwitterのAPIに準拠したものを入力する。
例として nvidia を入力してみます。(書いている現在、ホットなニュースだったので)

デバッグしてみる

twitter連携がどのような値が取得できているのか確認のためデバッグをしてみる。
twitterの札のようなものに、出力のdebugの札を連結する。

image.png

この状態で、アプリケーションをデプロイしてみると、右側の「デプロイ」タブに以下のようにログが流れるので連携が成功していることがわかる。

image.png

Slackとの連携

Slackの札のようなものをダブルクリックし、

  • Webhook URL
  • Posting UserName
  • Emoji Icon
  • Channel
    を最低限入力することでSlackにエゴサーチした内容がPostされる!

※イメージ画像はありません。あしからず。

Appendix

Slackに投稿する内容を修正したい。

twitterからの入力された body の値のみSlackに連携しているため、上で紹介した方法だと本文しか表示されない。
Slackに投稿する内容を返るには function ノードが利用できる。
functionノードはjavascriptで記述できますが、サンプルとして以下のような感じで書けます

Slackに本文ではなく、twitterのURL(パーマリンク)を投稿する場合
URL = "https://twitter.com/";
STATUS = "/status/";

// tweet のパーマID
PID = msg.tweet.id_str;

// tweet のユーザのスクリーンネーム
PNAME = msg.tweet.user.screen_name;

// tweetのURLを生成してpayloadと差し替える
msg.payload = URL + PNAME + STATUS + PID;

return msg;

このようなfunctionを挟み込むことで処理の内容を変えることが出来ます。

15分ぐらいすると止まってしまう。

今回使っているherokuは15分ぐらいアクセスがない場合、サーバが停止してしまうという仕様があります。
そのため、twitterの内容をサーチさせておいてもある程度の時間経過すると止まってしまい、困ったことになります。

対応策として

  • 定期的にGoogle Apps Scriptなどを利用してトップ画面に定期的にアクセスする
  • GCPのStackdriverの死活監視を利用し、定期的にトップ画面にアクセスを行う。

などのような方法を取る必要があります。
今回はそのあたりの細かい手順は割愛しますが、要望があれば書こうと思います。

おわりに

こんな感じで殆どプログラムを書くこともなく、自分が欲しい情報をかんたんに集めることが出来ます。
今回は一部のみ利用しましたが、ちょっとしたwebサーバを簡単に作ったり、WebSocketサーバをかんたんに用意したりと一人1つ持っていると色々なことに利用できると思います。

それでは、楽しいNode-REDライフを!

29
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?