今回のハッカソンプロジェクトのテーマと理由は?
現場ではチーム開発が基本であることから、チーム開発において必要な知識を得たい学習者は多いのではないでしょうか。自社内でもそのような考えを持っている社員が多くいたため、「ハッカソンプロジェクト」の実施に至りました!
ハッカソンとは、一般的にはITのスキルを持つ人たちが一つのチームとなり、期間内に開発したアプリやサービスの成果を競い合うイベントを指します。
今回社内で実施したハッカソンのテーマは大きく3つです。
1.チーム開発に使われるツールに触れてほしい
今回は「Docker」というツールを使用しました。Dockerは仮想化コンテナと呼ばれるもので、実際の開発業務においても用いられることが多いツールです。
Dockerに触れたことがあるのとないのとでは、現場での動き方に差が出ます。今回のプロジェクトの背景には、現場に入ったときに素早く順応できるように、チーム開発に使われるツールに触れてほしいという思いがあります。
2.チーム開発に必要な知識やエラーの対処方法を知ってほしい
チーム開発を実施する際は、ソースコード管理に気をつけなければなりません。プルリクエストでソースコードのマージが必要になりますし、マージコンフリクトなど複数人での作業で発生しうるエラーに遭遇することがあります。
これらの対処方法を学びたいという声は多いですが、プログラミングスクールなどではほぼ全てが個人作業となるため、実践的に学ぶのは難しいものです。
そこで、実際に複数人で作業をすることでチーム開発に必要な知識やエラーの対処方法を身につけてもらおうと考えました。
3.実際に開発業務を触れることで「自分が何を得意とするのか」を探してほしい
同じ開発系でもフロントエンドかバックエンドなのか、それともデザイナー系なのかをこれから考えたいというメンバーは少なくありません。
今回のプロジェクトは開発寄りですが、開発業務に触れてもらうのと同時に、どの方面の開発者になりたいのかを見つめてもらいたいと考えました。
当日実施した内容
今回のハッカソンプロジェクトで作成したアプリは「Boo! Boo! Book」です。メンバーで意見を出し合い、読書×育成アプリをrubyで開発しました。
プロジェクトは2021年8〜10月の3ヶ月間継続し、成果発表会を行いました。成果発表会でプレゼンテーションした内容は大きく分けて4つです。
1.アプリ紹介
内容|今回のハッカソンプロジェクトで作成したアプリ(Boo! Boo! Book)を紹介しました。
【初会登録画面】
【学習時間登録と、キャラクターのレベルアップ】
【書籍登録画面】
2.このアプリを開発した理由
内容|開発したいアプリの軸について、リーンキャンバスを作成して下記のようにまとめました。
【目的】
本アプリを使用することで読書がより楽しくなり、読書を習慣化できる
【想定ユーザー】
読書を習慣化したいと考えている人
【ユーザーが抱えている課題】
・読書習慣を身につけたいが、なかなか継続できない
・読書を続けるうちにマンネリ化してきて、習慣化する前に飽きてしまう
【ソリューション(課題解決)】
・読書量をアプリで可視化することで、読書に対するモチベーションが高まる
・読書を記録するとキャラクターが成長するので、習慣化が負担ではなく楽しみになる
【アプリの独自性】
・ありそうで無かった読書記録×育成ゲームの組み合わせ
3.使用ツール・開発言語の紹介
内容|アプリの開発にあたって使用したツールや開発言語を紹介しました。
【コミュニケーションツール】
Slack、Teams、Asana、Googleスプレッドシート
【開発ツール】
VScode、Docker、Git、GitHub、Figma
【使用言語・フレームワーク】
言語:Ruby、JavaScript
フレームワーク:Ruby on Rails、Bootstrap
DB:MySQL
4.プロジェクト実施期間(3ヶ月)に取り組んだこと
内容|プロジェクト発足から完成までの3ヶ月間(8~10月)に取り組んだことや、アプリ作成の過程で行った作業のまとめを発表しました。
ウォーターフォール型の開発を参考にして、発表内容は①〜⑥の順で進むという構成にしました。
①企画
・企画書(リーンキャンバス)の作成
企画会議で出たアプリのアイデアを元に、想定する顧客や課題、価値提案といった要素をまとめた企画書を作成する
②要件定義
・機能一覧表作成
企画書を元に本アプリに備わっているべき機能を洗い出し、一覧にまとめる
・画面遷移図作成
アプリの全体像を掴むために「どんな画面で構成されていて」「どの画面からどの画面に遷移するのか」を図にして描き表す
③基本設計
・アプリ仕様決定
アプリに使用する文字の色やフォント、ボタンの大きさや形といったアプリの仕様を決める
・テーブル定義図作成
アプリのデータベースの種類や形式を定義する
・E-R図作成
各データベース間の関連性を図式化する
④開発(※B=バックエンド、F=フロントエンド)
・開発環境の構築
開発言語のバージョン決定、dockerによる開発環境構築、ツール使用法のレクチャー
・ユーザー管理機能実装B
ユーザー登録、ログイン、ログアウト、退会
・admin(管理者)機能実装B
・本の登録機能実装B
書籍の登録、ステータス(読了・読書中・未読など)付与、メモ、読書時間
・キャラクター育成機能実装B
キャラクター(ぶたさん)の登録、育成
・読書時間の管理機能実装B
本ごとに読書時間を記録
・ページ作成(コーディング) F
HTML、CSS、JavaScriptを使用してページを作成
・アイコン、イラスト作成F
アプリに使用するアイコン類やぶたさんのイラストを作成
⑤テスト
・テストチェックリストに基づくアプリの動作やバグの有無のチェック
⑥デプロイ
・テストで洗い出した問題点を解決後、2022年1月中にアプリをインターネット上に公開
(今回は進行が遅れたため、プロジェクト期間内での本番環境への公開は保留としています)
研修の様子
週に一度、(土曜日の夜)定例会をTeamsで実施しました。研修というような仕事感のある硬い雰囲気ではなく、自主勉強の延長というラフな形で取り組みました。
定例会の内容は2つあり、1つ目は「Asanaでタスクをチェックしながら各々の進捗具合を確認・再割り振りすること」、2つ目は「エラー解決相談」です。
プロジェクトにはスケジュールを設けており、なるべく遅延なしで進められるように配慮しました。特に開発業務をスムーズに進めるために、要件定義などで決定する内容をきちんと言語化してドキュメントを作成しました。これにより、成果物に対して共通認識を持てるように工夫できていたと思います。
開発フェーズに入ったときは、エラー解決のための相談会としても機能していました。今回のプロジェクトで初めてDockerやRuby on Railsなどに触れるメンバーもおり、一人では解決できないケースがあったためです。
エラーの対処方法を共有できるうえに、口頭で説明することで知識のアウトプット力を高める機会にもなりました。「調べてみたけど解決できなかったんだよね」「今この状態で止まって先に進めないんだよね」という風に、ざっくばらんに相談できる雰囲気で進められたかなと感じています。
参加者の声
ここでは、プロジェクトの参加メンバーの感想をご紹介します。
なかにはプログラムを初めて触るメンバーもおりましたが、実際に教えることにより、ツールの概念や使用方法を言葉にして説明する力が身につきました。また、アプリに実装する機能とそのアイデアが非常に秀逸で、それは自分には思いつかないものでした。
『その機能を実装してやろう』という気概につながり、コーディングスキルも非常に高まったと思います。また、優れた画像をデザインするメンバーもおり、アプリデザインもより洗練されていきました。
なお、多種多様なスキルを持つメンバーとプロジェクトに臨むことができて非常に勉強になりました。特にプロジェクトのマネジメントに関しては、スキル不足もあってスケジュール通りに進行できず、プロジェクトマネジメントの難しさを感じました。
メンバーには、いきなりGitやDocker、Ruby on Railsなど概念もわからないようなツールに対して積極的に取り組んでいただき感謝しております。
本来なら学びたい言語やフレームワークがあったにもかかわらず、今回のプロジェクトのためにDockerやRailsの概念をたった3ヶ月で一気に学習してくれました。エラーなどがあっても積極的に質問や相談をしていただき、非常に心強かったです」
「アプリができるまでの流れの理解が深まりました」
「チームでの開発に必要なツール(DockerやGit)の大まかな使い方を知ることができた」
「自分がやったところがプロダクトに反映されることで嬉しさを感じるとともに、自信がついた(HTML、CSSのコーディングなど)」
「チームでやるからこそ、今の自分に足りないところがよくわかり、今後の勉強のモチベーションにつながる」
「独学ではなかなか経験ができないチーム開発に携われました」
「企画書、要件定義書といった開発の前段階で作成が必要なものを作る経験ができました」
「チームで何かを作成するということがプロジェクトを通して1番勉強になりました」
「アイデアを出し合ったり意見を交わしたりしながら練り上げていく工程は、個人ではなかなかできないので非常に貴重な経験となりました。
また、プロジェクトを進行させていく中で新しいツールを使ったり、新しいことを勉強したりするのは自分のスキルアップにもつながりました。社内のメンバーと交流ができたのも良かったと思います」
最後に
不安だらけで始まったプロジェクトでしたが、メンバー同士の交流が生まれ、各々の得意分野で才能を発揮するなど、想像以上の効果をもたらしたと考えています。
社内でも中間報告を含め三度も発表の機会を与えてもらい、「徐々にアプリが完成していく様子が楽しみ」など励ましの言葉を数多くいただきました。
今回のプロジェクトが、参加者にとってキャリアパス決定や知識の獲得などのきっかけになれば幸いです。