Day: May 5, 2025

SAP CAP上でDI/DIコンテナをサクッと実装: 理論編

はじめに 本記事は、第一章の理論編と第二章のハンズオン編に分けて、CAP上でDI(依存性の注入)およびDIコンテナ(IoCコンテナ)を活用する方法を説明します。Side-by-Sideアプリケーション開発において、テスト容易性、保守性、モジュール性を向上させるアーキテクチャ設計の参考になれば幸いです。 注意点:本記事ではDI/DIコンテナの利点を述べますが、コード量の増加、構造の複雑化、パフォーマンスのオーバーヘッドなどのデメリットもあるため、要件に合わせて取捨選択してください。 対象読者 本記事はCAPの基礎知識がある前提で進めますので、CAPの基礎を学びたい方はSAP CAP Cookbookを参考にしてください。DI/DIコンテナを初めて使用する方、CAPプロジェクトでの活用方法を知りたい方、実際に手を動かして試してみたい方向けの内容となります。 シンプルなアプリ設計の問題点 シンプルなレイヤードアーキテクチャを意識したCAPアプリの開発では、一般的に次の実装にします。 レポジトリの作成。ハンドラでビジネスロジックを記述。cdsファイルでサービスを定義し、それをもとにサービスクラスの詳細を記述。 この場合、ハンドラ内でレポジトリクラスをインスタンス化する、つまりハンドラがレポジトリクラスに依存する形となります。 Bookデータを全て取得するコードを例に上記のイメージを掴みましょう。 import { Book } from “./book”; class BookRepository { async findAllBooks(): Promise<Book> { return await SELECT.from(“Books”); } }…