初ハッカソンに参加してみた
初の記事投稿ということで簡単に自己紹介をします。
現在機械系の修士1年生です。
現在は、就活と授業と研究とその他もろもろに追われながら忙しくも楽しく生活しています。
忙しいのに記事を始めたのは、何となくイベントとか出た時のことを書いて残しておくのはよさそうだなと思ったというだけです。
趣味は読書、プログラミング、サッカーです。
競技プログラミングをしていて、ユーザはMelbeckです。
多分この記事も、そのTwitterから飛んでる人が見てくれてるんじゃなかろうかという気がしてるので、言うまでもない気がしますが。
秋みたいなラインナップ?
なので、食事も好きです。いっぱいは食べれないけど。
7/9(土)~10(日)に初めてサポーターズ主催のハッカソンに参加させていただきました。
で、ハッカソンとはなんぞいというと、
ハッカソンは、ハック(hack)とマラソン(marathon)を組み合わせた造語とされ、 プログラマーや設計者などのソフトウェア開発の関係者が、 短期間に集中的に開発作業を行うイベントを指します。
です。
そう、がっつり情報系のイベントです。
何故、このイベントがあること知ったのって言うと、そりゃ調べたからという話なのですが、何故、機械系の僕が参加したかというと、「インターンの練習したい」、「なんか作りたい」って思ったからです。
(成果物発表して、アンケートに答えるとお金ももらえるしね)
という不純っぽい動機が個数としては7割弱あったわけです。
気持ちとしては、「なんか作りたい!」65%、「インターンの練習したい」20%、「ついでにお金欲しい」15%みたいな感じでした。
参加まで
という気持ちの割合を示すと僕はめちゃくちゃ何かを作れそうな人みたいになるので、それは誤解です。趣味で適当なものを作ったりはしていましたが、とてもとても自分以外に需要はなさそうなものばかり。世の人に使ってもらって便利となるものは作れてなかったのです。そして、忙しい毎日追われて開発からほど遠い日々を送っていました。
けれど、運よくインターンに受かりました、その時は凄く嬉しかったです。そのインターンはハッカソン形式のアイデアを実装して形にするというインターンです。
そこで、僕は考えました「自分はインターンで使い物になるのか?」、「インターンの経験を吸収できるのか?」と。そして、考えた結果「ならんし、できん!」と思いました。こうなった僕は慌てて、開発をするイベントやら他のインターンやらを探し始めました。
その時見つけたのがサポーターズのハッカソンです。そこにはなんと、「ハッカソン初心者歓迎」の文字がありました。これだと思いました。
けれど、そこで僕は考えました。「就活のイベントもあるし、小テストもあるし、大変そうだし、やっぱなんか怖いし自分はやれるのか?」と。負のスパイラルに入る思考ですね。でも反対に、「楽しそう、どうせやるからやりたいな」という気持ちがありました。
そこで、「何も知らんままやらない選択をするのはもったいない」と思って、どんなもんかなと思って、サポーターズの勉強会に参加してみました。そこではサポーターズ社長(許可とか取ってないので、公開されてるけど実名は避けときます)ともう一人の方が講師としてIT業界でのエンジニアのキャリアやらエンジニアを目指す学生のレベルとかを分かりやすく解説してくれていました。
うん、面白いなー
となっていると同時にサポーターズ社長さんが「開発をしている人はレアキャラ」とか「上位相は好き勝手に作ってる」とか言ってるのを聞いてなんだかんだ、ちゃんと開発したことがないのがもったいない気がしてきました。そして、自分も作ってみたいという気持ちが凄くふつふつと高まってきました。
なので、そのまま勉強会の途中にハッカソンに申し込んでいました。(笑)
で、本当は「初ハッカソンなので、どういうこと勉強したらいいですか?」ってことを聞こうと思ったら、「楽しそうなので、申し込みました!」的なことだけ書いて、勢い余ってEnterキー押してコメントが流れていき、少し恥ずかしかったです(笑)
参加
そんなこんなで、ハッカソンに申し込み、翌日キックオフ。
ここでは、どういった形で参加するのかの事前のアンケートに答えるというのとどういうイベントなのかを教えてくれる会です。(このキックオフの直前にインターン合格連絡が来て飛び跳ねる程喜んでました。)
参加形態は大きく分けてしまうと「個人」か「チーム」の二つです。さらに、自分の開発に使いたい言語とか、テーマとか答えて終わりです。
後日チームが決まります。
で、アンケートに答えてさて、さっそくテスト勉強です!だらだらと余裕をかましている時間は無くなりました。(いや、のんきが過ぎる)
ということで、テスト勉強の傍ら、チームが決まりました。
僕たちのチームは5人チーム、そしてなんと一人の人以外みんな非情報系、そして、全員ハッカソン初参加というメンバーでした。
そんな僕たちのチームは「beginners」という名前になりました(笑)
(サッカーとYoutuber好きな人はオマージュが分かってくれるかも)
で、そんな僕たち5人は何をするかっていうことで、テーマを決めます。で、今回のテーマ5個ありました。
- 開発/スキル支援
- インフラ/セキュリティ
- オンラインコミュニケーション
- 世の中を楽しくする
- ゲーム
です。この中から選んだのは「開発/スキル支援」です。だって、他よくわかんないしね!
ということで、作るものを決めていきました。
そこで、決まった製作物が「レシート管理アプリ」です。
経緯としてはチームの一人が、研究室でまとめて飲食物を買って、それを研究室内部で転売していたのです(笑)その転売の管理を自動化したいという思いの元開発物が決まりました。
開発物が決まったので、担当が決まっていきます。
僕は、画像から読み取った文字から必要な情報を取り出す担当になりました。
1日目
で、これからさらにハッカソン当日まで時間があるので、テストをこなして、Pythonの「Flask」を勉強してたら1日目です。
まず、全体で顔合わせします。チームの代表者が簡単にチームの説明します。最初の方は単騎の人ばかり凄い....
となりながら、僕たちのところは、とりあえず、僕が簡単に説明しました。緊張して結構暗くなってしまった。
ということで、開会式が終わって、さあコードを書きます。
まずは、「日付」の取得からすることにしました。これが意外と面倒でした。
何故かというと、画像から文字を読み取るので、文字化けします。そして、日付の入力って全部同じではないのです。曜日があったりなかったり、とか、「%Y/%m/%d」みたいな標準的な形だったり、「%Y/%m/%d %H:%M」みたいに時間と分まであったりとかイヤー色々あるわけですよ。
そして、画像から文字を読み込むので文字化けします。特に日本語それも画数多いやつって思ったら(木)が(本)になって曜日がとれないっていうこともあったり。もう、「うわーーー!」ってなりましたね。気付いたときは。
でも、結局解決できました。冷静に分析したら
- %Y/%m/%d
- %Y-%m-%d
- %Y年%m月%d日
と時間と分の組み合わせだけでした。
なので、この日付と時間を強引にくっつけて、文字化けする可能性ある曜日は排除して、日付を取りました。
そしたら、うまくいきました。というところで、1日目の締めのミーティングです。
その後、他のチームの人と話す懇親会をして、チームでDiscordに集まって、連絡して、またやることを考えます。
僕の次の課題は商品の情報の取得です。しかし、時間はとうに9時を過ぎ、10時を過ぎどんどん眠くなります。そして、コードを書けないほど眠い。寝ました。
2日目
翌日8時に集合して、現状を確認しながら作業を再開します。眠くて、あんまり頭働いてなかったような気もしましましたが、徐々に眠気もなくなってまともにコード書けるようになりました。
ということで、商品の情報の取得作業をします。これは日付が出来たので、あと他の情報も応用が利きますね。
そう、出来ました。
しかし、時間がかかりましたね。分析する時間と精神力がいりますからね。まあ、それでも何とかやり通しました。
結果、「日付」、「商品名」、「個数」、「金額」という情報を取得できるようになりました。
でも、画像から読み取ったデータが文字化けしてるので、正しい入力は程遠かったですね。
そして、そこで僕の担当が終わったことと、ひとまず、結果を抽出できるという状態にこぎつけたので、優先順位の問題でバックの人がフロントにも回りました。
ちなみに僕はフロントほぼ触ってこなかったので、HTML内部でfor文を書けるのかも知らなかったのです。でも、ここでこそ競プロで培ったその場力の見せどころです。
「だって、プログラミングなんだから構造は一緒でしょ」という気持ちでfor文調べて実装しました。出来ました。
だけど、その他は手が回らずタイムアップ。
さて、発表資料の作成です。かろうじて、動くものが出来ましたが、問題多発で動画を載せるのは無理でした。
なので、画像をてんてこ舞いになりながら用意して、5人でひいひい言いながら1時間で発表時間2分のスライドを作ってました。
正直発表時間2分のスライド作るのは至難の業です。だって、2分だもん。何話すのよっていう話と、どう話したら伝えられるんだってことです。
まあでも、そこは、普段も発表資料が多くて、削らないといけない研究の発表資料の作成の時の経験とチームの協力で何とかストーリ性を保ちながら出来ました。
そして、発表もできました。(僕じゃなくて製作物のテーマを持ってきてくれた人が発表してくれたんですが)
結果は、残念ながら参加賞!(発表してアンケート答えるとみんな1,000円もらえるよ)
他の人強い、すごいってなりながら見てた。そして、発表資料も製作物も面白いものが凄く刺激的だった。発表資料は学会とかで絶対見ないし、使わないような奇抜なスタイルの物ばかりだし、2分の発表なのに分かりやすいしどれも面白かった。
ので、こういう風にかっちりしてるんじゃなくてエンタメの要素があるような場なら、インパクトがあって面白い資料を作りたいなと思った。なので、次回作ってやる!(笑)
感想
感想として実際どうだったのかというと、凄く楽しかったです!!
凄く濃い二日間でした。二日で18時間ぐらいコード書いてました。
めちゃくちゃ大変だったし、めっちゃ眠かったけど、出てよかった!
そしてまた出たいと思える凄くいいイベントでした!
サポーターズの運営の方々ありがとうございます!
また出ます!よろしくお願いします!
なので、まとめると趣味が一つ増えました!