本記事は SAPアドベントカレンダー 2022 20日目の記事となります。また同時にBeeXアドベントカレンダー 2022の20日目でもあります。
ABAP
は1983年に登場したSAP
で利用される開発言語となり、歴史のある言語でかつエンタープライズな言語となっています。
歴史があって重厚? なイメージかとは思いますが。
ABAP
って、オブジェクトやテスト、Clean ABAP。
近年導入された新しい構文だったり、言語として成長しており。
近年はAWSからまさかのAWS SDK for SAP ABAP(プレビュー版)
が発表されたり、SAP BTP
という文脈で出てきたり。
クラウドの文脈でも動きがあります。
AWS SDK for SAP ABAP のプレビュー版をリリース
AWS SDK for SAP ABAP
についてはABAP
がC++
,Go
,Java
,JavaScript
,Kotlin
,.NET
,Node.js
,PHP
,Python
,Ruby
,Rust
,Swift
のリストの横に追加されると思うと、個人的に非常に予想外で驚きがありました。
- AWS SDK for SAP ABAP
- AWS re:Invent 2022 - Accelerate business process innovation with the AWS SDK for SAP ABAP (ENT235)
そんなABAP
ですが、学習するためのハードルが非常に高い言語になっているかと思います。
その要因としては実行環境を自前で用意するのがSAP
に関わった事がない人が対応しようとすると厳しい点が多々あるかと思います。
以前はABAPの実行環境であるSAP ABAP Platform 1909, Developer Edition
がDocker hubで提供されており、少しハードルが低くなったかとは思いましたが、色々とあって現在は提供中止になっています。
SAP ABAP Platform 1909, Developer Edition(docker hub)が提供終了になっていた話
そんな中、今年Exercism
にABAP
が追加されました。
ちなみにブログ記事の投稿主であるLars Hvam
さんはabapGitだったり、abaplint/transpilerだったり。
ABAP関連でなんか凄まじい事をしている……すごい! みたいな事をいくつもやっているような人です。
というわけで2022年、オープンソースでオンライン学習できるExercism
にABAP
が追加されていますので、本記事ではこちらの紹介をしていきます。
Exercismって?
Exercismはオープンソースのフリーコーディングプラットフォームで様々な言語の学習リソースが登録されています。
その一言語としてABAP
が追加されています。
Exercismを利用するためにユーザー登録
Exercismを利用するためにはユーザー登録が必要となります。
トップページにあるSign up
からユーザー登録をします。
TracksからABAPを選択する
ユーザ登録が完了したら学習したいTracks
を選択します。
Tracks
をみると、2022年12月現在、62トラックがあるようです。
今回目的となるABAP
を追加します。
ABAP
はAで始まるので、名前の順でソートされていると先頭にきますよね。
Join the ABAP Track
を選択
2022年12月現在、ABAP
には40個のコンテンツがあるようです。
現在は何もやっていないので、最初のコンテンツだけアンロックされており、残りの39個はロック状態である事が確認できます。
Go to The "Hello, World!" exercism
からhelloworldを実行してみます。
Hello, World!
まず最初に古典的なHelloworldの演習について紹介されています。
Execism
ではCLI
から回答を投稿する方法もあるようですが、ブラウザからコーディングして回答を投稿することができます。
Stat in Editor
を選択。
Editorが表示されました。
Execism
の問題はABAPオブジェクトのクラスとして提供され、演習で指定された内容でメソッドを実装してテストを通過させるのが流れになります。
Instructions
にあるように、今回は伝統的なHello, World!
を返すメソッドを実装します。
EditorのTestsタブについて
ちなみにEditorのTests
タブを見ると通過させる必要があるテストが記述されています。
これが何かと言えばABAP Unitで記述されたテストとなります。
ここでは触れませんが、こういう書き方するんだとABAP Unit
の参考にはなるかと思います。
Editor上でメソッドを書き換えてテスト実行
今回の演習ではHello, World!
を返すメソッドにすればよいので。
Goodbye, Mars!
をHello, World!
に書き換えてRun Tests
を実行
Result
タブにテストの結果が表示されます。
無事通過したので、Submit
を押してHello , World!
を完了にします。
Overviewの画面に戻ります。
無事、Hello, World!
が完了したので、Mark as Complete
で演習を完了します。
自分の書いた回答を共有するか聞かれるので、お好きな方を選んでConfirm
。
Completed!
Hello, World!
の演習を完了した事で、他の演習がアンロックされました。
気になる演習を実施して、ABAPの理解を深めましょう!
デバッグについて
Exercismのブラウザ上ではデバッガはないので、Debugging and Logging
にデバッグするためのログについての記述があるので、見ておくと参考になるかと思います。
console=>log()
を利用することで色々と捗りそうな気はしますが、どうやら最近追加された機能のようです。
裏ではabaplint transpilerが動いている
Testing on the ABAP trackに記載がありますが、Exercism
ではABAP
がSAP
基盤上で実行されているのではなく、abaplint/transpilerでABAP
をJavaScript
にトランスパイルして実行されています。
このためabaplint/transpilerが対応しておらず、厳密には実機と違う動きをするケースもあるかと思います。
abaplint/transpilerを体験してみたい場合は、Playgroundが提供されており、こちらから動作を試すことができます。
左側にABAP
を記載すると、JavaScript
へtranspileされて右側に実行結果が表示されています。
Exercismで提供されている問題は実機でも試せるようです
abapGit を使用して、上記リポジトリを各自のSAPシステムにインポートすることで、Exercism
で提供されている問題を実機で試すこともできるようです。
総評
ABAP
がブラウザ上で手軽に学習できるコンテンツが出てくるのは、想像しておらず驚きがあります。
たしかMy solution to the ABAP Community Coding Challengeらへんの記事でABAP
をトランスパイルしてブラウザ上で実行? なにそれ! と愕然として記憶がありますが。
それが更にこのような学習コンテンツにつながってくるとは時代ですね。
ただ、ABAP
の学習と一口にいっても普段、普段ABAP Object
に触れてなかったり。
昔ながらの書き方とはギャップがあったり、人によっては戸惑うかもしれません。
Exercism
では今どきのABAP
が学べるといったほうが正確なのかもしれません。