エンジニアの上流工程とは?上流工程の仕事内容から必要なスキルまで解説|就職・転職者職業ガイド
IT業界を本音で語る「ユニゾンキャリアの編集部」の真心です。
本記事のトピックスはこちら!
- ・エンジニアの上流工程って何?
- ・エンジニアの上流工程はどんな仕事内容?
- ・エンジニアが上流工程に必要なスキルは?
未経験からエンジニアになった人は下流工程からスタートするのが一般的です。
しかし、スキルや経験を積んで上流工程に行くことができれば、エンジニアとしての市場価値を高められます。
弊社でも、上流工程に行ったことで年収が大幅にアップしたという人は少なくありません。
そのため、需要の高いスキルを身に付けて上流工程を目指すことが大切です。
事前に読みたい⇒【簡単図解】エンジニアの仕事内容をわかりやすく解説!工程・職種・企業の3要素からみる仕事の違い|就職・転職者職業ガイド
目次
1.エンジニアの上流工程とは?
エンジニアの上流工程とは、「顧客のニーズに合わせてシステムの設計図を作成するフェーズ」です。
顧客がシステムに対して希望する要件や必要性や優先順位、内在する課題や懸念事項などを適切にヒアリングし、機能として落とし込んでいきます。
1-2.下流工程と上流工程の違い
下流工程と上流工程は、作業内容が大きく異なります。上流工程はシステム全体の仕様や動作に関係する要件定義や基本設計、詳細設計などのフェーズです。
一方で、下流工程は上流工程で完成された仕様書や設計書をもとにコーディングを行ったり、テスト、運用・保守などを行います。
分かりやすく言うと、上流工程では計画の段階です。下流工程では実作業がメインになる段階です。
上流工程はシステムや技術の知識、運用レベルの業務知識はもちろん、コミュニケーション力、企画力、交渉力、提案力、言語化能力など、技術以外の幅広いスキルが求められます。
下流工程はコーディングやテストなど、設計書の内容を論理的に理解するコミュニケーション能力と、正確にシステムの構築するプログラミング能力が必要です。
1-3.開発とインフラの上流工程の違い
同じ上流工程でも、開発エンジニアとインフラエンジニアでも作業内容が違います。
開発エンジニアの上流工程はシステムやプロダクトに対して「要件定義」「基本設計」「詳細設計」を行います。
また、システムや技術、業務知識などの幅広い知識が必要です。
一方で、インフラエンジニアの上流工程は情報システムのインフラに対して「要件定義」「設計」「構築」を行うという違いがあります。
また、インフラやクラウド、運用フローや業務負荷などに関する知見が必要です。
開発エンジニア、インフラエンジニアどちらの上流工程も、システムやプロジェクトの根底を支える重要な役割を担っており、顧客に対する丁寧なヒアリングや密接なコミュニケーションが欠かせません。
2.開発エンジニアの上流工程
開発エンジニアの上流工程は、大きく分けて「要件定義」「基本設計」「詳細設計」の3つです。
システムやプロジェクトにおける基幹となる部分を担っており、顧客と直接打ち合わせやヒアリングを行ったうえで必要な機能を細分化していくという工程です。
2-1.要件定義
開発エンジニアの要件定義とは、プロジェクトにおける必要な機能や要求条件を明確にすることです。要件定義は、「機能要件」と「非機能要件」のふたつに分かれます。
機能要件とは「システムが提供する機能そのもの」であり、非機能要件とは「システムが実現するために必要な性能や保守性、セキュリティなどの要件」を指します。
例えば、商品の在庫管理システムの導入に際して機能要件を考えた場合、以下のような機能が考えられます。
機能要件
- ・在庫検索/一覧表示
- ・入出庫管理
- ・検品管理
- ・棚卸
- ・返品管理
- ・データ出力/インポート
- ・在庫分析
これに対して非機能要件は、機能要件以外のすべての要件を定義します。
非機能要件
- ・レスポンスタイムを3秒以内にする
- ・サービス稼働率は95%を目標にする
- ・システムダウン時は3時間以内に復旧する
- ・正社員以外は本番環境へアクセスを禁止する
- ・データ量の増大に備え、性能に拡張性を持たせる
機能要件は業務内容に直結するためイメージがしやすいものですが、非機能要件は技術的側面が強く、要件定義において漏れが発生しやすいです。
このため独立行政法人情報処理推進機構(IPA)は「システム構築の上流工程強化(非機能要求グレード)」を公表し、非機能要件を漏れなく定義することの重要性を明示しています。
参考:システム構築の上流工程強化(非機能要求グレード)紹介ページ|IPA
2-2.基本設計
要件定義が終わったら、基本設計フェーズに入っていきます。
基本設計とは要件定義の内容を実現するために、それぞれの機能が「何を実現するのか」といったシステムの概要をまとめる作業のことです。
基本設計では、システムの規模や予算に応じてインフラやアプリケーションのアーキテクチャ設計、コスト試算、言語の選定などを行います。
●インフラ設計・構築
システム構成図とは、システム全体の構成を線などを用いて図で示すことです。
顧客や予算、機能要件・非機能要件の状況に応じて、クラウド・オンプレミスどちらにするかを選定し、必要なインフラ設計と構築を行います。
またインフラ設計や構築は、主にインフラエンジニアの業務領域です。
このため要件定義や基本設計フェーズからインフラエンジニアがプロジェクトに参画して進められるケースもあります。
●コスト試算
開発を行うシステムの規模や要件から、開発費用や工数がどの程度かかるかを試算する作業です。
システム開発においては、「開発環境」「検証環境」「本番環境」などが必要となるため、環境別にコストを試算しておく必要があります。
●言語・技術の選定
開発フェーズで使用するプログラミング言語やライブラリ、バックエンド・フロントエンドのWebフレームワークなどを選定する作業です。
システムを利用する企業の標準プログラミング言語やフレームワークがあればそちらが採用されます。
Web系スタートアップ企業などの場合、その時のトレンドになっている言語やフレームワークが技術的チャレンジとして採用されることもあります。
●画面設計
画面遷移図やワイヤーフレーム(画面レイアウトの配置などを表現した設計図)を作成する作業です。
システムによっては、バックエンドのプログラムが提供するAPI(アプリケーションプログラミングインタフェース)を設計することもあります。
Webアプリケーションの場合は、画面設計をUI/UXデザイナーやWebデザイナーなどと協力しながら進めることもあります。
●開発フロー設計
開発フロー設計はチーム開発に必要なルールや手順を決定し、各種ツールの選定などを行う作業です。
プログラミング言語や画面設計と並行して、チームによる開発がスムーズに進められるための開発フロー設計も進めます。
ソースコードを管理するためのGitリポジトリの構成、ブランチ構成やプルリクエストのルール、コーディング規約、コードレビュー方法、タスク管理方法など、様々な取り決めを行います。
2-3.詳細設計
基本設計書や遷移図などをもとに、具体的な機能別に設計書を落とし込んでいくフェーズです。
詳細設計は上流工程に位置付けられますが、これから実務経験を積んでいきたい若手エンジニアに割り振られることも多く、上流工程の入り口であると言えます。
詳細設計は、基本設計によって決められた様々な取り決めを開発者目線で明確化することです。
これにより、基本設計を見ていないプログラマーも自分の作業内容が明確になり、現場での作業を効率的に進められるようになります。
3.インフラエンジニアの上流工程
インフラエンジニアの上流工程は、大きく分けて「要件定義」・「設計」・「構築」の3つに分けられます。
顧客とのヒアリングや導入する情報システムの仕様に従ってハードウェアとソフトウェアの要件を洗い出し、実際に構築していくという工程です。
インフラエンジニアの上流工程について詳しく知りたいという方はこちら!⇒インフラエンジニアの上流工程とは?必要スキルやキャリアパスを解説
3-1.要件定義
インフラエンジニアの要件定義とは、設計や構築の前段階で全体像を把握し、具体的な進め方を設計する工程です。
ITインフラが情報システムに提供するべき機能要件、および非機能要件を定義します。
機能要件・非機能要件とは、例えば以下のような内容がこれに該当します。
機能要件
- ・システム要件
- ・サーバー(物理サーバ―、Webサーバー、DBサーバーなど)台数と種別
- ・それぞれに必要となるミドルウェアやOS
- ・周辺機器(ストレージ装置・テープ装置など)
- ・ネットワーク要件
非機能要件
- ・DBを日次で差分バックアップする/月次でフルバックアップする
- ・権限によるセキュリティ認証や利用制限を実施する
- ・不正監視のためOSログ、ミドルウェアログ、ネットワークログを集積する
- ・ネットワーク攻撃やマルウェアへの対策、WAF配置などを実施する
機能要件は業務機能に関連する内容のため比較的分かりやすいですが、非機能要件はインフラ的な観点が多く、顧客がイメージしにくい部分も多いです。
顧客とのヒアリングでも漏れが出ることが多いため、前述のIPA「非機能要求グレード」などをベースに検討することで、互いの認識の齟齬を予防するよう努める必要があります。
3-2.設計
要件定義で決定した内容を具体的な形に落とし込んでいくフェーズです。
顧客の要望は要件定義において認識合わせがすでにされているはずなので、要件とズレや齟齬なく設計する能力が求められます。
情報システムやプロジェクトの規模によりますが、設計フェーズは「基本設計」「詳細設計」のように細分化される場合もあります。
設計の具体的な内容としては、以下のようなことが挙げられます。
- ・システム構成
- ・ハードウェアの実装方法
- ・OSやミドルウェアの構成
- ・ミドルウェアなどの機能方式設計
- ・規定値(パラメータ)設計
設計を進めていく過程で、要件定義に間違いが見つかることもあり、傷口を広げないように設計フェーズで調査・検証を行うことが重要です。
「顧客の要望をどのように実現するのか」という、インフラエンジニアの腕の見せ所とも言える部分です。
プレッシャーがかかることは事実ですが、同時にシステム全体の設計を考えられるという醍醐味も味わえます。
3-3.構築
構築とは、設計フェーズで作成された設計書やパラメータシートに従い、ハードウェアとソフトウェア(OSやミドルウェア)の設定を行うという作業です。
システムを実際に組み上げるフェーズであり、サーバーの構築、ストレージやネットワークの設定、OSのインストール・設定、ミドルウェアのインストール・設定などを行います。
プロジェクトの規模が大きい場合には、「ファシリティ」「サーバー・OS」「ネットワーク」「DB」「運用」といった形で、それぞれの技術領域に分けて対応することもあります。
最近では、類似の環境上に仮想サーバやクラウドサーバーを使用することも多いです。
検証作業が完了したら、構築手順書を作成し、実際の構築作業に入ります。
システムには、実際にユーザーが利用する本番環境のほか、開発環境、検証環境のような複数の環境が必要です。
近年は技術革新が進み、構築をツールによって自動化するといった手法にも注目が集まっています。代表的なものにAnsible、Chef、Puppetなどがあります。
一方で、このような自動化ツールを使うために、PythonやRubyなどのスクリプト言語の知識が必要になる場合があります。
4.エンジニアの上流工程で求められるスキル
エンジニアの上流工程は、下流工程と比較して、顧客やチームメンバーなどとのコミュニケーションが多くなります。基本的な技術スキルはもちろん、コミュニケーションスキルなどの幅広いスキルが求められます。
以下のようなソフトスキルが必要です。
- ・コミュニケーションスキル
- ・顧客理解を深めるスキル
- ・顧客の市場を勉強するスキル
- ・マネジメントスキル
- ・ドキュメント作成のスキル
上流工程において特に重要になるのが、コミュニケーションスキルです。
顧客はシステムに関して詳しくないため、自分たちの要望をはっきりと言語化できません。
そこでエンジニアが綿密にヒアリングを行い、表層的なニーズから潜在的なニーズまでを引き出す必要があります。
顧客のニーズを適切に把握するため、顧客理解を深めるスキルと顧客の市場を勉強するスキルも重要です。
システム開発はプロジェクトなどのチーム単位で分担して行われるため、チームのメンバーとの適切な連携とマネジメントスキルも不可欠です。
また要件定義や基本設計・詳細設計の際には必ずドキュメントを作成することになるため、上流工程のエンジニアにはドキュメント作成スキルも必須です。
5.上流工程にいけると仕事の幅が大きく広がる
上流工程ではエンジニアのスキルだけでなく、マネジメントや管理の能力が求められます。
下流工程と比べると難易度が高く、自らの市場価値を高めたいと考えるエンジニアは上流工程を目指すことをおすすめします。
意識して仕事に取り組むことで、将来の仕事の幅は大きく広がります。
5-1.上流工程を行えるエンジニアは市場価値が高い
上流工程を行えるエンジニアは市場価値が高く、どのような現場に行っても評価されます。
下流工程が主に技術スキルを求められるのに対し、上流工程はコミュニケーションスキルや顧客理解、マネジメントスキルといったソフト面でのスキルが求められるためです。
このようなソフトスキルは、エンジニアとして現場の仕事に携わり、そこで培った業務知識や経験によってのみ身に付くものです。
的確な現場感覚、そして顧客の意見を代弁しチームと連携する柔軟さを身に付け、上流工程を行える市場価値の高いエンジニアを目指しましょう。
5-2.フリーランスとしても活躍しやすい
上流工程に行けるエンジニアは、将来的にフリーランスとして独立して活躍しやすくなります。
一般的に会社員エンジニアは固定給で働きますが、フリーランスエンジニアは能力によって単価が変化するため、スキルの高い人材はより高い収入を目指せます。
また上流工程をこなせるほど能力値が高いエンジニアは、就業時間や就業場所にとらわれず自由度の高い働き方を選択することも可能です。
顧客の希望する成果さえ出せればいいので、自分の集中できる時間や場所を選んで仕事ができます。
エンジニアとして将来的に独立を考えている人は、上流工程をこなせるようスキルやキャリアを重ねて努力することが重要です。
5-3.管理職として働く道が開ける
上流工程でコミュニケーションスキルやマネジメントスキルなどを磨ければ、管理職として働く道が開けるのもメリットです。
管理職はマネジメントのプロです。
管理職と専門職とでは仕事内容が大きく異なるため、「どちらがいい」とは一概に言えませんが、管理職のほうがビジネスパーソンとしてより高いレイヤーのスキルが求められるため、収入やキャリアは高くなる傾向があります。
将来にわたってエンジニアとして活躍したいと考えるなら、上流工程から管理職へのステップアップを目指しましょう。
弊社ユニゾンキャリアでは上流工程へいくためのキャリアプランからご提案いたします。
実務経験を積んでキャリアアップできる企業を転職者を通じて実際に情報収集を行っています。
ご相談から内定まで「完全無料」で利用できますので、お気軽にお問い合わせください。
\本気のITエンジニア転職支援サービス/
※同意なく進めることはありません!
このようなことで
悩まれています。
簡単30秒
まずは気軽にWebで無料相談
こんにちは!
はじめに職歴をお聞かせください。
この記事の監修者
エンジニア
大学卒業後、新卒で不動産会社に就職。その後23歳で開発エンジニアにキャリアチェンジし、3年間大手Slerにて様々な開発に携わる。その後、インフラストラクチャー企業にて人材コンサルタントとして経験を積み、株式会社ユニゾン・テクノロジーを創業。現在の代表取締役