2018年になってたのでNode-REDを使ってみた話

おやおや、2017年は一つもエントリーを書かなかったとは笑

そうこうしているうちに職業(社内でね)とかも変わっていますが、だいたい私は元気にしております。

 

出張の多い職業だし、人前で話すことも多くてなかなか机に座ってじっと作業とかなくなってきてしまいまして。自分の仕事で直接使わないものとかがどんどんわからなくなっちゃうっていうのが怖いんですよね。と、同じような環境だと思っていた同僚が、颯爽とNode-REDを使いこなしているのをみてしまいまして。ちょっと焦ったりしたわけです。

3連休、特にすることもないしなーと思ってオライリー積読をぱらぱら(電子書籍なのでパラパラじゃないのだけど)していたのですが、重い腰をあげて、使ってみました。Node-REDを。

 

f:id:akikom0819:20180108143733p:plain

 

作った、といっても大したものではないのです。Twitterbotを作って公開しているのですが(フォローしている人があるお菓子名をつぶやいたらつぶやき返すっていうやつです。こちら)、それと同じことをするbotをNode-REDで書こうとしたのでした。

Node-REDはフローベースの開発環境であり、ハードウェアデバイスAPIなどのサービスをビジュアル的に書けちゃう優れものです。が、どうもSystem.err.printlnを多用するような古いプログラマなんで(流石にjava書くときはもうちょっとマシですが)なんだか最初はどうやってデバッグすればわからなくてオロオロしてしまいました。デバッグするたびにデバッグノード入れなきゃならんのですね(いや違うかもしれないけど)。追々勉強していきます。

まず最初にハマったのが、functionノードなどの中にコードを書こうとしたときに、カーソルがずれる問題。みんなハマっているようで、Chromeの固定幅フォントを変更したらOK。集合知って素晴らしい。

qiita.com

今回作ったbotではノードは全部で4つ。2つがTwitterのinput/outputノードで、あと2つはfunctionのノード、1) ツイッターを受け取ってあるキーワードが含まれているか判定するノードと、2) 返答をリプライ化するノード。最初のTwitter inputノードで「フォロワーの発言全部」にまさか自分自身のツイートが含まれているとは思わず、無限ループを作り出してしまった。なのでif文でまず自分のツイートかどうかを判定。って、これ、まえにPythonbot作ったときにもやらかしてたという。さらに、返答にするにはちょっとした工夫が必要で、こちらを参考にしてリプライ本文に反応する人のユーザーネームを入れて、パラメーターを変更して完了。

計2時間位でbotができました。95%はNode-REDの使い方(ドキュメントの読み方とかデバッグの仕方とか)のお勉強だったので、わかっている人が作ると10分もかからずにbotが作れちゃうんですね。すごーい。まあPythonでもわかってる人がかけば10分で書けるか・・・とはいえ、クレデンシャル周りとか異様に楽すぎて、ほんともう驚きです。

あと、最後に。自分が普段使っているTwitterのアカウントでbot作ったらダメですよ。はい。無限ループを自分のアカウントでやってしまい、フォロワーさんに大変ご迷惑をおかけしました・・・ほんとうにごめんなさい。