シス研ハッカソンを開催しました


# お知らせ
こんにちは、愛知工業大学システム工学研究会です。
この記事は、2021-04-07に書かれた記事です。
間違った内容や古い内容が紛れていますが、過去の記事を残す一環として記事を書きます。
よろしくおねがいします。

## はじめ

こんにちは、4月から学部4年になるシステム工学研究会**元**会長、秦です

こないだシス研内でハッカソンを開催しました。
ちなみにこのご時世なので「Slack」と「Discord」での完全オンラインでやりました。

流れ的には大体こんな感じです。

1月上旬：シス研ハッカソンの企画が動き出す
1月中旬：ハッカソン参加者募集
1月下旬：ハッカソン参加者募集
2月上旬：チーム開発、アイデア出し勉強会開催
2月中旬：チーム発表
3月中旬：シス研ハッカソン開催！

今回は動き出しから、ハッカソン終了までを備忘録的に感想など交えて書いていきたいと思います

## シス研ハッカソン始動

シス研ハッカソン自体は前々からやりたいという風潮がサークル内にはあったのですが、去年は参加者が3人しか集まらず開催することができませんでした。

今年度（もう4月なので正確には昨年度ですが）はありがたいことに、サークルの活動に積極的に参加してくれるメンバーが結構いてくれたので今年こそは開催できるんじゃないかと、年度末開催に向けて年明けごろから動き始めました。

サークルメンバーの中から、ハッカソンの運営をやってくれる人を募り、集まってくれたメンバーでハッカソンの詳細決めをしていきました。

1月中旬ごろには参加者を募るのに最低限必要なことを決め、参加者を募りました。

ありがたいことに、2年生3人、1年生7人の計10人のメンバーが参加申し込みをしてくれて、無事ハッカソンを行えるだけのメンバーが集まりました。

## ハッカソン前勉強会

このあとチーム発表をして、1ヶ月くらいの間、ハッカソン本番に向けて力をつけていくことになるのですが、チーム発表の前に、二つの勉強会を行いました。

一つはチーム開発の失敗談を僕からさせてもらいました。
（大体の内容は僕が書いた[この記事](https://qiita.com/kenshin1025/items/6ad7ad30408fd37dd89a)の感じなんでよかったら見てください）

もう１つの勉強会は院生の先輩からアイデア出しの方法に関しての勉強会をやってもらいました。

チーム開発っていうのは結構思ったように進まなかったり、チーム内でギスギスしたりします（僕自身もそういう経験があります）
チーム開発の失敗談は、チーム開発っていうのはそういうものなんだというのを意識してもらった上で、そこから改善していくにはどうしたら良いかをチームみんなで考えてくれるきっかけになれば良いなと思いやりました。

参加者のほとんどがチーム開発未経験だったので、チームでどうやってアイデアを出すか、どう決めていくかは結構苦労するんじゃないかなと思いました。
アイデア出しの勉強会で、その方法から目的まで話してもらえたのはよかったなと思いました。

## チーム発表

チーム発表は2月15日。
この時、ハッカソンまでちょうどあと1ヶ月のタイミングです。

チームに関しては、参加者には参加の意思表示と一緒に、技術ややりたいことのアンケートを記入してもらったので、それを元に運営でチーム分けをしました。

せっかくのハッカソン、せっかくのチーム開発なので、やりたいことがやれる、かつ、全チームが優勝を狙える（＋各チームちょうど良い感じの挑戦ポイントがありそうな感じの）チームになるよう意識しました。

3、3、4（人）の３チームに別れた訳ですが、このチームにはそれぞれ運営から1人ずつメンターがつきました

メンターは技術に限らず、色々大変なことがあると思うので、その時にサポートをしてくれる人として用意しました。
ただし、詰まった時に直接解決をするわけではなく、一緒に考えてくれる人に努めてもらうようにお願いしました。
先輩が解決してしまうと成長の機会を奪ってしまうと思ったのでそのための工夫です。

ちなみに僕はチームAのメンターを努めさせてもらいました。

## チーム発表~ハッカソンまで

この期間は運営からチーム名決めだけをお願いし、あと何をするかは各チームの自主性に任せました。

各チーム、自分たちで顔合わせをして、チーム名決めと一緒に自己紹介やハッカソンでやりたいことを話していました。
（諸事情によりチーム名は伏せときます笑）

それに合わせて各チームは目標と使用技術をざっくりと決めていました。

せっかくなので各チームの目標を紹介

チームA：「みんなで仲良く楽しく、技術力をあげるチーム」
チームB：「楽しくをベースに技術力向上&チームで勝ちたい」
チームC：「自分たちがいいと思うものを作る」

そして、この期間で各チーム、数日で簡単なアプリをチームで作る仮開発に挑戦していました。
この仮開発だけでも、成長できた部分や課題がいろいろ見つかったみたいです。

## ハッカソン開発開始

3月15日、ついにハッカソンが始まりました。
ハッカソンは3月15日から3月19日の五日間。

今回のハッカソンのテーマは「学生生活を豊かにする」
自分たちに身近なテーマであり、かつ自由度の高いテーマにしました。

初日は諸々の連絡やテーマ発表があり、その後各チームアイデア決めをしてもらい、アイデアが決まり次第開発という感じでした。

1日の終わりにはメンターと一緒に1日の振り返りをしました。
この振り返りを通じて、チームとしての足りない部分や目標がより明確になって、よりチームで進みやすくなったんじゃ無いかなと感じました。

## 最終発表

そんなこんなで開発期間も終わり、最終日は発表です。
どんなモノを作ったのか、なぜ作ったのか、挑戦ポイントはどこかなどをスライドにまとめて5分ほどで発表をしてもらいます。
そのあと、運営や参加者から5分ほど質問をさせてもらいます。

この発表を元に最後審査員が得点をつけ、その合計点で優勝が決まります。
ちなみに審査項目は
* テーマに沿っているか
* すてきな発表ができているか
* 技術的に挑戦したことがあるか、工夫があるか
* 全体的なプロダクトの完成度が高いか
の４つです。

### チームA

「シス研ゲームルーム」
暇な時間に遊ぶことで学生生活を豊かにする

オンラインで友達とチャットできる待機所＋ミニゲーム

![](https://i.gyazo.com/7bcabcfce6af94a7fc84c1d2be4afa78.png)

![](https://i.gyazo.com/30dc015e6dce31b25ae158a8bd4bbd58.png)

使用技術は「Unity」とオンライン対応のための「Photon」

![](https://i.gyazo.com/7602beb7409db0327a4f2649ee73dda1.png)

#### 発表に対する質問とその回答

* チーム開発をしていく上で辛かった体験談ありますか？
    * 辛いことよりよかったこと
    * 仮開発でコンフリクトで大変だった
    * コードが書けない
    * 仮開発で解消できた
* オンライン要素は待機場が共有できるけどゲームは？
    * 時間がなくてゲームは対応してない
    * 今後ゲームも対応して行きたい
* チーム開発を通してよかった点
    * みんなが協力して開発できたのがよかった
    * キリがついたらちゃんとプルリク
    * 不備があったらちゃんと指摘できた
* 最初からフォトンを使う予定だった？
    * 開発が始まってから検討して使うことになった
    * 自分たちで作る気はなかった？
    * フォトンが簡単だと思っていた
    * 効率の面で手を出した

#### 僕の感想

待機所やゲームはちゃんと楽しめるものが作ってあって実際に友達とわいわいできそうで良いなと思った。
発表で下に字幕が出ているのがおもしろかった。
もっと言い方を工夫すれば同じアプリでももっとテーマに沿ってる感があったと思う。

### チームB

「講義レビューアプリ」
履修登録前に講義に対するレビューをみることができる

![](https://i.gyazo.com/b3b7faa3ee8618617eba2328c5af5832.png)

条件を絞り込み、授業を選ぶ
その授業に関してのレビューをみたり、書いたりすることができる

![](https://i.gyazo.com/98552b83211187dca1595755c74bcba4.png)

![](https://i.gyazo.com/28be7ddbaa6a9ebd8b3b26589483ea02.png)

使用技術はフロントエンド「Vue.js」,バックエンド「Golang」,データベース「MySQL」

![](https://i.gyazo.com/2b896365afd1c89ad5f84945832a8dac.png)

#### 発表に対する質問とその回答

* 今回アプリを作るに当たって魅力的な機能を教えて欲しい
    * レビュー機能が最大の特徴
    * 他者と授業の感想を共有できる
* レビュー機能いいと思うけど一覧画面の数字はトータル？
    * トータルです
* 大量の複雑のデータを扱う上で工夫したことはなんですか
    * 無心になりながらタイプする
* 1番詰まった部分ってありますか？
    * 初めてだったのもあってAPI通信の周りがしんどかった
    * 概念を知らなかったのがきつい
    * うんうん言ってた
* 詰まった部分をどう解消していったのか
    * チームだから人に頼って助けてもらった
    * メンターの協力のおかげです

#### 僕の感想

授業の履修は学生の永遠の課題だと思うから目をつけたのはよかったと思う。
画面のスクショは見れたが、デモを見られなかったのが残念感ある。
授業にレビューを書くモチベーションに関しての話があるとより良いかも。

### チームC

「書籍貸し出し管理アプリ」
シス研の本棚のような共有する書籍の登録、貸し出しが管理できる

![](https://i.gyazo.com/bd05ab8b69507016afe2bf3ea3bde86d.png)

本のデータが取ってこれるAPIから本を検索して共有書籍に登録

![](https://i.gyazo.com/5ff054b60046b8b314bde7948bce0ba9.png)

そこから本を借りたり、借りている本の中から返したりすることができる

![](https://i.gyazo.com/5ff054b60046b8b314bde7948bce0ba9.png)

使用技術はフロントエンド「React.js」,バックエンド「Java」,データベース「MariaDB」,開発環境「Docker」

![](https://i.gyazo.com/e232b64a54fe3dcf953c49db571aed71.png)

#### 発表に対する質問とその回答

* 本の一覧画面が見やすくてよかった
* 本を借りてる人が誰か見れる様になってますか？
    * データは入っているから表示はできる
    * 実装はできていない
* 本の追加、APIでやってるの？
    * GoogleBooksAPIを使ってる
    * サムネイルも使える
* 実運用をするに当たってまだ問題がある部分はどこですか？
    * ユーザー認証のセキュリティがガバガバ
    * 無限に本を借りられてしまう
* 大変だったとこを教えて欲しい
    * 人とコードを繋げると動かなくなってしまう
    * 知らないクラスを使うのが調べるの大変でした
* チームのよかったところ
    * 気兼ねなく質問することができた

#### 僕の感想

課題がはっきりしていて、それを解決するイメージが沸いた
デモもちゃんと動いているのが見れてよかった
今の仕様だと、誰でも本の登録などができてしまうので、管理者用ページとかの話が聞けると嬉しかった

## 結果と終わり

全チームの発表が終わり、審査に入りました。

最終的に優勝は「チームC」。

ですが、どこが優勝してもおかしくない良いハッカソンだったと思います。

運営から開発から発表までを含めて全チームにフィードバックをさせてもらいました。

よかった点と成長ポイントをそれぞれのメンターから言ってもらいました。

これでハッカソンの全行程は終了です。

５日間に渡る開発で大変だったと思いますが、最後まで走り切ってくれて本当によかったです。

今回の開発や発表、フィードバックを踏まえてより大きくなってもらえると嬉しいです。

## 全体の感想

前々からサークル内でハッカソンをやりたいなと思っていたのですが、今回たくさんのサークルのメンバーが協力してくれたおかげで無事実現することができ、本当に嬉しかったです。

今回のハッカソンでは、１,2年生を中心にハッカソンを通して、技術力の向上やモノを作る大変さ、そしてなりより開発の楽しさを味わって欲しいなと思っていました。

各チーム多分上手くいくことや楽しいことばかりじゃなくて、困難や辛いこともあったと思いますが、それに負けず、最後しっかりと発表をしてくれてよかったです。

先輩と交流ができてよかったという意見も聞くことができて、サークル内で年代を超えての交流をより活発にすることもできたのかなと嬉しく思いました。

運営としても色々大変なことはありましたが、非常に楽しく達成感のあるイベントになりました。

これからもシス研内外でイベントをやっていけたら良いなと思います。

シス研のみんなには、学外のイベントにも積極的に参加して、さらに広い世界に進んで行ってもらえると嬉しいなと思います。

ありがとうございました！