こんにちは。この度Qiita初投稿をしてみようとおもいます。Ryotaです。
今回は関西ビギナーズハッカソンにチーム甘党として参加し、初ハッカソン・初開発で優秀賞をいただきました。その時の感想などを書いていきたいと思います。
目次
1.初ハッカソン感想
2.初めての開発・チーム開発について
3.今後に向けて
1.初ハッカソン感想
- 感想
- 初ハッカソンの感想は記事タイトルにもあるようにめちゃめちゃ楽しかったです。
- 大学一回生を締め括ることができた気がしていて、とても嬉しいですし、一緒に2泊3日開発をしてくれたチームの皆様、本当にありがとうございました。
- 今回のハッカソンは、オフライン開催で2泊3日の合宿ハッカソンということもあり、チームの方々との仲も深まり、オフラインでしか味わえないような楽しいチーム開発経験ができ、とても楽しい思い出になりました。
- 僕自身初めての開発、初めてのハッカソンということもあり、技術的な力不足による不安や全く面識のなかった人とチームを組んでやっていけるのかという不安もありましたが、不安に思ってたことを忘れてしまうくらい楽しい三日間でした。
-
ハッカソン全体を通して感じたことですが、どのチームも活発にチーム開発をしている印象を受けて、ハッカソン全体でとても楽しい空間でした。一つの作品に対して、いろんな意見が飛び交い、オフラインチーム開発だからこその話し合いの盛り上がりがとても面白かったです。
どのチームの作品も面白い着眼点があり、発表の仕方であったりとか、今後に活かせるようなことも今回のハッカソンを通してかなり吸収できていると思うので今後につなげていきたいです。 - 運営の方々、その場で助けていただいたメンターの方々、スポンサー・審査員としてハッカソンに参加していただいた企業の方々にはこのような機会を作ってくださったこと本当に感謝しています。ありがとうございました。
2.初めての開発・チーム開発について
- 今回開発した作品
-
今回開発した作品はTidyというストレス解消アプリとToDoリストを合わせたようなアプリを作りました。
-
課題設定・コンセプトとしては、日々膨大なタスクをこなしている現代人の人のために、ただ課題をToDoリストに書き、黙々とこなしていくだけでなく、課題をこなす際に楽しくなったり、気分をリフレッシュできるようなものがあると、どんな仕事でも乗り越えていけそうという点に着目しました。
-
アプリの機能は大まかに
- ホーム画面
- ストレス履歴
- ストレス追加画面
- ストレス解消方法選択画面
- ゲーム画面
- 結果画面
の6画面がメインです。さらにゲーム画面が4つのゲームに分かれています。
-
この中で僕が携わったところがストレス解消法選択画面・ゲーム画面4つのうちの潰すという項目・結果画面の三つと文字が長すぎると文字の末尾に・・・を入れるところも携わりました。
-
この中で僕が特に携わった潰すゲームのこだわった点を書いていこうと思います。
-
こだわって点はプチプチ包装を使うことです。潰すだとストレス解消法にプチプチ包装以外にも他のものを思いつく人もいると思うのですが、最近プチプチ包装に包まれて、荷物が届くことが少ないと思います。
-
そこでプチプチ包装を用いて、見たことがある人にはプチプチの懐かしさを思い出してもらいつつ、見たことがない人には、プチプチの気持ちよさを味わってもらおうと思いました。
-
プチプチっぽく見せるために意識したところは、破れた時の音と破れた後にスマホがブルっと振動するところです。音はインターネットからフリー音源を持ってきたのですが、プチプチの感覚には後程今回使った開発言語・開発環境のexpoのライブラリの一つを使っています。
-
皆さんはスマホの顔認証がうまく判定されなかったり、指紋認証がうまくいかなかった時にスマホがブルっとなると思います。その機能を使っています。
- 使用言語について
-
今回のチーム開発では、
- Reactnative
- typescript
- expo
をメインに使って開発を進めていきました。
僕が元々勉強を進めていた言語やフレームワークがHTML・CSS・JavaScript・Reactだったのでハッカソンの時は少し違うものになってしまいましたが、自分で学習をしていたことが少し生かすことができ、とても達成感のある開発でした。
ただ、JavaScriptには型をあまり書かずに開発しますが、TypeScriptだと型が必要になってエラーを出してしまい、開発が難しいと思っていましたが、開発しているうちに慣れてきてハッカソン終盤の方では少ないエラーで乗り越えることができていたのでよかったです。
バックエンドの機能の実装ができなかったのが悔しいところで、開発する時間が足りなかったのもあるのですが、バックエンドに関しては全く知識がなくて、時間があれば実装してみようという流れになってしまったことが非常に悔しく思っています。
- チーム開発時の感情の変化の楽しさ
- 初めてのチーム開発はやはり最初はとても不安でした。技術的な不安もありましたが、チーム開発の立ち回りがわかっていない状態だと何を話せばいいのか、自分が今何をするべきなのかなど、わからないことだらけで不安でした。
- ですが、初ハッカソンの人が多かったこともあるかもしれないですが、初めましての人と何かをする時に不安がない人はいないです。この不安を乗り越えてチームで開発できたからこその達成感があり、ここが一番楽しく、面白いポイントでした。
- 初めて本格的にgithubを使ったことについて
- チーム開発で一番大変だったことがこのgithubでした笑。
- このハッカソンに参加する前に少しは使っていたのですが、具体的に何をすればいいのかわからず、ハッカソン前までは月に一・二回使っているような状態でした。
- 所属しているサークルで事前にgithub講座があり、それで一様使い方を学んだはずだったのですが、使わないと忘れてしまいます笑。
- おそらくチーム開発あるあるだと思うのですが、たくさんコンフリクトを起こしました。コンフリクトを起こしてしまうのは仕方ないですが、fetchを行わずにpullしてしまうとうまく自分のパソコンの方に反映されないこともあり苦戦しました。pullは英語の意味的にわかりやすいですが、fetchはあまり馴染みがない単語だったのでとても忘れやすかったです。
- githubを使うことはとても難しかったですが、githubを使うことに慣れることができたので今後にかなり活かせると思います。今回のチーム開発でしっかりと学ぶことができたので、今後の自分のプログラミング学習でもgithubを使った開発を意識していきたいです。
- チュートリアル学習と実際の開発との壁
-
今回のチーム開発は自分一人では絶対にできていないことも経験できたと感じています。自分はハッカソンに向けて、いろいろなサイトやYouTube、Udemyなどを使い、ハッカソンまでに少しでも自分の実力を上げようと頑張ってきました。
ここでハッカソンまでに頑張った学習はしっかりと活かせ、自分の中でも頑張ってよかったという気持ちがあるのですが、実際の開発でしか身に付かないことや使ったことがない知識などがあり、まだまだ自分の力不足が目立つ場面も多くありました。
チュートリアル学習で知識の基礎を学習することも大事だとは思うのですが、今回のハッカソンを通じて、開発もしっかり経験を積んでいかないといけないと気づけたことが今回のハッカソンで一番大きな自分に対してのフィードバックかなと思っています。
アウトプットとしても何かを作りながら行っていくチュートリアル学習を行なってきましたが、このチュートリアル学習を終えた段階でさらにもう一歩進んで一からその技術をつかって何か開発することがものすごく意味のあることだと感じたので、今後の自分のプログラミング学習に繋げていきたいです。
今回のハッカソンではチームの作品を実際に審査員・メンター・自チーム以外のハッカソン参加者の人にも触っていただく機会があったのですが、そこで皆様が自分たちが作った作品を使っている様子を見ることができて、開発がすごく楽しかったし、大きな達成感に変わったので、どんどん開発をしていって自分の作品を多くの人に触っていただきたいです。
自分の作品を使っていただいている姿を実際に見られたり、使った相手の反応を見られるところもオフラインハッカソンでの開発のいいところだと思いました。
- プログラミング能力だけが全てじゃないことについて
-
今回のチーム開発や他のチームの発表を聞いていてものすごく感じたことなのですが、プログラミング能力だけが全てじゃないと感じました。
重要なのは社会の課題点を見つけ、それをしっかり自分の作品に反映できているかどうか、その反映できていることを自分の発表で表現し、相手に伝えきれているかどうかだと思いました。
プログラミングができることももちろん大事だし、プログラミングができれば、発表資料作りに多くの時間を割くことも可能です。
しかし、今回のハッカソンを通じて、プログラミングはあくまで自分が発見した課題点を解くための道具に過ぎないということを感じ、プログラミング能力ばかりに囚われすぎるのもよくないと感じました。
プログラミングができるからといって、相手にその凄さが伝わるかといったら100%は伝わらないと思います。
プログラミングがわかる人が見ると伝わるかもしれませんが、例えばみなさんがアプリを使うときに常にそのアプリに構造がどうなっているかなどを意識しながらアプリを使う人は少ないと思います。
皆さんが無意識に意識しているところは、アプリのデザインであったりとか、自分が困っているところに対してピンポイントで解決できるようなアプリであったり、流行しているアプリなどだと思います。
生産者意識を持つことの重要性ということがすごく身近に感じ、自分の中で少しだけ社会の捉え方・考え方が変わったような気がしました。
- 英語学習の重要性について
-
開発中に分からないことは多く出てきます。
分からないことが出てきた時の対処方法として、検索をかけて技術記事を読むことが一番多いと思います。
調べ方が悪かったかもしれないですが、Reactnativeでさらにexpoの記事はあまり出てきません。
そういった中で、英語をある程度読めるとかなり検索の幅が広がり、自分でエラーを解決できることが増えます。
どうしても分からないことはメンターの方に質問する方がいいのですが、メンターの方もいつでも手が空いているわけではないですし、自分で解決することができると、自分がスキルアップしてる感じをより強く味わえます。
また英語の記事を読むだけでなく、フレームワークの公式が書いているドキュメントも英語で書かれているので、積極的に読むと、ハッカソンでの技術力アップに加え、これからの開発にも活かせると思います。
自分自身英語が苦手なのですが、ハッカソン中はチームメンバーが英語のドキュメント読んで開発しているのを見て、自分も真似をして積極的に英語のドキュメントに目を通しながら開発することを意識しました。
どうしても分からない英語があると思うので、そういった時は自分の解釈が間違っていないか翻訳をかけて読むと良いと思います。
3.今後に向けて
-
今回のハッカソンではフロントエンドがメインでした。
開発時間もかなりギリギリで睡眠時間が2時間30分になってしまった日もありました。
より良い開発時間配分に向けて、フロントエンドのみのプログラミングだと役割が被ってしまうことも多く、後半になってくるにつれて、自分のところの機能が完成し、他の人も完成しつつある状態でフォローを入れるよりも別の機能を追加するか、発表資料作りを先に進めておくかといった時間になってしまいます。
そこで、バックエンドの技術をうまく使えるようになることで作品の完成度を上げつつ、より時間を無駄にしないような開発時間配分が組めると考えています。
今後の自分でプログラミング学習を進めていくときは、学習しているプログラミング言語を使っての実装もそうなのですが、いろんな機能を追加しながら、幅広い開発を心がけていきたいと考えています。
自分で開発するときも、デザインの勉強などもしつつ、しっかり課題設定ができているかどうか、それを伝えるための資料作りができているかどうかなど、より生産者的視点を含めた開発をしていきたいです。