ハッカソンダービー

OVERVIEW

ハッカソンで優秀賞を取るのは誰か!?チームでやろう無駄開発!

YEAR 2021
  • 発表スライド



  • 概要

サポーターズ開催、ハッカソンVol.4 "無駄開発"に挑んだ時に作ったもの。

https://twitter.com/geek_pjt/status/1406526610837164036?s=20

GitHub:https://github.com/oOMIKANOo/Hackathon_0619

今回、自動でチーム分けをしてもらって組んだチームで、開発した。(そのため、チームメンバー全員、初対面...)

最近、ウ〇娘プリティーダービーなるゲームが話題となり、その影響で競馬にも注目が集まっていますね。

そこで私たちのグループは、「賭け」をテーマにしたものを作ることを決定。

ハッカソン 成果発表会後に発表される「優秀賞」と「努力賞」の受賞チームを、参加したチームのみんなで予想できるwebアプリを作ることにした。


  • 技術

各メンバーの経験した技術スタックから、使用する技術を選定。

期間が二日だけだったので、当初使うと決めていたdockerが使えなかった....

やっぱりちゃんとdockerを勉強しないといけないなぁ....

Front:Vue+Nuxt.js+AXIOS+Vuetify+Vercel

今回、自分が担当したのはバックエンドなので、フロントの技術が説明できない....

今までフロントを触ったことがなかったので、今回のハッカソンでフロントがどういう感じで動いているかがようやくわかった気がする。今までVueとかReactとかが何やってるのかわからなかったんだよなぁ...

今まで単語として聞いたことがあった技術が、どう使われているかを理解できるというのは、ハッカソンの強みだな

今までフロントやろうと思ってなかったけど、フロント触ろうと決心した。

(とりあえずVueかな...)

Back:django REST framework+SQLite+Azure

ホントは、Azureを使うつもりはなかったが、HerokuはSQLiteに対応してないっぽい(有料....)

データベースをSQLite以外にするか、デプロイ先を他にするかという選択に迫られることになった...

Qiitaとかを見てみるとSQLite以外を使う方法も書いてあったが、面倒そうなのでデプロイ先を変える方針に。(djangoのデフォはSQLiteだし...)

とりあえずPythonAnywhereを使おうとしたが、うまくいかない....

djangoをPythonAnywhereにデプロイする方法はたくさんネットに上がっているのだが、django REST frameworkに関する記事は本当にない。


これが本当に困った。

しかし、ここでチーム開発の強みが出た。

もう一人のバックエンドのメンバーがAzureを使ってデプロイを行い、これがうまくいった。しかもAzureにデプロイするのに、Herokuと同じようにGithubから直接デプロイできるっぽい。


メンバーが神に見えた...



  • 反省点

・知識がなかった。

djangoに関する知識はあったつもりだったので、django REST frameworkも同じだろって思ってしまった。実際に触ってみると、まったく別物だと感じた。まず、ファイル構成を見て「serializer.pyって何?」ってなった。ここで、APIを作った経験があれば、すぐに理解できるのかもしれないが、残念ながら今回が初API作成。当然、ググって悩むことになった。そして、django REST frameworkの記事が圧倒的に少なかった。日本語の記事ばかり見てきた人間からすると、「詰み」に近かった。Google翻訳さんと協力して頑張ったが、未だに確固としたイメージが湧いていない...そして、GETとかPOSTとかも知っていた"つもり"だったということが実感できた。

  • 役割分担が守れなかった。

バックエンドの役割分担を作業前にある程度決めていたが、前述の知識の無さが原因でほとんど意味がないことに...

最終的にバックのコードを書くのが自分で、デプロイするのはもう一人のメンバーといった形になったが....

  • 予定していた機能のすべては実装できなかった

時間と経験の無さが原因で甘い見通しを立ててしまった。デプロイはエラーの地獄だったし、思った通りのレスポンスが得られないし...


  • 良かった点

  • 実装できそうな機能に絞って開発できたこと

前述した反省点と矛盾しているが....

実は計画当初はもっと機能がてんこもりだった。(コメント投稿機能とか....)

ただ、限られた日程でできそうなことだけに注視して作業を行うことにしたので、当初の予定通りでいくともっと悲惨な結果になっていただろう...

こういったスプレッドシートを作ってMVPを決めることで、その作業に注力できたと思う。(最終的にはそのMVPも完璧に実装できなかったが...)

  • 情報伝達がある程度うまくいった

ハッカソンが行われる土日までに、三回ほど話し合う場を作ったことで、作るものの方向性はしっかりと固められたと思う。議事録も残しておくことで、会議に参加できなかった人でも話についていけるような工夫もとれた。


こういうものを残すことは、自分の記憶の整理や論点の整理に役立つことがわかった。面倒だが、やるべきだ。

HackMDとかいう便利なサービスがあったので使った。今後も使いたい。


  • 感想

初めてハッカソンに参加したが、参加して良かったと思える素晴らしいものだった。初対面の人と作業をするというのは難しいこともある。(コミュニケーションの部分で...)

けれども、今後社会に出ていくときには必要なスキルだと思うので、この難しさを早く体感できたのはよかったと思う。

また、自分と同年代の人たちがどういう技術スタックを持っているかや技術的に自分が雑魚雑魚であるということが再確認できたのも大きかった。こういうときに感じた焦りを原動力に、技術のインプットを頑張りたい。

技術的な収穫だけでなく、意思伝達の取り方も大きく学べた。機能要件のスプレッドシートは作ったことがなかったので、今後個人開発でも取り入れていきたい。また、議事録の書き方も参考になった。こういう部分は他人の良い部分を盗んでいくことが、上達の近い道だと信じてやっていこうと思う。

あと、自分のアイデア力の無さに軽く絶望した。今回のテーマである「無駄」というものに対して、プログラミングを行うといった視点は自分から抜け落ちていることを痛感した。自分にとって、プログラムは「不便」を「便利」にするものという見方しかなかった。良い解決法は思い浮かばないが、とりあえずTwitterやQiitaで情報感度を上げておこうと思う。

いい刺激を提供してくれたサポーターズに感謝しつつ、今後もエンジニアとして生きていくために必要なものを学ぼうと思った。