第30回「WEBシステムとデスクトップシステムの長所と短所」
更新日:
こんにちは、森川です。
今、企業のオリジナル業務系システムの設計を進めています。
オリジナル業務系システムの開発ってなかなかやりごたえあるのですよ。
なぜかとういと、いろいろな手法が使えるからです。
今日はその話について書いてみたいと思います。
はじめに
オリジナル業務系システムの開発の大きな特徴は、使う端末やOSやブラウザなどを限定することができるということです。
例えば、Windowsパソコンしか使っていない会社のシステム開発をするのであれば、Macパソコンについて考える必要はないです。
これは工数が減るというメリットもあるのですが、逆に考えるとWindowsパソコンしか持っていない機能を使ってもいいことになるのです。
これとは対照的に例えば弥生会計のような汎用パッケージソフトを開発する場合はそうはいかないです。
WindowsもあればMacもあればAndroidなどもあるかもしれない。
それらすべてのシステム条件で動くように作るには、使える手法が限られてくる。
一般的にはWEBシステムになるでしょう。
話は変わって当社のシステム開発は、2018年現在でおおよそWEBシステム:6でWindowsデスクトップアプリ:3でアンドロイドなどのスマホアプリ:1ぐらいの割合と思います(WEB制作を除く)。
その他VBAやGoogleのGASなど細かいところを含めると結構いろんなことをやっています。
このような幅広くいろいろなところを見ている経験が今回のようなシステム開発にとても生きてくるのです。
具体的にいうと、WEBシステムでデータの一括更新といえばcsvアップロードになると思います。
でもWinアプリの開発経験があれば、csvの元になるのはExcelだからExcelからサーバーへ直接更新した方がもっと楽じゃんという考えも浮かんできます。
パッケージソフトでは難しいですが、オリジナル業務システム開発ではこういうことが可能になるのです。
要はWEBシステムとデスクトップシステムのいいとこどりをしたようなシステムを構築することができるのです。
いいとこどりシステムを設計するには当然、両者のメリットデメリットを理解しておかないといけない。
それには「業務系システム開発の歴史」を知っておくことはとても役立ちます。
今回は私がこれまで見てきた経験を踏まえながら「業務系システム開発の歴史」を振り返り、WEBシステムとデスクトップシステムのメリット、デメリットについて書いてみたい。
業務系システム開発の歴史
企業で動いている業務系システムってすべて時代の最先端のシステムが動いているわけではないです。
開発費が何千万何憶するようなシステムを簡単には入れ替えることはできないので、古くなったけど運用に支障がないシステムはそのまま残っており普通に業務で使われています。
だから、ちょっと歴史の長い会社のシステムを見ていると、その時代時代で主流となったシステムが動いており、歴史の流れを感じることができます。
以下の流れで解説していきます。
汎用機(メインフレーム)とCOBOLの時代(~1990年代)
私が見たシステムの中で一番古い時代のものが汎用機、メインフレーム、ホストコンピューターなどと呼ばれるやつです。汎用機と言えばIBMというぐらいIBMが強かった時代。
そしてこの汎用機と切っても切り離せないプログラミング言語がCOBOLです。
この時代は今のようにコンピューターが1人1台持てる時代ではなく会社に数台のコンピューターしかおいていない時代。
またネットワークも発達しておらず、コンピューター同士のデータのやりとりもおぼつかない時代。
そうなってくると1台の中央コンピューター(汎用機)を準備し、その中で売上管理から経理処理から帳票出力まですべてやりましょうという話になる。
汎用機以前の時代はどうだったかというと、経理は経理用のコンピューター、売上管理は売上管理用のコンピューターとそれぞれ個別に分かれていたらしい(さすがにその時代のシステムはお目にかかったことはない)。
それらを1台の中央コンピューターに集約することにより、データを一元化管理する。
そしてその1台のコンピューターで売上から経理からいろいろな情報を汎用的に処理していたため汎用機と呼ばれたらしい。
私がこのシステムを見た当時は、Windowsパソコンから汎用機を操作するのに、エミュレーターというソフトをインストールして操作していた。
エミュレーターを実行すると真っ黒いDOSのような画面と文字が現れ、操作はTabとかFunctionを主に使うのでちょっと不思議な操作感でした。
決してこのエミュレーターが複雑な処理をしているわけではありません。
エミュレーターは汎用機側の画面を表示しているだけですべての処理は汎用機側で行われています。
この時代のシステムはこのような中央集権的なシステムでした。
余談ですが、このようなシステムは今でも銀行系では根強く残っているようで、時代とともに開発者が減少したためなかなかメンテナンスが大変と聞いたことがあります。
クライアント・サーバー型システムの時代(2000年前後)
時代の流れとともに安価で高機能なコンピューターが手軽に手に入るようになってきます。
そしてインターネットが普及し1人1台のパソコンを持つ時代になりネットワークが発達してきます。
汎用機の時代は、扱えるコンピューターの数が少なく性能も乏しいため中央集権的に高性能な1台のコンピューターですべて処理を行っていました。
しかしこの時代になると扱えるコンピューターの数が多くなり、高性能になります。
そうなってくると、汎用機のように1台のコンピューターですべて行う必要がなくなってきます。
役割分担を明確にして複数台で一つのシステムを動かす方が効率的になるのです。
このようなシステムを、汎用機の「ホストコンピューター」と対比して「分散システム」などと言います。
例えば、「売上データ」は500人の社員が同じものを閲覧できるように1つのコンピューターで保持しておく必要があります。
でもその「売上データ」を元に「営業達成率」を計算する処理は、1つの中央コンピューターで処理する必要がないのです。
元になる「売上データ」だけ共通のコンピューターから取得して、計算は自分の手元のコンピューターでさせる方が効率的でしょう。処理を分散させることができるからです。
自分の手元のコンピューターを「クライアント」、データを保持する唯一のコンピューターを「サーバー」と言います。
このような「クライアント」と「サーバー」が連動しながら動くシステムを「クライアント・サーバー型システム」と言います。
汎用機時代は「クライアント」の性能が低かったためこのようなことができなかったのですが、時代とともに「クライアント」の性能が非常に高くなりいろいろできるようになり分散システムの方が効率的になったのです。
この「クライアント・サーバー型システム」はまだまだばりばり現役です。
「汎用機」はもうあまり見ることは少ないですし、新規開発では間違いなく使われることはないと思いますが、「クライアント・サーバー型システム」は案件内容によっては今でも新規開発で用いられることはあると思います。
またこのシステムは一般的に、クライアント側のコンピューターにアプリケーションをインストールして動作するデスクトップシステムになります。
WEBシステムの時代(2000年~2010年ぐらい)
話は変わって、インターネットの普及とともに、WEBブラウザというアプリケーションが高機能になってきました。
WEBブラウザとはWEBサイトを閲覧するときに使うMicrosoft EdgeやChromeなどです。
「クライアント・サーバー型システム」の時代ではWEBブラウザはインターネットを閲覧するだけのアプリケーションでした。
しかし時代とともにWEBブラウザが高機能化し、これをクライアント側のアプリケーションとして利用してシステムを構築できるようになってきたのです。
これがいわゆる「WEBシステム」です。
「WEBシステム」も「クライアント・サーバー型システム」の一種ではあります。
しかし「クライアント・サーバー型システム」とは別枠で扱わることが多いと思います。
なぜかというとWEBブラウザというアプリケーションが他のアプリに比べて特殊であるためです。
WEBブラウザの大きな特徴の一つは、
WindowsからMacからAndroidまですべての端末に購入時にインストールされているため、自分で新たにインストールする必要がない。
ことです。
皆さんがパソコンを購入してインターネットを閲覧するために新たに何かインストールする必要がないでしょう。
WindowsならEdgeがあるし、MacならSafariがあるでしょう。
WEBシステムのメリットは、
・ブラウザは事前にインストールされているためURLをたたくだけで簡単に動作する
・端末やOSを問わずどんな環境でも動作する
ことがあげられます。
クライアント・サーバー型システムは、端末に必ずインストール作業が必要ですし、WindowsやMacによって別々にアプリケーションを開発しないといけないです。
「WEBシステム」は従来システムに比べ開発やメンテナンスがとても楽なのです。
業務系システムの場合は、このメンテナンスの容易性がとても大きなメリットとなります。
企業のシステムを経験した人は本当によくわかると思うのですが、例えば社員500人全員にインストール作業をしないといけないとなるとかなり大変です。
システムをアップデートしたら再インストールしないといけない問題も発生します。
そんなの自分ですればよいだろう???
いやいや企業のパソコンは、セキュリティ対策のため使用するアプリケーションなど厳格に管理する必要があるので、個人のパソコンのような扱いはできません。
でもWEBシステムであれば、ブラウザさえあればよいのでそんなこと関係ないのです。
ブラウザはコンピューター購入時にインストールされていますし。
WEBシステムからRIA(リア)へ???(2010年前後)
こんな便利なWEBシステムですが、クライアント・サーバー型システムと比較して大きな欠点があります。
WEBブラウザが高機能化したと言っても機能面ではまだまだクライアント・サーバー型システムに及ばない点です。
例えば、csvをダウンロードしてCドライブの任意のフォルダを開いて保存するとかできないでしょう。
また操作したときのレスポンスもいまいちよね。ページ遷移ごとにサーバーに通信に行くから一瞬待ち時間ができる。
クライアント・サーバー型システムに比べてサクサク動かないよね。
「WEBシステム」は「クライアント・サーバー型システム」と比べて運用面では優れているのだけど機能面では劣化しているのです。
これらのWEBシステムの欠点を補うために、出てきたのがRIA(リッチインターネットアプリケーション)です。
一番代表的なのがそうです、かの有名なFLASHです。
その他SilverlightやJavaアプレットもRIAに位置づけられると思います。
RIAはそれだけで単体で動くものではなく、プラグインのようにブラウザにインストールしてブラウザを高機能化します。
その当時、ブラウザアプリでPhotoshopのような画像加工できる有名なアプリケーションがありましたが、まさにそれはRIAでできていました。
ブラウザベースなのでPhotoshopのようにインストール作業は必要ありませんのでURLをたたくだけで気軽に使えました。
RIAを使えばWEBシステムの利点を残しつつデスクトップアプリケーションのような高機能なシステムを作ることができたのです。
そのような利点からRIAはいろいろなところで利用され始めました。
WEBサイト制作もすべてFLASHで制作するフルフラッシュサイトというのが増え始め、システム開発もSilverlightやFLASHなどのRIAを使えば WEBシステムの欠点を補えるすばらしいシステムを構築できると言われていました。
その当時は現在主流の技術であるHTML5もW3Cにより勧告されていましたが、HTML??そんなものはもう古いよっていう風潮でしたし、
これからは「RIA」「 RIA」「 RIA 」「RIA」とみんなが言っていたものでした。
そうiPhoneが現れるまでは。
しかしiPhoneが普及しiPhoneがFLASHを排除したことによりすべてが激変したのです。
その当時FLASHを専門としたフラッシャーと呼ばれる職業があり、WEB業界ではフラッシャーは神のようにあがめられていました。
実は私も昔学習した経験があるのですが、フラッシャーになるにはActionScript3.0と呼ばれるJavaを模倣したようなプログラミング言語を習得しなければなりません。
これがPHPなどのスクリプト言語に比べ比較難儀なためフラッシャーは神のように扱われていたと記憶しています。
iPhoneの登場でこのフラッシャーという神とあがめられた職業もなくなりました。
そして、それまで誰も使わないよって言われていたHTML5が、息を吹き返し2018年現在HTML5はいろいろなところで必須の技術になっています。
逆にRIAという言葉自体も聞かなくなりました。
大恐竜時代に例えるならば隕石が「iPhone」で恐竜が「RIA」です。
大恐竜時代の隕石の衝突に匹敵するぐらいiPhoneの出現は時代を変えました。
2018年現在
RIAがなくなった現在、業務系システムで今一番の主流はまだ「WEBシステム」と思います。そしてそれの発展形が「クラウドコンピューティング」になってくるのだと思います。
しかし、時代とともにブラウザの機能が発達していろいろできるようになってきましたが、機能面などのWEBシステムの欠点はまだまだ克服できていないのが現状です。
まとめ
上述のことをざっくりとまとめると、
WEBシステムのメリットは「管理面の優位性」であろう、それに対してクライアント・サーバー型システムのようなデスクトップアプリのメリットは、「機能面の優位性」であろう。
これらのことを考えてざっくりシステム設計してみる。
社員500名全員が使うシステムを構築する場合、500名の全社員が扱うページは管理面を重視してWEBシステムがよいであろう。
しかし、そのシステムを管理する管理側のページは管理者の限られた数人しか使わない。
であれば、インストール作業も手間ではなく、「管理面」より「機能面」を優先してクライアント・サーバー型のデスクトップアプリで開発することも考えられるのである。
デスクトップアプリは開発工数がかかるのであればMicrosoft Accessなどを連動させて代用する手法も考えられる。
などなどとオリジナル業務系システムの開発にはいろいろな手法が考えられるのです。
業務系システムの開発の奥深さはここにあります。
余談 WEBシステムのメリットデメリットを理解するためのもっとわかりやすい例
上記で「業務系システム開発の歴史」について書きましたが、「WEBシステム」の長所欠点を理解ために身近なものがあります。
それは「Excel」と「Google Spreadsheet」です。
Google SpreadsheetはWEBシステムです。
Excelはインストール型のデスクトップシステムです。
ここでは深く説明しませんが、「Excel」と「Google Spreadsheet」を両方使えば「WEBシステム」のメリットデメリットはよく理解できます。
「Excel」と「Google Spreadsheet」を両方使っている人も多いのではないかと思います。
一度自問自答してみてはどうでしょうか。