オブジェクト指向的をやってみた。
業務で、複数のファイルから、情報を抽出するツールをオブジェクト指向的に開発してみました。
具体的には、要件定義→設計→実装まで2日かけて進めた。
最初の工数見積もり
今回、手で作業して目視で数値算出することもできたが、工数見積もりの結果ツール作成した方が早いか、トントンくらいだと見積もりました。
手作業でやってみた結果8h程度かかる見積もりで、ツール開発については、設計、実装、テスト、実行それぞれ2hくらいだろうとざっくり見積もりで算出しました。
結果から言うと、やはり見積もり以上に工数がかかっていることがわかりました。
その原因を分析したのでここに備忘録的に記載します。
要件定義
まず、考慮不足だった点は、要件定義をざっくり見積もりの段階で入れていませんでした。実際には設計の前に少しかかる程度だろうと、始めつつも考え、結局0.5h程度かかりました。
比較的簡単でも、0.5hはかかってしまったので、残り7.5hと見積もりが小さい分、誤算でした。
今後は、必ず、要件定義の時間を簡単でも0.5h程度、見積もりに入れたいと思います。
設計
今回は、オブジェクト指向的に開発を進めるために、UMLのクラス図・シーケンス図を作成しました。そもそも、クラス図をまじめに書いたことがなく、少し苦戦しました。またEnterprise Architectというツールを当部署では使い始めています。ですが、私は、あまり設計・実装・評価などは、主たる業務内容ではなく、あまり深く触れていませんでした。
ということもあり、非常に作るのが難しく、予定通り2hかけて終了となりました。
残りは5.5hです。
実装
今回はツールをPythonを使って作成し、初めてオブジェクト指向的に作ろうとして、始めました。オブジェクト指向は初めてで、かつ、Pythonには慣れておらず、手探りで調べながら進めていきました。
この工程で大きな誤算に気づきました。Pythonの場合、かなり多くの機能があり、普段見ているC言語とは格段にいろいろな機能があることがわかりました。
ここから、実装する必要ないものをクラス図に書いたり、考慮不足で、必要なのにない機能やメソッドがあることがわかりました。
そうです、手戻り(リスク)を管理できていませんでした。
また、統計・機械学習などに強いため、多くのライブラリがあり、さらに、データフレームなど、普段使わない難しいデータの持ち方などがあり、非常に苦労してしまいました。
普段のプロジェクトマネジメントではリスク検討はしっかり行い、メンバーにもリスクあるなら先出でお願いします。と言っていたのにも関わらず、自分で完結してしまう業務のためリスク検討を失念していました。
結果、6hもの時間を使ってしまいました(多分計測していない部分も含めもう1hプラスかも。。。)。
今回学んだこと
今回は、オブジェクト指向的なプログラミングが非常に学べました。必要なコードや痒いところを直してみようと直してみたり、よくよく考えると、直したようなコードを学生時代にJavaで習ったなぁと思い、改めて授業で出てきたコードはこのように出来上がったのかと、改めて体感しました。
また、どんなときも、リスクヘッジを忘れないこと。
そして、オブジェクト指向なのはよいが、Pythonの知識つまり、開発環境の事前知識はしっかり身に着けておく必要があること。
上記3つを今後も忘れずにしていきたいと思います。
最後に
最近、以前紹介したSoftware Skillsの中にあった、タスク管理のためのポモドーロテクニックとカンバンを組み合わせたツールKanbanFlowを使って、最近、非常に集中して生産性を上げて仕事やそのほかのことができています。
もし、タスク管理のためのツールがあったらいいのにとか、ポモドーロテクニックしたいなぁという方は、ぜひ、KanbanFlowを使ってみてください。基本的に無料です。私も現在は無料で使っています。
今後も、オブジェクト指向のスキルを向上させたいと思います。
コメント