ハッカソン未経験がBIPROGY(旧日本ユニシス)様主催のに参加し最優秀賞含め三冠達成してきた話

# 自己紹介

どうも！令和のディープインパクトこと山田哲人こと塩見泰隆です

これが言いたかっただけなのでこの記事はもう終わりです
ありがとうございました

嘘です、もうちょっとお付き合いください
そしておそらく来年もこのハッカソンイベントがあると思いますのでみなさん参加してみてください！

# BIPROGYとは？

自分は正直この社名を聞いてピンときませんでした…(ごめんなさい)
社名が変わったばかりのようで、旧社名は日本ユニシスというそうです
普通の人間はディズニーランドの！って思うらしいですが、私は[JPX日経400のWikipediaの記事](https://ja.wikipedia.org/wiki/JPX日経インデックス400)をを読むのが趣味なのでそっちで思い出しました

せめてみなさん社名だけでもおぼえてタブを閉じていってください
この先もう2つぐらい名前を覚えてほしいサービスがあるのでもう少々お待ちください

# BIPROGY DX HACK -User's voice "Solve the problem"-

毎年5月の終わり頃に開催されているようです！
就活イベントとしてもかなり最初の方ですね
インターン前のESに書く実績作りにちょうどいいかも…?

実は私はハッカソンというイベントに初めて参加しました！
運営の方もとてもスムーズで、サポートも手厚くて、初めてでもすごく参加しやすかったです

今回いただける賞は今回は7つでした
- 最優秀賞
- 優秀賞
- CDO特別賞
- オーディエンス賞
- 技術協力社様賞　いくつか
    -　Twilio賞
    -　Kintone賞
    -　LINE賞 

そのうち，最優秀賞、オーディエンス賞、技術協力社様賞としてKintone賞の3つをいただきました
大変光栄で嬉しいです

そしてこのイベントは、**ユーザーの課題ベースのプロトタイプ開発**というのが一番の特徴なのではないでしょうか？
顧客の課題解決というのにしっかりと向き合うことができました
これがどういうことか、時系列的にイベントの概要を追っていきます！

## Day0 顔合わせ
チームとの顔合わせ、自己紹介、会社説明、本番スケジュールをざっくり確認しつつ、TeamsやoVice、miroなど当日使うツールにちゃんとログインできるかなどのチェックを行いました
月曜日、正直平日だったので、授業との都合をつけるのに難儀しました…
どうしてもという場合は欠席できるようですが、ここでチームのメンバー仲良くなっておけば、本番スタートダッシュできます！

## Day1 本番

朝の9時ごろからいよいよスタートです
土曜日に早起きするのは大変でした

### 午前の部

午前は進行の説明やチームでのアイスブレイクから始まりました
が、この時点で自分のいたチームはだいぶ仲良かったので課題にどう向き合うか？の話に移っていましたね
ちなみに、仲がいいというのは議論における心理的安全性に繋がります。本当にチームメンバーに感謝です。
みんなで褒め合おう！

さらに、この時間に技術説明会もありました
今回技術サポートを頂いたのは以下の3つです

- Twilio
- Kintone
- LINE

APIやライブラリの使い方について説明をしていただいて、困ったときは質問も可能でした

さて、本イベントは**ユーザーの課題ベースのプロトタイプ開発**ということで、企画立案に取り組みました
提示されたお題は以下のものでした


|  想定顧客  |  内容  |
| ---- | ---- |
|  人事担当者  |  内定から入社までのブランク期間でのコミュニケーションをなんとかしたい、円滑に入社までできるようにしたい  |
|  エンジニア  |  業務がオンラインになってから進捗の確認、共有が難しい  |
|  営業担当者  | オンライン会議になってから、コミュニケーションが難しい、アイスブレイクをもっとやりたい |

この要望から何を作るのか考えていきます
我々は営業担当者様の課題を解決するツール、アプリケーションを作ることにしました

最終評価基準に、完成度だけでなく、ちゃんとこの課題を解決できているか？ということも重要になってくるので、Day 1の午前は全体の方針を決める上でかなり重要です
さらにこのタイミングで、想定顧客となる方に実際に話を聞くことができます！**これは大きいポイントです！**
「具体的にはどのようなシチュエーションで使いたいのか？どのようなものが欲しいのか？」をちゃんと明らかにします

**自分達が欲しいもの、面白いものではなく、使ってくれる方の話を実際に聞いて、その人のために何をするのか？をちゃんと考えることができたのはとても貴重な経験でした**
ハッカソンで勝つためにも、今後の経験としても、この午前の時間は重要になってくるのではないでしょうか

こっそりここだけの記事で書きますが、勝ちに行くためのコツです
技術的な知識など面では他のチームもそんなに変わらないのではないでしょうか？
まあこの辺は運もあるでしょうし...あんまり考えてもいけません
なので、勝つために他と差をつけるならこの時間をどう生かすかがポイント☝️
[バリュープロポジションキャンバス](
https://goodpatch.com/blog/value-proposition-canvas)や、[共感マップ](https://blog.nijibox.jp/article/empathymap/)などを使い、自分達がこれからやろうとしていることについて詳細に分析しましょう
しっかり案を練って、顧客のことをちゃんと考えた一連の**ストーリー**を作り、チーム内で共有しましょう
そうすれば自然にやらなければいけないこともわかるので、開発途中に方向転換して時間を無駄にすることも無くなります
また、メンターを活用するのも大きなポイントです！
「これから作るものは実際業務で使いたいと思いますか？どんな問題が起きると思いますか？」という質問にも大変丁寧に答えてくれます
開発にかける時間を無駄にしないためにも、方針とストーリーをしっかり作りましょう

そういえば[2021年優勝の方](https://ameblo.jp/suehiro0616/entry-12678940112.html)もストーリーについて言及されていますね（実は我々はこの記事を見て結構真面目に取り組みました）

### 午後の部

ここから先は気合いです
自分は主にバックエンドで、2つ考えていた機能のうちの１つの担当でした
この辺の作業分担が上手くできたのはよかったと思います
また、最終発表をするチームリーダーはどっちの機能にも貢献をしてくれていて、PMとして両方が何をしたかをつかんでいたのかな？というのもよかったです
垂直分業と水平分業の両立！

技術的な部分はこのように役割分担をしていたのであんまり私から語れることはないですね...
マジで他のチームメンバーが天才しかいなかったの一言に尽きます

1つ言えることがあればチームの状態が最高だったことではないでしょうか！？
「ここまでできました！こんなことやりました！こんなことわかりました！」というのを話した時、みんなで褒め合う雰囲気が最初の方でありました
これを始めたのは私ではないチームメンバーの方だったんじゃないかなと思います
私個人としてはこの雰囲気があったので進捗を管理してもらうのではなく、自分からガンガン言っていくようになりましたし、やっぱり褒められるのも他の人のを褒めるのも気持ちがいいですし、コミュニケーションが加速したように思います、みんな黙っていても悪い雰囲気にならないんですよね
めっちゃモチベーションが湧きました、最高でしたこのチーム

## Day2

**朝から終わるまで気合いです**
メンターや技術的サポートをガンガンに頼っていきましょう
(LINEは使うことができませんでしたが...)Kintone様のサポートもTwilio様のサポートもとても役に立ちました！

時間が足りないイベントなので、エラー処理とかかっこいい書き方とか、できたら望ましいですが、最悪無視する決断も必要でしょう
また、いかに車輪の再発明を避けるかはとても重要ですね！
この辺は、事細かに進捗発表やこれからこれをしようと思ってるんだけどみたいな相談をしつつ、「これはすでにこのライブラリでできてない？」みたいな提案をお互いにやっていくといいと思います
車輪の再発明を防ぐためにも、実際に開発する人がいつつ、情報を深掘りしていく担当の人がいると素晴らしいと思います！

締め切りの時間3分前ぐらいにようやく全体結合テストをして本番発表に臨みました
死ぬかと思った

結果最優秀賞をいただいてとても嬉しかったです！

# 成果物

![スクリーンショット 2022-05-29 19.25.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339688/b9d9fad0-01c0-9e0e-9f76-78ef3de17732.png)


## 全体として
結局何を作ったの？ということですが、営業の方の「会議の前のアイスブレイクを行いたい」というテーマを選び、Twilioをベースに2つの機能を組み込みました

- 英語禁止ゲーム
- 自己紹介画像のアップロード
- 事前の簡単なアンケート

流れとしては、まず英語禁止ゲームをTwilioに組み込むのが面白いのではないか？という話になりました
一方、懸念点として「喋らなくなる人がいるのでは？」「飽きるのでは？」というのがあったので、
じゃあ事前に簡単なアンケート（例:行くなら海？山？）を行えば、営業の方の方から話を振っていけるし、アンケートの内容も毎回変えればランダム性や面白さが生まれると考えました
**2つの機能が相互にお互いを生かし合う構成**を目指し、プレゼンでもそれが伝わるようにしていただきました
この辺のストーリー作りはとても重要だと思います

Twilioは[Twilio Video React App](https://github.com/twilio/twilio-video-app-react)をチームメンバーが見つけてきてくれたのでこれを使用しました

![引用](https://user-images.githubusercontent.com/12685223/94631109-cfca1c80-0284-11eb-8b72-c97276cf34e4.png)

既にUIなど大部分が作り込まれているのでとても便利で、非常に簡単にビデオ会議アプリを動かせます
意外とこれを使ってるチームがなかったのが意外でしたね…

## 自分の担当部分

私の担当部分は事前の簡単なアンケートなのでこの辺を中心に書きます

![スクリーンショット 2022-06-03 19.14.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339688/d8f6b167-6112-f010-800e-9238e2c56640.png)


まず、質問一覧データベースをKintoneで作りました
Kintoneを使うことで、営業の方でも質問の追加削除、管理が簡単になるということと、UI周りを作らなくてもよくなるというのが大きなメリットでした
「Kintoneを使わないといけないシチュエーションは何か？どう使ってどうアピールすればいいのか？」は初めから考えていました

![スクリーンショット 2022-05-28 15.34.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339688/411269f7-8259-9ae7-7b7e-1393ee5a49c9.png)



さらに、データベースからのデータの取得を簡単にし、フロントエンド担当の方により作り込んでいただくため、Goを使いAPIのラッパーを作りました
認証とかなしでPOSTするだけで以下のようなJSONが返ってきます

```json

{
	"question": "遊びに行くなら？",
	"selection": [
		"海！",
		"山！"
	]
}
```

[公式API](https://developer.cybozu.io/hc/ja/articles/360029152012)と比べると大幅に簡略化されていると思います
認証周りはGoで代理して、結果だけをオープンなAPIで返すというのは、レコードの編集などはKintoneの側に全部任せてしまうことが可能だったからです。ありがとうKintone様！
APIのエンドポイントも機能を絞り、`api/random`を叩くだけという形にしました
ここまでシンプルにしてしまうとGoで作るのも楽ですねー
また、[go-kintone](https://github.com/kintone-labs/go-kintone)を使うのを強くお勧めします

このAPIサーバーはherokuにデプロイさせました

## 他の人の担当部分

Twilioの音声を、APIを利用し文字起こしして、英語日本語を分類してゲームとして完成させるというのはすごかったと思います
私は何も担当していません
何も知りません
チームメンバーが天才でした

![スクリーンショット 2022-05-29 19.24.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339688/33382623-16b5-79b3-d51f-1bdaf6497731.png)


# 最後に

発表担当のリーダーのスライドもめっちゃかっこよくてよかったです
1日目深夜に「One more thing」って言いたいよねみたいな話をしていたら、実際にやってくれまして、ウケも良かったのでビビりました
当然、技術的にもやりたいことができて、しっかり見せられる段階まで完成させることができたのも大きかったと思いますが、顧客のことを考えて作った2つの機能をどう活かすかについてちゃんとストーリーを作り伝えることができたのも重要だったと思います
もらえる賞は勝手に1つだけだと思っていたので、Kintone賞とユーザー投票賞2つもらえた時には驚きましたし、最優秀賞まで頂き全くの予想外でした
これからもBIPROGY様のイベントが盛りだくさんのようなので、ぜひ楽しみにしながら頑張っていきます！
本当に主催者のBIPROGY様、技術提供をして頂きましたTwilio様Kintone様LINE様、メンターの方々そしてチームメンバーの皆様ありがとうございました！

# 追伸

ワタクシ、24卒院生就活生なので興味を持っていただいた企業様など内定をお待ちしております