こんばんは19年度入学のryohaといいます。
今回はtraP SysAd班で開発した部内備品・書籍管理サービスについて以下の紹介をさせていただきます。
- 開発の背景
- 開発環境
- サービスの概要
- とりあえずリリースをした現状での評価
- 今後について
よろしくお願いします。
開発の背景
発端は18年度の部内春ハッカソンで書籍の貸し借りができるサービスというアイデアが出たことでした。
このアイデア以前にも部内で書籍の貸し借りはありましたが、下画像を見ればわかるように不便でアクティブなものではありませんでした。[1]
このアイデアに、管理が下のようにアナログだった部内の備品管理[2]を加えて、18年の秋ごろまで開発が続けられました。
しかし当時の開発陣の多忙化、DB構成の欠陥の露呈があり開発が中断されました。
そして19年度に入りSysAd班にも未経験者が新たに増えたということで教育も兼ねた[3]booQの開発が決定しました。
開発陣には唯一の16年度入学で第一次の開発にも参加したnagatechをリーダーに、19年度入学かつプログラミング未経験のAdwaver_4157,ryoha,series2[4]を据えて、19年の7月中旬から開発が始まりました。
納期は備品の出入りが特に活発になる大学の学園祭[5]の準備日の前日(10/10)まで、ということになりました。
開発環境
サーバーサイドはGolangで開発していて、主なフレームワークとしてechoとgormを用いています。
クライアントサイドではVue.js、Vuetifyを主に使用しています。
開発はdocker上で行い
- サーバーサイドはCircleCIを用いた単体テスト
- masterブランチのステージング環境への自動デプロイ
という機能を持たせました。
そしてGitHubを利用[6]し、プログラミング未経験者の教育のため
- taskはできるだけ細かく分けてissueに
- プルリクエストは2人以上がapproveすればマージ可能に
- できるだけ早くコードレビュー
という制約を基準として運用しました。
サービスの概要
外部に公開する予定はないので少しだけですが説明します。
物品登録ページで物品を登録できます。
本ならISBNコードの入力で画像と説明文が自動入力され、バーコードでの入力も可能です。(一瞬で読み込まれるためいいスクショが取れませんでした)
物品の名前で部分一致検索ができます。
結果画面から物品の詳細に飛んだり、備品ならカートに入れてまとめて借りることができます。
ホーム画面では現在借りているもののリストを返却予定日がカレンダーで表示でき備品ならまとめて返すことができます。
アクションをするとtraQ(部内内製Slackライクなアプリ)に通知が飛びます。
というものです。
開発開始時に必要だと思われた最低限の実装はできたと思っています。
現状での評価
良かった点
- 初心者が多いプロジェクトだったにも関わらず納期に間に合った
進捗管理や開発環境の整備等は16のnagatechがやっていましたが、開発環境完成後は新入生のコードが半分以上を占めました。
経験者のワンマン開発とはならずに納期に間に合ったのは良かったといえると思います。
- テストを書く習慣が身についた
これは本プロジェクトの目的である「新入部員の育成」の一部は少なくとも満たすのかなと思います。
テストを書くことで当然ですが、「実は動かなかった」ということをかなり軽減できることを身をもって学べました。
悪かった点
- リリースしてから気づくバグの嵐
仕方ない部分ではありますがちょっと多い気がします。
例えばホーム画面が正しく表示されないバグがあり[7]そのバグを直したら借りていない物品もホーム画面に表示されるというバグが発生しました。
これはログイン中のユーザーの取得がうまくいっていないせいで、リリース直前に書いた関数が原因でした。[8]
今後について
当然ですが開発自体はまだ続けます!
仕様にあったタグ機能もまだ実装されていませんしバグもたくさんあると思います。
幸運にもfeedbackをいただいてるのでそこも勘案して改善していけたらなと思っています。
最後に
僕は今回のこのプロジェクトでそれなりに多いコードを書くことができて一歩成長できたと感じました。
納期直前の「このままじゃヤバいから気合い入れないと」みたいな雰囲気もひと段落ついてみれば楽しかったなと思えます。
このような環境を用意してくれたtraP SysAd班、nagatechさんには感謝の念が絶えません。
そして一緒に開発した19のみんなにはいい刺激を受けました。
メンバー全員に色々迷惑をかけましたが、全体を通して楽しく開発できました。ありがとうございました。
確認したら最終更新日が2019/11/05でした。 ↩︎
これはSysAd班内製のSlackライクなtraQというアプリでやりとりされていてtraP SysAd TechBookに詳しく解説されています。必読! ↩︎
教育された側が言うのもおかしな話ですね。 ↩︎
敬称略でアルファベット順に並べています。メンバーは立候補制でした。 ↩︎
結局台風で両日吹っ飛びましたが... ↩︎
ここも詳しくはtraP SysAd TechBookに書かれています。必読!! ↩︎
ステージング環境で気づくべきでしたがこれの実装が当日朝6時くらいで怠っていました ↩︎
リリース直前に書いた関数は当時テストを書いていなかった...テストを書く習慣とはいったい、現在は書いています ↩︎