初ハッカソン参加でやるべき7のこと

# はじめに

慶應大学 理工学部 情報工学科 B3のぽこちゃんです

2023年からハッカソンに参加し始め、
#### 全8回参加しました!


前回は自分が参加したハッカソンのまとめを書いたので👇

https://qiita.com/pokotarou/items/33ceb45921528f119c33

今回は
### 初ハッカソン参加者向けにやっておくべきことを書いておきます!
:::note warn
あくまで個人的なものなので参考程度
:::

Xもやってるのでぜひフォローお願いします
フォロバします!

https://twitter.com/tomato_boy77


# ハッカソンとは
短いものだと2日、長いものだと１か月くらいで
チーム3,4人(たまに個人)で何か開発してて、その出来を競おうというものです
**文法は勉強して少し書けるけど、何作ったらいいかわからん
という初心者にめちゃめちゃおすすめです!**

# 初参加で確認しておくべきこと
以下のリストに時系列でまとめました
<font color="Red">**特に⭐️がついているものは重要なので**</font> ここだけでも確認しておきましょう!

 | 項番 | 確認すること |重要性 |
|:-:|:-:|:-:|
|  1 | [ハッカソン参加の心持ち](#ハッカソン参加の心持ち) | ⭐️ |
|  2 | [情報共有の方法](#情報共有の方法) | ⭐️ |
|  3 |  [アイデア出し](#アイデア出し) |   |
|  4| [新技術の学び方](#新技術の学び方) |  |
| 5 | [gitは使えるように](#gitは使えるように) | ⭐️ |
| 6 | [コミュニケーションの取り方](#コミュニケーションの取り方) |   |
| 7 |  [ハッカソンが終わった後](#ハッカソンが終わった後) |   |


# ハッカソン参加の心持ち

結論から言うと
### このハッカソンで何を得たいかを明確にしておきましょう!
参加者は多種多様ですが、例えば
- 実現したいアイデアがある
- 賞を取りたい
- 使ってみたい技術がある
- コミュニティの輪を広げたい
etc....

ハッカソンにもよりますが、往々にしてトラブルに見舞われます
**喧嘩になる**みたいなことはないと思いますが

- エラーがずっと解消できなかった
- チームメンバーと突然連絡が取れなくなった
- gitのpush先間違えて全部上書きされた
- 環境構築でつまづいて全然コミットできなかった
etc...

目標を決めて取り組まないとトラブルに見舞われた時に
気持ちの切り替えに時間がかかってしまいます

失敗から反骨精神で乗り越えられる人はいいですが、
初心者ともなると苦い経験から
**自分がエンジニア向いていないんじゃないか**
**ハッカソン嫌い**
と思う可能性が割とあります

### 一回の失敗で挫ける必要はありません!!
賞が全てではないですし、学んだ経験は絶対次に繋がるので
挫けないためにもハッカソンでのミニマム目標は立てておくといいです!


# 情報共有の方法
これはPMもしくはリードエンジニアになる人向けの話かもしれませんが
全員ツールとして持っておいた方がいいので紹介します

## 情報共有のツールについて
ツール様々ありますよね...例えば
- Slack
- Discord
- LINE
- Lark
- その他

色々ツールはありますが個人的に使ってみての話
### Discord一択です!!!
入ってない人は入れましょう!

各ツールについて実際のハッカソンの流れの面で評価します

| ツール | Discord | Slack | LINE | Lark |
|:-:|:-:|:-:|:-:|:-:|
| チャンネル分け | ⚪︎ | ⚪︎ | × | ⚪︎ |
| ドキュメント管理 | △ | △ |　×　| ⚪︎ |
|　ボイチャ機能 |⚪︎| △　(無料枠だと2人まで) | ⚪︎ |  △ (無料枠だと60分) |
| 使用人口 | ⚪︎ | ⚪︎ | ⚪︎ | × |

LINEは知ってると思うので割愛して他具体的に説明を上げていきます

### Discord

メリット
- ボイチャ機能に制限がない (画面共有も可能)
- チャンネルを分けるのが簡単 (後述)
- 使用人口が多い
- 投票botなど外部機能が充実
- 無料でなんでもできる

デメリット
- メンバーの権限管理が煩雑になりがち
    - ハッカソンで2週間使うぐらいなので大した設定もいらない

### Slack
メリット
- チャンネルの作成がしやすい
- 使用人口が多い
- メッセージのブックマークが可能で保存できる

デメリット
- 無料枠だと90日でメッセージが消える
- 無料枠だとパドルミーティング(ボイスチャット）2人でしかできない

### Lark
メリット
- ドキュメント管理がかなり有能
- Slackが制限されている中国でも使える

デメリット
- 無料枠だとミーティングが60分しかできない
- 使用人口が圧倒的に少ない

個人的にはLarkすごい便利なのでもっと広がって欲しいですけど
ユーザー登録含めてハッカソン程度ならDiscordで十分です

## 情報共有の環境づくり
ではチーム全員がDiscordをダウンロードしサーバーに参加したとしましょう!

自分の場合は以下のように話す内容に分けてチャンネルを事前に作成しています 

![IMG_9280.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1436034/873fad48-1de1-f43b-c15b-be636875e557.jpeg)

投票は後から作ったので置いておいて
| チャンネル名 | 内容 |
|:-:|:-:|
| 一般 |連絡事項、全体的な共有事項|
| 質問 |環境構築やエラーについての質問|
| 情報共有 |技術やコード系の記事、データソース|
| 議題 |ボイチャなどで話した内容の議事録|
| アイデア |プロダクトアイデア|
| 雑談 |テキトーな雑談スペース|

:::note info
基本はこれをベースに必要なチャンネルを
適宜作成するようにしています。
:::

# アイデア出し
ハッカソンは開発期間が短い(ものによっては2日とか)
プロダクトの発表,プレゼン時間も2分とか,3分なので

**開発のクオリティよりもアイデアの方が重要だと思います**

:::note info
 開発の難易度や実現可能性は
 一旦無視でどんどん発言しましょう
:::

**アイデアの具体化は得意な人がやってくれます**

## アイデア出しのツール


- Miro

https://miro.com/ja/

下の画像のようにチーム全員で同じボードを共有できる
**ブレーンストーミングに最適**

![スクリーンショット 2024-01-08 18.21.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1436034/4522aa82-62aa-99d8-59ca-a464502d23ae.png)

- Notion

https://www.notion.so/ja-jp

使ってる人は多いと思いますが
アイデア出しというよりはまとめツールとしてNotionに保存しておくのは大事です

:::note info
ShareからPublishでネット公開もできるので、
作成したwikiをそのままデモ発表で配ったり、
ハッカソン後にリリースしやすいです
:::

# 新技術の学び方
いざ開発に着手するとなると、メンバーによっては言語がバラバラなこともあるでしょう

**新言語を1週間程度でキャッチアップする**
必要が出てくるかもしれません

個人的には
### Youtubeがおすすめです

- 本
    - お金かかる
    - 内容も多い
- Udemy
    - お金かかる
    - 体系的に学ぶ感じではない
- Paiza
- Progate
    - 手軽に学べる
    - お金はかかる

おすすめのYoutubeチャンネルを紹介しておきます
- プログラミングチュートリアルさん
    - ReactやNode,Python,Djangoなど
目標物を作成しながら勉強を進めるので具体的な事例を勉強しやすいです

https://www.youtube.com/@user-hl9uv6cv7k/featured
- いまにゅさん
    - Pythonがメインですが、自動化,スクレイピング,機械学習など基本的なことをざっと確認できます

https://www.youtube.com/@imanyu_programming

- キノコードさん
    - GO,Ruby,Kotlinなど基本的な文法を1時間程度で学習できます

https://www.youtube.com/@kinocode/playlists

- Flutter大学
    - Flutterをやるならまじでおすすめです
    - 環境構築から実際のアプリをモデルに再現をしたりかなり実用的

https://www.youtube.com/@flutteruniv


# gitは使えるように

実際にチームで開発すると必ず使うのがgithubです
ハッカソンだけでなく自分の開発管理やインターン、業務でも利用するので
この機会にしっかり勉強しておきましょう!!

目標としては
クローンからコミット,プルリクを送ってコンフリクト解消まで
ブランチについては最悪できなくてもいいかなと思ってます
(もちろんできれば理想ですが)

:::note warn
初心者がpushするのを恐れてサポートが遅れるよりも
こまめにpushしてもらって、バックアップをとりつつ
できる人がレビューをしっかりしていく体制を作りましょう
:::

おすすめは👇のサル先生のGit入門です
実際に手を動かしながら勉強しましょう


https://backlog.com/ja/git-tutorial/



# コミュニケーションの取り方

ハッカソンでは初対面同士でチームを組むこともままあります

そこでどれだけ仲良くなれるか、
質問しやすい雰囲気を作ることができるかがかなり重要です

初心者の方はおっかなびっくり接してしまうことが多いかもしれません

ここで大事なのは3点

- わからないことは逐一聞く!
    - 検索をしながらで追いつければいいです、ChatGPTとか駆使しつつ
    それでもわからなければ早々に聞きましょう
    - チーム内での解像度を共有しておかないとめんどくさくなります
    - 逆に聞かれた方も快く接してあげましょう
    - タスクがないとき、わからないときも積極的に聞きましょう
- 穏やかな口調を意識する
    - チーム内で技術力の上下関係ができてしまうのは仕方ありませんが
    コミュニケーションまで侵害してしまうのはよくありません
    - 初対面なのであれば特に,物腰は低く,敬語で話すのがベターな気がします
- 質問は具体化する
    - 当たり前ですが、自分と相手の見ている画面は違います
    - 画面共有は適宜するようにしましょう
    - エラーについて聞くときはソースコードも一緒に投げましょう

基本的なことではありますが、この3点を意識するだけでも
チーム内の雰囲気は良くなります


# ハッカソンが終わった後
個人的に一番成長するのはハッカソンが終わった後の復習だと思います。

ハッカソン中に、あれできなかったな、これわからなかったなということは
終了後にゆっくり時間をかけて解決していきましょう!

チームメイトが作ったコードを写経してみるもよし
ChatGPTに投げかけて聞いてみるもよし

そのプロダクトを次はひとりで作れるようになったら大きな成長です

下手な記事やZennの本よりもよっぽど仕様を理解しつつコーディングできると思います

あとは**Qiitaなどにアウトプットするといいでしょう!**
分かったことを記事にしておけば次につながりますし、
副次的な効果もさまざまです

#  まとめ

今回はハッカソン初心者に向けて、チーム開発で個人的に意識して欲しいことを
自分の経験からまとめてみました

ここはこうした方がいい等アドバイスありましたら、コメントにお願いします
僕も参考にさせていただきたいので!

よろしければXのフォローもお願いします!

https://twitter.com/tomato_boy77

ご読了ありがとうございました