見出し画像

プログラミングだけが仕事じゃない!「機能を作る」と「動かす土台」の違いから理解するSIプロジェクトの工程(前編)


エンジニアの仕事の流れって?

今回は、IT業界に興味をお持ちの就職活動中の学生さんや、異業種からIT業界への転職を考えている未経験の社会人の方々にむけて、エンジニアが日々従事しているシステムインテグレーション(SI)案件のプロジェクトの流れについて、分かりやすく説明したいと思います。

もちろん、エンジニアと一口に言っても、その役割や担当するポジションによって仕事内容は大きく異なります。

また、ここでご紹介する内容はあくまで一般的なSI案件の例であり、個々のプロジェクトや企業によって細部は異なりますので、「ざっくりこんな感じなんだな」と大まかなイメージを掴んでいただけると幸いです。


SI案件とは

SI(システムインテグレーション)とは、特定のクライアント企業様向けに、個別のシステムを構築するお仕事のことです。

お客様が抱えるビジネス上の課題を、システムの力で解決していく。それがSIer(システムインテグレーター)の大きな役割と言えるでしょう。

システム構築には多種多様なエンジニアが関わりますが、大きく分けると「アプリケーションエンジニア」と「インフラエンジニア」の2種類が中心となります。

この記事では、SI案件の各フェーズにおける、これら両者の視点の違いにも触れながら解説を進めていきます。

SI案件におけるシステム開発は、一般的にいくつかのフェーズに分かれて進行します。今回は、その中で「要件定義」「基本設計」「詳細設計」の3つのフェーズを前編としてご紹介します。


フェーズ1:要件定義

プロジェクトの最初のステップは、お客様がどのようなシステムを求めているのかを深く理解することから始まります。これが要件定義フェーズです。

この段階から、アプリケーションエンジニアとインフラエンジニアでは、お客様の要望に対する思考の方向性が異なってきます。

アプリケーションエンジニアの視点
アプリケーションエンジニアは、主にシステムを利用する「ユーザー」の視点に立って考えます。
例えば、「どのような画面が必要か」「業務の流れはどのようになるべきか」「どのようなデータを扱うのか」「最終的にどのような情報が出力されるべきか」といった点をヒアリングし、ユーザーにとって使いやすく、ビジネス課題を解決できるシステムの姿を具体的に形にしていきます。

インフラエンジニアの視点
一方、インフラエンジニアは、そのアプリケーションが安定して稼働するための「基盤」を考えます。
具体的には、「どの程度の処理性能(スループット)が必要か」「同時に何人くらいのユーザーが利用するのか」「セキュリティはどのように確保するか」「システム運用はどのように行うか」といった、システムの土台となる部分を設計していきます。
こちらは、システムを「運用する側」の視点が強いと言えるでしょう。

このように、要件定義フェーズでは、同じお客様の要望であっても、アプリケーションエンジニアは「ユーザー目線」、インフラエンジニアは「運用者目線」という異なるアプローチで要件を整理していくのが特徴です。

この視点の違いは、以降のフェーズでも共通して存在します。


フェーズ2:基本設計

お客様の要件が明確になったら、次に基本設計フェーズへと進みます。

このフェーズでは、要件定義で定めた「何を(What)実現するか」という内容を、「どのように(How)実現するか」という視点で、システムの骨組みを具体的に決めていきます。

基本設計は、システムの全体像を設計する重要な工程です。例えば、システム全体の機能構成、データの流れ、外部システムとの連携方法などを定義します。

多くの場合、要件定義フェーズの段階で、既に基本設計の方向性も念頭に置かれているため、このフェーズで全く新しい検討事項が大量に発生することは比較的少ないかもしれません。

ここでも、アプリケーションエンジニアとインフラエンジニアの視点の違いは健在です。

アプリケーションエンジニアの視点
アプリケーションエンジニアは、ユーザーが直接触れる画面のレイアウトや操作方法、各機能の具体的な動作、データの入出力形式など、ユーザー体験に直結する部分の設計を深掘りします。
例えば、画面遷移図や機能一覧表などを作成し、システムの使いやすさを追求します。

インフラエンジニアの視点
インフラエンジニアは、システムが稼働するサーバーの構成、ネットワークの設計、データベースの構造、セキュリティ対策の詳細など、システムの安定稼働と性能を支える基盤部分の設計を行います。
例えば、サーバー構成図やネットワーク構成図、ミドルウェアの選定などを行い、システムの「堅牢性」と「効率性」を追求します。

このフェーズで作成される設計書は、後の詳細設計や開発工程の基盤となるため、お客様との合意形成をしっかりと行うことが非常に重要になります。


フェーズ3:詳細設計

基本設計フェーズでシステムの骨組みが固まったら、いよいよ詳細設計フェーズに入ります。

このフェーズでは、基本設計で決めた内容を、実際に開発や構築ができるレベルまで具体的に落とし込んでいきます。

詳細設計は、いわばシステムの「設計図」をさらに細かく描く作業です。この設計書に基づいて、次の開発・構築フェーズでプログラミングや機器の設定が行われます。

アプリケーションエンジニアの視点
アプリケーションエンジニアは、各機能の内部処理ロジック、データベースのテーブル定義、プログラム間の連携方法など、コードレベルで実装可能な詳細な設計を行います。
例えば、クラス図やシーケンス図、画面項目定義書などを作成し、プログラマーが迷うことなく開発を進められるように準備します。

インフラエンジニアの視点
インフラエンジニアは、サーバーのOS設定、ミドルウェアのインストール手順、ネットワーク機器のルーティング設定、セキュリティポリシーの詳細など、具体的な設定パラメータや構築手順を定義します。
例えば、サーバー構築手順書やネットワーク設定書、ミドルウェア設定書などを作成し、インフラ環境を正確に再現できるように準備します。

ちなみに、ドキュメント作成の目的も両者に違いがあります。

アプリケーションエンジニアが作成するドキュメントは「機能を実現するためのドキュメント」であるのに対し、インフラエンジニアが作成するドキュメントは「環境を再現するためのドキュメント」という性質が強い傾向にあります。

これは、それぞれの役割が「動くもの」と「動かすための土台」という違いに起因しています。

この詳細設計がしっかり行われることで、後の開発・構築フェーズでの手戻りを減らし、品質の高いシステムを効率的に作り上げることが可能になります。


後編について

前編では、SI案件の初期段階である「要件定義」「基本設計」「詳細設計」の3つのフェーズについて解説しました。これらは、システム開発の土台を築く非常に重要な工程です。

後編では、いよいよシステムが形になっていく「開発/構築」フェーズから、実際にシステムがお客様の元で稼働するまでの「検証」「本番導入」フェーズについて、さらに詳しく掘り下げていきます。

エンジニアの仕事のイメージがより具体的に掴める内容となっておりますので、ぜひご期待ください。


後編はこちら



いいなと思ったら応援しよう!

FS1250021 | アラフォーエンジニアの人材育成論 よろしければ応援お願いします!