はじめに
「システム開発って、実際には何をしているの?」
エンジニアを目指している学生さんや、IT業界に興味を持っている他職種の方には、そんな疑問を持っている人もいるのではないでしょうか。
システム開発には、一般的に、作業をいくつかの段階に分けて進めていく「開発工程」があります。
「要件定義」「設計」「開発」「テスト」「リリース」といった言葉を聞いたことがあるかもしれません。
でも、システム開発を経験したことがないと、
「要件定義って何をするの?」
「設計って、図を書くこと?」
「開発って、プログラムを書くこと?」
「テストでは何を確認するの?」
と、なかなか具体的なイメージが持ちにくいですよね。
そこで今回は、まずシステム開発の全体像を理解してもらうことを目的に、身近なモノづくり・コトづくりを例にしながら、開発工程を説明していきます。
ここでいう「システム」とは、例えば、Webサービスやスマートフォンアプリ、ネットショップ、企業で使われる業務システムなどをイメージしてください。
なお、システム開発の進め方や工程の呼び方は、会社、プロジェクトによって異なります。
今回は、初心者の方にも分かりやすいように、代表的な流れを紹介します。
一般的なモノづくり、コトづくりの流れ
システム開発の流れを説明する前に、みなさんが普段経験しているモノづくり・コトづくりについて考えてみましょう。
モノづくりやコトづくりには、さまざまな進め方がありますが、今回は大きく次の5つの段階に分けてみます。
左から、
企画 → 設計 → つくる → 確かめる → 公開・実施する
という流れです。
この5つの工程をイメージしやすいように、1つの例で説明してみましょう。
今回は、
「友人に元気になってもらうために、友人の好みに合う料理を作り、料理パーティーを開催する」
という例で考えてみます。
企画
「企画」の工程は、一言でいうと、
「何のためにやるのか、何を目指すのか、どう進めるのかを決める工程」
です。
今回の例では、まず友人と会話をしながら、料理イベントをする目的や、どんな料理を食べたいのかを確認します。
例えば、
「最近元気がなさそうだから、好きな料理を食べてもらって元気になってもらおう」
と目的を決めます。
そして話を聞いた結果、
「友人は辛い料理が好きだから、スパイスカレーを作ろう」
と料理の方向性を決めます。
さらに、予算や開催日を決めたり、当日までに「いつ、誰が、何をするのか」といった計画を立てたりします。
ここまでが「企画」の工程です。
設計
企画が終わったら、次は「設計」の工程に移ります。
設計では、企画で決めた内容をもとに、
「何を作るのか」と「どのように作るのか」
を具体的にしていきます。
今回の例では、まずスパイスカレーを作るために必要なスパイスや具材を考えます。
次に、材料をどの順番で調理するのか、どのくらいの量を使うのかなど、レシピを考えます。
つまり、
・何を作るのか(WHAT)
・どのように作るのか(HOW)
を具体的にしていくわけです。
企画で決めた目的や方向性をもとに、実際に作るものを具体化していくのが設計の工程です。
つくる
この工程では、前の工程で決めた「何を作るのか」「どのように作るのか」をもとに、実際にモノを作っていきます。
今回の例では、まず料理に必要な食材や調理器具を買いそろえます。
その後、設計したレシピをもとに、実際にスパイスカレーを作っていきます。
システム開発の場合は、この工程でプログラムを書いたり、データベースを構築したり、システム同士を連携させたりします。
「開発」と聞くと、プログラムを書くことだけをイメージするかもしれませんが、実際にはさまざまな作業を組み合わせながら、システムを形にしていきます。
確かめる
つくる工程が終わったら、次は「確かめる」工程です。
ここでは、
「作ったものが、企画や設計で決めた内容になっているか」
を確認します。
今回の料理の例では、できあがったスパイスカレーの見た目を確認したり、味見をしたりします。
そして、
「友人の好みに合っているか」
「想定した味になっているか」
などを確認します。
もし、想定していた味と違っていた場合は、味付けを変更して、もう一度調理します。
システム開発でも同じです。
例えば、
「ログインできるか」
「ボタンを押したら正しい画面に切り替わるか」
「入力した情報が正しく保存されるか」
といったことを確認します。
もし期待した動作になっていなければ、原因を調べて修正し、もう一度確認します。
このように、作って終わりではなく、目的や設計どおりになっているかを確認し、必要であれば修正することが重要です。
公開・実施する
確かめる工程で、想定していたものになっていることを確認できたら、次は「公開・実施する」工程です。
ここでは、作ったものを実際に利用してもらったり、イベントなどを実施したりします。
今回の例では、友人のために作ったスパイスカレーを実際に提供し、食べてもらいます。
実は、みなさんもこの流れを経験しています
ここまで読んで、
「こういう流れなら、やったことがあるかも」
と思った方もいるのではないでしょうか。
例えば、バーベキュー、誕生日会、旅行、文化祭、サークルのイベントなどを企画するときにも、似たような流れがあります。
「何をするのかを決める」
→「どうやってやるのかを考える」
→「実際に準備・実行する」
→「問題がないか確認する」
→「実際にみんなで楽しむ」
という流れです。
つまり、みなさんも普段の生活の中で、無意識のうちに似たような工程を経験しています。
このように、各工程の目的を理解しておくと、「今、何を考えればいいのか」「次に何をすればいいのか」を整理しやすくなります。
そして、この考え方はシステム開発にもよく似ています。
「システム開発」と聞くと難しそうに感じるかもしれません。
でも、身近なモノづくり・コトづくりと比べてみると、少しイメージしやすくなるのではないでしょうか。
システム開発の流れ(開発工程)
それでは、ここまで説明した流れを、システム開発に置き換えてみましょう。
図を見ると、先ほど説明した「一般的なモノづくり、コトづくりの流れ」と似ていることが分かると思います。
システム開発では、代表的には次のような工程があります。
要件定義 → 設計 → 開発 → テスト → リリース
料理の例と、大まかに対応させると次のように考えられます。
・企画 → 要件定義
・設計 → 設計
・つくる → 開発
・確かめる → テスト
・公開・実施する → リリース
ただし、これは初心者の方がイメージしやすいように、大きく対応させたものです。
実際のプロジェクトでは、企画、要求整理、要件定義、設計などが分かれていたり、会社や開発手法によって工程の呼び方が違ったりします。
完全に同じではありませんが、
「目的を決める → 設計する → 作る → 確認する → 利用してもらう」
という基本的な考え方は、モノづくり・コトづくりとシステム開発で共通しています。
今回は、まずこの全体像をつかんでもらえれば十分です。
各工程の内容については次回以降の別記事で説明予定です。
システム開発は「作って終わり」ではない
ここで、料理とシステム開発の大きな違いを一つ紹介します。
料理の例では、スパイスカレーを作って友人に食べてもらえば、一つのイベントとしては完了です。
一方、システムは、作ってリリースしたら終わりではありません。
ユーザーに実際に使ってもらいながら、
・システムを安定して動かす
・不具合を修正する
・より使いやすく改善する
・新しい機能を追加する
といった活動が続いていきます。
例えば、ユーザーから、
「こんな機能があるともっと便利なのに」
という要望が出てくることがあります。
その場合は、その要望が本当に必要なのか、どのような機能にするのかを検討し、必要であれば再び要件定義、設計、開発、テスト、リリースという流れで対応します。
つまり、システム開発は一度作って終わりではなく、
「作る → 使ってもらう → 改善する → また作る」
というサイクルを繰り返していく仕事でもあります。
システム開発には「開発する段階」と「使い続ける段階」がある
ここまでの話を整理すると、システムには大きく2つの段階があると考えることができます。
段階① システムを開発し、利用できる状態にする
要件定義から始まり、設計、開発、テストを行い、最終的にユーザーが使える状態にします。
段階② システムを利用しながら、運用・改善する
システムを安定して利用できるように運用したり、ユーザーからの要望や利用状況をもとに改善したり、新しい機能を追加したりします。
そして、新しい機能を開発する場合は、再び要件定義、設計、開発、テスト、リリースという流れを繰り返します。
このように考えると、システム開発は、
「一度システムを作って終わる仕事」ではなく、「システムを使い続けてもらいながら、継続的に良くしていく仕事」
だということが分かると思います。
では、エンジニアは何をしているの?
ここまで読んで、
「じゃあ、エンジニアはこの中で何をしているの?」
と思った方もいるかもしれません。
実際のシステム開発では、エンジニアはプログラムを書くことだけを担当しているわけではありません。
例えば、
・システムをどのような仕組みにするか設計する
・プログラムを書く
・システムが正しく動くかテストする
・リリース後の不具合を修正する
・ユーザーの要望をもとにシステムを改善する
など、さまざまな仕事があります。
また、プロジェクトによっては、エンジニアだけでなく、プロジェクトマネージャー、デザイナー、営業など、さまざまな職種の人が協力してシステムを作ります。
つまり、エンジニアの仕事は「コードを書くこと」だけではありません。
「ユーザーにとって役に立つシステムを、チームで作り、育てていくこと」
もエンジニアの大切な仕事の一つです。
今回は、まずこの全体像を理解してもらえれば十分です。
おわりに
システム開発を経験したことがないと、「要件定義」「設計」「開発」「テスト」などの言葉だけでは、なかなか具体的なイメージを持ちにくいと思います。
そんなときは、今回のように、身近なものに置き換えて考えてみると理解しやすくなります。
今回は「スパイスカレーづくり」を例にしましたが、ほかにも旅行や学園祭、サークルのイベントなど、身近なものに置き換えて考えることができます。
これからITについて勉強していく中で、知らない概念や仕組み、技術、用語に出会うことも多いと思います。
そんなときは、
「これって、身近な何に似ているんだろう?」
と考えてみてください。
難しそうに見えるものでも、身近なものに置き換えることで、意外と理解しやすくなるかもしれません。
今回の記事を読んで、少しでも「システム開発って、こういう流れで進んでいくんだ」とイメージしてもらえたら嬉しいです。

