Microsoft の OpenHack に行ってきた

最初は特にブログに書くつもりもなかったのですが、あまりに素晴らしいイベントで、さすがにインプットをそのまま肥やしにするのはもったいないと思いましたので書くことにしました。

OpenHack とは?

Microsoft が主催する 3 日間の開発イベントです。全世界で開催されており、東京は(MSの)今期3回目、過去機械学習 や サーバーレス をテーマにした回があったようです。
今回のテーマは"Intelligent Bots"でした。

イベントカレンダーがこちらにあります。
openhack.microsoft.com


イベントの雰囲気はこんな感じです。
www.youtube.com

動画の様な感じで、100人くらいの参加者を 20 くらいのテーブルに分けて、4~5人 + コーチ1人が集まってテーブルごとに課題を進めていくような形です。

このコーチは世界各国から集められており、私のテーブルには韓国から来たエンジニアでした。
初日、受付が終わった後やたらと英語のスピーカーがいて、最初はやってしまった感がありましたが、参加者はほとんど日本人でホッとしました。。
ただ、コーチは英語しか話せないので基本的に英語でやり取りする必要があります。一応通訳者もいましたがいちいち通す時間ももったいないので、私含め皆さん自力で頑張っていました。

なぜかひどい英語を話す私が通訳するようなこともあり、こういう時やっぱり普段英語にある程度触れているのと全く触れていないのは違うなぁというのは感じつつ、(もう何度思ったかわかりませんが)改めて英語ちゃんとやろうと思いましたね。。

どんな感じで進めるの?

進め方としては、コーチから課題を出されて、それを1つずつ解いていくような形です。たぶんコーチによる部分もあると思いますが私のテーブルでは、こういう課題があります、では皆さん頑張って、という感じでかなりスパルタでした。

ただ、そこからみんなでワイワイガヤガヤやりながら、分からないところはコーチにアドバイスを求めて、という感じで、すごく楽しい雰囲気ですすめられました。

同じテーブルになった方は開発経験があまりない or JavaScript/Git のような Web 開発をやったことがない or Azure をあまりご存知でない、というスキルセットだったので、MS からの参加者という負い目(?)もあり、私は結構フォローに回っていました。
そういう意味で、チーム開発のようなものも久しぶりに味わえたので楽しかったですね。

課題の内容は?

内容については公開されていないので具体的には伏せますが、イベントをやるのでお客様はFAQを自動化したいと考えてます、という背景説明があり、まずは開発環境を整えてエコーボットを作ってください、というざっくりした内容で、あとは参考リンクが載っているくらいです。そのあとの課題も、ボットに会話させましょう、フィードバックを得られるようにしましょう、という感じで、課題というか追加の要件が書かれているような内容でした。

ざっくりどんな感じかはこちらの登録ページを見ると分かると思います。
www.microsoftevents.com

マニュアルが用意されていて上から順番にやっていけば一通りの環境ができます、という感じのセミナー形式ではないので、個人の技量がかなり試されるのは間違いない内容でしたね。

まぁ実際の現場では背景や要件も違いますし、当然ながら順番に手順が用意されているわけでは無いので、今回の内容はかなり実践向きと思います。
他のテーブルでは、そういうセミナータイプのものを期待されて来た方が初日の午前でお帰りになったというのを聞いて、もったいないなぁと思いつつ、結構人を選ぶスタイルだよなぁと思いました。

特にガチガチの日本企業に新卒入社して社外の勉強会やカンファレンスに行ったことが無いタイプの人には厳しいんじゃないかなと思います。

豪華なケータリング&ランチ

本筋とはずれますが、、、とにかく食べ物&飲み物が十分に用意されていて、とても無料とは思えないメニューでした。
こんな感じ。

■ 初日
今半(写真無し)

■ 2日目
崎陽軒
f:id:mitsuki0820:20190425224745p:plain

■ 3日目
なだ万
f:id:mitsuki0820:20190425224742p:plain

ランチのお弁当以外にも、コーヒー・お茶・ジュース各種、ドーナツ、お菓子各種等海外のカンファレンスでよくある様なケータリングの豊富さで、2日目の最後は懇親会でお酒も出てくるという抜かりないフォーメーション。

さすがに一緒のテーブルにいた人も、これヤバくないですか。。後で請求されませんよね。。と心配していました。

どういう機能を使ったの?

技術的な観点でざっくりと今回触ってみたものと所感です。

JavaScript
他の人をフォローしつつ思ったのですが、やっぱり型が無いのはしんどい。。大文字小文字間違えてるのに実行するまでわからないとか、ブロックスコープがないみたいなJS特有の仕様とか、慣れてない人 or 大規模開発には結構きついんじゃないかと思います。手軽な反面、他の言語を知っている人からすると逆にはまる言語だなと思いました。

■ Azure Bot Service
ボットをフレームワーク化した SDK + ツール群を指します。ボットのフレームワーク、というのが慣れないので、ダイアログとかターンコンテキストとか、概念を理解するのに初日は苦労しました。
まぁ書いていればそのうち慣れるかなとは思います。今は v4 が最新らしいです。

この3日間はとにかくドキュメントを読み込んでました。
docs.microsoft.com

■ Cosmos DB
Azure の NoSQL データベースです。
これは仕事でも触ったことがあるのでサクサクできました。

Cosmos DB ではまることは無かったですが、Bot Service からうまく保存ができない(なぜか会話ごとに保存されるのではなく、コンテキスト単位で上書きされていく)ので、もうちょっと悩んでみようと思います。

■ Azure Search
これも Azure の、フルテキスト検索サービスです。
データをインポートして、ポータルから検索してみるくらいはやったことはありましたが、JavaScript から、検索してボットに返すというのは初めてだったので、axios で REST 叩いて、ボットがレスポンスした時はちょっと感動しましたね。

公式の Node.js の SDK が無いのはちょっと厳しかったです。
※たどり着けなかっただけかなぁ。。これっぽい気もしていつつ理解するより axios 叩いた方が早いと判断しました。

非公式のライブラリも見つけましたが、何となくaxiosで叩いたら動いたのでもういいやと思って使いませんでした。

この後にも自然言語処理やら認証やらありますが、残念ながらそこまでたどり着けませんでした。

まとめ

MS のエンジニアがコーチングしてくれて、3日間みっちりコードを書けて、ご飯も食べられて、しかも無料、とここまでやってくれる学習イベントって義務教育以来参加したことが無いので(義務教育も給食費掛かりますしw)、間違いなくお勧めのイベントです。

次回あったらぜひまた参加したいと思います。