---
# System prepended metadata

title: p2Hacksに出ました

---

# p2Hacksに出ました

# はじめに

:::danger
大大大遅刻しました。すみません。年内に書いたので許してください...
:::


この記事はFUNアドカレ12/18の記事になります。
技術的な内容も含みますが、体験談的な要素が多めの記事になっています。

# リポジトリはこちら
https://github.com/p2hacks2022/pre-team04

# p2hacksありがとうございました
まずはこのp2hacksを開催していただいた運営の皆様、スポンサードしていただいた企業の方々に感謝を伝えたいです。ありがとうございました！

# ハッカソン当日まで
　当初、自分の技術力に自信がなく、ハッカソンやるよ！っていう告知を見ても「まぁ無理だよなぁ」と思っていたので、出る気はありませんでした。ですが、「いや、出てみないとできるようにもならんよな～」と思い、出場を決意しました。
　メンバー集めですが、自分の出来なさで周りに迷惑をかけたくなかったので、迷惑かけても「まぁ大丈夫っしょｗ」みたいな雰囲気を出してくれるメンバーを集めました。
　自分自身初めてのハッカソンだったので、メンバーを引っ張れるか、しっかり完成させられる技術力があるかどうか不安だったので、その不安を解消するべく勉強することにしました。ハッカソンの進め方は、運営の方々が勉強会としてレクチャーしてくださったため、とくに悩むことなく方針を決定することができました。技術に関しては多少Webの知識があったため、Webで何かしらを開発するしかないということになり、Node.jsとJavascriptの勉強をすることでなんとかしようと考えていました。
　開催日までにメンバーでGit/Githubのハンズオンを行い、ハッカソン開始後に勉強会が始まることがないようにしました。
 
 # 開発開始まで
　ハッカソン開始から2日間は開発までの工程、要件定義をする作業でした。ここは勉強会によって得られた知識を~~丸パクリ~~フル活用させて頂き、プラスしてメンバーの性格に合わせてカスタマイズし、進めていきました。勉強会はとても有意義なもので、とてもありがたかったです。
　使用技術は、フロントエンドをejs（HTML＋CSS＋JS）、バックエンドをNode.js＋express、データの保管をローカルのjsonで行うことに決定しました。環境構築は私がdocker-composeをこねこねするのが好きだったため、Dockerで構築することによってメンバーの負担を減らすことができました。
　機能要件の定義をフロント担当とバックエンド担当がやり、デザインをデザイナーとフロント担当で行うことで、完全に分業することのデメリットである、機能やデザインなどで担当ごとの認識の違いによって揉める事案の解消を狙いました。（結局デザイナーとバックで揉めました。2つともふわっとした決め方になってしまったため、詰めれば詰めるほど認識違いが起こり問題になってしまいました。こういうケースがあることを考慮していた上で起こってしまったので、残念ではありますが、いい経験になりました。）
 
 # 開発開始！
　3日目から開発を開始しました。チームリーダーとして全体のタスクを管理しつつ、コーダーとしてコードを書くことを両立することはとても大変でした。メンバーのスケジュールを合わせて一緒に開発したり、企業様との座談会のスケジュールを決めながら、自分のタスクをこなすのは普通に大変だったので、プロジェクトマネージャー的な人がいると楽だなと少し思いました。
　Node.js＋expressの勉強を事前にしていたため、最初はスムーズに実装できていましたが、データの保管をローカルのjsonにしていいのか、という問題がずっと自分の心残りでした。そこで企業様との座談会があり、「データベースを使ったほうがいいのは理解しているが、バックエンドの処理も含めて実装しきれる自信がない、jsonで保存する方式で進めてもよいか」という微妙な質問してみることにしました。インフィニットループさんには、「DBを使ったほうがいいよね、でもハッカソンという短い期間の中で終わらせるにはjsonで保存するっていう方法でもいいよね、本当は良くないけど（意訳）」と言う回答を頂きました。たしかにそうだよなと思っていたため、そのまま進める気でいたのですが、Directorzさんから「DBを使ったほうがいい、でもできる自信がないんだったらMongoDBとかのNoSQL使ったほうがいいかもね（意訳）」という回答を頂きました。言われた直後はNoSQLが何たるかを理解していなかったため、曖昧な反応になっていたと思いますが、後々調べて、「これいいじゃん！」となったため、MongoDBを採用することにしました。
　docker-composeで環境構築をしていたため、使用技術の変更は用意でものの30分くらいでMongoDBを追加することができました。これほどDockerを使っていて良かったと思ったことはないですｗ
　ここからMongoDBというかドキュメント指向型データベースのデータ構造との戦いが始まりました。ドキュメント指向型データベースが何者かわからない状況で始めたので最初のデータ構造は~~クソみたいなもの~~できの悪いものでした。途中で理解しつつ、データ構造の変更をしたり、改良を重ねてなんとか完成へこぎつけました。
　その後はフロント担当が書いてくれたHTMLをejsに変更したり、間に合わなかったフロントのJSを書いたりして終了のギリギリまで開発を行い、間に合わないと悟った機能を削りつつ、なんとか全体の完成を拝めることになりました。技術力のなさでデザイナーのデザインした画面に寄せれなかったのは本当に申し訳ないと思っています。
 
# 発表
　開発終了からほぼ時間ない状態で発表会が始まったので、「発表資料の準備間に合う？」、「発表の喋り上手く行くかな」という2つの不安を抱えた状態で進んでいきました。なんとかデザイナーが発表資料を用意してくれ、台本まで用意してもらったが、直前までその存在に気づかず、結局ぶっつけ本番で発表することになりました。が、なんとかうまく行ったため、良しとしますｗ
 
 # 結果
　&emsp;&emsp;&emsp;**なんとDirectorz賞を頂きました！**
　え？？？ってなって一瞬固まりましたｗ
　もともとの目標は「完成させよう！」だったので企業賞や優秀賞などは夢のまた夢くらいに思っていたのでガチで固まりました。数々のお褒めの言葉を頂き、ニヤニヤしながら戻っていったのを覚えていますｗ個人的には半年ほど熱心に取り組んでいたDocker周りと、バックエンドの処理を褒めて頂いてとても嬉しかったです。
 
 # その後
　発表会の次の日、Directorzさんの勉強会があったため、参加することになっていました。そこで自分が今まで断片的に貯めていた知識がたくさん繋がり、新しい知見も得れて、とてもためになった勉強会でした。勉強会のあと懇親会的に会話をして、そこでさらにお褒めの言葉を頂きました。中でも一番嬉しかったのは「発表会で一番使用した技術についての説明が丁寧だった」というものです。今まではこの使用技術についての説明については非難を受けることが多かったのですが、初めてその部分を評価していただいたので、とてもありがたいことだなと感じました。
　懇親会後は一方的にTwitterなどで知っていた先輩に「喋ってみたかったんです～」的な形で声をかけさせて頂いたところ、「研究室来る？」と言ってくださったため、大学生活初の研究室訪問をすることができました。色々お話させていただいて楽しかったです。本当にありがとうございました。またお邪魔させていただきます。
 
 # さいごに
　本当に参加してよかったなと思いました。もうこれしか感想がないです。
 技術力も向上したし、リーダーとしてチームをまとめる経験もできたし、企業様や先輩との繋がりもできたため、本当に得られたものが多いハッカソンでした！運営の皆様方に感謝を伝えたいです。ありがとうございました！