こんにちは、ポキオです。
IoTLT Advent Calendar 2019とenebular Advent Calendar 2019の15日目の記事です。
手抜きです、ごめんなさい。
tl;dr
- 京急ノードを作ってみました
- Node-REDのノードライブラリに反映されるまで時間がかかることがあります
- 一度公開したあとも、ノードのメンテは必須です
- Node-RED、だぁいすき!
話の発端:Node-RED向けの京急ノードを作りたかった
この記事をご覧の諸兄姉にとっては釈迦に説法かもしれませんが、Node-REDはグラフィカルなUIで、ノンコーディングでもプログラミングができてしまう、素晴らしいツールでございます。
Node-REDで部品として動くパーツであるノードは色々準備されていたり、ノードライブラリでも種々のノードが公開されていて、Node-REDの可能性を無限に広げてくれています。
ただし、なかなか日本向けのノードがないのに玉に瑕で、だからこそ自分でノードを作って公開しようというモチベーションが湧いてきたわけです。とりわけ、私は京急が大好きなので、京急にまつわるノードを作ろうと思い立ったわけです。
で、作ったのがこれです。
node-red-contrib-keikyu
https://flows.nodered.org/node/node-red-contrib-keikyu
京急の運行情報が取得できる、すばらしいノードに仕上がっています(笑)
問題①:なかなか公開できない!
詳しい経緯はこちらで公開していますが、公開作業をしている段階で一つの問題にぶち当たりました。
ノードがノードライブラリで公開されるまで、やることは色々あるわけですが、とりあえずコーディングやnpmjs.comでの公開までは順調に進んだわけです。
ただ、npmjs.comでnpmモジュールとしてノードを公開したあと、なかなかノードライブラリに反映されないという問題に陥りました。通常は数時間で反映されるわけなのですが、そのときは全く反映されませんでした。
よくある原因としては、
- package.jsonのkeywordsに「node-red」がない
- プレフィックス「node-red-contrib-」を用いて命名されてない
- README.mdがない
- LICENSEがない
- npmで公開されてない
- npm versionしたあとにgit pushし忘れてる
などなどありますが、それはすべてOK。**結局、npmjs.comから一度ノードを削除して、再度公開しました・・・。**削除後は24時間経たないと再公開できないという制限がありましたが、なんとか再公開後にノードライブラリに反映されました・・・。もし同じようなことで困っている方がいらっしゃいましたら、お試しくださいませ。
問題②:京急ノードが動かなくなった!
公開して、一安心してたんですが、ある日突然ノードが使えなくなっていました。
結論から言ってしまえば、京急の運行情報ページのレイアウトが更新されていて、いままで使っていたパースのロジックがワークしなくなり、運行情報の取得ができなくなっていました・・・。
もともとパースのロジックは、かなりのクソコードだったので致し方ないとおもいつつ、とりあえずコードを修正して、再度公開しました。
また、二度と同じようなことがないように、自分が作ったノードが正しく動作しているか、enebular上でCIのように定期的に動かし、ノードの状態を監視する仕組みを作りました。
こんな感じでステータスが表示されます。これで完璧ですね!(笑)
現在平常通り運転しています。
というわけで、今年もいろいろとお世話になりました。
来年もポキオと京急を何卒よろしくおねがいします!
宣伝
ポキオとドライブをしながらIoTとかTechな話をする、ポキオ・カープール。
ぜひご覧ください!
一緒にドライブしながら喋ってくれる方も大募集中です!