今話題のBotをNode.jsで作れる?!LIGエンジニアで勉強会してみた!

うらら


今話題のBotをNode.jsで作れる?!LIGエンジニアで勉強会してみた!

こんにちは、エディターのうららです! 最近JavaScriptの勉強を始めました。直近はこんな感じです。

console.log('Hello World!!');

初歩の初歩ですね(汗)

さて、LIGでは2016年になってから、毎月LIGエンジニア主催のエンジニア向けイベントを開催しています。第4回目となった4月は「Node.js」がテーマ! JavaScriptの一種ですね。Node.jsを初めて触ってみた発表から、Slack Botを作ってみた話など、Node.js未経験者からマスターまで幅広く楽しめる内容となったので、本記事でレポートします!

(普段はのびすけがレポートしていますが、今回は特別編として私が紹介します!)

LIGエンジニア主催イベント「づや会」とは?

vol.4

http://lig.connpass.com/event/29452/

「づや会」という名のイベントをLIGでは毎月開催していますが、これはLIGのエンジニアのリーダーとも言える取締役のづやさんから名前をとった会です。LINEスタンプにもなっているため、LIGブログ読者の方なら知っている人も多いと思います。第4回目のづや会は「Node.js」についてをテーマに、社内のエンジニア6名が登壇しました。

 
DSC_2897

今回は東京会場「いいオフィス」と長野会場「GEEKLAB.NAGANO」の2箇所で同時開催しました! Skypeで繋ぎながらの発表です。東京と長野の技術を交換しちゃいます!

飲みながら、ゆる〜い雰囲気で開催

DSC_2895

開始時間までに30名弱の方々が集まりました。

主要メンバーののびすけいわく、「ほかの会社さんはすごくしっかりしたエンジニアイベントをたくさんやっているので、僕たちはゆるくやろうという話をしていました(笑)」というコンセプトがあるそう。まずは、参加者の名刺交換タイムと乾杯からスタートしました。初っ端からお酒を飲んでいます。

さて、今回はNode.jsがテーマですが、ちなみにLIGではNode.jsをきちんと使っているわけではないです。こういった前提を踏まえ、当日の内容と雰囲気をスライドなどから感じ取ってもらえたら幸いです。

Node.jsで作られたものをさらっといろいろ触ってみた

DSC_2990

発表者:ヤスタカ(バックエンドエンジニア)

まずは長野オフィス所属のヤスタカからの発表です。仕事でNode.jsを使ったことはなかったのですが、せっかくなのでいろいろ触ってみた結果をまとめました。

 

今回紹介したのはmilkcocoa、Electron、OS.js、そしてGhost。

デバイス間のリアルタイムのやりとりが簡単にできる「milkcocoa」は、アカウントを作りHTMLファイルとJavaScriptファイルの2つを作っただけでチャットサービスを構築できたという手軽さだったそう。GitHub社が作った、MacやLinux、Windowsで動くデスクトップアプリを作れるサービス「Electron」ではHello Worldをするまでを紹介しました。3つのファイルを作るだけでできます。

WordPressよりブログ機能に特化した「ghost」は、海外で流行っているので使ってみたとのこと。複数人での更新もしやすいらしく、UIもきれいなのでおすすめです。

本格的にNode.jsで実装するとなると非同期処理もろもろの対策が大変そうですが、milkcocoaなどを使えば簡単に実装できそうと締めくくりました。

JIRAでメンション付きコメントをするとSlackに通知がいく機能をNode.jsで実装してみた

DSC_2915

発表者:はつし(フロントエンドエンジニア)
登壇の開始時間になってもオフィスオアシスでジュースを買っていて、ゆるっとした雰囲気が漂っていました。

前職でブロジェクト管理ツール「JIRA」を使っていたというはつし。通知を見逃しやすいという懸念点を、「JIRAのTo付きメッセージをSlackに飛ばし、溜まっていくようにすれば未読を見逃さないのでは」という仮説を元に実装しました。

JIRAと、Node.jsで作られたBot作成フレームワーク「Hubot」を連携。これはCoffeeScriptの記述だけで簡単おこなえます。これでSlackに通知が飛ぶようになったので、JIRAで同じような悩みをもっている方は試す価値がありそうです!

DTPで大活躍するPDF差分比較アプリを作ってみた

DSC_2932

発表者:ほりでー(フロントエンドエンジニア)
元デザイナーのほりでーは、紙のデザインをおこなっていたときの経験から見つけたコマンドを発表しました。

 

「カタログなどの紙のデザインを作るときに怖いのは、校正をした後に修正指示されていない部分(値段や電話番号など)で変更が起きること」。間違ったデータを入れたままだと、最悪の場合すべて刷り直しになります。

そんな意図しない変更が起こっていないかをチェックするのに便利なのが、差分を抽出して表示できるコマンド。Qiitaでも記事を書いています。LTでは自前のPDFを作り、実演しました。

文字の違いやフォントのずれなどが水色で表示され、ぱっと見で直感的に確認できるようになりました。

LIG社内で運用しているNode.jsで作ったBot3つを紹介

DSC_2965

発表者:のびすけ(バックエンドエンジニア)
DevRel(IoT)担当としてマイコンボードやロボットの開発をおこなうほか、毎月10種類くらいのイベントの主催や運営をしているのびすけ。今回は「LINE Bot」や「Facebook Messenger Bot」といったサービスも熱い、今話題の「Bot」についてのLTでした。

 

実際に作ったのは、「なかみーぼっと」「進捗どうですかBot」「MD2HTML」の3つ。

「なかみーぼっと」とはLIGの歴代著名人の中水さんをもとにしたBotです。Facebookメッセンジャーで話しかけると中水さんっぽく返信してくるという、完全なる内輪ネタですね。作った目的は特にないそう。

「進捗どうですかBot」とはその名前の通りのBotです。20名以上いるLIGブログで連載しているライターさんとのやりとりを円滑にすべく、チャンネルの会話が一定期間おこなわれないとBotが「進捗どうですか」とつついてくる仕組みとなっています。まだ導入前で効果は見えていませんが、やらないよりはやったほうがいいだろう!ということで近いうちに導入予定です。

最後は「MD2HTML(MarkDown to HTML)」。LIGブログのWordPressがMarkDownに対応していないことをうけ、記事を自動でHTMLに変換するスクリプトを作りました。この作業、地味に大変なので重宝しています。

Node.js VS PHP7

DSC_2972874

発表者:づや(バックエンドエンジニア兼取締役)
今回の「づや会」のづやはこの人! なかなか外で発表することがないのでレアです。

 

普段はPHPerのづやさん。Node.jsは使ったことがなかったのですが、PHPよりNode.jsのほうが並列処理に強いとのことで実証してみました。

負荷をかけるほどNode.jpのほうが強くなり、「自分でもこの結果ほんとかな?」と思ったそうですが、Node.jsはリクエストが増えても捌ける性能が落ちませんでした。これが並列処理に強いと言われる所以かなと考察しています。

SIMD演算が「ES7」で速くなる!

DSC_2975875

発表者:Kaz(バックエンドエンジニア)
最後は知識の広さと深さが計り知れないバックエンドエンジニアKazによるLT。SIMD演算をES7でおこなえるようになる、というLTでした。

 

SIMD演算とは細かいデータをまとめて処理できる単調な並列計算のこと。例えばHD画像の縮小を考えたとき、単純な処理でも830万回くらい計算がおこなわれますが、計算するデータが小さいのでちりも積もれば膨大な無駄が生まれます。ですがCPUメーカーは考えました。「同じ計算ならまとめりゃいいじゃん、というか分けて計算しなくてもいいじゃん」

そのために必要なのがSIMD専用のコード。JavaScriptやNode.jsでは未対応ですが、ES7(ECMAScript 2016)でSIMD対応しているとのこと。これで高速対応ができます! 2017年には、すぐにでもNode.jsでできるようになるはず。2015年11月におこなわれたNode.jsのイベント「東京Node学園」で、GoogleエンジニアDomenic Denicola氏がES7が来ると発表していたこともあり、今後はES7がやってくるぞ、という締めでした。

次回は5月19日、「機械学習」をテーマに開催!

Node.jsを触ってみた話から、今後やってくるであろうJavaScriptのバージョン話など幅が広い登壇でした。終わった後は懇親会をおこない、登壇者に質問したり、参加者同士でもコミュニケーションをとったりとゆったりした会でした。

「づや会」は誰でも参加可です。毎回違うテーマで、ゆるくわいわい呑みながら勉強会(LT)していきます。Facebookでグループもありますのでそちらもチェックしてみてください。

次回は5月19日に開催します! ぜひご参加ください!
・づや会 vol.5 ~機械学習の話~
http://lig.connpass.com/event/30420/

うらら
この記事を書いた人
うらら

エディター

おすすめ記事

Recommended by