「AIツールを使用してマイクロサービス開発の生産性を向上させる」
Improving productivity in microservices development using AI tools.
APIの構築と関連するコンポーネントは、特にマイクロサービスのような複雑なデータモデルとアーキテクチャを扱う場合、しばしば面倒な作業です。繰り返しのコーディング、設定のセットアップ、ユニットテストの構築のオーバーヘッドは、すぐに時間のかかるものとなります。ここでは、ChatGPTのようなAIツールがどのようにゲームチェンジャーになるかを説明します。
AIツール(Chat GPT)を活用したAPI開発
ChatGPTの機能を理解するために、実践的な例に入ってみましょう。個人情報(PII)を管理するためのREST APIを開発するというタスクが与えられました。プロセスは以下のようなものです:
- データベースオブジェクトの作成(ストアドプロシージャ)
- リポジトリ(データベースのインタラクションとデータアクセスオブジェクトのインターフェース)
- サービス(ビジネスロジックレイヤー)
- RESTコントローラー(エンドポイントの公開)
データベースオブジェクト
ストアドプロシージャを作成するために、まずChatGPTにテーブルの構造を提供します。その後、サンプルのストアドプロシージャを提供します。これにより、ChatGPTはストアドプロシージャのパターンにアンカーし、指定されたテーブルのための新しいプロシージャを構築することができます。以下は私たちが提供したテーブルです:
こちらは生成されたストアドプロシージャです:
こちらが会話のリンクです。
リポジトリ(データベースのインタラクションとデータアクセスオブジェクトのインターフェース)
リポジトリレイヤーを構築するための取り組みとして、私たちは専用のChatGPTスレッドを利用しました。先ほどのストアドプロシージャとテーブル定義を提供しました。ChatGPTの機能を活用して、次のものを生成しました:
- JPAエンティティ
- インターフェースとその実装を包括する包括的なリポジトリクラス
生成後、ChatGPTにユニットテストケースの作成を依頼しました。驚くべきことに、結果はほぼ完璧でした。いくつかの細かい調整が必要でしたが、主に名前空間やその他の細かい詳細に関連するものです。
以下は生成されたクラスとコードです:
リポジトリのインターフェースと実装
ユニットテスト
最初の実行時に、リポジトリの実装のために生成されたコードに問題が発生しました。データベースに格納されているデータは暗号化されており、永続化された値の復号化が必要でした。私たちはリポジトリレイヤーのコードを改善し、復号化メカニズムを統合するための修正を行いました。
修正を実装した後、更新されたリポジトリコードをChatGPTに提供し、対応するユニットテストケースを求めました。驚くべきことに、ChatGPTは完璧に機能するユニットテストケースを提供してくれました。
詳細な対話に興味がある方のために、こちらはChatGPTの会話スレッドへのリンクです。
ビジネスサービスレイヤーの構築
私たちの探索を深めるために、既存のChatGPTサービスのサンプルに要件を追加しました。JPAエンティティやリポジトリインターフェースなどの依存関係を指定しました。
AIツールは迅速にクラスを生成しました。サービスインターフェースは、ユーザーとローンのIDに基づいてユーザーのPIIデータを取得するための明確な契約を示しています。その実装であるUserPIIDataServiceImpl
は、必要なデータを取得するためにJPAリポジトリを利用し、nullの場合は空のリストを返すという配慮深いタッチがあります。これにより、潜在的なヌルポインタ例外を回避することができます。
ユニットテストUserPIIDataServiceImplTest
は包括的でした。モックオブジェクトに対してMockitoを使用し、テストではモックデータを整理し、サービスを呼び出し、期待される結果をアサートしました。
以下は生成されたクラスとコードです:
サービスのインターフェースと実装
ユニットテスト
こちらはサービスレイヤーを構築するためのチャットスレッドです。
最後のステップ:RESTコントローラーの生成
基盤となるレイヤーを設定した後、RESTコントローラーを構築する時が来ました。これには、以前に存在していたRESTコントローラーサンプルをベーステンプレートとして活用しました。チャットGPTに、このサンプルに加えてサービスインターフェースと必要なエンティティオブジェクトを提供しました。
これに対して、ChatGPTは要件に合わせたRestController
を生成しました。以下は生成されたクラスとコードです:
自動生成されたコードの目立つ特徴は、ApiResponse
およびApiOperation
というアノテーションの含まれていることです。ChatGPTの介入がなければ、これらの重要なアノテーションを見落とす可能性があり、APIの明確さとドキュメントの品質に影響を与える可能性があります。
RESTコントローラーの生成後、私たちはChatGPTの助けを借りてユニットテストケースを作成しました。最初は、生成されたテストは実際のAPIを呼び出しているかのように設計されていました。しかし、私たちの意図は厳密にコントローラーのコードをテストすることでした。焦点を絞るための必要な指示を提供した後、ChatGPTは効果的に調整されたユニットテストコードを提供しました。以下は生成されたユニットテストのスナップショットです。
最後に、すべてが予想どおりに機能していることを確認するために、Postmanを使用してAPIエンドポイントの検証を行いました。喜ばしいことに、APIは予想どおりに動作し、自動生成されたコードの実用性と精度を示しました。以下はチャットスレッドです。
上記の例は単純なように見えるかもしれませんが、私たちは一貫したパターンを観察するデータを挿入するためのAPIエンドポイントの構築にもこのアプローチを適用しています。30の列を持つような広範なテーブルを扱う場合、ストアドプロシージャのパラメータを手動で定義し、正確な列マッピングが必要な各属性を持つエンティティを構築することは、面倒でエラーの原因となる作業です。しかし、ChatGPTや他のAIユーティリティなどのツールを活用することで、これらの繰り返しのタスクを排除することができます。その結果、開発者は効率的で文書化されたコードを少ない努力で生成することができます。
結論
技術の領域は急速に進化しています。ChatGPTなどのAIツールの登場により、開発者はコーディングの取り組みに強力な味方を手に入れました。API開発のより煩雑で繰り返しの多いタスクを自動化することで、これらのツールはプロセスを効率化するだけでなく、コードの品質と正確性も劇的に向上させます。本文で共有された経験は、AIがソフトウェア開発を革新する可能性が単なる推測ではなく、私たちが始める現実であることを証明しています。私たちが前進するにつれて、人間と機械の間のこのような連携は、以前は達成不可能と考えられていた新たな可能性と効率のレベルを提供することで、ソフトウェアエンジニアリングの景色を再定義するでしょう。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles