入社２年目エンジニアが同僚とハッカソンに出て130万円獲得するまでの話

## 0. はじめに

> ![web3hackation_KV.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324159/35436fe5-ffd7-4ba1-283d-ada800963d0a.jpeg)

先日、トヨタ自動車協賛、博報堂キースリー主催の web3グローバルハッカソンという大会に出場してきました！

会社の同僚を誘って参加したのですが、奇跡的に賞金１万ドル (約130万円) を受賞し、とてもうれしかったので、応募から受賞に至るまでの体験談について共有させていただきます。

あわせて、関連団体や会社のPRもできたらなあと思っています。

いきなり「web3」というワードを出したのですが、[web3 が何なのかという説明はこちらの記事が参考になります。](https://digital-shift.jp/flash_news/s_220214_2) （ブロックチェーン技術を使ったサービス一般を指すことが多いようです。）

## 1. 大会の関係団体


#### トヨタ自動車
言わずといれた日本を代表する自動車会社で、世界中の企業に「KAIZEN」文化を導入した会社。
今回、web3でよく使われる [DAO（自律分散型組織）](https://tailorworks.com/column/10/)という考え方を企業活動に導入することで、マネージャーに集中している意思決定や管理業務を分散し、メンバーが自律的に活動できる組織に活用できるのではという点に目を付け、今大会の開催を依頼したそうです。

#### Web3財団
[分散型アプリケーション](https://ja.wikipedia.org/wiki/%E5%88%86%E6%95%A3%E5%9E%8B%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3) のアイディアと社会実装を最初に実現した[イーサリアム](https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%BC%E3%82%B5%E3%83%AA%E3%82%A2%E3%83%A0)というブロックチェーンの設立者の１人、ギャビン・ウッドさんが設立した財団。[Polkadot](https://ja.wikipedia.org/wiki/Polkadot)という、複数のブロックチェーンのハブとして機能するブロックチェーンの上位互換のようなブロックチェーンを開発運営しています。

#### Astar Network 
上記の[Polkadot](https://ja.wikipedia.org/wiki/Polkadot)に、分散型アプリケーションの開発・実行環境としては、世界で初めて接続されたブロックチェーン。リードの[渡辺創太](https://twitter.com/WatanabeSota)さんは、2022年、Forbes誌の選出するテクノロジー部門アジアの30歳以下の30人に選出されています。

#### 博報堂キースリー
Astar Network と博報堂の共同で立ち上げられた会社。日本から世界を代表するサービスを生み出すことを目指し、ハッカソン等イベントの企画運営を行っています。



## 2. 会社と私個人について

#### デジタルバリュー
石川県にある北國銀行をはじめとする北國フィナンシャルホールディングスの子会社で、ネットバンキングシステム等の内製開発を行っている会社です。主に、Microsoft Azure のエコシステムを活用したアジャイル開発を行っています。社員のほとんどがフルリモートで全国や海外から勤務しています。銀行関連の会社とは思えないほど新技術に寛容な社風です。


#### 私
他の業種を転々として、2021年から今の会社にフロントエンドエンジニアとしてお世話になっています。個人開発の方は、アイディア数百、プロトタイプ数十、リリース片手未満:frowning2: 職業エンジニアとしてはまだまだ経験が浅いです。


## 3. きっかけ

**Astar Network の Discord チャンネル**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264338/528011e7-8866-6558-d32c-035c35967ccf.png)


今回主催団体の Astar Network のプロジェクトの Discord のチャンネルを個人的にフォローしていたこともあり、今回の大会のことも、Discord で知りました。

この時点で、自分の中では漠然と以下のようなフローチャートがありました。

個人開発では顧客や納期がなく漫然と開発してしまいがちなのに対し、今回、スポンサーという形で具体的な顧客がいて、そこに向けて真剣にサービスを考えて作るということが、自分の中でのブレイクスルーにつながるのではと考え、ほぼ迷いなく出場する選択肢を選びました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264338/42bc6c98-0b3e-899d-878b-c27c4e33d0d3.png)

## 4. 最初にしたこと

まず、周囲をどこまで巻き込むかを考えました。

黙って１人で出場するか悩んだのですが、業後の時間を使って準備するにしても、深夜作業が続くと、日中の仕事への影響がゼロとは言えないため、会社には了承を得ることにしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264338/8692cb17-b570-4f29-962a-33d98d5e5922.png)
**いきなりですが、社長に打診することにしました。**

ここはうちの会社の変わったところかも知れないのですが・・親会社は銀行をはじめとしたホールディングスで、大企業かつ堅い企業の部類に入ると思うのですが、その役員に、一社員が個別チャットして普通に答えてくれる空気感があります。

とはいえ何度もやりとりが発生するのもということもあり、社内で協力者を募るかどうかの判断も決めた上で打診しようと考えました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264338/291aa7c0-04fa-de56-88c1-f743d3ce09cf.png)

職場の同僚を課外活動に巻き込むことのリスクについては、もしかしたら経験のある方もおられるかもしれませんが、何となく想像できるかと思います。（仕事としての責任関係が伴わない状態で、プライベートの時間を使って利害を共有することで、場合によっては職場の人間関係が崩れるリスク、etc..）

そこを踏まえてもなお、

**会社やチームとして走った方が、個人だけでなく会社としてのアピールにもつながり、うまくいった場合に、個人・チームメンバー・会社ともに「三方よし」になる可能性**

のメリットが大きいと考え、協力者を募る前提で、社長に打診したところ、「いいですね！」という雰囲気の、予想以上にライトな感じのポジティブな返答をもらえました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264338/3873e573-dca0-d4ec-4a8c-dfc337dc1e73.png)

**「会社のえらい人達にも話をしている」という安心感はかなり重要** で、実際、非常に進めやすくなりました。


メンバー募集は、社内公用ツールの Microsoft Teams 上で行ったところ、30分以内に２名の方が手を挙げてくれました。

並行して、自分と同じフロントエンドレイヤーのメンバー１人を個人的に誘い、結果、当日中に合計４名のメンバーを集めることができました。

## 5. 走り始めてから

実際に走り始めてからですが、最初の1週間ほどは実装になかなか集まって会話をしたり、着手できない時期が続きました。

というのも、

> - **基本的に業務優先という前提で課外活動をしていること**
>
> - **集まったメンバーが、業務では全員バラバラのチームに所属していること**


から、業務上がりの時間が皆少しずつ違う影響もありました。

皆が集まれない日は、web3 に関する前提知識や、開発環境の使い方の資料等を、[ドキュメント管理ツールの Notion](https://schoo.jp/matome/article/1607) に少しずつまとめていきました。


## 6. 超短期開発で体験した、しくじりと教訓

### しくじりその１

集まれるようになってから、まず最初のしくじりを経験しました。
この時点は、いわばプロジェクトが始まってすらいない段階です。この状態でどう進めるか、当初考えたのが、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264338/7fc852e4-a2d6-015c-8cfb-bca946bcf6d6.png)
**皆がブレーンストーミングで公平に意見を出すようにし、その中で、皆の意見の中庸値を割り出して、まとまった進め方やアイディアを採用することで、皆が同じモチベーションで開発のスタートを切れるようにする** ことでした。

結果、何が起こったかというと・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264338/f5b74827-365e-9dff-84ce-1abfc0e9f7d3.png)
そもそも全員が集まれる機会が少ないこともあり、前回参加できなかったメンバーが忘れたころに参加して、また以前の議論が蒸し返されたり等、作業着手どころか方針すらまとまらない期間が２週間続く、という状況が起こりました。

この時点で 〆切まで１か月弱 しかない中、時間ばかりが過ぎていくので、焦りを感じていました。

ここでやむなく方針を変更し、何とか進めることができたのですが、

ここでの教訓が、


#### 超短期開発では、初期方針の共有のみ行い、議論する前にまずは走ってみる

ことでした。超短期開発のハッカソン等の場合、チーム内で一番 ヴィジョンや前提知識を多く持っている人が一旦初期方針を決めること、更に言うと、初期のミーティングでは、そうやって進めること自体への合意形成にのみ注力する のが近道だと気づきました。

「**初期方針**」というところが重要で、最小限の MVP ができてから、皆のフィードバックをもらって方針を再検討するのが前提です。


成果物が実際に触れて、かつ、MVPができるまで手を動かして実装することで、全員のリテラシーが高まった状態の方が、現実的でよいアイディアが出てきやすいことも実感しました。

---

### しくじりその２

２つ目も、ミーティングに関するしくじりです。ハッカソン準備初期段階では、アイディア出しや意見調整を全てミーティング内で行ってしまったため、作業開始時間が後ろ倒しになり、時間を大幅に食ってしまいました。

結果、夕食を摂るのが23時過ぎになったり、その後作業に入って、就寝時間が明け方になってしまうことがありました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264338/ef25919c-1024-4dec-9305-6ed8b1fd928f.png)

ここでの教訓が
#### ミーティングは「みんなの宿題を決めるだけの場」と捉える


で、実装等のハードスキル的な作業だけでなく、意見を出す等のソフトスキル的な作業も、宿題形式にするようにしました。

誰が何をいつまでやるかだけを決めて、ミーティングが終わった時点で宿題を持ってない人がいないように、なるべく心がけるようになりました。

---

### よかったこと

最初は上記のような紆余曲折があったのですが、やはりチーム開発のメリットは、尻上がりで出てきます。

それを特に感じたのが、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264338/06a40df0-229f-9597-3097-0065a921b50c.png)

今回、実装・設計・動画制作・etc.. 様々な作業があった中で、

> **1人で複数のことをやろうとすると、集中して1つのことをやるよりパフォーマンスが落ちる。その点、チームであれば、異種作業を分業できる。**

ことがとてもありがたかったです。また、

> * **１人ではなく、複数人で取り組んでいるという安心感**
>
> * **全作業工程中の小さなマイルストーン達成についても、リアクションを共有できる** 
 
という精神的なメリットがかなり大きいと感じました。ここでの教訓が、

#### 迷ったら、「より周囲を巻き込む」選択をする

ということでした。

会社に相談する時点で、周りを巻き込むか悩む時間があり、走り始めてからも本当に皆を巻き込んでよかったのかしばらく葛藤していたのですが、やはり巻き込むのが正解だったと実感しました。

これは、受賞という結果が出てからではなく、準備を進める中で徐々に感じるようになったことで、成果物提出の数日前には確信に変わっていました。


これらの教訓は、もしかしたら
> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264338/bded7c9d-979f-a9f7-4f29-c8594ba7c126.png)
> <p class="block-quote-cite">引用元：<cite>『グラップラー刃牙』(c) 1991 板垣恵介 /　秋田書店　34巻</cite></p>


と 烈海王 に叱咤されると思われる方もいるかもしれませんが、少なくとも自分にとっては、とても大きな気づきでした。




## 7. 作ったもの

成果物の詳細については、大会規約によりしばらく公開できないのですが、概略のみ説明すると、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264338/df1a89dd-e4c1-27d1-46c9-ed8c04dd4868.png)

前提となる要件

- トヨタ社内で、定例で、社内のプロジェクトの公募が行われている
- 1回あたりのプロジェクトの公募数は、約３００件
- 集まったプロジェクトの中から、事務局で審査を行い、審査を通過したプロジェクトに予算がおりる

に対し、

- 審査を行う事務局の負担を軽減し、プロジェクトの成果や実績を見やすくするするとともに、活動するプロジェクトチームを金銭的にサポートすることもできるシステム

を作りました。

使用した技術としては、フロントエンド周りは Nuxt3、バックエンドは [NestJS](https://nestjs.com/) というフレームワーク、また、異なるレイヤー間で型を共有し、多重管理が発生しないよう、使用言語はTypeScript で完結するようにしました。
> [TypeScript、Nuxt、 NestJS の組み合わせで似た構成の記事としてはこちらが参考になります。](https://uyamazak.hatenablog.com/entry/2022/08/26/192829)

また、APIのエンドポイント、引数、戻り値の設計作業をスキップするため、[GraphQL](https://qiita.com/shotashimura/items/3f9e04b93e79592030a4) と [データベースORM (Object-Relational Mapping) の Prisma](https://qiita.com/am_765/items/5e42bd5f87b296f61fbc)を使用しました。このことも、大きく時間短縮につながったと考えています。DB は [MariaDB の Docker イメージ](https://hub.docker.com/_/mariadb) を用いました。

また、さらなる時間節約のため、**ChatGPT** を積極的に活用しました。サンプルコード生成等にも活用したのですが、今回、以下のような文書のモッキングがとても多かったことから、その点特に重宝しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324159/63267bae-c9ec-38f1-9245-49d0b8070f8e.png)




## 8. 大会を終えてみて

今回、自チーム含めて全部で８チームが受賞したのですが、どのチームも本当に素晴らしい制作物＆ピッチでした。

web3というと、ユーザーにとって利用が難しいイメージがあるのですが、web3 外の認証・承認技術 (Azure Active Directory、ソーシャルログイン等) とのインテグレーションを行い、web3 に慣れていないユーザーにも優しい導線をうまく作っていたり、web3 を普及させよう！というモチベーションが高いチームが多く感じられました。

また、今回、博報堂キースリーさん企画のハッカソンですが、キックオフやファイナルピッチ等は全て、COSMIZEというメタバース空間で行われました。さらに、メタバース空間へのログインはNFTで行い、賞金は暗号資産で送金されるという徹底ぶりです。

メタバース、NFT という新しい技術分野にフルに触れられる大会ということもあり、終始ワクワクした気持ちで参戦することができました。

> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264338/8088f0f1-a82e-d342-f237-30e66a76b6ab.png)
特に、web3は、比較的新しい分野ということもあり、テーマや企画自体が面白い大会が多いので、おすすめです！！

駆け出しの自分が全てを語ることは難しいですが、この記事が、皆さんにとってハッカソンに挑戦してみようかな、と思うきっかけになれば幸いです！

今後も皆の興味が湧くような体験談を投稿していきたいと思います。応援していただけると励みになりますので、もしよかったらいいねお願いします！