近年、「業務効率向上」が企業経営のキーワードとなっています。
その中でシステムを開発して導入することは、人間の手作業による負担を減らすことができるため、時間の短縮や人的ミスの防止だけでなく、収集したデータの分析まで行えるという点から、業務効率向上が大きく見込めます。
そんなシステム開発には、自社内で開発を進める「内製」と、外部のシステム開発会社に依頼する「外注」の2つのパターンがあります。内製であれば適切な人材を、外注であれば希望のシステム開発が実現できるシステム開発会社を選択する必要があるため、システム開発のプロセスを理解しておくことはとても大切です。
そこで今回は、システム開発の概要から、開発の手法やプロセス、開発に関わる人、開発にあたっての注意点まで解説していきます。システム開発とは何か知りたい方や、システム開発検討中の方にぜひ読んでいただきたい内容となています!最後までご覧ください。
システム開発とは、企業や官公庁などが業務に効率的に取り組めるように、IT技術を活用したシステムを作り出す工程や一連の作業のことを指します。そのため、ITシステム開発と言われることもあります。もっと分かりやすく言うと、システム開発とは業務がスムーズに行えるための「仕組み」をつくることです。システム開発は大きく3つに分類されます。
・汎用系システム
汎用機と呼ばれる専用のコンピュータを用いて開発されるシステムです。現代においては、高性能な小型コンピュータの普及により主流ではなくなりましたが、金融や保険などの多くの顧客情報を取り扱うデータベースや、大企業のシステムについては今も汎用系で開発が行われている場合もあります。
・オープン系システム
汎用系システムと比べ、様々な環境で開発できる点から「オープン系」と呼ばれています。特に、業務効率化を手助けするようなシステム開発を行います。例えば、勤怠管理システムや経理・会計システムなどです。
・Web系システム
Web系システムは、インターネットを介して利用できるシステムやWebアプリを開発します。デバイスに縛られないという特徴があり、不特定多数の人がアクセスできるため、例えば、ECサイトや予約サイトなどBtoCのシステムに向いています。
▼ 関連記事 ▼
システム開発の手法は、大きく分類して4つあります。開発のスケジュールや要件、ゴールなどと照らし合わせて、どの開発手法が適切か選択していく必要があります。
・ウォーターフォール開発
開発プロセス全体を複数工程に分割し、要件定義 → 基本設計 → 詳細設計 → 開発 → テスト → リリースの順番通りに進行する開発手法です。工程を上から下へと順に行う様子を滝に見立てて、ウォーターフォールという名が付きました。この開発手法では、各工程完了後に前の工程に戻って修正することはできないので注意が必要です。
・アジャイル開発
アジャイルというのは、英語で「機敏な、俊敏な」という意味があり、その意味の通り、開発期間の短縮を特徴とした開発手法です。アジャイル開発は、柔軟性と迅速な反応性を重視し、システムを機能ごとに小さく分割して「計画→開発→リリース」を短期間の反復を繰り返していきます。また、顧客からのフィードバック反映も含めて、要件の洗練と機能の実装を進めていきます。
・スパイラル開発
スパイラル開発は、アジャイル開発と同様にシステムを機能ごとに分割し、要件定義から設計、開発、テスト、評価、改善といった工程を繰り返していくことで、システムの完成度を上げていく手法です。システムが完成したら、本番環境へ移行し、運用・保守の工程に入ります。
アジャイル開発は小さい機能の段階でリリースまで行い、どんどんと機能を追加していくという、スピーディーな「スケージュール重視」ですが、スパイラル開発ではリリースの前段階で繰り返し、スピード感がありながらもシステムを向上させる「品質重視」です。
・プロトタイプ開発
プロトタイプには「原型、試作品」という意味があります。プロトタイプ開発はその名の通り、システム開発の早い段階でシステムの「簡易版」を作り、試作品をもとに検証・修正を繰り返し、ブラッシュアップしていくことで、完成を目指す手法です。
システム開発は正しいプロセスで行うことで、システムの品質向上や滞りのないプロジェクトの進行といったメリットがあります。
以下の通り、要件定義から始まるシステム開発のプロセスですが、その前提として、プロジェクトの計画をしっかりを立てておく必要があります。サービス概要やスケジュールなど、要件定義よりはざっくりとしていながらも、目的・ゴールを明確にしておく作業が必要です。以下が、一般的なシステム開発のプロセスです。
〈 要件定義 〉
予算や期間、システムの性能、必要機能、運用方法などの項目を詳細に詰めて「要件定義書」を作成します。ここで要件が詰まっていないと、後の工程で滞ってしまうなどトラブルの原因になる可能性があるため、しっかりと行いましょう。
▼
〈 基本(外部)設計〉
実際にユーザーが使う画面(UI)をメインに設計していきます。デザインによる操作性はユーザーの使い勝手に直結し、システムに対する評価に関わる部分でもあるため、ユーザー目線から考えて仕様を詰めていく必要があります。
▼
〈 詳細(内部)設計〉
ユーザー視点の外部設計が決まったら、それをもとにスムーズにシステムを動かすために使用すべきプログラムの選定が入ります。内部設計では、実装したときに正常に作動するかどうか、開発者目線での設計をしていきます。
▼
〈 開発〉
外部と内部の設計(詳細設計書)ができたら、いよいよ開発のフェーズに入ります。詳細設計書をもとに、SEやプログラマーが適切なプログラミング言語にてコーディングを行い、プログラムを作成します。
▼
〈 テスト〉
完成したプログラムについてテストを実施します。要件定義で定めた通りに機能が動いているかを確認します。このテスト4つに分類するのが一般的です。
・単体テスト
機能をできるだけ小さく分割して、正常に動くかをテストします。小さい単位でテストすることによって、コーディングミスの発見がしやすくなります。
・結合テスト
単体テスト完了後に、一定機能単位ごとに正常に動作するかのテストを行います。機能ごとに、設計ミスや処理・連携がうまくいかないなどの不具合がないかを確認します。
・総合(システム)テスト
結合テスト完了後に、リリース前のテストとして全ての機能が大きな単位で、要件定義通りに機能するかのテストを行います。
・運用テスト
システムが本番環境で正常に動作するかどうかのテストで、運用のマニュアル等との整合性も確認し、業務に支障なく使用できるか確認していきます。また、外注の場合は発注者が行うのが一般的です。
▼
〈 リリース〉
各テストをクリアしリリースができる状態になれば、一旦システムは完成ということになります。リリースを行いユーザーの環境下でも正しくシステムが動作すれば、リリース成功になります。
▼
〈 運用・保守〉
ここからは、運用チームに引き継がれ運用されるのが一般的です。システムが正しく動作しているかの定期的な確認を行なっていきます。もし、不具合が起きた場合は、早急に改修します。
また、ユーザーからのフィードバックをもとに、ニーズに合わせた新しい機能の提供のため、アップデートを行う場合もあります。運用・保守のフェーズは、そのシステムを使う限り続いていきます。
V字モデルとは、開発工程とテスト工程において各作業をリンクさせ、検証作業を効率よく実施する方法です。サービスの品質確保のために、開発現場でよく用いられています。
V字モデルを活用することによって、要件定義ーシステムテスト、基本設計ー統合テスト、詳細設計ー単体テストといった風に、テスト内容を明確にすることができます。それにより、「どのテストをどこまでやればよいか」という作業のゴールも明確になります。その明確なテストをクリアして次の工程へと進むことで、修正のために前の工程に戻って作業をするのも減らすことができ、スケジュールの把握と組み立てがしやすくなります。
システム開発は、その内容次第で様々な人が関わってきます。今回は、その中でも3つのポジションを紹介します。
・SE(システムエンジニア)
システムエンジニアは、クライアントの要求に対して最適なシステム開発を行うための設計を行うポジションです。また、プログラミング作業に関しては、プログラマーに依頼する場合もあれば、自身行う場合もあります。プログラマーを率いるリーダーのような存在とも言えます。
・PG(プログラマー)
プログラマーは、コンピュータを動かす「プログラミング言語」を使用してシステムを作ります。一般的には、先ほど説明したシステムエンジニアがシステムの仕様書作成や設計を行い、それらをもとにプログラマーがプログラミングを行います。プログラミング言語には、Java、JavaScrip、Objective-Cなど種類があり、開発の内容次第で必要になる言語も異なります。
・PM(プロジェクトマネージャー)
プロジェクトマネージャーは、クライアントの要望や予算をヒアリングし、どのようなシステムを開発するか決め、システムの内容によって金額やスケジュール、開発メンバーを決め、チームを結成してプロジェクト遂行していきます。システムをクライアントに納品して、運用・保守チームにバトンタッチするまでがメインの業務ですが、運用のフェーズまでしっかりと組み立てたスケジュールを立てていくことが大切です。
システム開発にあたって、注意したい点がいくつかあります。内製と外注に分けて解説します。
・内製
内製の場合、まずは開発にあたって必要な知識や技術を持った人材の確保が必要になります。エンジニアといった専門知識を有する人を採用するにあたっては、採用側にも知識がないと、どのような経験や知識がある人を雇えばいいかわからず、採用のミスマッチを起こしてしまう可能性があります。
また、ある程度規模の大きなシステム開発を行う場合、開発全体の管理を行う社員も必要となりますが、元々の業務と兼任となると、バランスを取るのが難しいかもしれません。
他にも、システム開発のためだけの採用となると、システム開発後に人材を持て余してしまう可能性も出てくるため、採用に関しては将来的な計画も含めて考えていく必要があります。
・外注
外注の場合、システム導入の目的を明確にし、企画の段階でコンセプトの決定や市場優位性のリサーチ、実装したい機能をまとめておくと話を進めやすいです。そして、自分たちのイメージしているものが実現できるのかの相性や見積もりなどの選択材料を、早い段階で入手することができます。
また、実際に会社が決まりシステム開発が開始してからも、自分たちのわからない領域なので完全に放置するということはせず、進捗確認や認識の差異がないかの確認など入念なコミュニケーションは欠かせません。
ここまでシステム開発について解説してきました。業務効率化が企業や官公庁の共通の課題として上がる中、システム開発に踏み切る企業も多くなっています。
開発するシステムの金額や完成度は、開発する組織が持っている経験や知識(=エンジニアなど関わる人の質)によって、大きく左右されます。だからこそ、システム開発について理解した上で、内製か外注どちらがいいのか、また外注の場合は自社に合った開発会社を選ぶことが重要になってきます。
JIITAKでは過去に様々な開発を行なってきました。業務の効率化でいうとクラウド型業務管理システムの開発実績があります。
コミュニケーションに重点を置き、過去の開発経験をもとに、お客様とのコラボレーションで開発を進めていきます。形にしたいアイデアのある方や開発検討中の方は、ぜひJIITAKまでご相談ください!