Skip to content

フロントばっかりやってた人だけどNode-REDでなんとかAPI作った

2016年12月6日

(Node-REDアドベントカレンダー 12/6分)

この前、iOSコンソーシアムという集まりのハッカソンに参加してきました。

そこで、雰囲気メガネをビーコンとiOSを組み合わせたものを作ったのですが、その中でふと「サーバーサイドってまともにやったこと無いし、やってみようかな」と思って「サーバーサイドやりまーす」と手を挙げ、APIを作ってみることにしました。

そのイベントの中で「Node-RED」の説明があり、同じチーム人から「簡単にAPI作れるよ」と言われて「簡単ならそれを使うに決まってんじゃん!」とそれを使うことにしました。

そこでNode-REDの説明をして、「どこで困ったか」という点と「ここが良かった」という点、そして「ここがこうなるといいのになー」という点をまとめて書こうと思います。

そもそもNode-REDってなんだ?

Node-REDは、IBMのBluemixで使えるフロー式のロジック作成ツールのようなもので、ノードを繋いでロジックを作り、コードを書かなくてもそこそこ動くものが作れちゃうツールです。

↓こんなの

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-30-12-53-20

サーバーサイドのサの字くらいは知ってる、っていう僕でもなんとなーくで使えるツールです。

以前UnrealEngine4のBluePrintを使っていたので、なんとなーく使い方はわかる感じでした。

APIをどんな風に作るのか?

上の絵で説明すると、左上に[get]/user_new ってのがありますが、あんな風にアクセスのURLを指定して、そこにアクセスがあったらどのように動作させるか?というのを、ノードで処理を繋いでいくという感じです。

使ってみてどう思ったか?

困った所

Cloudantを使うとAPIネタがぐっと減る

データベースを、とりあえずそこにあったCloudantを使いました。そしてNode-REDのAPIについて調べていくと、大体がMySQLを使ってるんですよね。「CloudantってJsonで保存してくれるんでしょ?だったらそれに突っ込めばいいや」ってかんじでCloudantを使ったんですが、もうちょっと考えるべきだったかな、と思いました。

JSを書いた場合、どこでデバッグすればいいの?

中身はnode.jsなので、コードはJSで書くわけですが、そうすると「あれ?このオブジェクトの構造みたいけどどうしたら良いんだ?」とか「ここのロジックのconsole.logとかどうやって見るの?」とか分からなくって、でもハッカソンだから時間がなくて、とりあえずエイヤーで動かしたんですが、実際の所どうするのが効率的なのか分からなかった。

フォーム送信した後の送信完了画面の出し方

ある程度の最低限機能ができて、完了画面くらい出すかー、と思ってノードを繋いでたら思った以上にできなくって、チューターの人に聞いてもわかんなくて、、と結構時間を食った。
結局、ノードをつなぐポイントが誤っていた、というのが原因だったんだけど、ノードを繋いでいても実行されない、ということが起こるとは思わなくて混乱した。

ちなみに、コレだと動いて
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-30-13-55-26

コレだと動かなかった
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-30-13-55-38

クエリのあとにDoneをやろうとすると動作しないんです「クエリ完了したからDone出すだろ!」ってイメージだったんだけど、その常識は通じなかった。

良かった所

楽!

環境つくって、コードの種類を覚えて、書き方覚えて…と考える必要なく、手順を作っていけばとりあえずはなんとかなるのが良いところ。
最初のその学習ハードルを超えて、とりあえずサクッと動かせるのは「作りたい」の気持ちを満たせるという点でとても良い。

先の興味へつながる

ただ、動かしていると「ここでエラーが出た場合は分岐したくて」とかの気持ちが出てくる。
頭のなかで「ここでswitchなりifが使えれば…」と思うけど、それってどう作るんだ?そもそもエラーコードはどう返ってくる??とかその辺が想像がつきにくくなっている。

それ故に「やっぱちゃんとコードで書けるようになりたい」という、知る動機付けにもなるなーと感じた。

これらをNode-RED上で実装できないのは僕がNode-REDのことをちゃんと知らないからかもしれないけど「全部コレでいいや」にならない分、良い影響を持っていると思う。

コピペしやすい

UnrealEngine4を使っていた頃は、ウェブ上で実装方法を調べても、そのノード構成をコピペで持ってくることは不可能でした(今はどうか知らないけど)。

それに対してNode-REDはノードの配置や内容をJsonデータをエクスポート・インポートが可能になっていることから、とても他の人のノードを参考にしやすい。これは良い。

こう改善されるといいなー

JSの実行コンソールがほしい

上でも書いたけど、js部分の動作が見えないから確認できるようになって欲しい

HTML部分でもifとかforとか使いたい

せっかく変数を受け取れるんだから、それを利用してhtmlの表示の制御がやりたい。手軽に。
チューターの人に聞いたら「JSでなんとかするしか無い」って言われて「えー」って思った。

Macの場合、カーソルがずれてて使いにくい

使った人みんな思っただろうけど、これほんと困る。

まとめ

学びはじめのハードルを低く、手軽に実装できるところはとっても良いと思います。
これって最終的に何を目指すものなんだろ?プロトタイピングツール?サービス実装までのレベルを目指すものなのかな?それによって今後の期待も変わるけど、モックを作るとか、とりあえず見せるものを作るのにいいなーって思います。

 

広告

From → iPhone開発

コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。