目次
先日公開したBlog記事「abapGitを触ってみた(Github編)」の使い所をいろいろなところで聞かれるので、現状の仕様でどうなんだというところをまとめて共有します。情報を下さった方、ありがとうございます。
結論からいうと、今すぐ開発現場で有効かもしれないシナリオとしては「コードレビュー」用途です。「今すぐ」とあえて書いたのは、後ほどご説明します。
ビジュアルでわかりやすくお勧めしているコンテンツがありましたので、ご紹介させて頂きます。(内容的には、Github上を経由することによってGithub上で変更管理と承認をするhowtoです。)
Using abapGit and Github as an ABAP code review tool
執筆時点の仕様では動的に繋がっておらず、手作業感満載ですし、わざわざGithubに載せてマージの承認をとるというのがまどろっこしく思えます。(BAPI、abapGit APIを使って自動化もできるが、まだそこには至っていません。ある意味将来に期待です。)
言い換えると、今のabapGitは、ABAPソースコードの最新状態をgitリポジトリと同期する程度といえます。例えば開発環境に入れて、いろんな人の知見を共有するのに便利という感じの使い方はありかと思います。(イメージとしてはVisual Studioの開発パッケージマネージャである、NuGetに近い存在かも?)実際にabapGit機能として、Githubに上がってるABAPなオープンなライブラリとかをcloneしやすいように専用の画面が用意されてたりするので、当たらずとも遠からずという感じがしています。
参考までに、同様の試みとして先にSAPlinkというソフトがあります。そちらはベンダーロックインされているABAPにまつわる知見を色々と共有出来るように、開発にまつわるオブジェクトをエクスポート・インポート出来る機能を提供されています。(標準機能でdymproとか画面フォームとかsmartformとか移送以外ではエクスポートインポート出来ないものもできるようにしているようです。)
このコンセプトをgitと連携することによって、さらに知見やらライブラリやらを共有しやすくしたのが、abapGitという位置づけになるかと思います。
開発者目線からすると、従来からあるABAP関連のライブラリやらhowtoで使うテーブル構造とか画面スクリーンショットだけ用意されてて自分で入力して作って下さいとかいう残念な感じが、abapGitを使ってcloneしてくれば一気に環境が取り込まれる!って所は革新的かもしれません。(その分、既存のオブジェクト名とかで衝突する危険もあります。)
SAPは元々、移送という素晴らしい機能があるのでabapGitを介して環境間でデプロイするような使い方は到底しないと思いますし。(abapGitを介して環境間でデプロイしようとすると、オブジェクトを登録するのに検証環境・本番環境で開発者キーとったり。そもそも標準の移送手段に乗らない方法でデプロイするの? という監査的に色々とまずい所しか思いつかない。)
ということで、Gitを使っているので見誤りそうになりますが、あくまで現状はベンダーロックインされている知見・ライブラリの共有に使えるかもというのが、今の結論ですということで、まとめは終わる予定だったのですが、急遽以下を書き足すことになりました、話はまだ続きます。
ABAP言語がSAP社の最新SaaS「SAP Cloud Platform」上で実装される
2017年9月25~29日にLas Vegasで開催されたSAP TECHEDにて、SAP社CTO兼President SAP Cloud Platform Björn Goerk氏によるKeyNoteでABAP関連で大きな発表がありました。
SAP Executive Keynote with Björn Goerke, 2017 Las Vegas ABAPに関する発表は、37:10以降です。
余談としてはBjörn Goerk氏は大のSF好きとのことで、今回の発表の舞台設定は往年のスタートレック仕立てとなっており、その筋では有名らしいコバヤシマル・シナリオがベースになっています。架空の船名とはいえ、コバヤシマルという日本語のキーワードが沢山出てきますので、とても気になります。
なお、SAP Cloud Platform – Boldly Going BeyondにText Replayがあります。
In fact, it’s something we have been asked many times throughout the last years: when will SAP Cloud Platform support ABAP?
The answer is: very soon! Yes, you heard that right. I’m excited to announce that we will be adding ABAP as the next environment to be incorporated into SAP Cloud Platform. One thing I want to explicitly point out here is that this is not your grandfather’s ABAP, but a modern version optimised for cloud: it’s very similar to the S/4HANA programming model and features a new RESTful architecture leveraging SAP Fiori and Core Data Services (CDS). For more information please refer to this FAQ document.
SAPCPの前身であるHANA Enterprise Cloudの時代から出ると言われていた、ABAP StackがSAP Cloud Platform上で搭載されるというアナウンスがありました。詳細は上記FAQに記述されておりますが、2018年に公開される予定で、その際の開発環境はEclipseベースのABAP Developement Tools(ADT)をサポートし、従来のABAP Workbench(SE80)はサポートされません。また、Gitとの統合がサポートされており、それによってオープンソースプロジェクトへの直接アクセスや最新のバージョン管理を謳っています。
実際にABAP InstanceのDeployとその上で、どのようにABAP開発が行われるのかが、デモで紹介されていました。
まずはABAPインスタンスの起動から。
ABAP Systemをクリックして、ABAP InstanceをDeployします。
起動するインスタンスは規定の「プラン」から選択することになり、実際に起動されるVMはASCS、WebDispatcher、TxABAP、Tx Agentの4つの種別があり、プラン毎にそれぞれの数が異なります。
ABAP Instance起動に続いて、開発者の画面に遷ります。
Github上には今回の発表でも取り上げられていたBlockChain Serviceに関するサンプルソースコードがあります。
開発者は、Eclipse上から該当Git Repositoryを指定することで、ローカルのリポジトリとしてダウンロード(Cloning)することができます。
Github上のソースがEclipse上に展開されました。
BlockChain Serviceを内部で呼び出す、ABAP Console Applicationを実行します。「Run As」 →「ABAP Application(Console)」
ABAP Console上に実行結果が表示されたことがわかります。
デモは以上です。
資料としては、下記のスライドが参考になります。特にSAPCP上のABAP実装のダイアグラムがあり、これが一番わかりやすいかと思います。
まとめ
「ABAPプログラムの品質がよくない」という現場の課題は根が深いですね。実は現場はみんな気づいていたりするので、とても厄介なテーマです。
今回abapGitを取り上げてみたところ、反響が大きく社内外で結構盛り上がりました。そもそも論として「リファクタリングが許されない」「開発規約が足りない、整備されずに古いまま放置」「開発フロー自体を定期的に見直していくフローを回さないと絵に書いた餅になる」といった話や、志あるユーザ側の開発担当者が「保守の範囲で少しずつ潰していった」という方も少ないながらもいらっしゃいました。そんな中で原始的な「コードレビュー」やOSSへの展開、活用を問いかけるabapとGit連携の記事を公開したことで、改めて基幹システムのアプリ開発環境の課題、問題を問いかけてしまったのではないかと改めて思った次第です。。
HANA化によって、処理のパフォーマンスは確かに向上するものの、その度合いは「アプリケーションの作り」によって、大きく異なるのは実際のプロジェクトに入らずともPoCレベルでも十分判断が可能ですし、品質の低いプログラムがシステムリソースを食いつぶすのは、いつの時代も変わりません。
最新のSAP開発基盤の動向をみつつ、S/4HANA化のタイミングで「ABAPの品質改善」に今一度真剣に取り組まれてはいかがでしょうか。そこでは遠くない将来、シンギュラリティが起こったときに、自社のプログラム品質が企業の競争力に直接影響を与えかねないという認識は、ひとつのキーになるかもしれません。
最後までお読み頂きありがとうございました。
参考リンク
ABAP in SAP Cloud Platform – Frequently Asked Questions
Overview of ABAP in SAP Cloud Platform
HANAで処理が早くなると何がいいのか、シンギュラリティから考えてみた。
GitHubではなく、社内にGit Serverを立てるやり方として、ABAPで作られたabapZGitServerの記事も昨日公開しておりましたのでご紹介します。
「abapGitServerをさわってみた」