クリーンコア開発が主張され始めて久しい今日この頃ですが、SAP BTP上でのカスタム開発とはどのようなものなのでしょうか。本ブログでは、簡単なデータセットを公開し、権限管理を行い、世界中から利用できるようにするまでの手順をStep by Stepガイドの形式でお届けします。なお、内容は2024年01月時点でのスクリーンショットを用いて解説しており、見た目は予告なく変更される可能性がありますので、ご注意ください。
この章では、まずSAP Business Application Studioよりプロジェクトの開発を行います。
SAP Business Application Studioのホーム画面から、 Dev Space を作成します。この Dev Space は、簡単に言えば開発用のコンテナになります。ここにSAP Business Application Studioのエディタを接続することで、環境を綺麗に使いつつ開発を進めていくことが可能です。加えてこのコンテナには必要な開発ツールをプリセットしたものを選択することが可能です。
Dev Spaceとは
今回は、下図の通りコンテナタイプとして「Full-Stack Application Using Productivity Tools」を選択し、追加ツールとして「SAP HANA Database Explorer」と「SAP HANA Tools」を選択してください。これらの追加ツールは、DB操作ツールであり、効率的にSAP BTP上のSAP HANA Cloudへのアクセスを提供します。
Dev Spaceを作成する
続いて、Productivity Toolsを用いてバックエンドサービスの作成を行います。まずはバックエンドサービスにて扱うデータモデルを定義しましょう。左端に並んだペインからProductivity Toolsのタブを開き、「create project」ボタンをクリックし、画面を進みます。次ページではアプリケーション名等を設定します。
Productivity Toolsでプロジェクトを作成する
プロジェクトの作成が完了すると、以下のようなStory Boardの画面が表示されます。この画面はProductivity Toolsのホーム画面のようなものであり、ここからあらゆる操作を行うことができます。早速「Data Models」セクションの横にある「+」ボタンをクリックし、データモデルを追加しましょう。
Productivity Tools の Story Board
今回は「jobRecord」というデータモデルを作成します。このエンティティは、以下の項目を保持します。
項目名 | データ型 | 説明 |
ID | UUID | ジョブのID |
executedBy | String | ジョブの実行者 |
executedAt | Timestamp | ジョブの実行時刻 |
Content | String | ジョブの内容 |
下図の強調部分をクリックしながら作成を進めます。
Productivity Tools におけるデータモデリング
次に、このデータを外部から操作するためのAPIを作成します。このAPIはSAP BTPにおけるCAP開発においては Service と呼ばれており、REST APIをラップしたOData APIの形をとります。
Story Board上の「Services」セクションより、「+」ボタンをクリックしてサービスを作成しましょう。
Productivity Tools によるODataサービスの追加
この際、「Enable draft editing」のチェックボックスを外し、先ほど作成したデータモデルを選択することで、このデータモデルに対するAPIを作成することが可能です。
対象データモデルの選択
これまででデータモデルとAPIを作成しましたが、これを安全に公開するためには権限の設定が必要です。SAP BTPにおけるカスタム開発では、XSUAAという認証認可のサービスを用いて権限の付与設定が可能です。今回は、作成したAPIを呼び出すためのロールを定義し、アプリケーション本体と同時にデプロイを行います。これにより、BTP Cockpitにて権限を付与されたユーザーのみがAPIを利用できるようになります。
Story Boardの「Services」セクション配下のユーザーアイコンをクリックし「Define User Role」をクリックします。
Productivity Tools による権限ロールの作成
「+」アイコンから、新しい権限ロールを作成します。今回はこのサービスについての管理者権限のため、Fullアクセスを設定します。
Productivity Tools による権限ロールの作成
権限を追加すると、自動でこの権限がある場合にAPIを呼び出せるように設定されます。デフォルトで他にも「any」等の権限が設定されていますが、これらは同画面のスイッチによりオフにできます。オフにすると、その権限を持っていてもユーザーはAPIにアクセスできません。
Productivity Tools による権限ロールの作成
開発用に、サンプルのデータを投入しましょう。Story Boardの「Data Models」セクションより、「Add Sample Data」をクリックします。
Productivity Tools によるサンプルデータの追加
「Add」ボタンをクリックしてデータを追加し、適当なデータを記入します。データは自動で保存されます。
Productivity Tools によるサンプルデータの追加
最後に、SAP BTPのCloud Foundry環境にアプリケーションをデプロイします。左端のペインから「Task Explorer」をクリックし、「Enable Discovery and Deploy {アプリ名}」の横にホバーすると出現する実行ボタンをクリックします。すると、自動的にターミナルが立ち上がり、デプロイに必要なビルド、認証認可サービス等の周辺サービスとの紐付け(Bindingと呼ばれます)、デプロイを実行します。途中でCloud Foundry環境へのログイン情報を求められますので入力してください。その際、デプロイを行うスペースを選択すると、デプロイが継続実行されます。しばらくすると、アプリケーションのデプロイが完了してデプロイ先のURLが提示されます。
Productivity Tools によるデプロイ
URLにアクセスすると、今回開発を行っているバックエンドサービスに関する案内ページが開きます。ここから、ODataのメタデータを取得したり、フロントエンドアプリケーションをプレビューしたりできます。この辺りはまた別のブログでご紹介できればと思います。
案内ページ
ServicesセクションにODataサービスの一覧が表示されます。今回は「jobRecord」の横にあるJSONのようなアイコンをクリックします。すると下図のような画面が開きます。
権限不足によるAPIの呼び出しエラー
こちらは権限不足によりAPIにアクセスできなかったことを意味しています。それもそのはずで、まだこのAPIを利用するために必要な権限ロールをユーザーに付与していません。最後の章では、このロールを付与し、正しくAPIを呼び出します。
BTP Cockpitでサブアカウント画面に入り、左端のペインから「セキュリティ」-> 「ロールコレクション」の順に進みます。ここで先んじて作成した権限ロールの名前を検索すると、アプリ自体のデプロイと同時にロールがデプロイされているはずです。このロールコレクションにユーザーを割り当てます。
BTP Cockpitでの権限の割り当て
これによりAPIを呼び出せるようになったはずです。キャッシュをクリアし、先ほどと同様のURLにアクセスしてみましょう。
適切な権限を持った状態でAPIを呼び出す
上図のように、先ほど投入したサンプルデータが見えるようになります。
以上がSAP BTPにおけるバックエンド開発の流れになります。次回のブログでは、ここにSAP BTP上で提供されるDBサービスであるHANA Cloudを接続して、アプリケーションデータを永続化していきたいと思います。
SAP Business Application Studioではターミナルがビルトインされています。こちらを用いて、任意のgitリポジトリでソースコード管理を行うことができます。
SAP Business Application Studioからのソースコード管理
SAP BTPにおけるカスタム開発をご紹介しました。CAPというフレームワークに基づいて作成することで、簡単にバックエンドを構築できます。加えて、SAP Business Application StudioではProductivity Toolsなるものが提供されており、これを使うことでローコードに開発を進めることが可能です。