システム開発には、どのような種類が存在するのでしょうか。この記事では、主だったシステム開発の種類とそれぞれの特色やメリット・デメリットを。
そして、自社システム開発の際にどれを選ぶべきかについて解説します。
システム開発にはどんな種類がある?
システム開発には、どのような種類があるのでしょうか。まずは、システム開発の一般的な種類について解説します。

オープン系
オープン系開発は、主に業務用システムを作るために行われる開発形態です。利用範囲がある程度限定的であり、オンラインオフラインどちらでも使えることが多いのが特徴です。
オープン系で作られたシステムとして、下記のような物が挙げられるでしょう。
- 生産管理システム
- 在庫管理システム
- 顧客管理システム
- 営業支援システム
利用者が社内の人間のみであり、アクセスされるデバイスも限定的なのでオープン系の特色とマッチするわけです。
汎用系
汎用系は、汎用機(メインフレーム)で稼働させるためのシステムを開発する形態です。汎用機とは、今現在の小型コンピューターが出る前に活躍していた汎用性の高い大型コンピューターのことです。
汎用系開発は、主にメーカーの基幹システムや金融・物流系において用いられています。安定性やセキュリティ、大規模なデータ処理において信頼性が高いのが特徴だからです。
Web系
Web系は、主にWebサーバーで稼働するシステムやサービスを開発する形態です。現代ではインターネットを通じてさまざまなサービスを活用することができますが、あれらはWeb系で作られているわけです。
オープン系に似ていますが、あちらは利用範囲が限定的であるのに対し、Web系はあらゆる人を対象とするのが特徴です。たとえば、インターネットの大手ショッピングサイトは多くの人が多種多様なデバイスで利用することが想定されるでしょう。
多様な環境に対し、適切なユーザー体験を提供するのがWeb系に求められる要素の一つです。
オープン系開発の特徴
次に、オープン系開発の特徴について深掘りしていきましょう。
使用できる言語が多い
オープン系の特徴として、使用できる言語が多い点が挙げられます。C#やJavaといった汎用性の高い言語に加え、PHPやRuby、Javascriptあたりの言語も用いられます。
利用言語が多いことによる選択肢の多さが、オープン系のメリットと言えるかもしれません。プログラミング言語にはそれぞれ特徴があるため、作るシステムに応じて適切なものを選びやすいわけです。
開発の柔軟性が高い
オープン系の開発は、比較的柔軟性が高いのも特徴です。利用範囲がある程度限定されていることによる選択肢の多さにより、システムやユーザーに合わせた最適化が可能です。
同じ「生産管理」でも、企業によって意味するところが異なるかもしれません。そういった細かな差異に適切に合わせられ、企業の独自的な部分をしっかりサポートできるのがオープン系開発の強みです。
各種管理システムに向いている
以上の特色から、オープン系開発は企業の社内管理システムに向いていると言えるでしょう。生産管理や勤怠管理、営業管理、進捗管理等、業務においてさまざまな管理タスクが生じますが、それらをシステムによって効率化する試みです。
自社に合ったシステムを開発できれば効果は大きいですが、そうでない場合は逆に生産性を阻害してしまうかもしれません。そのような事態を避けるためにも、各種管理系システムは柔軟性の高いオープン系開発によって構築するのが望ましいでしょう。
汎用系開発の特徴
続いて、汎用系開発の特徴について見ていきましょう。
使用できる言語が少ない
汎用系の特徴として、使用できる言語の少なさが挙げられます。 基本的にはCOBOLが主流であり、他の言語が用いられる機会はさほどありません。
言語が制限されることによるデメリットとして「柔軟性が低い」「開発者を見つけづらい」あたりが挙げられます。逆に、メリットとしては「やることが明確」「開発をシンプルに考えやすい」あたりが挙げられるかもしれません。
選択肢が多いと、言語や環境選びにそれなりの根拠が必要になります。根拠を構築するためには各言語や環境についてある程度知る必要があるため、そこにリソースを割く必要が生じます。
逆に言語や環境が一定であれば、シンプルな対応で事足りるわけです。
大量のデータを高速処理できる
汎用系システムの特徴として、大量のデータをリアルタイムに高速処理できる点が挙げられます。そのため、特定の業種においては汎用系でないとシステムの運用が難しいと言えるでしょう。
具体的には、金融機関や公共交通機関等です。両者ともデータの処理に誤りが生じたら多大な損害が生じてしまうため、汎用系による高速処理や信頼性の高さが必須とされています。
クローズドな利用環境が求められる
汎用系で開発されたシステムは、基本的にクローズドな利用環境が求められます。重要な処理を担うため、オープン系よりもさらに利用範囲を狭めるのが一般的でしょう。
また、汎用系のシステム開発はオープン系やWeb系に比べるとコストパフォーマンスが良くありません。業務を効率化して生産性を上げる目的もなくはないのですが、どちらかというと安定的でエラーや誤りが生じづらいシステムが重視されるからです。
Web系開発の特徴
では最後に、Web系開発の特徴について見ていきましょう。Web系で開発されたシステムは、私達にもっとも身近な存在かもしれません。
Web系に特化した言語を利用する
Web系では、Webに特化した言語を利用するのが一般的です。具体的にはPHPやRuby、Javascript等が挙げられるでしょう。
また、デザインのためのHTMLやCSSも頻繁に用いられます。Web系は他の二つに比べて利用者の範囲が広いため、見やすく使いやすいデザインが重視されるからです。
特に、異なるデバイスによるデザインや操作感を均一化させることが求められます。Web系システムのデザイン分野には、汎用性の高さを確保できる技術やノウハウが比較的豊富に揃っているのも特徴です。
コストパフォーマンスに優れている
Web系開発は、コストパフォーマンスに優れているのも特徴です。極端な話、フロントエンドだけであれば、OSに付属しているメモ帳等に記述して一般ブラウザで閲覧が可能です。
バックエンドはWebサーバーで処理を行う必要がありますが、インターネットを利用すれば実行環境を用意するのはさほど難しくありません。もちろんローカルで環境を構築することもできるため、必要に応じて柔軟に構築可能です。
完成したWeb系システムは、AWSやAzure等のクラウドサーバーで稼働させるのが一般的です。AWSやAzureを契約すればWeb系開発に役立つサービスを利用できるため、開発を効率化できるのも利点でしょう。
フロントエンドとバックエンドに分けて開発される
Web系の開発は、フロントエンドとバックエンドに分けて開発されるのが一般的です。フロントエンドというのはユーザーから見える部分であり、バックエンドというのはユーザーから受け取った情報を処理して返す部分です。
フロントエンドには主にHTMLやCSSが使われ、誰にとっても見やすいデザインが作られます。バックエンドにはPHPやRubyといったサーバーサイドの言語が使われ、受け取った情報を正確かつ高速にユーザーに返すことが求められます。
フロントエンドを構築するエンジニアとバックエンドを構築するエンジニアが分かれているのも、Web系の特徴かもしれません。それだけ、フロント側のインターフェースが重視されているとも言えるでしょう。
他にもこんなものがある
システムの種類には、他にもこんなものがあります。参考までに、チェックしてみてはいかがでしょうか。
モバイルアプリ
モバイルアプリは、主にスマホ等のモバイルデバイスで動作させることを前提に開発されるシステムです。スマホの小さい画面でもユーザーがストレスを感じず操作できるようなUIが求められるのが特徴です。
iOS向けであればSwift、Android向けならJavaやKotlin等の言語が使われます。一昔前に比べモバイル端末の普及率が高まったため、モバイルアプリの需要も大きく増加しました。
システムによっては、モバイルアプリで使うのが前提というケースもあるでしょう。
組み込み系
組み込み系は、主に家電製品や産業機器等に組み込まれるシステムです。ソフトウェアのみで構成されるシステムとは異なり、物理的なハードウェアを伴うのが特徴です。
具体的には電子レンジや炊飯器、カーナビ、プリンターやスキャナー等が挙げられるでしょう。物理的な機器からセンサーを通して入力された信号に対し処理を行い、機器を適切に動作させる必要があります。
そのため、ソフトウェアだけでなく、システムが組み込まれる機器に対する理解を深めることも求められます。
制御系
制御系は、その名の通り何かを制御するためのシステムです。具体的には車の自動運転システムや、大掛かりなもので言えば工場のライン制御システム等が挙げられるでしょう。
他のシステムにも言えることかもしれませんが、制御系システムが異常動作してしまうと大きな事故に発展する可能性があります。そのため、安全性や安定性を第一に綿密なテストや検証を行う必要があるのが特徴の一つです。
なお、制御系と組み込み系は厳密に分けるのが難しいケースもあります。大まかに言うと、何らかの機器に組み込まれるのが「組み込み系」、何らかの機器を制御するのが「制御系」といった感じです。
自社のシステム開発にはどれを選べばいいか
システム開発の種類について解説しましたが、ではどういった場合に何を選ぶのが適切でしょうか。続いて、自社システムの開発に落とし込んで考えてみたいと思います。
汎用系は特殊なケースに限られる
まず、汎用系は特殊なケースを除き選択肢から外していいでしょう。前述の通り、汎用系は限られた業種やシーンでのみ用いられる開発形態なので、自社がそれに該当していない限り選ぶ必要はありません。
オープン系やWeb系で事足りるのに、汎用系を選ぶメリットはあるのでしょうか。大量のデータをリアルタイムに正しく処理できるのは確かに魅力的ですが、どちらかというとデメリットの方が目立つでしょう。
開発者を見つけるのもシステムを構築するのも難しいため、費用対効果の悪化が懸念されます。
ある程度限定された環境での利用ならオープン系
社内での利用に限定したシステムであれば、オープン系を選択するのが好ましいかもしれません。汎用性をさほど考慮しなくていいため選択肢の幅が広く、自社業務に適したシステムを構築しやすいからです。
オープン系で開発されたシステムの注意点として、保守やメンテナンスの頻度が挙げられます。システム運用の安定性を保持するためにも、保守やメンテナンスのリソースはしっかりと考えておきましょう。
なお、オープン系のシステムには「オンプレミス型」と「クラウド型」が存在します。オンプレミス型は自前でシステムのための機器を購入し、自社内でシステム運用を完結させるやり方です。
クラウド型はシステムやデータをベンダーサイドで管理する手法であり、利便性やコストに優れているのが特徴です。Web系と特徴が似ておりシーンによっては同じ意味で使われることもあるかもしれませんが、利用範囲による区別が可能です。
利便性やコストパフォーマンスを求めるならWeb系
利便性やコストパフォーマンスを追求したいなら、Web系を選択するのが良いでしょう。Web系はWebサーバー上で稼働するシステムなので、基本的に365日24時間アクセス可能だからです。
Webサーバーの管理は自社ではなく、ベンダー側で行ってくれるのが一般的です。機器全体のメンテナンスや保守を自社で考える必要がないため、リソースを開発主体に割り振れるわけです。
ただ、自社運営のWebサービス等に問題が生じた場合は自社で対応しなければならない点は注意です。また、Web系は誰がどんな環境で見ても適切に表示されるデザインを考慮して構築されるため、広く活用できるのもポイントです。
効率的なシステム開発を行うには
では次に、効率的なシステム開発を行うポイントをいくつかご紹介します。システム開発を成功に導くのは簡単ではありませんが、下記のような点に気を配ることで効率的に進めることができます。
内製と外製
まず挙げられるのは、システムを内製するか外製するかという点です。内製は自社リソースのみで開発する形であり、外製は開発を外部業者に委託するスタイルです。
両者に優劣はないため、自社が置かれている状況に応じて検討するのが望ましいでしょう。社内に既に開発リソースがあり、それらを適切に使える場合は内製の方が合理的であり、そうでない場合は外製の方が好ましいかもしれません。
どちらにもメリットとデメリットがあるため、総合的に判断する必要があります。
自社のニーズを明確化する
自社がシステムに求めるニーズを明確化することで、システム開発の効率化に繋がります。システムの役割は「何らかの課題を解決するため」なので、課題やニーズを明確にすることでシステムに求める要素が明確になるからです。
システムに求める要素が明確であればあるほど、内製でも外製でも開発を効率化できるでしょう。逆にそのあたりが不明瞭であればあるほど仕様が現実と乖離し、いつまで経ってもシステムが完成しない、もしくは完成したものの期待した通りの結果が得られない、といった恐れがあります。
まずは自社がシステムに何を求めるか、どのような課題を解決したいかを明確にしましょう。
信頼できる開発業者を探す
システム開発を外注する場合、信頼できる開発業者を探すことは非常に重要です。システムの開発には少なくないコストと期間がかかるため、万一失敗に終わってしまうとそれらが無駄になってしまうからです。
また、開発業者とのやり取りがスムーズであればあるほどシステム開発を効率化できるでしょう。そのためには良い開発業者を選ぶのはもちろん、こちらも基礎的なITリテラシーやコミュニケーション能力を備える必要があります。
システム開発の外注は業者に投げて終わりではなく、依頼した側が適切に関与するのも大事です。
開発業者の良し悪しを見極めるポイント
システムの開発を効率化するには、良い開発業者を選ぶのが重要です。では、開発業者の良し悪しはどのように見極めればいいのでしょうか。
開発実績は豊富か
まずチェックしたいのは、開発実績です。一般的に開発実績が豊富であればあるほど、技術力および開発体制が信頼に値するからです。
システムの開発スキルは座学で学べる余地もありますが、当然それだけでは不足です。実際にクライアントから依頼を受けニーズをヒアリングし、目的にそったシステムの開発および運用をサポートできるどうかが問われるでしょう。
開発実績が豊富な開発業者ほど、そのあたりの知見に富んでいることが期待できます。加えて、自社が開発したい分野の開発実績が多ければ尚良しです。
ITの技術分野は多岐に渡るため、どの業者も得意分野とそうでない分野があるからです。相手の技術力が高くとも、不得意分野の開発を依頼するのは双方に利点がありません。
コミュニケーションに問題はないか
実績や技術力に加えて、コミュニケーションの取りやすさもポイントです。システムは自社が抱えている課題を解決するのが本旨なため、開発にあたっては課題の詳しい内容や期待する解決方法等を伝える必要があるからです。
そのあたりが正しく伝わらないと、求める機能が欠如したシステムになってしまうかもしれません。多くのリソースやコストをかける以上、システムには費用対効果の高さを求めたいところです。
そのためにも、コミュニケーションがスムーズに行える開発業者を見つける必要があるわけです。もちろん、相手のコミュニケーションに問題がないだけではなく、こちらにも同じことが言えます。
コミュニケーションは双方で行うものだからです。
予算や納期に無理はないか
良い開発業者を見つけ適切なコミュニケーションを行ったとしても、予算や納期に無理があると期待通りのシステムが完成しないかもしれません。システムを開発するには、相応のリソースやコストがかかるからです。
無理な予算や納期でシステムを完成させようとすると、どこかしらを犠牲にする必要があります。機能の削除やUIの分かりやすさ、操作感等が挙げられるでしょう。
予算を多少削減できたとしても、多額のコストがかかることに変わりはありません。であれば、削減を目論むのではなく最初からある程度の予算を見込み、後からシステムの運用で取り返すのも一つの選択です。
納期に関しても同じことが言えます。多少納品が前倒しになったとしても結局ある程度の時間がかかることに変わりはないため、最初から適切なスケジュールを組むのが総合的な費用対効果を高める手です。
まとめ
システム開発には、大きく分けて「オープン系」「汎用系」「Web系」が存在します。いずれも特徴やメリット・デメリットが異なるため、システム開発の際には適切なものを選びましょう。
また、場合によってはそれぞれの言葉が異なる意味を指していることもあるため注意が必要です。やり取りの際には、定義を明らかにして進めた方がいいかもしれません。