ソフトウェア業界というとソフトを開発して売っているイメージですが、それだけではありません。
企業から依頼を受け、必要な情報システムを構築する仕事でもあります。
基本的にはプログラムやシステムを作る仕事が根幹にあり、ビジネスモデルとしては「作ったものを広く売る・依頼に応じて作る」の2パターンになります。
そこで今回は、ソフトウェア業界について、その仕事やビジネスモデル、システム開発の流れなどをお話しします。
ソフトウェア企業の仕事はどんなものがある?
ソフトウェア業界というと真っ先に思い浮かぶのが、アプリケーションの開発業務ではないでしょうか。パソコンソフトやスマホアプリなど、制作して販売するというのがソフトウェア企業のひとつのイメージです。
またショップサイトやニュースサイトなど、各種ネットサービスのシステム構築・保守などの仕事もあります。これらの多くはネットサービスの会社から、開発や保守を委託されて行います。
社内システムの構築保守もソフトウェア企業の仕事
さらに企業から依頼を受け、社内情報システムを構築・保守するのもソフトウェア企業の仕事です。一般的に企業が業務効率化のために情報システムを導入する場合は、ソフトウェア企業にシステム構築を委託するケースが主流です。しかし共同利用型のサービス(ASP/SaaS)を使う企業も少なくありません。
いずれにせよソフトウェア企業の仕事は、基本的にソフトウェアを作ることが中心です。ある意味モノ作りの一種と言えるでしょう。
コンテンツについて
また近ごろよく使われる言葉にコンテンツがあります。中身という意味の単語であり、情報内容などとも呼ばれます。コンテンツとは「文章・画像・音楽」など、そのサービスで提供される内容を指し示します。ソフトウェアはアプリケーションのように、何らかの機能を持つものとコンテンツの両方を含む言葉です。
ソフトウェア業界の2つのビジネスモデル
ソフトウェア業界の仕事は、ビジネスモデルという面からみると下記のように2つのパターンがあります。
- 自分たちでソフトウェア製品を作りそれを不特定多数に販売する
- 特定企業に委託されて情報システムの構築や運用を行う
ソフトウェア企業として一般消費者に名前が知られやすいのは前者です。しかし後者に関わる企業も数多くあり、さまざまな事業を支えています。また後者はインテグレータやアウトソーサのビジネスモデルです。
ウォーターフォールモデルによる開発の流れ
実際に情報システムを開発し構築する場合、いくつかのやり方があります。古典的な流れとしてはウォーターフォールモデルと呼ばれるものがあり、滝の水が流れ落ちるようにトップダウンで工程を進めていくモデルです。
スパイラルモデルとアジャイル開発
それ以外のモデルは、トップダウンとボトムアップを繰り返していくスパイラルモデルがあります。また小さなプログラムに分割して反復するアジャイル開発が近年は注目されています。
アジャイル開発は開発スピードが上げられますが、大人数で開発を行う場合やミスが許されないシステムなどには不向きと言われています。
ウォーターフォールモデルでは要件定義や設計といった上流工程からプログラムの開発、テスト、導入といった下流工程に進みます。基本的に前の工程が完了してから次の工程に進み、後戻りは最小限になります(必要に応じて手直しなどはあります)。各工程を具体的に説明すると次のとおりです。
具体的な設計に入る前に、まず情報システム化について構想を練り構想書を作成します。
- 何のためにこの情報システムを作るのか(目的)
- いつまでに作成するか(スケジュール)
- 費用はどのくらいか(コスト)
上記の3点について、要点をまとめるものです。構想段階ではあくまで基本的な概観で、具体的な計画書は設計段階で作成します。
要件定義とは、システムに必要な機能や性能を明確にしていく作業です。この工程を疎かにすると、後から「あれが欲しいこれも必要だった」などの話になり、プロジェクトに綻びが出かねません。
要件定義の流れ
- 情報システムがどんな業務で使われているか確認する
- 業務の流れを整理した「業務フロー」を作成する
- 業務フローのどこに情報システムが使用されているか明確に記述する
たとえば業務においては、コンピュータに入力する手順や出力された画面やプリントアウトの確認などについて、はっきりとさせておきます。業務中に情報システムがどう使われるかをはっきりとさせることで、必要となる機能やデータベースが明確化されるのです。
さらにコンピュータに入力後、何秒以内に出力が必要かなど、求められる性能に関しても明らかにします。セキュリティに関しても、どこまで求められるかを明確にする必要があります。
こうしたものをまとめて、システム要件定義書という文書を作ります。
システム要件定義書に従い、システムの機能や画面デザイン、操作方法、出力物の書式、データベース構造などについて決めていきます。
たとえば入力を行うシーンにおいて、入力画面は1画面か複数の画面からなるものか、どんな項目を入力するか、数値入力の場合は何桁までとするか、画面やプリントアウトなどの出力についてはどんなデザインや書式かなどをまとめ、外部設計書というドキュメントを制作します。
また入力データやデータベースのデータはどのような処理に用いるか、エラーになる条件は何か、まとめて明確にすることが機能設計であり、これはプロジェクト(サブシステム)ごとに基本設計書としてまとめます。
基本設計書に基づいて、プログラムの具体的な実装について明確に記述していくのが詳細設計です。たとえば入力データをルールに従い処理して結果を返すメイン処理プログラムや、複数の機能で呼び出されて使われるプログラム(サブルーチン)など、その構造についても設計を行い、内部設計書(詳細設計書)というドキュメントを制作します。
内部設計書に基づいて、具体的なプログラムを書いていく作業が行われます。業務アプリケーションのプログラミングでは、C言語やJAVAといったプログラミング言語が使われることが多いですしょう。
また銀行系など古いシステムでは未だにCOBOLを使うこともあります。近頃では、この工程を人件費の安い中国やベトナムなどの海外に委託するオフショア開発も多くなっています。
プログラムを実装したら、設計書通りに動くかのテスト作業が行われます。
- プログラム単位でのテスト(単体テスト)
- 1つの機能に関わる複数のプログラムを確認する連結テスト
- 業務単位での動作確認であるシステムテスト
- ユーザーの操作について確認するユーザー受け入れテスト
以上のように、さまざまなテストがあります。
テストはその目的や確認範囲を明確にした、テスト計画書・テスト仕様書を作成します。またテストケースを設定して、テストケースの入力結果から期待される出力が得られるかも確認します。
開発されたプログラムを実際の業務環境において稼働させるため、システム環境やプログラムの管理の仕組みを準備した上で、プログラムを導入します。導入にあたってデータベースの変更を行う場合には、移行方法や移行後の確認手順について決めておきます。
情報システムが本番の環境に導入された後も終わりではありません。システムを安定して稼働させ続けるために、システムの監視などのシステム運用を行います。システムがきちんと動いているか、またリソースの状態などを監視するのです。
さらにプログラムも必要に応じて改修が行われます。改修にあたっては、要件定義からテスト・導入までまた同じ作業が行われます。ただしドキュメントは作り直すのではなく、既存のものを修正します。改修であっても新規のときと同じくテストは入念に行うことが品質を保つために大切です。
ソフトウェア業界の構造
小さなソフトの開発などでは、前述のような開発工程をすべて同一の技術者が行うところもあります。コンピュータが登場した初期のころはそれが一般的でした。しかし現在は、さまざまな企業で分業することが多くなっています。
たとえば設計などの上流工程は主に大手のシステムインテグレータが行い、下流工程を中小企業のソフトハウスが行うことが多いです。建設業界に例えると大手システムインテグレータ=大手ゼネコン、中小ソフトハウス=工務店といったイメージです。上流工程にいる企業が元請けとなり、下流工程は下請けと考えても良いでしょう。
元請けが大企業なことが多いのは、それだけ大きなリスクをとれるためです。下請けというとネガティブなイメージもありますが、リスクが限定的となるため元請けとは共存関係にあります。
なお元請けとなる大手企業には、それぞれ得意分野があります。たとえば官公庁向け情報システムであれば富士通やNEC、業界インフラストラクチャ(ある業界において共通で利用される基盤)ではNTTデータが代表的です。また金融機関においてはメガバンク傘下の情報子会社が元請けとなり、証券業界では野村総研総合研究所の存在感が大きいです。
これからのソフトウェア業界
フトウェア開発といっても大企業の社内システムから小さなスマホアプリの開発まで、さまざまな規模のものがあります。開発モデルにおいてはウォーターフォールモデルが代表的ですが古典的とも言われ、スパイラルモデルやアジャイル開発など別のやり方も注目されています。ただしそれぞれに一長一短と考えれています。
現代社会においてソフトウェアは無くてはならないものです。そのため将来においてもソフトウェア業界のニーズは高いと見て良いでしょう。企業も自社のITシステムに関しては投資しているところがおおいです。またソフトウェア市場規模も年々拡大を続けています。
ただし競争も激しく、下請け企業では厳しい話も耳にします。またトレンドがめまぐるしく移り変わるため、優秀な人材は常に引っ張りだこの反面、新しい技術についていけないと戦力になりません。