会社案内資料ダウンロード

【アジャイル】アジャイルサムライを読む その12 ~ ユニットテスト / リファクタリング

アジャイルサムライを読む 其の十二 | アジャイルなプログラミング〜ユニットテスト・リファクタリング

◀︎其の1はこちら
◀︎其の2はこちら
◀︎其の3はこちら
◀︎其の4はこちら
◀︎其の5はこちら
◀︎其の6はこちら
◀︎其の7はこちら
◀︎其の8はこちら
◀︎其の9はこちら
◀︎其の10はこちら
◀︎其の11はこちら


こんにちは!
ラジコード編集部です 😊

アジャイルサムライを読む連載記事その12です!😃
前回は第4部 アジャイルな計画づくり の「第11章:現場の状況を目に見えるようにする」で、プロジェクトの全容と進捗を目に見える形にまとめておくとおくとステークホルダーにもチームにとっても有益であるということがわかりました

それでは第5部 アジャイルなプログラミング の「第12章 ユニットテスト:動くことがわかる」「第13章 リファクタリング:技術的負債の返済」を読んでいきましょう。
よろしくお願いします!🙋‍♂️

本シリーズは「アジャイルサムライ − 達人開発者への道」を1〜5部を1~2記事に分け要点を解説していくシリーズです。全15記事を予定しています。

第5部 アジャイルなプログラミング

計画づくりや期待マネジメントに時間を費やしても正しいエンジニアリングを実践しなければ、アジャイルな開発プロセスは機能しません。

様々なエンジニアリングの中でも「必ず実践すべき」プラクティスは次の4つです。

  • ユニットテスト
  • リファクタリング
  • テスト駆動開発(TDD)
  • 継続的インテグレーション

第12章 ユニットテスト:動くことがわかる

はじめてのユニットテスト

ユニットテストはメソッドレベルの小さな粒度、変更を加えるたびに書き、期待通り動くことを確認します。
CircleCIなどで自動化して簡単に実行できるようにしておけば、変更を加えるたびにテストを走らせて即座に確認ができます。

テストコードを書くメリットは以下の通りです。

  • 素早いフィードバックが得られるデバッグ時間を大幅に削減できる
    コードに変更を加えてテストが失敗したら「どこを壊したか」がすぐにわかる。
  • 極めて低コストにリグレッションテストを実行できる
    テストが自動化されていれば、手作業で再テストする必要がない。簡単なテストを自動化すれば浮いた時間を複雑なテストのために使える。
  • 自信を持ってデプロイできる
    自動化されたテストが動いていると安心してコードをリリースできる。また複雑な機能の開発やテストに目を向けられる

ユニットテストは他のソフトウェアエンジニアリングを支える核となります。
自動化されたユニットテストを健全な状態に保ちながら、次章のリファクタリングについて学んでいきましょう。

第13章 リファクタリング:技術的負債の返済

技術的負債

開発速度を優先したり、知識不足など様々な理由からかつてシンプルだったコードは何かしらの負債を抱えています。
ひとつひとつの変更は無害に思えますが、気づかずにひっそりと積み重なった結果負債として大きな被害をもたらすことになります。

前へ進むためには、技術的負債をこまめに返済していく仕組みを用意しないといけません。ソフトウェアの整合性を保ちながら、設計を少しづつ改善していく手法が必要です。

リファクタリングで技術的負債を返済する

リファクタリングとは、ソフトウェアの動きを変えることなく、少しづつ継続的に設計を改善していく手法の総称です。

コードをリファクタリングするときは、コードの意図をつかみやすくしたり、変更がしやすくなるように設計を改善します。
わかりづらいメソッド名や変数名をわかりやすい名前に変更することもリファクタリングです。
積極的にコツコツとリファクタリングすることでコードの質と保守性が向上します。

積極的継続的なリファクタリング
積極的で継続的なリファクタリング| アジャイルサムライを読む 其の十二
積極的で継続的なリファクタリング| アジャイルサムライを読む 其の十二

ソフトウェア開発で一番大変なのはきれいな設計を保ち続けることです。
継続的なリファクタリングでコードの手入れが行き届いていれば、新機能を追加するときもきちんと設計されたコードをベースに開発を進めることができます。

理想的なリファクタリングは、毎日の開発のなかでリファクタリングを行うことです。負債が小さいうちに対応すると負担も少なくなります。

  • 変数名やメソッドの名前変更
  • 変数のインライン化
  • メソッドの抽出

まずはこれらを実践するとコードの可読性とメンテナンス性を改善できるはずです。

まとめ

以上「第5部アジャイルなプロジェクト運営:第12章 はじめてのユニットテスト」「第13章 リファクタリング:技術的負債の返済」の解説でした。
ユニットテストは自動化し改善の基盤を作り、継続的なリファクタリングで保守性を保つとよいということが分かりましたね。

次回は「第14章:テスト駆動開発、第15章 継続的インテグレーション」を読んでいきましょう😌

出典

月額固定・定額制でアジャイル開発を提供する「サブスクエンジニア」サービスを提供しています。よろしければご覧ください!