【体験談】はじめてのハッカソン

Qiita初投稿です。

今回は、未経験独学アプリエンジニア（仮）の私が、ハッカソンに初参加した体験談です。
ハッカソンに参加したいと考えている人の参考になればうれしいです。

## About me
記事投稿現在で42歳です。
普段の仕事は、プログラミングをほぼ使わない事務職です。

パソコンと仲良くなり始めてたのは30代に入ったくらいのときからです。

プログラミングについては、VBAを30代後半の頃くらいから、ほんとに簡単なもの（一括印刷機能とか）を業務改善の一環で作り始めたのが始まりかと。

その後、（たぶん）40歳になる少し前くらいからwebサイトの制作に興味を持ち、


>Html→CSS→JavaScript→WordPress→PHP→SQL→Python→Git→Linux→PowerShell→Django→React→Flutter（今ココ）


といった感じで現在まで学習してきました。
特にDjangoとFlutterがメインです。
<br>
いろいろ勉強しているように見えますが、正直どれも技術スタックと呼べるほどのレベルではまだないです。

ちなみに現在メインの武器になりつつあるFlutterは、10月末から学習をしています。
なので、ハッカソン参加時はFlutter1か月に満たないぐらいの経験でトライしたかんじです。

## 参加したハッカソンについて
### 参加したハッカソン
私が参加したハッカソンは、

大阪ハッカソンという大阪市内で開催された「WEBアプリ　ハッカソン」というイベントで、11月下旬から約１か月でwebアプリを作ろう！というものでした、

　[◆第１回の案内](https://pg-beginner-mtg.connpass.com/event/300826/ "第１回")
　[◆第２回の案内](https://pg-beginner-mtg.connpass.com/event/300826/ "第２回")


近場でのハッカソンの開催を調べることが日課になっていた私は、この案内を見つけた瞬間に即申し込みました。

## ハッカソンに一歩踏み出した理由
私は、ここ数年１人で学習してきて、**エンジニア仲間**と**より実践的な学習の機会**に飢えていました。

三重に住んでいるのですが、まぁ職場も含めエンジニアという人がまわりにおらず、孤独な日々を過してました。

**「仲間がほしい」**

ほんと毎日思ってました（ちょっと大袈裟ですが）


正直一人でやっていてもプログラミングが好きなので、モチベーションが尽きることはなかったのですが、本やUdemyやYouTubeを見て学習していても、実践的な学習をすることは難しく、また、アプリを作ろうとしても、そもそものノウハウがないので、なんとなくちょっとした機能を作って壊すみたいなかんじでした（実際ハッカソンに参加するまで、ちゃんと「アプリ」と呼べる代物は作れてなかったです。）。


過酷でもいいので、**実践的に学び**。そして、 **エンジニア仲間を作る**こと。

これが、私がハッカソンに参加した２大理由です。
<br>
あまり一歩踏み出せない方の参考にならないかもしれませんが、

機会に飢えすぎてて、**このチャンス逃してなるものか**という気持ちがめちゃくちゃ強かったので、踏み出す勇気とかはあまりいらなかったです。

ぜんぜんなにもできなくてもそれも学びと思ってたので。

## ハッカソン総まとめ
ハッカソンの参加中のいろいろをまとめました


:::note infomation
使った技術など（触れた程度も含みます）
- Flutter（Dartという言語のフレームワークです。フロントエンドをこれで作りました。）
- Git,GitHub
- Discord
- Slack（以下、おまけで触れます）
- figma（画面構成図作りました）
- Canva（AIでロゴを作りました）
- AWS DynamoDB（データを入れたくらいですが）
- モックサーバー（イマイチ仕組みがわかってません(^_^;)）
:::


### スケジュール（とか流れ的な）

#### ◆初回
1. **顔合わせ**
約10人程度の参加者でした。現役のエンジニアと未経験の方の割合は7：3くらいの感じでした。
運営の方の雰囲気がすごくよかったので、さほど緊張することはありませんでした。

    1. **自己紹介**
最初に自己紹介をしました。
共有のスプレッドシート？に簡単な自己紹介を書いて、それを見ながら自己紹介をするみたいなかんじでした。
あとからもどんな人か確認できるので、とてもいいやり方だなーと思いました。
   1. **チーム決め**
チーム決めは、最初アイデアのある人のアイデアを聞いて、その人に共感する人がチームにのような流れがあったのですが、偏り？がでそうだったので、くじのようなもので決まりました。
私のチームは、現役のAWSエンジニアの方とバックエンドエンジニア（というか元々フルスタックでされてるなんでもできる感じの方）と未経験の私の３人のチームになりました。このお二人が優秀かつ、すごくいろいろ教えていただいて、正直恵まれすぎててやばかったです。
ちなみに、くじのあとに技術的なバランスの確認がありました。ただ、未経験だとバランスとかはわからないのが正直なところ…。大まかなカテゴリー「フロントエンド」「バックエンド」「その他」みたいにわかれて分散させるのもありなのかなと思いました。まぁ、自分のチームは恵まれすぎててあれなんですが。
2. **チーム毎に打ち合わせ**
    1. **テーマ決め**
    チームが決まったらチーム毎に、何を作るかをまず決めました。
    私のチームは元々私がアイデアを出していたので、そのアイデア（献立提案アプリ）を作ることになりました。
    2. **役割決め**
     自分は正直未経験なので、何者でもなかったのですが、直近でFlutterを勉強していたので、【フロントエンド】になりました（結果的にすごくよかったwわかってなかったけどバックエンドはまだ無理でした。）。そして、他のお２人が、インフラとバックエンドを担当してもらうことになりました。
    3. **今後の作業の確認**
    今後の作業の確認をしました。現役の方が、いろいろ指針を示していただけたので、とてもスムーズに作業確認ができました。私は、アドバイスをいただきながら、何をしたらいいのか確認しながら自分のミッションを理解できたので、とてもよかったです。
    また、Gitまわりの実践の開発環境でのやり方（developブランチ切ってfeatureブランチ切ってみたいな）等もその場で教えてもらえました。これまで、独学で一人でやってた自分としては本当に目からうろこでした。この後初のプルリク（最初メッセージで「PL」と送られてきたときは「？」なんだろうと思いましたがw）やマージも経験できて感動しました。Gitは共同開発をする上で必須スキルなので、ぜひ参加する前に基礎は勉強しておいた方がいいです（ハッカソンが終了して本当にちゃんと勉強しようと思いました。いざというとき大混乱しますので…(;^_^A）
 

#### ◆開発期間
ほぼ毎週オンラインで打ち合わせしてました。最終週は、3回ほど。
毎週次のような感じで作業をしていました。

1. **オンラインミーティング（Discordのボイスチャット）**
定例（または随時）で打ち合わせをしてました。
    1. **翌週の各自の作業タスク確認**
    今週どこまで作業をするかを決めました。ここでも現役の方に筋道を示していただけたので、与えられたタスクが明確になって、とてもよかったです。
    1. **（初回以外）作業したタスクの共有**
    どこまでできたかを毎週発表していました。自分は一番足を引っ張ると思ったので、ひたすら前倒しで取り組んでました。ほんと毎週必死。

#### ◆最終回
発表は自分は現地に行くことができなかったので、オンラインで参加させていただきました。
各々のチームが作ったものの発表を聞いて、質疑をするという感じでした。
私のチームは、現役の方が、スライドのベースを事前に作っていただけて、そこに肉付けする形で資料を作成しました（とても素敵なフォーマットでした。感謝）。
また発表もスライドのフォーマットを作成した方が素敵な発表をしてくれました。オンラインではあったものの、私も質疑の回答を少しできたのが、いい経験になりました。


## 最後に
個人的な見解ですが、本気でプログラミングを学びたいと思っている方にハッカソンは最適だと思います。
正直ハッカソンに一度しか参加していないので、あれですが、ハッカソンに参加すると以下のメリットがあります。

:::note infomation
 **ハッカソンに参加するメリット**

- 実践的な開発が学べる
- エンジニアの繋がりができる
- ハッカソン＞＞＞独学 　のすごい学習効率（精神と時の部屋効果！！）

:::

そして、注意点も。

:::note warn
 **ハッカソンの注意点**
 - Gitは事前に勉強しておいた方がいい
 - プログラミングの基礎（変数、定数、条件分岐、繰り返し、クラスetc）は事前に学んでおいた方がいい
 - 何か一つそのミッションに立ち向かえる武器を持っていた方がいい（ひのき棒でしたが、Flutterがなかったらやばかった。終わったら棍棒にはなった気がします。）
 - 精神と時の部屋効果は、自分の努力とメンバーのサポートに比例する
:::

以上、私のハッカソン体験談でした！

総じてハッカソンは最高に楽しいので、興味のある方は、ぜひ一度参加してみてください！

最後までお読みいただきありがとうございました。

## おまけ
ハッカソンの最中にあった私の素敵な出会いについて

正直ひのきの棒をもって挑むのは、大変でした。

乗り越えられない壁も何度も現れましたが、以下のお二人の方にだめもとで連絡をとってサポートいただいたおかげで乗り越えることができました。

実際はもうお一方　名古屋のITベンチャー　**株式会社三河屋**（https://mikawaya-corp.com/） の素敵なエンジニアの方にも夜遅くまでAPIの連携のご相談に乗っていただいていたのですが、web上で名前が公表等されている方ではないので、紹介については割愛させていただきます。
しかし、素敵な社員がたくさんいる素敵な会社ですので、ご興味ある人はぜひぜひコンタクトしてみてください。（２か月に１回名古屋で勉強会等されています。）

ちなみに、途中に記載したSlackは、サポートいただいたお一人であるルビーDogさんとのやり取りをする際に使わせていただきました！

以下のお二人は本当に素敵な方なので、もしFlutter等お二人に関連する言語などを勉強されている方はぜひぜひつながっていただければと思います。

おまけの最後としてお二人の紹介で締めたいと思います。

### ルビーDogさん
Flutterの他さまざまな言語を習得されており、とても優しい方です。
もともと状態管理を学習する必要があったので、ルビーさんのYouTubeを見ていたのですが、どうしても解決できないこと（アプリ起動時のAPI叩いての初期データ取得）があり、ダメ元で相談したら、快く解決していただきました。本当に感謝しきれません。

**<ルビーDogさん情報>**
　YouTube　https://www.youtube.com/@rbdog
 　X（旧Twitter） https://twitter.com/Rubydog725

### ケニーさん
こちらもFlutterの他さまざまな言語を習得されている元IBMの会社員のケニーさん。
日本語も話せるとても心優しいアメリカ人です。
ケニーさんにも、発表前日のLoading画面が出せない問題にぶち当たったときに、ダメ元でXでダイレクトメッセージを送ったら、深夜にもかかわらず、問題を解決していただきました。本当に感謝しきれません。
ご本人もこういった問い合わせに答えることを好きなそうなので、ぜひぜひ関心がある方はつながっていただければと思います。

**<ケニーさん情報>**
　  X（旧Twitter） https://twitter.com/kennyfully



以上ここまで読まれた方、読んでいただいてありがとうございました。