はじめに
昨今、SAP Cloud Platformに関するBlogもかなり増え、提供されている豊富なサービスの概要や、使い方の簡単な紹介は充実して来ているように感じています。一方で、具体的なアプリケーションの開発においては、サンプルコードなどの情報がまだまだ少なかったり、SAP Help Portal上の情報も多岐に渡っているため、Hello, Worldから先へが進みにくいと感じている方もいらっしゃるかもしれません。そこで本Blogでは、"Node.js + SAP HANAアプリ開発"を例に、ポイントとなる部分を参考情報へのリンクも交えながら包括的にご紹介し、開発を進める上での参考になればと考えています。
今回はその第1回目として、概要編になります。
注) 開発方法は自由で選択肢に富んでいますので、あくまで一例として参考にして頂ければ幸いです。また、実際にアプリケーションをStep by Stepで作るための内容ではない点をご了承ください。
概要
このBlogでは、SAP Cloud PlatformのCloud Foundry環境にて、FAQサイトの開発を例に、開発において必ず必要となる下記のポイントについて触れていきます。
- 開発ツール: Web IDE, その他
- ロジック: Node.js
- UI: Bootstrap + jQuery
- データベース: SAP HANA
- 認証(Authentication)と権限(Authorization): XSUAA
SAP BlogやSAP Help Portalでは、SAPUI5ベースのアプリケーションの内容が多いですが、今回は一切使いません。UIは一般的なBootstrap + jQuery、バックエンドはNode.js、DBはSAP HANAが対象になります。
アーキテクチャ概要
下記がFAQサイトのアーキテクチャになります。以下、それぞれの簡単な説明になりますが、詳細については、今後のBlogで各トピック毎に詳しく触れていきます。
1. 開発ツール
SAP Cloud Platfromの開発ツールはやはりWeb IDEです。Web IDEはSAP S/4HANAの拡張シナリオなどにおいて、SAPUI5(SAP Fiori)アプリケーションの拡張や新規開発で馴染みがあるかと思いますが、Node.js開発をサポートしています。
コマンドラインでnpmを使いNodeモジュールをインストールするのが一般的ですが、Web IDEでは、Nodeプロジェクト内のpackage.jsonにモジュールを記述しておけば、裏でインストールが行われるといった動きや、Git管理、Web IDE内から任意のCloud Foundryサブアカウントにアプリケーションをディプロイ(cf push)することなどが可能です。また、ディプロイ時に、必要なサービスインスタンスの作成(上図のXSUAAやSAP HANA)やアプリケーションとのバインディングも同時に行ってくれるため、Web IDEだけで完結するメリットもあります。
もちろんWeb IDE以外にも使い慣れた任意の開発ツール(VS CodeやAtomなど)を利用可能です。ローカルPC上で、npmコマンドからプロジェクト作成やパッケージ管理を行い、cf pushコマンドでディプロイという基本的な使い方の方が馴染みやすいという方も多いかと思います。
但し、認証や権限を実装する辺りからは、ローカルではテストできなくなりますので注意です。
2. ロジック
サーバーサイドアプリケーションとして、Node.jsで開発を行います。HANAのネイティブアプリケーション開発言語であるXSJSも、SAP独自のNode.jsパッケージの一種ではありますので、XSAアプリの開発もNode.jsアプリの開発もSAP Cloud Platform上ではほとんど同じです。
Node.jsのフレームワークとしてはExpress、テンプレートエンジンにはEJSを使います。
DBへのアクセスは、Node.js用のHANA Clientライブラリを使ってSQLでアクセスします。Webアプリケーションでは、どちらかというとXSODATA経由でHANA DBにアクセスするのが定番ではありますが、この手の情報はすでに多く存在していますので、SQLでアクセスする一般的な方法を今回は選択しています。ちなみに、クライアント側(jQuery)とはもちろんJSONで通信しますので、Node.js側でSQLで取得したデータのレンダリングを行います。
3. UI
作成するアプリケーションがFAQサイトのため、SAPUI5に特にこだわらず、レスポンシブUIの定番フレームワークであるBootstrap + jQueryで作成します。この点に関しては、世間に溢れるほど情報がありますので、本Blogでは簡単に触れる程度の予定です。
4. データベース
SAPと言えば、SAP HANAです。他にもPostgreSQLやNoSQL系DBの選択肢もありますが、SAP HANAのFuzzy Search(あいまい検索)機能が簡単に実装できる点、Cloud Foundry環境のHANAであれば最新のSAP HANA 2.0が利用でき、オンデマンドにインスタンスの作成が可能な使いやすさからも、大きな利点があります。
少し余談にはなりますが、超高速なデータプラットフォームであるSAP HANAを基盤として、アプリケーション開発を柔軟に行いたいという要件にまさに適しているのが、このCloud Foundry環境のHANA Serviceです。開発言語・UIなどを自由に選択し、多様なサービス・システムとAPIで連携する中心的な存在ですので、下記のHANA Serviceの情報も合わせて参照頂ければと思います。
概要:
https://blogs.sap.com/2018/10/16/yet-another-intro-to-hana-as-a-service/
開発情報:
https://blogs.sap.com/2018/08/22/getting-started-with-the-sap-hana-service/
5. 認証と権限
最も情報が少ないのが、この認証と権限についてかと思います。(特に日本語)
Cloud Foundry環境では、認証と権限用のサービスとして、XSUAA (SAP CPのCockpit上では、Authorization and Trust Managementというサービス名)を利用します。SAP CPでは、ユーザー管理と認証サービスとして、SAP IDサービス、もしくはSAP Cloud Platform Identity Authentication (IAS)が提供されていますが、XSUAAはこれらと連携するためのサービスです。
ユーザーのID管理(権限割当含む): SAP ID / IAS
ユーザーの認証: SAP ID / IAS (XSUAAがリダイレクト)
権限定義: XSUAA (xs-security.jsonで設定)
以上の観点で開発したFAQサイトのイメージが下図になります。SAP Cloud Platfromに関するFAQサイトを社内向けに作っています。近いうちに、Conversational AIと組み合わせたBot機能も実装しちゃったり...などと考えていたりします。
上記5点についておおよそ理解頂ければ、SAP Cloud Platform上でのアプリケーション開発の全体感が見えてくるかと思います。次回からは、この5点についてそれぞれ詳しく触れていきますので、アプリケーション開発の一助となれば幸いです。
これまでのSAPといえば、独自テクノロジー色が強いイメージがあるかもしれませんが、近年はSAP S/4HANAなどの基幹アプリケーションとAPIで連携し、オープン系テクノロジーで拡張していく方向性が取られています。ABAPなど敷居が高く感じられていた方も、上記のように得意な開発言語、好みのUIフレームワークを利用して、SAPワールドを盛り上げていただければと思います。
各シリーズはこちら(投稿次第追加していきます)
- 開発ツール編