はじめまして!2016年4月入社の新人SEの川崎です。
新人の武者修行として、11月12日(土) ~ 13日(日)に開催された
「Jubatusハッカソン with 読売新聞 #2」 に参加してきましたので、参加レポートを書きたいと思います!
Jubatusとは、
Jubatusは「分散したデータ」を「常に素早く」「深く分析」することを狙った分散基盤技術です。Jubatusの名前の由来は、俊敏な動物であるチータの学術名からの命名で、「ユバタス」と読みます。株式会社Preferred NetworksとNTTソフトウェアイノベーションセンタが共同開発した、日本発のオープンソースプロダクトです。最終的に全ての人にスケーラブルなオンライン機械学習フレームワークを提供することがJubatusの目標です。
Jubatus : オンライン機械学習向け分散処理フレームワーク Jubatus より
Jubatusハッカソンは、このJubatus の更なる使い道や啓蒙活動を目的としたハッカソンです。
運営はNTTと NTTソフトウェアの皆さま、 会場は株式会社ドワンゴ様、ハッカソンで使用したデータは読売新聞社様からご提供頂いたイベントです。
この場を借りてお礼申し上げます。
このJubatusハッカソンは、
- 他の方々の高レベルの機械学習力や実装力、面白いアイディアに刺激を受けることができる
- 上位受賞者には景品が出る
- 参加者もれなくJubatusステッカー&ぬいぐるみちゃん(上記画像を参照)まで頂けてしまう
非常に尊いイベントとなっております。
今回は、参加者25名で8チームのハッカソンとなりました。
参戦メンバー
弊社の新人SE3人のプリメイドチームで参戦しました。
作ったもの: 「銀座のママ・デラックス」
コンセプト
今回のハッカソンでは、読売新聞社様のご協力の元、30年分の新聞記事データ・発言小町の投稿データを利用させて頂くことができました。
この発言小町に集まる女性の悩みを学習させれば、得も言えぬ銀座ママの抱擁感を実装できるはずであると考え、このアイディアと相成りました。
機能
悩みを相談したら、類似する発言小町の投稿をリコメンドしてくれるSlackBotを開発しました。
本当は上記コンセプトの元、悩みを相談したら最適な言葉を返してくるような機能を実装したかったのですが、「最適な言葉」の抽出は実装の難易度が高く、記事の推薦に落ち着きました。
仕組みは非常にシンプルです。
JubatusRecommenderにあらかじめ発言小町の投稿データを学習させておきます。Slack上に発言があると、JubatusRecommenderがその発言内容と類似する特徴量を持つ発言小町の投稿を推薦し、SlackBotが情報を返す、といった流れになっています。
上のスクリーンショットがデモの様子となっています。natsuko-mamaが銀座ママ役として小町記事の推薦、nagisaが新人ホステス役として会話の進行を行っています。
今回のソースコードは、以下リポジトリに公開しています。
ただし、学習データは削除済みのため、これだけでは動作しませんのでご了承下さい。
意識したこと
小さく作る
今回の開発期間は2日間と短かった(ハッカソンとしては長い方?)ため、とにかく小さく素早く実装することを意識しました。
具体的には、アジャイル開発を方針としてチーム開発を進めました。必要なパーツを小さく作り、組み合わせて動かしてみる、検証して仕様変更や機能拡張を行う、というサイクルを回しました。
こういった工夫によって、システムエンジニア(仮)な我々でも、どうにか動くモノを形にすることができたと思います。
作るものを明確にする
これは弊社先輩社員からのアドバイスでした。「それぞれが考えているゴールが実は微妙にズレてました☆」ということがチーム開発においては頻繁に起こるため、事前に作るものを明確にしておかないと、作ったパーツをマージする段階で殴り合いになると助言を頂きました。
我々は、先に発表資料とフローチャートを作成してしまうということ、各機能の担当と、入出力するデータを明確にする、ということを行いました。これにより、齟齬を最小限抑えることができ、スムーズに開発が進みました。
Botにキャラクター性を持たせる
我々の銀座のママ・デラックスでは、タレントの某デラックスさんを思わせるキャラクター性と、性格の異なる2体のBotを用意する、という工夫をしてみました。
これは、個人的・感覚的な話になりますが、
Botにキャラクター性を持たせておくと、推薦精度の低さや不自然な会話も、ユーザはある程度許容してくれるように感じます。PepperやAI女子高生りんな等もそのような傾向があるように感じています。
上記の工夫によって、推薦精度の低さ、対話システムの簡素さをある程度ごまかせたというか、アプリケーションの面白さを増すことができたのかな...と期待しています。
ハッカソン結果
8チーム中、2位!
ハッカソンの会場となった銀座にちなみ「銀座のママ」チームと名乗った新人SE3人が作ったのは、「銀座のママ・デラックス」。過去の投稿の中から、似たような悩みを選び出して、タレントのマツコ・デラックスさんのように歯切れ良く回答してくれるもので、発想の面白さが評価され、2位に選ばれた。
身に余る栄誉と共に、活動量計Garmin Vivosmart HRJを僭越ながら賜りました!
IoTが捗ります!
左から、@kawasyaki (私)、@yan_hisa_ 、KIKUYA-Takumi です。
感想
メンバー全員初参加かつ新人のみと、不安要素しかないハッカソンでしたが、どうにか動くものを完成させることができました。いくつかの工夫は手ごたえを感じることができましたし、一方で短い時間の中での企画、スケジューリング、タスク分担など学ぶべき課題も多く見つかった良い経験となりました。
Jubatusのハッカソンであることもあり、参加されていた方々の多くは非常にクリエイティブで、また機械学習やデータ分析に深い知見を持っている印象を持ちました。
我々のチームは与えられたデータやツールをほぼそのまま使用していましたが、他のチームの方々は様々にデータを加工したり、全く別のものと組み合わせてみたりして、我々ではできなかったアイディアを実装されていました。
面白いアイディアは、日頃から面白いアイディアはないか調べたり、こういった機会などを通して実際に触れ合ったりすることが大事だと感じさせられましたし、それを実装するためのアプリケーション実装や機械学習に関する知識・技術の必要性を実感させられました。
最後に
特に印象に残ったアイディアを紹介したいと思います。
ニュース・相談を入力すると、小野小町が内容を表す和歌を返歌するLine Botです。
見事1位に輝いたチームの作品です。 和歌というアイディアの面白さ、アプリケーションとしての完成度など、素晴らしい作品でした!
運営スタッフさんによる作品です。単語を入力すると、その単語と共起性の高い単語を使って、韻を踏んだ文書を生成するというもの。技術力の高さもさることながら、そのアイディアの面白さが印象に残りました。
「和歌」や「韻を踏む」、また他のチームの方々も非常に広い発想でアイディアを出されていました。アイディアを聞いているだけでも、刺激になりとても面白かったです。