この記事を読んで頂いているということは、業務システムの開発に携わることになったか、業務システムを開発する会社に就職しようと考えているのではないでしょうか。
よく「業務システムってなに?」「他のシステムやアプリ開発と何が違うの?」といった質問を多々受けることがあります。
極端なことを言ってしまえば開発現場にいる以上、業務システムも他のシステムもプログラミングをして、リリースを行うといった基本的な仕事内容は変わらないのですが、業務システムならではの事柄について説明します。
業務システムと他システムの明確な違い
一口にシステム開発とはいっても大きくジャンルを分けると、ゲームやアニメーション開発を行うエンターテインメント開発と、非エンターティンメントで仕事の利便性の向上を目的としたものから自動釣銭機など皆さんの身近にあるものまで開発を行う業務システム開発の2つに分けられます。
それぞれの開発には大きな違いがあり、重要視する点や、仕事をする上で注意しなくてはならない点など列挙していきます。
業務システムと一言で言っても幅広い
一言で「業務システム」とは言ってもそれをジャンル分けがとても出来ないほどの量があります。
金融系、貿易、医療など公共のシステム開発から、電子マネー、レジといった生活に直結し身近になるもの、テレビ、エアコンなどの家電製品など幅が広すぎます。
案件数でいうなら、ビジネスパートナー会社の営業宛に出される案件参画依頼は毎月100件を超えると言われています。
それほどまでに膨大な数の開発が日々行われていることになります。
そのため、業務システム開発であれば自分が望むプロジェクトに配属される可能性が高い傾向にあります。勿論、世の中のニーズやその会社が専門とする開発分野があればその限りではありません。
業務システムの大きな特徴として世間と密着しているという考えがあります。ゲーム以外の皆さんの身の回りのシステムすべての物が業務システムによって出来上がっています。
我々現代人が使っているスマートホンもOSの構築、半導体の設計など業務システムの集大成になりますし、電車の時刻表、旅行サイトも業務システムの一環です。
「これも業務システムなの?」と思われるかもしれませんが、今でこそアミューズメントとしての利用価値が高いVRですら元々は業務システムのために構築されたシステムになります。
時代が進むにつれて日本でもシステムの多様化であったり、国として東京2020があるため国際化への道を急ピッチで進めています。時代の変化を一番敏感に感じられる開発現場が業務システムの開発現場になります。
業務システムの現場は設計を最重要視する
次に業務システムが他のシステム開発と大きく違う点としては、例えばゲームアプリはリリース後や納期遵守を最重要視しますが、業務システムの現場は設計を最重要視します。
設計とはシステムがどのように動くか、どのデータがどのように関連しているかなどシステム全体の挙動を示した資料になります。
この設計が破綻するとシステムそのものとして破綻してしまうため、設計とその設計をベースに行うテストのフェーズが重要視されます。中には設計に矛盾があったため納期を遅らせるという措置を取る現場も実際に存在する程です。
よく、そのような理由で納期延期が認められるのかという質問も受けますが、逆に納期を遅らせないと社会に大打撃を与えてしまうレベルの開発を行っているのも業務システムの特徴です。
実例を挙げると、某銀行のシステム統合で各社が各々の設計を持ち寄り開発したことで結合部分が全く動作せずに、システム統合がうまくいかず、ATMの動作不良、銀行窓口での混乱が発生しました。
銀行は1日に数億円というお金が動く機関であり、それが数日間続いたというだけで、10億円単位の損失が出たことは想像に難くありません。
他にも最近では、鉄道会社の窓口でクレジットカードが使えないという重大な不具合があり、かなりの時間復旧しなかったことは記憶に新しいです。
クレジット決済を利用しようとしていた人はかなりいたため、1人数万円だとしても利用者が毎日数銭から数万人いたとしたら、これも億単位の損失になります。
どれほど万全を期していてもこういったトラブルというのは起こるものです。
そのリスクを一番減らせるタイミングは設計の段階になるため、業務システムでは設計を最重要視する傾向にあります。
1つのバグが命取りになることも
また業務システムのもう一つの大きな特徴として、たった一つのバグが命取りになるケースも存在します。
数億円や数十億円の損失と述べましたが、それでも会社が倒産しなかったのは大きな金融機関であったり、鉄道会社といった大きな組織であったからです。
これが中小企業だったらということを想像してみましょう。
中小企業の資本金は精々1,000万から多くても数億円程度です。そこに一気に数十億という損失が圧し掛かったらどうなるでしょう。
答えは簡単で売り上げがなくなり、利益は一転して大赤字に、資本金もなくなり従業員に給料が払えず倒産になってしまいます。
IT系企業は10年持つ会社自体が少ないと言われています。その理由としては会社の設立が多く、案件が受託できずに売り上げが出せなくて倒産していくというのは一つの理由としてあります。
しかしもう一つの理由としては、重大な不具合をそこの会社が混入してしまったがために損害賠償請求をされて、更に信頼をなくしたことにより案件が確保できなくなり倒産する会社も決して少なくはありません。
ゲームであれば、「詫び石100個」などで利用者は納得するかもしれませんが、業務システムには「詫び石」などという制度はありません。
ゲームであれば、よく「あれ?今回のアップデートは不具合とかのメンテないね」という言葉を耳にしますが、業務システムでは「不具合が無い事」は当然のことです。 稼働後に不具合が発覚した場合は、その不具合の重大性にもよりますが、深夜であろうと対応を行います。
社会の役に立っていると思えるのが業務システム
怖い事を書いた直後ではありますが、業務システムは社会と密接な関係にあるため、業務システムの開発に携わっていると、社会に貢献しているという意識になり、それが業務システムのやりがいでもあります。
実際に、世間に出回っている製品を見ながら「これは私が開発したものだ」と言えたら鼻が高くないですか?
ゲームなどのエンターテインメント性のあるものが社会の役に立っていないとは言っていませんが、そのゲームを動かす筐体(スマホであったりゲーム機であったり)も業務システムにより開発された物です。
会社向けの業務システムを開発していると、世間の声というのは聞くことが出来ず、もしかしたらやりがいが薄れてしまうかもしれませんが、そのシステムを使ったことにより社会が便利になる物が開発されたとしたらどうでしょう。
会社向けに開発したシステムが無かったらもしかしたら世の中は便利になっていなかったのかもしれません。
業務システム開発者は世間一般的には影の存在であり、ゲームのスタッフロールのように表に出てくるような存在ではありません。 しかし、開発者は「自分が開発したもので世の中が便利になる」「大変な仕事が楽になる」といった貢献を一つの喜びややりがいにして仕事をしています。
業務システムで使われる言語
業務システムの大変さやそのやりがいが理解できたところで、今度はより現場レベルな話に踏み込んでいきます。
業務システムで主に使われている言語はJava、PHP、C#やVB.NETなどの.NET Frameworkを用いた言語となります。それらの言語だけで案件数のの過半数を占めています。
Javaは業務システム寄りになった
15年ほど前にIT系に興味を持った人からすると、「Javaってアミューズメント系が多いのではないの?」という印象を持たれることもあります。
確かにガラケーが主流だった時代や、ガラケーからスマホに切り替わって徐々に普及し始めた時代はJavaは携帯のアプリ開発やゲーム開発の言語として主流でした。
しかし最近ではスマホ内で動くゲームはUnitiy、ブラウザ系のゲームはHTML5やPHPが主流いなってからというものJavaはゲーム開発の第一線から引きました。
その代わりに、Spring FrameworkによるMVC開発、グラフやチャート開発用のライブラリの拡充、データベース接続の非プログラム化による工数削減といったより開発者向けの機能を充実させ、更にJSPなどのWebサイトがよりお洒落に組めるようになったおかげで業務システム開発の需要が高まるようになりました。
実際Javaで組まれたシステムは、電力会社関係のシステム、金融系システム、航空関係のシステムなどその開発工数(金額)が億単位の業務システムの殆どがJavaで組まれています。
Web系の業務システムはJava、C#、PHP、HTML、CSSで開発されている
本題に入る前に、よく「Webプログラミングと業務システムのプログラミングはどのように違うのか」という聞かれることがあります。
結論から言うと、業務システムのプログラミングの一部としてWebサイトを開発する場合にWebプログラミングが使われてるといったところです。
Webプログラミングは勿論業務システムだけではなく、ブラウザゲームや個人のホームページ、ブログなど幅広い環境で使われていますが、幅広いジャンルの中の一つに業務システム開発でも使われていると考えて頂ければ結構です(ここを本気で理解しようとするとかなり時間がかかりますし、明確に説明できる人は例え現役のエンジニアであっても数少ないです)。
そのWeb系の開発に於いてはJava、C#、PHP、HTML(JavaScriptを含みます)、CSSが主流言語として使われています。
JavaであればJSP。C#であればASP.NET(VBでも同等の開発できるのですが、VBによるWeb系の開発は殆ど聞いたことがありません)。PHPであればWebサイトでもかなり使われていますが、どちらかというとWebと連携したアプリ(例:Facebookアプリ、Slackなど)が主流です。
開発する言語は配属された会社であったり、プロジェクトのルールに則って開発をするため、どの言語が勝っている・劣っているというのは特にありません。
そして、Webプログラミングをやるのであれば必須知識としてHTML、CSSがあります。
JSPであれ、ASP.NETであれ、PHPであれWebページを作成するときは必ずHTMLで画面側のプログラムを作成しますし、文字の大きさの制御やレイアウト制御ではCSSを必ず使います。
Javaはオワコン?
エンジニアであったり、エンジニアを志す人は一度は「Javaはオワコン」というフレーズを聞いたことがあるのではないでしょうか。
まず答えから言うと「NO」です。
2-1でも述べた通り、案件単価が億単位の大型案件であったり、日本経済を支えている業界のシステムの殆どがJavaで組まれているため、Javaが向こう数年で完全に廃れるということはまず有り得ません。
なぜこのような言葉が出てきたのか。
所説ありますが、大きく分けると以下の2点に集約されるであろうというのが見解です。
- 2018年にJavaの案件数、案件単価が抜かれてしまい、不動の1位ではなくなってしまった
- Javaのライセンスが有料になってしまった
確かに2018年にJavaの案件数や案件単価はPythonに抜かれてしまった期間というのはあります。これはIT業界の中では結構衝撃的なニュースとして取り上げられました。
Pythonというプログラミング言語をよく耳にするが、それが何故人気なのか理由が知りたいという方、仕事で使われる場面はどのようなところなのかなど、主に未経験の方に向けて情報をまとめていきたいと思います。 Pythonが人気な理由 […]
しかし、分析をしてみるとこれは一時的な話であったことが分かっています。その後Javaはまた1位に返り咲き、現在も案件数は10以上ある主流開発言語の中で30%程を占めています。
次にJavaのライセンスが有料になったこともかなり業界に衝撃を与えました。
元々JavaはSun Microsystemsが無償の開発言語として提供していました。その後、Oracleに買収され、「2019年から有償にする」という声明が発表されました。
これにより、一部の企業でJava離れが確かに起こったことは事実です。しかし、これもJVMまで有償化するのではないのかなど、Javaが利用されている環境全てが有料化すると勘違いしたことが招いた結果になります。
実際に有料になったのは開発言語のJavaというだけであり、そのライセンス料は月額2.5ドルと安価であり、サーバやクラウド向けであっても1CPUにつき25ドルです。
また、OpenJDKという無償版のJavaも出たため、限定的にはなりますが、Javaが無償で利用できるということもその後判明しました。
システムを他言語でリプレースするほうがコストが膨大にかかる上に、他の開発言語のライセンス料の方が高いケースもあることが判明したため、離れた企業のうち大多数が戻ってきました。
参考までにJavaのライセンス料について以下の公式サイトを掲載します。https://www.oracle.com/technetwork/jp/java/javaseproducts/overview/javasesubscriptionfaq-4891443-ja.html
まとめ
業務システム開発はゲーム開発のようなワクワク感であったり誰かを楽しませるというものはありません。
しかし、私達が便利な生活を出来るのは業務システムがここ数年の間に格段に進歩し、煩雑な作業をシステム化することで人員をより適材適所に振り分けられるようになったからです。
業務システムの開発自体はエンターテインメントであったり、グラフィック処理といった業種に比べると開発環境の進化のスピードは遅いですが、一時的とは言えJavaの案件数が抜かれるなど業界として激震が走ることは多々あります。
業務システム開発に配属されるプログラマの中には「エンターテインメント系の仕事がしたかった」「実はゲームやパソコンといったものに影響を受けてこの業界に入ってきた」という人はかなり多いです。
ゲーム業界といえばかなりの数のエンジニアが憧れる世界です。 エンジニアに「IT業界に入るキッカケを教えてください」と聞くと「ゲーム」と答える人が多いです。人気シリーズの作品のスタッフロールに自分の名前が載ったときには鼻が高いでしょう[…]
業務システムが充実していなければそういったエンターテインメント性は追及できません。それほどこの業務システムという幅が広い開発の仕事は私達の実生活に深く根付いています。
業務システムのエンジニアは決して表舞台で華やかになることはありません。それでも会社であったり、人であったり、生活であったりをしっかり支える縁の下の力持ちということを誇れる仕事になります。