【感想・ネタバレ】Web API設計実践入門──API仕様ファーストによるテスト駆動開発のレビュー

あらすじ

◆長年のソフトウェア開発経験が生み出した新提案◆
本書は、著者が約30年間経験してきたAPI仕様の作成、20年間経験してきたテストファースト開発/テスト駆動開発の知見をまとめたものであり、一般的なソフトウェア開発者が習得することが容易ではない事柄を、本書を通して学び、実践してもらうことを目的としています。
本書が提唱する「API仕様ファースト開発」はWebサービスにおける大域的なテスト駆動開発の実現に必要なものであり、また、API仕様ファースト開発を実現するにはテスト駆動開発が必要です。API仕様ファースト開発とテスト駆動開発は、いわば車の両輪のような関係にあります。
ソフトウェアテストの変遷とWebサービスにおけるAPI仕様の関連を説明したうえで、API仕様とはどうあるべきか、API仕様に何を書くべきかについて説明します。具体例としてはgRPCを取り上げます。第4章で紹介するAPI仕様ファースト開発という開発プロセスは、筆者が日々実践していることですが、多くのソフトウェアエンジニアが実践できていないことです。そのために必要なE2Eテストフレームワーク、さらには、API仕様がきちんと書かれていないために生まれる技術負債の返済方法なども紹介します。


■目次
●第1章 ソフトウェアテストの変遷
1.1 1990年代までと2000年代のソフトウェアテスト
1.2 フィードバックループを短くする
1.3 ビッグバンインテグレーションから継続的インテグレーションへ
1.4 まとめ
●第2章 API仕様
2.1 APIとは
2.2 優れたAPI仕様とは
2.3 API仕様でよくある問題点
2.4 API仕様に書くべきこと
2.5 API仕様とE2Eテスト
2.6 まとめ
●第3章 gRPCにおけるAPI仕様の書き方
3.1 gRPCとは
3.2 API仕様をどこに書くか
3.3 サービスの概要の説明
3.4 個々のエンドポイント(RPC)の説明
3.5 エラーの説明
3.6 リストオプションの説明
3.7 まとめ
●第4章 API仕様ファースト開発
4.1 開発順序
4.2 不具合の修正順序
4.3 既存のエンドポイントの修正と新たなエンドポイントの追加
4.4 API仕様のエンドポイントを呼び出すE2Eテストの利点
4.5 まとめ
●第5章 E2Eテストフレームワークの構築
5.1 テストフレームワークの基本的な考え方
5.2 マイクロサービス構成でのテストフレームワーク
5.3 非マイクロサービス構成でのテストフレームワーク
5.4 E2Eテストフレームワークの骨格
5.5 まとめ
●第6章 API仕様の技術的負債の返済
6.1 APIの技術的負債とは
6.2 API仕様の負債の返済
6.3 返済順序のまとめ
6.4 E2Eテストのもう1つの利点:リファクタリング
6.5 E2Eテストと単体テスト
6.6 API仕様ファースト開発が定着した組織
6.7 まとめ
●第7章 Go言語によるE2Eテストフレームワークの実装
7.1 E2Eテストの基本的な流れ
7.2 courierライブラリの構成とインストール
7.3 サンプルサービスの構成と定義
7.4 E2Eテストコードの例
7.5 E2Eテストフレームワークの流れ
7.6 フェイクサービスの構築
7.7 テスト実行までの流れとテストコードの実装
7.8 テストの並列化サポート
7.9 ほかのテスト関数の例
7.10 テスト関数に合格するサーバ実装
7.11 外部サービスのフェイクサービス
7.12 E2Eテストでのデータの準備
7.13 ステージング環境や本番環境に対するE2Eテスト
7.14 まとめ
●付録A:Goのテストの並列化
●付録B:長時間夜間ランニングテスト
●付録C:防御的プログラミング


■著者プロフィール
柴田芳樹:九州工業大学および大学院で情報工学を専攻。1984年4月に富士ゼロックスに就職し、その後さまざまな会社でソフトウェア開発に従事。2024年4月より個人事業主として活動。2018年6月に、メルペイ(メルカリ子会社)でWebサービスのバックエンドサービス開発に従事してからは、「API仕様ファースト開発」によるGoおよびTypeScriptを用いたバックエンドサービス開発に従事している。著書に『プログラマー“まだまだ”現役続行』(2010年、技術評論社)ほか多数。

...続きを読む
\ レビュー投稿でポイントプレゼント / ※購入済みの作品が対象となります
レビューを書く

感情タグBEST3

Posted by ブクログ

第2章、第3章が個人的には学びがあって良かった。優れたAPI仕様の書き方は、gRPCでなくてもRESTful APIなどでも通用するプラクティス。「エラーの説明が書かれていない」というのは個人の経験としてもよくあったと感じるし、自分自身もあまり意識できていなかった部分。
第7章は、Go未経験のため、別途ハンズオンとして進めたい。
「E2Eテスト」という言葉が、一般的に使われるソレと異なる意味合いで、書籍内で使われている。混乱を招きかねないので、この用語は区別できるように別の言葉を採用した方が良かったのではないかと感じる。

0
2024年08月22日

Posted by ブクログ

WebAPIの開発というよりは、E2Eテストについて基本的なことを説いている本でした。

E2Eとはそのプロセスの始まりから終わりまで、一貫して連続的に実行されること

Go言語でもメモリリークが発生することがあったり、Makefileや.protoの使い方が書いてありました。

0
2025年05月27日

「IT・コンピュータ」ランキング