本記事は 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が学べるといったほうが正確なのかもしれません。















