Friday is awesome

SAPについて個人的なメモをまとめたブログです

MENU

ABAPというプログラミング言語を学習するメリット(とデメリット)

ちょくちょく聞いている、ドリキンさんがやっているPodcast番組「backspace.fm」でJSOLの方がSAP/ERPについて解説されていたので、それに関連してABAPを学ぶメリット・デメリットについて考えてみようと思います。
ABAP(Advanced Business Application Programming)は、SAPシステムで使用されるプログラミング言語であり、SAP環境におけるアプリケーションの開発に使用されます。
例えば、iPhoneを例に考えてみます。SAPが工場出荷後のiPhoneだとすると、ABAPは素のiPhoneに追加アプリを開発できる言語です。Apple社標準アプリ自体に対する変更はできない。SAPも「SAP標準」としてインストールされますが、それだけでは使い物にならず、標準の挙動に処理を追加したり、別途欲しい機能をアドオン開発することになります。iPhoneを使うときに工場出荷後の状態のまま使っている人はいませんよね。どんどんアプリを入れながら使いやすくしていくはず。SAPでも同じ考えで、どんどんアドオン機能を追加していくことになります(そうして、SAP導入コストは莫大に膨らんでいきます。良かれ悪かれ・・)。

■メリット

①収入の増加
SAP自体が大手企業、グローバル企業で使用されているため、エンジニア単価が高くなりがちです。そのため、コンサルではなくてプログラマー(ここで言うプログラマーは、SIerでの下請けという文脈での意味合い。ウェブアプリ開発などの開発者とは別の意味)でも比較的、高単価の報酬となります。
Top 10 highest paid programming languages in 2023によるとABAPは第6位!)
プログラマーからコンサルへの転身
SAPはERPシステムであるため、販売・出荷・売上・請求・購買・入庫・在庫・財務会計管理会計・生産など会社の企業活動と密接に関わっています。ABAPプログラマーであっても、単にコーディング能力だけでなく、ビジネスプロセスやSAPシステムに関する知識も必要とされます。そのため、ABAPを習得することで、プログラマーからビジネスコンサルタントへのキャリアパスを選択することも可能です。実際に私の知り合いでも高専卒でコンサル会社へプログラマーとして入社し、経験を積んでコンサル職へ転身した方がいます。
③大規模なシステムでの開発経験
SAPのプロジェクトは大規模なシステム開発プロジェクトであることがほとんどです。ABAPを学習することで、大規模なシステムでの開発経験を積むことができます。

■デメリット
①SAP特有の難しさがある
①-1 業務的な難しさ
純粋なプログラミング能力だけではなく、上述した販売・出荷などの業務内容もある程度は理解する必要があります。ABAPでコーディングが完了すると次にテストします。例えば、受注伝票のチェック機能を実装した場合、テストとして受注伝票を作成しますが、業務に精通していないと伝票登録ができなかったり(正しくできなかったり)して、テストを進められないこともあります(ここら辺は要件元であるコンサルと調整するのが一般的)

①-2 技術的な難しさ
ABAP(SAP)特有の技術であるBAPI/Function Moduleを使いこなしていく必要がある。新規でプログラム開発する場合もSAP標準のBAPI/Function moduleを呼び出すことがあります。この場合、標準プログラムがどのような振る舞いになっているか、どのようなデータモデルになっているかを知っておく必要があります。他の言語でいうと標準ライブラリ/メソッドのようなものでしょうか。ABAPの場合はこれらの文書やSample CodeがWeb上に多くないのも習得を難しくしていると思う。実際にはそれらをすべて網羅している技術者はいないので、チームで協力して進めていくことが多いです。
②学習の取っ掛かりがない
ABAPはSAPという特定のビジネスアプリケーションに特化した言語であり、そのため一般的なプログラミング言語と比較して学習コストが高いです。HTML/Javascriptのように自分のPCで手軽に触ってみるということはできず、"ABAPを学習する" ≒ "SAPをビジネスにしている会社に入る"ということになります。
③市場の限定性
②と関連しますが、ABAPの需要はSAPシステムを利用する企業に限定されます。そのため、ABAPのスキルを獲得しても、もしSAPの仕事から離れれば、その知識は活用できなくなります(もちろん一般的なプログラミングスキルとしては似通っているところもあるので、すべてが無駄にはならないでしょうが)

同じIT技術者でも分野が違うと話が通じないくらい、ITが色々な領域で使われているんだなと思います。Web系の業界ほど派手さはないもののビジネス系IT領域も奥が深くて(技術だけではなくクライアントの業務領域も!)学び甲斐はあると思います。メリット①で述べたように収入も高いですし。