re:Invent2017で The Non-Profit Hackathon に参加してきた #reinvent

これはVOYAGE GROUPのAdvent Calendarのエントリです qiita.com

Introduction

ラスベガスで2017/11/27~12/2に開催されたre:Inventに会社から @suzuken, @_nishigoriと3人で参加してきました。

reinvent.awsevents.com

re:InventとはAWS(Amazon Web Service)主催のイベントです。 新製品の発表、ワークショップ、セッションや開発者向けのイベントが朝から晩まで開かれており、世界中から開発者が集まるイベントです。 その中でハッカソンがあったので参加してきました。 イベントの様子や海外の開発者と丸1日ハッカソンに取り組んだ経験をエントリにしようと思います。

Motivation

re:Inventの参加目的は、新製品の発表やワークショップを通じて、勢いを肌で感じたり、新サービスの情報をキャッチアップすることが目的です。 しかし後ほど録画されたものをyoutubeで見ることができるので、現地でしかできないことを積極的に経験したいと思いハッカソンにエントリーしました。 また海外の人と一緒にチーム開発をする経験をしてみたかったです。 正直不安しかありませんでしたが、気持ちでなんとかなるだろうという思いで参加しました笑

About Event "The Non-Profit Hackathon"

概要としては、NPO(非営利団体)から与えられた課題を解決するようなプロダクトをつくりなさいというものです。 朝8:00から24:00までスケジュールが抑えられています。 re:Inventで全部で数百あるイベントのうち、断トツ、クレイジーなスケジュールの元実施されるイベントです。 なお予選プレゼン・結果発表、決勝プレゼン・結果発表があるので、実質設計・開発に使える時間は12時間程度です。

f:id:chocopie116:20171127082255j:plain

会場には、1チーム4人制で、会場には約20~30チームいました。 ほとんどのチームが当日その場で世界中からきた初対面の開発者で構成されたチームだったと思います。 なお参加にあたって事前に自然言語プログラミング言語AWSの経験・希望のNPOなどオンラインフォームで調査がありました。 しかしこれらが反映された気配はありませんでした笑

Hackathon Theme

パートナーである4つの団体から、彼らが実際直面している解決したい課題が与えられます。

reinvent.awsevents.com

ざっくり課題の概要だけお伝えすると(一部雑な部分あり)

  • 寄付者をしてくれた人に対して団体の活動報告を行っている。しかしより頻度高く行うために、もっと手軽に活動報告が行うことができるツールが欲しい
  • 災害発生時に助けを求める被災者のSOSを、より人々の注意を引く形で集約したい
  • 国の政策で学生の健康促進の活動を行っているが、学生の行動・意識のデータ収集・分析の基盤がないので、データを取り扱いたい
  • オンライン上での被害拡大を防ぐために、自社で持っている画像DBを元に、ボランティアから通報されるセクシャルな画像の人手による確認作業を効率化したい

ちなみに僕のチームは、4つめのpostされた画像の人手による確認作業の効率化をNPOのチームに入りました。 明らかこのお題だめテーマとして重い・技術的に重そう・・・というダブルなヘビーでした。 もちろんこのお題を知っていたら他のチームに入っていたと思います笑

My Team Result

僕らのチームは画像ファイルのhashを計算して2つの画像の類似度を求めるというアプローチでいくことにしました。 正直このあたり知識不足と、英語のディスカッションについていけず流れに身を任せる形になってしまった部分は大いにあります。

なお4名で以下の2つのアプリケーションを分担してつくりました。 (なんでxxxじゃないの?そもそもこれれどうやってアーキテクチャとして成立させるの?って疑問はあるかもしれませんが是非目をつむってくださいw)

f:id:chocopie116:20171204003302p:plain f:id:chocopie116:20171204003314p:plain

僕はs3にアップされた画像を処理して画像認識APIを叩く一連の流れのアプリケーションを担当しました。 s3 -> sns -> sqs <- (Hashing Proxy Worker) -> (Hashing Web Api)WorkerをNode.jsで実装しました。

無事プレゼンのデモで、自分が担当した部分のアプリケーションを動かすことができてよかったです。 メンバーのCloudformationが適用しきれず僕のMacのlocalでworkerを動作させていました笑

Other Team Result

f:id:chocopie116:20171127230021j:plain勝戦のチームのプレゼンのアーキテクチャの画像だけ貼り付けます

f:id:chocopie116:20171127230944j:plain f:id:chocopie116:20171127232101j:plain f:id:chocopie116:20171127233306j:plain f:id:chocopie116:20171127234433j:plain

What I Experienced

今回僕自身にとっていくつか初めての経験があり、感じたことを以下に記載します。

  • コミュニケーションについて
    • 1:1のコミュニケーションは十分可能。現在の自分の理解・認識をとにかく自分からアウトプットして相手に確認してもらう。
      • シーケンス図や、シェルや、プログラムなど見せれば認識の齟齬は一瞬で埋められる
    • 1 : nのコミュニケーションは激難。特にチームでのディスカッションは結構厳しい。
      • 自分の現在の英語力と、現状の語学学習の延長線にたどり着けるビジョンがない笑
    • 外国人は何があっても進捗最高!しか言わない。Nice! Awesome! Great! No Problem.
      • 自分はやれるか不安だったので、このポジティブなコミュニケーションには正直めっちゃ救われた。
  • 海外の開発者とのチーム作業について
    • 作るものがある程度決まっていれば(マーケット・ユーザー)、英語力がなくても開発は問題ない。
      • 顧客がまだわかっていないドstartupとかはまた難易度変わりそう
  • AWSのサービスを組み合わせてプロダクトをつくること
    • 一つ一つのAWSのサービスの内容は知っているが、組み合わせて1つのサービスをつくる経験はあまりしたことがなかったのでとても学びがあった。
  • 評価者のNPOの非技術者の技術の知識
    • 問題のアプローチ手法について・コスト・スケーラビリティなど質問してて、普通に凄いなと思った。技術に強いチームだなと純粋に思った。
  • 他チームのアウトプットについて
    • 外国人プレゼンめちゃくちゃうまい。
    • 各チームアウトプットが全然違ってプレゼン聞いてて面白かった。
      • 異なるNPOのお題を選択すること・お題を解決するためのアプローチを選択すること・それを実現するためのアーキテクチャを選択すること
  • 環境快適
    • マッサージブースあってウケた。
    • 食べ物たくさん

f:id:chocopie116:20171127210255j:plain f:id:chocopie116:20171128002137j:plain f:id:chocopie116:20171127153109j:plain f:id:chocopie116:20171127082641j:plain

Conclusion

re:Inventで一番楽しかったです。
海外の開発者とコミュニケーションの制約があったからこそ強く感じた点は多々ありますが、普段の開発でも活かせるような気付きがありました。
また機会があって、re:Inventに行くことがあれば間違いなくエントリーしてリベンジしにいきます!

Thank you Jessy, Steve and Brian. f:id:chocopie116:20171128001119j:plain

ハッカソン以外のre:Invent2017の話については、今回一緒に日本から参加した @suzuken, @_nishigoriと、VOYAGE GROUPのpodcastの ajito.fmのepi 14に収録されています。 是非興味有る方は聞いてみてください。 ajito.fm