18
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

BeeXAdvent Calendar 2022

Day 20

ABAP on ExercismでABAPを学習してみる

Last updated at Posted at 2022-12-20

本記事は SAPアドベントカレンダー 2022 20日目の記事となります。また同時にBeeXアドベントカレンダー 2022の20日目でもあります。

wikipedia - ABAP en

ABAPは1983年に登場したSAPで利用される開発言語となり、歴史のある言語でかつエンタープライズな言語となっています。

歴史があって重厚? なイメージかとは思いますが。

ABAPって、オブジェクトやテスト、Clean ABAP
近年導入された新しい構文だったり、言語として成長しており。

近年はAWSからまさかのAWS SDK for SAP ABAP(プレビュー版)が発表されたり、SAP BTPという文脈で出てきたり。

クラウドの文脈でも動きがあります。

AWS SDK for SAP ABAP のプレビュー版をリリース

AWS SDK for SAP ABAPについてはABAPC++,Go,Java,JavaScript,Kotlin,.NET,Node.js,PHP,Python,Ruby,Rust,Swiftのリストの横に追加されると思うと、個人的に非常に予想外で驚きがありました。

そんなABAPですが、学習するためのハードルが非常に高い言語になっているかと思います。

その要因としては実行環境を自前で用意するのがSAPに関わった事がない人が対応しようとすると厳しい点が多々あるかと思います。

以前はABAPの実行環境であるSAP ABAP Platform 1909, Developer Edition がDocker hubで提供されており、少しハードルが低くなったかとは思いましたが、色々とあって現在は提供中止になっています。

SAP ABAP Platform 1909, Developer Edition(docker hub)が提供終了になっていた話

そんな中、今年ExercismABAPが追加されました。

ABAP on Exercism

ちなみにブログ記事の投稿主であるLars HvamさんはabapGitだったり、abaplint/transpilerだったり。

ABAP関連でなんか凄まじい事をしている……すごい! みたいな事をいくつもやっているような人です。

というわけで2022年、オープンソースでオンライン学習できるExercismABAPが追加されていますので、本記事ではこちらの紹介をしていきます。

Exercismって?

about Exercism

Exercismはオープンソースのフリーコーディングプラットフォームで様々な言語の学習リソースが登録されています。

その一言語としてABAPが追加されています。

Exercismを利用するためにユーザー登録

Exercismを利用するためにはユーザー登録が必要となります。

Exercism

image.png

トップページにあるSign upからユーザー登録をします。

TracksからABAPを選択する

ユーザ登録が完了したら学習したいTracksを選択します。

Tracksをみると、2022年12月現在、62トラックがあるようです。

今回目的となるABAPを追加します。

image.png

ABAPはAで始まるので、名前の順でソートされていると先頭にきますよね。

image.png

Join the ABAP Trackを選択

image.png

Track-specific abap

2022年12月現在、ABAPには40個のコンテンツがあるようです。

image.png

現在は何もやっていないので、最初のコンテンツだけアンロックされており、残りの39個はロック状態である事が確認できます。

Go to The "Hello, World!" exercismからhelloworldを実行してみます。

Hello, World!

まず最初に古典的なHelloworldの演習について紹介されています。

ExecismではCLIから回答を投稿する方法もあるようですが、ブラウザからコーディングして回答を投稿することができます。

Stat in Editorを選択。

image.png

Editorが表示されました。

image.png

Execismの問題はABAPオブジェクトのクラスとして提供され、演習で指定された内容でメソッドを実装してテストを通過させるのが流れになります。

Instructionsにあるように、今回は伝統的なHello, World!を返すメソッドを実装します。

EditorのTestsタブについて

ちなみにEditorのTestsタブを見ると通過させる必要があるテストが記述されています。

image.png

これが何かと言えばABAP Unitで記述されたテストとなります。

ここでは触れませんが、こういう書き方するんだとABAP Unitの参考にはなるかと思います。

Editor上でメソッドを書き換えてテスト実行

今回の演習ではHello, World!を返すメソッドにすればよいので。
Goodbye, Mars!Hello, World!に書き換えてRun Testsを実行

image.png

Resultタブにテストの結果が表示されます。

image.png

無事通過したので、Submitを押してHello , World!を完了にします。

image.png

Overviewの画面に戻ります。

無事、Hello, World!が完了したので、Mark as Completeで演習を完了します。

image.png

自分の書いた回答を共有するか聞かれるので、お好きな方を選んでConfirm

image.png

Completed!

image.png

Hello, World!の演習を完了した事で、他の演習がアンロックされました。

image.png

気になる演習を実施して、ABAPの理解を深めましょう!

デバッグについて

Testing on the ABAP track

Exercismのブラウザ上ではデバッガはないので、Debugging and Loggingにデバッグするためのログについての記述があるので、見ておくと参考になるかと思います。

console=>log()を利用することで色々と捗りそうな気はしますが、どうやら最近追加された機能のようです。

裏ではabaplint transpilerが動いている

Testing on the ABAP trackに記載がありますが、ExercismではABAPSAP基盤上で実行されているのではなく、abaplint/transpilerABAPJavaScriptにトランスパイルして実行されています。

このためabaplint/transpilerが対応しておらず、厳密には実機と違う動きをするケースもあるかと思います。

abaplint/transpilerを体験してみたい場合は、Playgroundが提供されており、こちらから動作を試すことができます。

image.png

左側にABAPを記載すると、JavaScriptへtranspileされて右側に実行結果が表示されています。

Exercismで提供されている問題は実機でも試せるようです

exercism/abap

abapGit を使用して、上記リポジトリを各自のSAPシステムにインポートすることで、Exercismで提供されている問題を実機で試すこともできるようです。

総評

ABAPがブラウザ上で手軽に学習できるコンテンツが出てくるのは、想像しておらず驚きがあります。

たしかMy solution to the ABAP Community Coding Challengeらへんの記事でABAPをトランスパイルしてブラウザ上で実行? なにそれ! と愕然として記憶がありますが。

それが更にこのような学習コンテンツにつながってくるとは時代ですね。

ただ、ABAPの学習と一口にいっても普段、普段ABAP Objectに触れてなかったり。
昔ながらの書き方とはギャップがあったり、人によっては戸惑うかもしれません。

Exercismでは今どきのABAPが学べるといったほうが正確なのかもしれません。

18
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?