SAP BTPの開発環境について
SAP BTPの開発を行う場合、多くの方はSAP Business Application Studioを使って開発をしているかと思います。
しかし、SAP Business Application Studio(通称:BAS)を使うと煩わしいことも出てきます。
- Web IDEなのでショートカットキーが使えない
- BASのインスタンス立ち上げに時間がかかる
- ブレイクポイントを使ったデバッグが上手くいかない
等、特にサーバサイド(Java)の開発をする際、今までEclipse等のIDEを使っていた方にとっては細かなストレスがかかると思います。
そこでおすすめなのが、VisualStudioCode(通称:VsCode)です。
VsCodeはショートカットも充実し、様々な拡張機能も用意されているので、コーディングの観点では
WebIEDに比べると開発効率が上がると思います。
最近ではJavaの開発が行えるように拡張機能が充実しているので、
これまでEclipsを使っていた方にとっても遜色なく開発が行えます。
なにより大きいのはエディタだけを別のウインドで表示できる点です。
サブモニタ等を使用して、エディタだけを別のウインドで表示しコーディングに集中することもできるので、
コーディング量が多い場合は特に助かります。
ちなみに補足ですが、SAP Business Application StudioもVsCodeをベースに作られているようです。
しかし、SO・ミドルウェアの部分に関して、開発時に注意が必要となります。
注意点①(OS)※Macで開発されている方は対象外
BASで開発を行う際、OSの意識をすることはないですが、
VsCodeで開発を行う場合、単純にVsCodeインストールし起動するとWindowsOSで動きます。
しかし、デプロイ後の環境はLinux系のOSになっています。
Javaはマルチプラットフォーム言語なので、通常は意識することがないと思いますが、
ファイルパスの記載の仕方や文字コード等、VsCodeでの開発時は問題ないけれど、
デプロイ後確認すると不具合になった。
ローカル時とデプロイ時でソースを切り替えている等の経験をされた方もおられると思います。
対応方法
Windows SubSystem For Linuxを使う。
Windows SubSystem For Linu(WSL)を使うとJavaをLinux環境で実行することができます。
VsCodeの機能として、WSL上でリモート起動することもできますので、Window環境でありながらLinuxで動くプログラムを開発することができます。
注意点②(ランタイムのバージョン)
BASで開発を行うさいはJava等ミドルウェアのインストールが自動で行われる反面、
VsCodeで開発を行う場合はJava等のインストールから行う必要があります。
その為、デプロイ後の実行環境と開発時の環境に齟齬が生まれ、プログラムが動かない事象を生みます。
対応方法
ランタイムのバージョンを合わせる。
当たり前のことですが、デプロイ後の実行環境と開発時のランタイムのバージョンは合わせておきましょう。
以下のhelpポータルにバージョンの記載がある為、どのバージョンを使うか検討し、
開発前にプロジェクトで定義が必要です。
補足:
mta.yamlを用いてデプロイする際は、以下のような設定を行うことで
実行環境のJavaバージョンの指定ができます。
- name: javaApp
type: java
path: javaApp
parameters:
buildpack: sap_java_buildpack
memory: 1024M
properties:
JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jre.SAPMachineJRE']"
JBP_CONFIG_SAP_MACHINE_JRE: "{ version: 17.+ }"
注意点③(タイムゾーン)※重要
一番、重要なのがタイムゾーンです。
デプロイ後の環境で動くタイムゾーンはUTCですが、
Windows SubSystem For Linuxをインストールした直後の環境はJST(日本であれば)です。
タイムゾーンの変更は後でできるから、一旦JSTで開発するか等考えがちですが(私自身もそうでした)
SAP BTPはPaaSの為、タイムゾーンの変更が用意ではありません!!
使うサービスによっては変更できないものも多く、様々サービスを駆使して開発を行っている場合は余計に開発環境構築の時からタイムゾーンを意識する必要があります。
Windows SubSystem For LinuxのタイムゾーンをUTCに変更する方法もありますが、
VsCodeでデバッグ時に設定するlaunch.jsonを使って設定する方法もあります。
Javaの場合は以下の設定をlaunch.jsonに記載することで対応ですます。
"vmArgs": "-Duser.timezone=UTC"
また、開発時にDBをH2DB等を使用して行う場合は以下のようにタイムゾーンを指定しましょう。
jdbc:h2:mem:testdb;TIME ZONE=UTC
その他
上記3点を主に注意すれば、Visual Studio Codeを用いてSAP Business Application Studioと同じようにBTPのサーバサイトの開発が可能です。
フロント側(SAPUI5)の開発も同様に設定次第でisual Studio Codeを用いて開発ができます。
方法については今後記載しようと思います。