Bel*log

プログラミングと読書たまに麻雀。

案件に配属され実装とテストを書いて思うところ

はじめて詳細設計書を書いて製造に入ってから2ヶ月が経ちました。12月に入っていきなりインフルエンザにかかって丸一週間休んで進捗やべえやべえ言ってましたが、今は進捗出すマッスィーンになっています。
詳細設計書を書いていた時とはまた違う問題点があり、将来自分がプロジェクトマネージメントをするならどう対応するか、考えられる機会にはなりました。

  • 詳細設計書通りに実装しても動かない????

自分ははじめ、詳細設計書を細かく書きすぎたせいで、こんなことが発生したのだと思いました。
しかし、細かく考えて作成した詳細設計書がそこまで悪いとも思いません。オフショアも使うのですから。


一つの対策案としては、詳細設計書を書いているときにプロトタイプのコードを書いて実際に動かすべきだったのではと思います。
プロトタイプのコードを書いてさえいれば、いちいち詳細設計書を修正せずに済んだ箇所が無数にありますし、それぞれが最初に書く機能でいきなり躓くこともなかったでしょう。使用するFrameworkに慣れ親しんでいる人が1人いればその人に工数を振って書かかせれば良い。今回のプロジェクトでは、そういう人がいなかったのも問題点といえば問題点ですが、理想は現実とは違う。

  • プロジェクトの共通部分がクソ????

プロジェクト共通で用意しているところの入力チェックアノテーションがダメだったりドキュメントがダメだったり。こっちでいじれないところがクソだとQAでボロクソ言うしかないです。良い子の皆はドキュメントちゃんと書こうな。反面教師にします。

  • プロジェクト独自(追加)のコーディング規約

Excelファイルであるのはいいけど、時系列順に書いていってるだけなので非常に見づらく、とてもコーディングしている時にしっかり参照して欲しいとは思えない構成。せめてhtmlではこう、とかControllerだとこう、とか分かれてたらいいのに。自分でプロジェクト管理するならちゃんと分けようと思いました。

  • レビューの持って行き方、やり方

終わらないレビュー。終わらない修正。これをなくさないといけないです。
レビューはとても大切な工程だと思いますが、時間のかけ過ぎはアホらしい。
実際、今はレビュー工数が大変なことになっていて負担になっています。ここまでくるとやり方に問題があります。


プロジェクト全体でどういう方針でコード書くのかを共有し、レビューもその観点で見る。その役割がコーディング規約だと私は理解しています。ちゃんとしたコーディング規約を作ることが第一ではないでしょうか。
あとは大体コミュニケーションで解決できる問題だと思います。
レビュー依頼する前にレビュアーにちらっと見てもらうとか、こんな感じの方針でいいですよね的なジャブを打ってレビューでの指摘を減らす。レビュアーもレビューイも指摘事項が減れば楽です。
新人の私はまだ指摘事項が多かったので、次回からは気をつけたいと思います。
今は指摘事項が多い分だけ、自分の"気をつけるリスト"が充実するので、今回のプロジェクトではガシガシ指摘してくる人にコードレビューして頂いてすごく良かったです。

  • タスクの振り分け方

機能で似たようなところなどは、コードが再利用できたり、考える事が似通っていたりするので、出来る限り同じ人がやるべきだと思います。違う人がやったり、同時進行で別々の人が開発を進めたりするのはとても効率が悪い。
これもプロジェクト管理する側になったら詳細設計書を全部読んで、ちゃんと判断したいと思いました。

  • 単体テスト
    • JUnit…「プログラミング現場の単体テスト」と「JUnit実戦入門」読めばいいのでは。あとは実践あるのみな感じします。オールグリーンは楽しい。
    • DBUnitSpring FrameworkだとDaoのテストで使います。データベースいじるクラスをテストするためにはテストデータが必要でテストの前に元のデータバックアップしてセットアップしてテスト終わったらバックアップからデータをリストアする。今回のプロジェクトで共通部分がクソだった箇所でもあります。なんでデータをバックアップして戻さねーんだよアホか!
    • JMockit…今回のプロジェクトではServiceのテストで使いました。DaoとかHelperとかMock化してresult定義してあげたらそれをServiceのメソッドで使ってくれる的な。たぶんコード見たほうが理解は早いです。JMockitについては下の記事がよくまとまっています。


Java - JMockit使い方メモ - Qiita

テストケース考えるのはいいんですけど、テストデータ作るのは時間かかるのであまり好きでないです。さらに正確に言えばテストデータの修正がだるいです。


今月は稼動があと2日ですが、1月末までに割り振られている自分のタスクはほぼ全部終わりそうです。あともう少し頑張ります。