yagibrary

あだ名のやぎと図書館のlibraryを組み合わせてyagibraryです。本から学んだことをみなさんに紹介します。

【読書メモ】【コード×AI―ソフトウェア開発者のための生成AI実践入門】第6章 AIの力を引き出す開発アプローチ

第5章では、AIとの協働におけるコードの書き方やスタイル、基本的な情報を引き出すアプローチについて学びました。本章では、より広範な開発のアプローチや、AIを使ってコードの品質を向上させる方法について学びます。

本章で取り上げる主なトピックは、AIに適したアーキテクチャの設計方法です。

6.1 AIに適したコードアーキテクチャ

AIと協働しやすいコードの形を考えるとき、それは同時に自分がレビューしやすいコードであることが求められます。なるべくレビューしやすいコードの断片をAIに提案してもらいやすいように、コードの構造を工夫することが効果的です。

このセクションでは、AIと効果的に協働するためのコードの書き方について、具体的なポイントを解説します。

6.1.1 Practice:ネストの削減によるAI協働の効率化

ネストが深くなるほどAIとの協働が難しくなります。

この問題を解決するために、ガード節を使ってネストを減らすことが効果的です。ガード節とは、関数やループの冒頭で処理しない条件をチェックし、該当する場合には即座に処理を終了または次のステップに進める技法です。

ガード節を活用することで、多くの場合でコードの可読性を向上させることができます。

6.1.2 Practice:AIに触れさせないコードの分離

AIによるコード変更から重要なロジックを守るために、計算ロジックを意図的に独立させることをおすすめします。

AIの支援を受けながらコードを分離する際は、以下の点に注意しましょう。

■関数の構成:関数内の処理を意味のあるグループに分ける。
■役割の変更:関数の責務を明確にするために役割を変更する。
■順番の再編成:処理の順番を変更してコードの流れを改善する。
■単純化:複雑な処理をより単純な処理に置き換える。

これらの観点で改善点を挙げるよう、AIに以下のように指示をすることで具体的な提案を得られます。

以下の関数に対して、構成、役割変更、順番の再構成、単純化の観点で改善点を挙げてください

KEYWORD DRY原則(Don't Repeat Yourself)

DRY原則を守るためには、共通の処理を関数やクラスにまとめるなどして、同じコードを繰り返し書かないようにします。

6.1.3 Practice:将来の拡張を考慮したコード設計

AIによるコード生成が開発のスピードをあげる中で、既存の資産が開発スピードを妨げる要因にならないようにすることが重要です。

AIがコードを生成する際に、既存の実装を使って新しいコードを簡単に追加できるように設計することが効果的です。

KEYWORD OCP原則(Open-Closed Principle)

拡張に対してオープンである一方で、変更に対しては閉じているという意味から、Open-Closed Principle(OCP原則)と呼ばれています。

6.1.4 Practice:体系的なリファクタリング手法の適用

Thoughtworks社のリファクタリングカタログ(Martin Fowler)
refactoring.com

開発支援AIツールを使ってリファクタリングを行う際は、これらの資料を参照しながら、何を改善したいのかを明確にすることが大切です。

リファクタリングを効果的に行うためには、適切な指標とリファレンスを参照することが重要です。

6.1.5 Practice:小規模OSSの再実装

オープンソースライブラリは便利な反面、過度に依存すると思わぬ問題に直面する可能性があります。AIが簡単に生成できるようなコードは、オープンソースソフトウェアに頼るよりもAIに任せた方が賢明です。

COLUMN left-pad問題の教訓

npmからleft-padライブラリが削除されたことで、これに依存する多くのライブラリが正常に動作しなくなりました。

6.2 AIを活用したコード品質向上

6.2.1 Practice:AIを活用したユニットテストの生成

6.2.2 Practice:テスト条件の明確化

6.2.3 Practice:網羅的テスト設計のためのデシジョンテーブル活用

6.2.4 Practice:状態遷移図を経由したテストコード生成

COLUMN AI時代にはシフトライトが必要になるのか

6.3 コードリーディングにおけるAIの活用

6.3.1 Practice:自然言語でのコードロジック説明

6.3.2 Practice:複雑なロジックの視覚的表現生成

6.4 コードレビューにおけるAIの活用

6.4.1 Practice:Big-O記法にもとづくパフォーマンス改善

6.4.2 Practice:BUDフレームワークを用いたコード最適化

6.4.3 Practice:データ構造の妥当性評価

6.4.4 Practice:SOLIDにもとづくコード品質向上

6.4.5 Practice:Chain-of-Thoughtプロンプティング