はじめに
本ブログシリーズはの日本語翻訳です。簡潔な翻訳のために、いくつかの細かいニュアンスは削ぎ落としています。最新の正しい情報は翻訳元やをご参照ください。
ブログシリーズ一覧
-
インフォメーションマップ:SAP Graphチュートリアルシリーズ()()
-
パート1:SAP Graphのイントロダクション(日本語翻訳版)() <- このブログ
-
パート2:はじめてのSAP Graphアプリ開発(日本語翻訳版)()
-
パート3:SAP Graphにおける認証認可の実装(日本語翻訳版)()
-
パート4:SAP Graphとプロトコル(日本語翻訳版)()
-
パート5:SAP Graphと自前のデータの用意(日本語翻訳版)()
-
パート6:SAP GraphでBusiness Data Graphを作成(日本語翻訳版)()
-
パート7:SAP Graphにおけるキーマッピング(日本語翻訳版)()
-
Thanks Stephanie for your cool blogs and for allowing me to translate!
日本語訳
こんにちは!
はSAP BTPのIntegration Suiteに属する製品の一つで、SAP-managedなデータのためのunified(統一)でconsolidated(統合)なAPIを提供します。SAP GraphとそのBusiness Data Graphを使うことで、開発者はデータのありかを意識しないアプリケーション開発が可能です。
このブログはSAP Graphチュートリアルシリーズの1つ目のブログです。本チュートリアルでは、主にSAP Graphがどのようなものであるのかを紹介します。
SAP Graphは、2021年12月にアーリーアダプター向けに生産的にリリースされました。SAP GraphのプロダクトチームはSAP Graphのアーリーアダプター向けに専用のサポートを提供しています。ご興味のある方はsap.graph@sap.com までご連絡ください。
SAP Graphのイントロダクション
今日におけるSAPユーザーの要件は日を追うごとに複雑になっています。例えば、SAPユーザーはオンプレミスとクラウドの入り組んだハイブリッドな環境などを取り扱う必要があります。SAPユーザーの目指すIntelligent Suite導入をサポートするために、SAPはSAP SuccessFactors、SAP Concur、SAP Aribaといったクラウドソリューションの買収を通じてERP中心のビジネススイートを大幅に機能強化しました。現在のSAPのIntelligent Suiteポートフォリオはすべての主要なビジネスプロセスをサポートし、企業のあらゆる機能を網羅しています。しかしこの結果として、このポートフォリオにはいくつかの複雑さが生じています。SAPスイートの製品の多くは重複するデータモデル、異なるAPIやインフラなどの独自スタックを持っており、この複雑さはSAPの利用者に対して必ずしもうまく隠蔽できているわけではありません。
アプリケーション開発者の視点から見ると、これはSAP-managedなデータへのアクセスがより複雑になっていることを意味します。データは異なるセキュリティプロトコル、レプリケーションプロセス、複数のマスターデータコピーを持つオンプレミスおよびクラウドシステムのハイブリッドネットワーク間で連携されている場合があります。このような場合、把握しておけなければならないデータは関心のあるデータだけではありません。それらのどのコピーが必要なのか、そのデータは正確にはどこにあるのか、そしてこれらの異なるシステムとの接続にどのように対処できるのかを知っておく必要があります。それぞれの製品の接続プロトコル、セキュリティ要件、APIは多くの場合で異なります。また、これらのAPIは一貫性のないデータモデルを使用してデータを公開します。SAPの拡張アプリを開発するとき、開発対象が単純なデータクエリ開発の場合であっても開発者は幅広いスキルを習得する必要があり、開発されたアプリケーションは各種製品や環境のわずかな設定変更にも影響を受けることがあります。
これらの問題を解決するために、SAPはSAP Graphを提供しています。
SAP GraphはSAPの新しい統一APIを提供する製品です。SAP GraphはSAP S/4HANA、SAP Sales Cloud、SAP SuccessFactorsなどのデータソースのデータモデルを1つに統合し、開発者にすべてのビジネスデータの単一の統一ビューを提供します。これによって、SAP GraphはAPIの複雑さと統合の課題を解決します。SAP Graphのプロダクトチームはこの仕組みをBusiness Data Graphと呼んでいます。
SAP GraphにおけるBusiness Data Graphの表現はが扱うグラフを用います。データエンティティがグラフのノード(上の図における水色の円)であり、それらのエンティティ間の関係がグラフのエッジ(上の図における水色の円を結ぶ線)です。Business Data Graphのノードは顧客、サプライヤー、製品、販売・発注および総勘定元帳などの一般的な企業のビジネスオブジェクトを表現しています。
SAP製品を使ったアプリケーションを開発するとき、開発者はデータの取り扱いに対する問題に直面します。製品や顧客といった概念は多くのビジネスシステムに共通です。開発者はそれぞれの製品で使用されているこれらのデータ定義のうち、どの定義を使うべきでしょうか。また、使うべき定義を決めた場合、その定義をどこで管理すべきでしょうか?
一般的に知られる属性などを持った製品共通の(統一の)ビジネスエンティティをBusiness Data Graphに導入することで、SAP Graphはこの問題に対応します。SAP Graphを使うことで、開発者は単純な用途の場合には統一エンティティを使用し、高度な用途には1,500以上のシステム固有エンティティを使用してこのデータ取り扱いの問題を解消します。
salesを例にとった簡単な例を用いて、Business Data Graphのこれらの側面を紹介します。例えば、ある営業担当者が顧客に代わって見積書を作成したとします。この見積書はSalesQuoteエンティティで表現されます。このSalesQuoteエンティティはこの例における統一エンティティです。この見積書はCustomerエンティティと関連を持っています。また、見積書には複数のitemsがあり、各itemsはProductエンティティを参照し、さらにProductエンティティはDivisionなどの他のエンティティに複数の関連を持っています。これは以下の図のように表現できます。
各エンティティはキー(統一エンティティにおけるid)やその他のさまざまな属性を持っています。これらの属性はフラットに並べるだけでなく、配列や複雑な構造のコンポジションとして扱うことができます。例えば、itemsは構造化された型の配列です。
SAP Graph を使用するとデータがどこに存在するかに関係なく、開発者は必要なデータにナビゲートしてアクセスすることができます。SAP Graphは物理的なランドスケープや異なる製品スタックの詳細を抽象化し、SAPが管理するデータのシンプルなビューを提供します。このビューは単一のAPIを通じてアクセス可能です。SAP Graphは技術的にはミドルウェアとして機能しながら、事前に設定したランドスケープ内のデータにアクセスします。SAP Graph自身はデータを保存したりキャッシュしたりしません。
上の図はアプリケーションがSalesQuote(見積書)、Product、Customerまたはサプライヤーのデータにアクセスしていることを示しています。しかし、このアプリはこのデータソースを意識することはありません。オンプレミスのSAP S/4 HANAシステム、SAP Sales Cloud、またはSAP Aribaのような別のシステムはSAP Graphによって抽象化されています。開発者はこれらのシステムの詳細や異なるシステムへのアクセス方法を知る必要なくアプリケーションを開発できます。加えて、開発したアプリケーションはコードの変更なしに複数の多様なランドスケープに移植可能です。
しかし、アプリケーションが統一エンティティにモデル化されていない属性情報へのアクセスを必要とする場合はどうでしょうか。例えば、S/4HANAに固有の製品在庫情報にアクセスする必要があるかもしれません。SAP Graphはこの問題を解決します。A_ProductのCountryOfOriginのような情報にアクセスするためには_s4アソシエーションにナビゲートするか、to_ProductStorageをさらにナビゲートするだけです。
現在のSAP GraphはBusiness Data GraphにアクセスするためのAPIとしてOData v4をサポートしています。OData(Open Data)はRESTfulにビジネスエンティティを取り扱うためのOASIS標準のプロトコルです。将来的には、ODataだけでなくGraphQLのSAP Graphサポートも予定されています。
SAP Graph Navigatorを用いたSAP Graphの探索
SAP Graph APIはでその内容を確認できます。Navigatorの左側にあるEntitiesペインはデータソースごとにグループ化された1,500以上のエンティティをリストアップしています。最初のグループのエンティティであるsap.graphは統一エンティティです。下図では統一エンティティの例としてsap.graph/WorkAssignmentを示します。
統一エンティティはidと呼ばれるキーを持ちます。workforcePerson などの他の属性も表示され、これは割り当てられた人の識別子です。また、この人に対する詳細な情報への関連付けもsap.graph/WorkforcePerson(_workforcePerson)という別のエンティティで確認できます。jobInfoは構造の配列です。小さな矢印(>
_cxsalesと_hcmという2つの関連もこの統一エンティティに属しています。これらはそれぞれのシステム固有のエンティティであるsap.cxsales/EmployeeCollectionおよびsap.hcm/EmpEmploymentへのナビゲーションです。これによって、SAP Graphは統一エンティティで利用可能な情報に各システム固有の属性を加えています。よって開発者はBusiness Data Graphをエンタープライズ全体の接続およびナビゲーション可能なグラフとして扱うことができます。
終わりに
次のパート2では、シンプルなSAP Graphを用いたNode.jsアプリケーションを開発します。