ハッカソンって何？メリットやハードルは？彼女はいるの？調べてみた！

## はじめに
Youtuber紹介の記事みたいな題名ですみません。

僕は就活中の学生です。今年の３月にハッカソンにハマって暇があれば参加し、ハッカソン布教をするためのコミュニティを作ったハッカソンオタクです。

そんな僕がハッカソンについて真剣に考えてみました。

主観的ではありますが誰かの参考になれば嬉しいです。



## 対象者
- 学生
- 就活のために早いうちから準備したい
- ハッカソンに興味はあるがハードルの高さを感じている
- ハッカソンが好き

## この記事で得られるもの
- ハッカソンのメリデメ
- ハッカソンのハードル

:::note warn
ハッカソンといってもたくさん種類があり、それぞれ特色があります。


本記事は一例として株式会社サポーターズ様主催の[技育CAMP]( https://talent.supporterz.jp/geekcamp/)を中心に考えます。
:::

 https://talent.supporterz.jp/geekcamp/

## ハッカソンとは？
wikiには以下のようにあります。
> ハッカソン（英語: hackathon、別名:hack day, hackfest, codefest）とは、ソフトウェア開発分野のプログラマやグラフィックデザイナー、ユーザインタフェース設計者、プロジェクトマネージャらが集中的に作業をするソフトウェア関連プロジェクトのイベントである。個人ごとに作業する場合、班ごとに作業する場合、全体で一つの目標に作業する場合などがある。時にはハードウェアコンポーネントを扱うこともある。ハッカソンは1日から一週間の期間で開催することがある。いくつかのハッカソンは単に教育や社会的な目的を意図に開催する。使用に耐えるソフトウェアの開発や既存のソフトウェアを改善することを目標としている場合もある。また、使用プログラミング言語、オペレーティングシステム、アプリケーション、API、主題や参加プログラマーの人数を定める場合がある。

簡単に説明すると**短期間でプロダクトを作り上げて、プレゼンで競うコンテスト**のイメージです。
ハッカソンによってテーマ自由、リモート開催、チーム参加など様々なルールが設けられています。

## ハッカソンのメリット　
80人に参加する目的のアンケートを取りました。
```
 就活に有利                  7人
 
 サービスを作りたい         　12人
 
 チーム開発をしたい           29人
 
 技術力の向上　　　　　　　　　 32人
```
それぞれの結果を掘り下げていきます。
### 就活に有利
7人とあまり多くはなかったですが**確実に有利**です。まず、企業が学生向けハッカソンを開催・協賛する目的はほぼ**採用**です。

**しかし参加するだけでは有利になりません。**

僕は就活で50社近くの企業にハッカソン経験をアピールしてきました。


**技術力の指標**や**チーム開発の経験**としての評価されることはあっても、**出場回数**が評価されたことは**一度もありません**。

**重要なのは何が目的で、何を行い、何を得たかです。**

この説明ができれば開発が失敗しても意味のあった経験として財産になります。
何度も出場しPDCAを回すことにも価値があります。

:::note info
 サポーターズ代表取締役の楓さんも以下のようにおっしゃっています
:::

https://twitter.com/kaepon1219/status/1698956729634140326?s=46&t=rkC6U3CwVE9LYbOkKRgpow


:::note warn
個人的に就活においては長期的なバイトかインターンの経験が堅いと思います
:::

### サービスを作ることができる
12人と意外と少なくて驚きました。この文面では主に以下の解釈ができます。

 - 技術的なアウトプットができる
 
 - 参加すれば成果物が一つできる
 
 - 作りたいサービスがある
 
 - 技術的なアウトプットだけでなくサービスとしての価値を練れる

1人でサービスを作りきるのが苦手で、**申し込めば走り切ることができる**という方と、
**習得した技術をサービスに落とし込んでアウトプットしたい**方が多い印象です。

**作りたいサービスがある**のは
ハッカソンに何度も参加している方に多いです。日常的にアンテナを張って、アイデアを考えている変態が多いです。

**サービスとしての価値を作る**
**個人的にハッカソンの本質**と考えています。
ハッカソンで最も重要なのは**サービスとして価値が高いか**であり、難しい技術を使ったかではありません。

学生の内にサービスの価値を練る経験が短期間でできるのはハッカソンしかないと思います。

### チーム開発をしたい　
29人とやはり多いです。個人とチームでの開発はまるで違います。実務を見据えるならチーム開発はしておきたいですよね。

ハッカソンでチーム開発を学ぶメリットは以下のものがあると思います。

- **楽しい**
- 様々なポジションを経験できる
- チーム立ち上げ段階を練習できる

人数が増えても生産性は単純に向上しません。
チーム開発になることで役割分担や擦り合わせ、マネジメントなど考えることが増えます。

短期間でこれらの練習ができるのはハッカソンの強みです。

**そして何より楽しいです！！**


みんなで「このサービスがあったらいいよね」「この機能はつけたい」「ふざけたサービス作るか！」とか言いながら開発する経験が楽しくないわけがないです！

### 技術力の向上

32人と最多です。どのように向上させているのか考えてみます。

- チームメイトから新しい知見を得る
- インプットとアウトプットを同時に行っている

ハッカソンは様々なバックグラウンドを持つ方が集まってきます。**多様な方々と一緒に開発することで新しい知見を得ることができます。**

一緒に同じものを作ることは学習方法として**非常に効率的**です。

インプットとアウトプットが高速で行われ、全く新しい概念に出会ってもすぐに教えてもらえるという**理想の環境**です。

**ただし、頼りすぎてはいけません。**ハッカソンは**チーム全員が有意義**と感じることも大切です。

:::note info
互いの技術スタックを交換して教え合うという強者の遊びをしている方もいてめちゃくちゃ面白そうでした
:::

### 交流
今回アンケートに入れ忘れてしまいましたがこの目的で参加する方も多いです。


チーム内に留まらず、**会場にいる方全員と仲良くなるチャンス**があります。

技育CAMPはアドバンスとキャラバンというオフライン型のハッカソンがあり企業の方ともお話しする機会があります。僕はそこで知り合った方と選考で再会し、選考とは思えないほど楽しく有意義な時間を過ごすことができました。

これだけでも十分なメリットですが、他にも以下のようなメリットがあります

- 自分の経験が及ばない領域の知見を得られる
- バイト、インターン、就活の情報収集ができる
- 学外にも友達ができる

**横のつながりは偉大です**。思わぬところで助けられたり、気づいたら成長に繋がっていたりします。

一度外に出てみるといかに自分が狭い世界で生きていたか思い知らされます。






:::note info
ハッカソンに参加する目的として、暇つぶし、義務、お小遣い稼ぎ（賞金）など変態も確認できました
:::
## ハッカソンのデメリット
アンケートはとっていませんので個人的に思うところを挙げさせていただきます。

- 思ったより時間と体力を取られる
- ハッカソン → 運用に壁がある

### 思ったより時間と体力を取られる
ハッカソンは大抵の場合、1週間〜1ヶ月の期間で開催されます。

その間、他タスクに時間を割いている余裕がありません。学校の授業やバイトが忙しい方は**無理に参加しない方がいい**と思います。

特にプレゼン直前になると睡眠時間も奪われ、辛くなります。

また、チーム開発は理想通りになかなか進みません。以下によく困ることを挙げておきます。

- 思わむところで詰まって沼る
- メンバーの進捗がわからない
- メンバー間で認識の齟齬がある
- 実装中に設計の欠陥が見つかる
- **時間がない！！**

:::note info
前後や期間中に余裕を持っておいたり、日報や定期ミーティングなどチーム内でルールを作ると円滑に進むと思います。
即席の場合は雑談の時間をとって関係性を構築しておくと意見しやすくなります！
:::


### ハッカソン → 運用に壁がある

これは短期間のハッカソンにより当てはまります。実際にサービスを動かしていくとなると、保守性や拡張性が高いコードが必要です。


そのためにはクリーンアーキテクチャ、テストコード、セキュリティなど学習コストや実装コストが高いものを組み込む必要があります。


**しかし、短期間でサービスの良さを闘うといった場面でこれらは本当に必要でしょうか？**


**全面にアピールすべきはこのサービスらしい機能であったり、使いやすいUIだったり、このサービスが何を解決するのかではないでしょうか。**

また、ハッカソンで作ったサービスは**途中から人が参入する前提で作られていない**ことが多くあります。

これらの壁は**ハッカソン止まり**になってしまう原因の一つです。
 
:::note warn
最初から運用を見据えてハッカソンで開発することもできますが
ハッカソンの性質上、開発体験よりもユーザー体験を重視すべきです。
:::

## 参加のハードル
偉そうに上から言える立場ではありませんが、初めての即席チームなら不安になることがあると思うので、個人的な意見を書いておきます。

:::note warn
技育CAMP公式に参加制限があるわけではないです（1人チームはあります）
:::

:::note warn
あくまで 2023/12 現在の肌感覚です
学生の技術レベルがどんどん上がっているため、もっと必要になったり、流行技術の遷移があったりすると思います。
:::

### 技術面

**必須（太字部分のスキルがないと辛いかも）**
- **一つ以上の言語で自分がやりたいことを泥臭くとも実装できる**
- **Githubを使ったチーム開発ができる**
- **DB、APIを使ったことがある**
- **ネットで調べてエラー等を解決できる**
- ReactかVueでUIを実装できる
(Webフロントエンドの場合）
:::note info
デザイナー志望の方は上記のスキルは関係なく重宝されます
FigmaやXDを使ったデザインを作った経験があれば取り合いです
:::

**推奨（あったらまず困らないと思います）**
- Next.js、Nuxt.js等のフレームワーク
- Typescript（採用されることが多い）
- Laravel、Rails、Nest.js、Flask等のフレームワーク
（ORMに理解があると円滑だと思います）
- Go（素、フレームワーク両方います）
- Swift、Kotlin、Flutter、ReactNative等
- Firebase、GCP、AWS等のクラウド
- Docker、Kubernetes等のコンテナ周り
- OpenAPI（Swaggerが多い）
- クリーンアーキテクチャ
- Unity、Blender
（ゲームやXR作品に使われることが多い）

:::note info
加えてChatGPTやGithubCopilotなどのAIツールは非常におすすめです
ChatGPTは3.5なら無料、Copilotは申請すれば学生無料で使えます
:::

### メンタル面
- **最後までやり切れる**
- **こまめに連絡ができる**

:::note info
辛さを感じてきたら思い切って相談してみると楽になります
**最後まで走り切れると思い出になります！**
:::

個人的にWebならNext.js × Typescript、Go
スマホならKotlin、Flutter、両方でFireaseが使われていることが多いと思います。

あくまで即席で組む際の指標なのでチームで納得した技術構成がベストだと思います。



:::note info
最初は友達を誘ってみるか、開催前からチームを作って技術スタックのすり合わせをしておくとやりやすいと思います！
:::

## 最後に
ここまで色々書いてきましたが、
結局**楽しさ**が参加し続ける理由になっています。

いろんな目的がありますが、参加しなければよかったと言っている人を見たことがありません。

ぜひ一度参加してみてください！またハッカソンで会いましょう！