ヴァリューズのDX推進グループに所属する中里です。本日はDX推進グループで実施した社内ハッカソンの取り組みについて、主に当日までの準備を中心にご紹介します。
私がハッカソンに取り組もうと思い、色々と下調べをしたのですが「ハッカソンの準備について書かれている記事が意外と少ない」と感じました。
この記事を発信することで「社内でハッカソンに取り組みたいけどどうやればいいんだろう」「ハッカソンを新しいサービス立ち上げのきっかけにしたい」という悩みを持っている方の参考になれば幸いです。
なぜハッカソンを実施したのか?
まずはハッカソンを実施した目的意識についてお話しさせていただきます。
私が所属しているヴァリューズのDX推進グループは、お客様が保有しているデータを使って分析や可視化、分析基盤構築などを行っています。このような業務特性から、社内でベストプラクティスが蓄積している技術領域を扱うことが多くなり、新しい技術領域にチャレンジするという機会が生まれづらい環境になっていました。
そこでハッカソンの機会を用いて、普段は使わない技術や社内では使われていない技術を使う時間を半ば強制的に作り、扱う技術領域の拡大を目指したいと考えました。
ハッカソンのテーマ設定はどうする?
ここからは実際にハッカソンに参加したメンバーも含めて、当日までの進め方や実際に行った内容などを対談形式でご紹介します。
ハッカソンに参加したメンバー
松本 友幸(写真1 中央):フロント開発から基盤構築までこなせるエキスパート 。
中里 亮介(写真2 右):お客様が保有しているデータを分析した示唆出し、分析基盤の構築が主な業務。
岡崎 賢吾(写真2 中央):Web計測やデータ分析基盤構築の領域で地方自治体から小売企業まで幅広く支援。
水野 登太(写真2 左):2023年新卒の期待のルーキー。フロントエンドの開発経験があり、分析周りも修行中。
今回ハッカソンを行うにあたって、大きく下記のような流れに分けて取り組みを進めました。ハッカソン自体は、今回は1日で実施しています。
- テーマの洗い出し
- 技術的な観点も含めてテーマの検討、決定
- 決定したテーマに基づいて要件定義、設計
- 当日の段取り作成
- ハッカソン当日に実装
まずはテーマの洗い出し部分から話していきましょう。どういった流れで進めていたか教えてください。
テーマの洗い出しについては、参加メンバーで集まって日頃気になっている技術領域や業務で課題になっている事柄、お客さんとの会話で気になったことなどを共有しながらアイデアを出し合いました。
我々は普段の業務でお客さんと接する機会が多いため、実際にお客さんから相談された内容をヒントにテーマを出していたのは特徴だなと思いました。ハッカソンで作るプロダクトを使って実際にお客さんなどの喜ぶ人のイメージが持てるかどうか、今回のテーマの優先度決めにも活きていたんじゃないかなと感じます。
テーマ洗い出しはブレストで2回に分けて実施していましたよね。1回目だけだと初めてのため、考える時間が長くなりがちで有益な意見が出づらいシーンもありましたが、1回目と2回目のブレストの間の数日間の間に情報への感度が上がって、2回目のブレストの質が上がっていたように思いました。普段の業務やお客さんとの商談を経て、「この話はハッカソンのテーマになるかもな」と自然な形で繋げられた気がします。
確かにブレストの2回目の方が意見が活発化していた印象がありましたね。最終的に10数個くらいのアイデアが出てきました。テーマの洗い出しは、普段のお客さんとのコミュニケーションが活きてくることが分かったのは、意外な気づきでした。いくら新しい技術領域にチャレンジするとは言っても、ビジネスとかけ離れ過ぎて誰も求めていないものを作ってしまうというのは避けたいですしね。
そこから最終的にテーマを一つに絞っていきました。
選定基準としては、案件として引き合いがありそうかという観点と今まで扱っていなかった技術領域がありそうかという観点の2点を重視していましたね。
あとはある程度限られた時間で取り組むので、普段の業務からあまりにもかけ離れていたり、事前情報が少なかったりする技術は除外することを考えていました。
ある程度テーマの洗い出しができてきた時点で、再現性も意識しました。たとえばチュートリアルが用意されている技術であれば、試しに動かし、難易度の見極めも並行して進めました。今回はハッカソン自体が初めての取り組みだったということもあり、ドキュメントや記事などの情報が豊富な技術を選ぶなど手堅い内容を選んで進めことに決めました。
最終的には、LINEをインターフェイスとした入力支援アプリケーションをGCP上で構築していくという内容になりました。
限られた時間の中で成果を出すためには?どんな準備が必要?
テーマが決まったあとは要件定義と設計です。
今回のテーマに選んだ入力支援アプリケーションは、店舗に勤める従業員が使う想定をしていました。よってこういう場面でこういう使い方をするはず、こういう操作が必要じゃないかなど、実際に使う人の立場に立ってまずはユースケースを洗い出していきました。
ユースケースをもとに、どんな機能が必要なのかを洗い出し、必要なテーブルや画面の設計を進めていきました。
これらをハッカソン当日に行うのは流石に時間がないため、事前準備の中で行いました。
事前にユースケースを想像していたことで、使われることを念頭においたアプリケーションでありつつ、その中でも自分たちにとってチャレンジになる技術領域がどこなのかを明確にできたと思います。また、実装に進む際にも要件定義があることでブレずに開発ができたため、当たり前ではありますが要件定義/設計をしっかり議論して進めるというのはハッカソンにおいても大事だなと感じました。
今回作成した設計の一部。
普段の我々の業務ではダッシュボードの開発が多く、ある意味パソコンの前に座っている人を前提に開発していました。ですが今回の機会ではユースケースを考えたことで、どんな人が使うプロダクトを自分は開発しているのか、という点が普段の業務よりも強く意識できたと思います。
上記の要件定義や設計と重なりますが、もう一点準備の段階で重視していたのは、当日に考えて悩むポイントをなるべく減らすということです。
実装を始めて擦り合わせるというのは時間もかかりますし手戻りにもつながるので、なるべく悩む部分が少なくなるように進めていました。
上流部分はこういった流れで準備をしていましたが、フロント部分の設計はどういったことをしていましたか?
主に画面の遷移図を作っていました。画面は利用者の目に触れる重要な部分なので、ユースケースの議論をしつつも、どのように画面の遷移をさせると良いのかを考えていきました。
当日の進め方のポイント
テーマの洗い出しに始まり、技術検証を行いつつテーマを決定し、テーマに沿った要件定義や設計を進めていきました。 当日までの準備については何をしていましたか?
前日までに準備していたこととしては、今回の取り組みの役割分担と各々の環境構築や必要なライブラリ等の準備です。
当日すぐに実装を始められる状態にしておき、実装の手前でつまずかないようにということを意識していました。
あとは当日のスケジュールを作って、どのタイミングですり合わせのミーティングを挟むのかなども決めておきました。
特に環境構築はつまずきやすい部分になるので、事前に準備しておくのは大事ですね。
当日に用意したものだと、作業進捗がわかるように簡易なカンバンを作っていました。(カンバン:タスク管理の手法。システム開発でよく使われる)
各々の作業が可視化されたので、どこが進んでどこが詰まっているのかが可視化され、分かりやすかったです。その他、当日は出社していたので、小さい質問はその場で会話して解決するようにしていました。
これがオンラインではちょっとした質問がしづらいので、オフラインでメンバーが集まっていたことは想像以上に進めやすかったです。
ハッカソン全体を通じた学び
上記のような準備を経て、実際にハッカソンを実施することができました。
最後に一言ずつコメントをもらえればと思います。
今まで使ったことのない技術もあったため、自分が扱える技術範囲を広げるきっかけになったと感じました。
進める中で追加の調査が必要な部分も見つかったので、今後実際の案件で開発する際にも落とし穴を見つけることができそうで良かったです。
準備の大切さに改めて気づきました。新しい技術を使う際は、どうしても予想しきれない問題や課題が出てきてしまうので、そういったイレギュラーも込みで予定を組んだりバッファを見込んだりしておく必要があるんだなと感じました。
今回の取り組みでは要件定義の部分を4人全員で議論しながら進めていました。
普段の業務では実装部分がメインになるメンバーもいる中で、全員が上流部分の経験をする良い機会になったとのではと思います。
単純に新しいサービスを使ってみるだけではなく、実際にアプリケーションに使うときに気にするべきポイントを考える機会になったと思います。
また、4人で行なったことで各々の担当範囲で学びがありつつ随時共有しながら進めることができたので、学びの総量を最大化できたと思いました。
ハッカソンは今回が初めての取り組みでしたが、当初の目的通り新しい技術領域への挑戦の機会となったと思います。今回得た経験と作成したプロダクトも使ってお客さんへの提案などにも活用していきたいと考えています。
今回の記事が社内ハッカソンを考えている方の参考になれば幸いです。
東京大学大学院医学系研究科修了後、ヴァリューズに入社。
アナリストとして大手結婚メディア、大手旅行メディア、金融、日用品メーカーなどを担当。ヴァリューズのWEBログデータだけでなく、顧客データ、POSデータや位置情報データなどの分析・可視化や活用支援も行う。