気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

現場システム開発の進め方を考えてみる

システム開発を効率的に進めるための優先順位や力を抜く部分、効率化についての整理をしてみます。

前提

  • 開発機能:なんとなくこんな機能というイメージはあるが、コードは読んだことがない
  • 言語:Javaでの開発は慣れているが、新たに使うKotlinについては未経験
  • チーム:リードエンジニア、メンバーが先行して開発を進めているところに途中から参画
  • 協業チーム:フロント、アプリは別部隊があり、そちらがテストできるレベルの資材を提供することがひとまずの目的
  • 開発内容:品質の良くないソースの作り換え、Java → Kotlin移行
  • 工期:短納期ではないが、余裕があるスケジュールではない。

仕様理解、開発方針の把握、実装のバランスを取りつつ、最高パフォーマンスを発揮するにはどう行動すべきか。

目的

  • 協業チームがテストできる最低限の品質の実装を組み上げる
  • チームのコード規約や求める品質をクリアする
  • テストコードはカバレッジ80%を目指す
  • Kotlin知見を蓄積し、今後の開発効率化に繋げる。チーム貢献できる情報集約ができたらなおよし

タスク概要

スケジュール

  • 協業チームの開発状況の把握。納期必達かの確認

設計

  • IFの再確認:既にIF設計はされているが、矛盾点ある可能性あり。
  • 実装設計:処理内の細かな修正方法は未検討のため、検討する必要あり。 一部、DB→Redisへ変更する必要あり。
    • 周辺機能理解:機能全体を踏まえた適切な実装が行う。

実装

  • 機能
    • APIの枠作成
    • コードの自動変換:ざっくり変換して変換前後理解
    • コメントで処理フローをざっくり記載
    • 処理実装ステップ:Java → Kotlin変換したソースの段階的、移植
  • Kotlin学習
    • リードエンジニアソースのリーディング:チームコード規約理解、Kotlinの書き方基本理解

効率化のポイント

  • 作業計画
    • 概要タスク整理と優先順位、概算見積もり。一日にこなす作業量のイメージをしておく。
  • 実装方法の事前理解
    • よく使う実装方法を体系的に整理しておく。辞書を作っておく
    • テストコードの抽象化、JavaSandプロジェクトへの転記
  • 共通機能の利用
    • 共通機能の理解、利用の想定。機能全体の概要を掴んでおくことが肝要。
  • レビュー指摘を減らす
    • 実装済みソース読み込みでコード規約の理解、WIPでの細切れPR

作業の進め方

ここまでを踏まえて、どう作業を進めるのか。

  • 既存コード理解(作成機能)
  • 既存コード理解(周辺機能、共通機能)
  • 利用する共通機能把握、Kotlinイデオム整理
  • 疑問点整理、重要ポイント確認
  • 設計書理解と実装設計(実装ステップ)
  • 設計疑問点整理と確認
  • API枠、処理概要コメント実装
  • ステップ実装

以上