はじめに
こんにちは、2017年BNの張です。
四月からセプテーニ・オリジナルに入社しました。
入社してから半年も経ち、毎日充実した研修生活を送っています。
色々な研修がありましたが、その中でも2ヶ月で行ったチーム開発について書きたいと思います。
チームメンバーは新卒3名、それぞれに先輩のメンターがついてPOも別でいます。
開発内容 - Eコマースサイトを作る
チーム開発の課題は、Eコマースサイトを作ることでした。あらかじめ最低限の要求(ストーリー)が用意されていましたが、フレームワークやアーキテクチャなど、どのように開発を進めるのかは全部自分たちで決めました。
目標は「2ヶ月でとにかく動くものを作る」でした。
最初心配していたこと
開発の経験がないので、全く土台のない状態で一からどうプロジェクトを始めればよいのかが想像できませんでした。
チームワークなので、うまく進めるのか、自分がやっている作業が時間内に終わらせることができるかどうかが心配でした。
開発準備
- 開発に入る前
PlayFrameworkの勉強を一週間かけてやりました。主にDocumentを読みながら、サンプルコードを読んで、手を使って実際に動けるものを作ってみました。
BootstrapのDocumentも読んで、Viewをどうやって作っていくかを学びました。
- 全体的なプランニング
三人で初めてのチームミーティングを開きました。
やり方はほとんど経験の一番ある人が決めてくれました。(PlayFrameworkを使うや、Viewの方はBootStrapを使うなど)。POと定期的に相談することで、アドバイスなどをもらいました。
開発の流れ
設計
チケットの追加:ストーリを分析し、チケットを追加し、サブタスクを作りました。
画面の設計:実際にどんな画面を作っていくのを決めます。紙に書いて、POにみてもらって確認してもいました。
データーベースの設計:テーブルを全部羅列し、テーブルの内容まで決めました。
見積もり:一つ一つのチケットにどのくらい時間がかかるのかを見積もり、プロジェクト完了までにかかる時間を予測して計画を立てました (全てやると8月21日に終わり、省エネプランなら8月14日に終わる予定でした。予定通りでしたらちょうど8月中旬に終わりそうでした)。
スプリント決めとタスクの振り分け
タスクの重さを整理してから、スプリントも決めました。今回のスプリントはほとんど一週間を1イテレーションとしました。(コーディングとレビュー、レビュー修正の時間も含まれてます)
一つのスプリントが終わり、次に入る前にミーティングをし、振り分けをします。振り分けは、機能や内容に合わせてタスクを振り分けていきます。
コーディング開始
最初の作業:自分は最初にViewの部分を触りました。BootStrapのDocumentを読みながら、最初はサイトのヘッダーを作りました。しかし、それはViewの部分だけで、実際にデーターベースコントローラの部分は触っていません。
未経験の作業に入る:一つの機能を全部やらないとこの研修の意味もないと思い、商品部分の機能をやってみました。まずは商品の登録機能でした。まずPlayFrameworkのサンプルコードを読んで実際に書いてみることから始めました。動くまでは色々なエラーが出てきて、最初はどこから手をつけていけばよいのかわかりませんでした。メンターさんに助けてもらい、エラーの原因を一緒に探し出し、直しました。そのあとは商品の編集、削除など、それに商品カテゴリーに関する機能も実装しました。作業を進めるにつれてだんだんと理解が深まり、より早く実装ができるようになりました。自信がつき、不安が少し消えました。それからは新しいスプリントに入り、自分は商品名とカテゴリーで商品を検索する機能の実装をしました。そこまで割と順調でした。
二人のチームになった:8月中旬にメンバーの一人が先に配属され、残った一つのスプリントは二人でやることになりました。リーダーが抜けてしまったので、また不安になりました。残った機能は主にメッセージ機能と、購入する時にポイントを使用する機能でした。自分はメッセージ機能をやりました。メッセージはアプリケーション内で完結する機能だったので、これまでに得た知識を生かすことで案外早く実装を終えることができました。そのあとは色々バグを探し出し、直したりバックログのチケットをやりました。最後の発表は順調でした。
躓いたこと
Documentを読んでも実際に書かないとわからないことが多かったです。
チケットのやり方のイメージがなかなかつかなかったです。
パラメータの数が多くて、途中書き忘れがちで、エラーが出てきます。
エラー処理の種類が多くて、どのようにViewにうまく表示させるのに工夫しました。
どのように解決したのか
自分の場合、要するには勉強すること、サンプルコード読むこと、自分で調べること、人に聞くことです。うまくやっていくためには勉強することが必要で、勉強する方法も重要です。時間が少ないため、サンプルコード読むのが一番早いと思います。サンプルコードを読み、真似しながらやっていくと割とスムーズでした。もちろんそのあと、なぜそうなるのかを説明できるように勉強する必要もあります。エラーが出る時は、直接に聞くと早いと思いましたので、メンターさんにエラーの解決法を教えてもらいました。結果、自分もエラーを解決することができるようになりました。
開発で学んだこと
やる前に設計をちゃんとやる:今回の開発でスムーズに進めることができたのは、きちんと設計を行ってからコーディングに入ったおかげだと思います。
プログラミングスキル:学んだScalaの知識は応用できてよかったと思います。それに、昔はコードの書き方や命名規則など全然気にしていなかったのですが、今回のチーム開発を通し、「分かりやすいコードを書く」を意識しながら書きました。これから、綺麗なコードが書けるように頑張っていきたいと思います。
他人の力を借りること:時間は有限です。今回は他人に聞かずに長時間自分で調べたりして、失敗してしまう経験がありました。もちろん自分が考えて調べるのが非常に重要ですが、時間を浪費するより先輩に聞いた方がいいと思います。
感想
大変な二ヶ月でしたが、貴重な経験をすることができて本当によかったと思います。
未経験の作業ですが、なんとか勉強してから完成できましたので、少しでも達成感を感じました。
確かにコミュニケーション不足やわかっていないことを共有できていなかったという色々な問題点もありましたが、今後の作業で注意できると思います。今回の開発から学んだこと、少しでも身につけたスキルなど、今後の開発で活用できればと思います。