SE(システムエンジニア)の仕事内容とは?開発経験を踏まえ解説!

記事更新日: 2020/12/29

ライター: せかぺん

SE(システムエンジニア)をよく聞くようになったけど、実際の仕事内容はどんなことをしているのか。開発を経験したエンジニアがわかりやすく解説します。
ライタープロフィール
名前:せかぺん

東京に上京してせかせか働くWebエンジニア → 開発保守プロジェクト主任。
java、C#、Python、Swiftの開発現場を経験。
各現場のエンジニアと関わってきた経験を生かし、エンジニア視点の情報を発信します。

SE(システムエンジニア)って仕事中ずっとPCを見ているイメージあるけど実際のところ、どんな仕事内容をこなしているのか気になる方も多いのではないでしょうか。

 

ただ、仕事内容を調べるにしてもシステムエンジニアの働き方は様々、今回はシンプルにシステムエンジニアの働き方を解説していきます。

プログラミング初心者

システムエンジニアはシステムを開発しているってことなら知っているよ。

 

せかぺん

正解だよ。そこまでわかる人は多いけど、具体的にどんなことをやっているのか更に踏み込むとわからない人も多いから説明して行くね。

SE(システムエンジニア)の仕事はどんな内容?

システムエンジニアとはシステムを要求しているお客様に対して、要望通り(期待以上)のシステムを提供する仕事です。

 

システムエンジニアの仕事内容の大項目としては、以下の項目があります。

(1)【要件定義】システム化するための要件を定義・お客様と認識合わせ

(2)【基本設計】要件からシステムの概要を設計

(3)【詳細設計】概要設計から開発可能な設計粒度に落とし込み

(4)【単体開発】機能単位に開発

(5)【単体試験】開発した単体機能をテスト確認

(6)【結合試験】開発した機能を含む複数の機能間をテスト確認

(7)【総合試験】一連の業務の流れを想定しテスト確認

(8)【運用試験】全試験確認済みのシステムをお客様に導入

(10)【本番移行】全試験クリア済みシステムを本番環境に移行

(11)【運用・保守】システムが安定的に稼働できるようメンテナンス

 

【◯◯◯◯】の表記は一般的にシステムエンジニアの開発工程として、使われる用語になります。

 

プログラミング初心者

工程が11個!?多すぎない?

 

せかぺん

システムはとてもデリケートだから少しのミスが障害などを引き起こすんだ。ミスを最小限に抑えゼロにするためにも各工程大切な意味を持っているんだよ。

 

各開発工程を解説

要件定義

要望をどのように実現するかお客様と認識合わせを行い、文章として定義つける工程です。

システムエンジニアとしての仕事はお客様から要望を伺うところから始まります。要望が決まらなければどんな機能が必要か明確にならず、作るものが決まりません。

 

お客様の要望を細かく抑えていないと、後の工程になった場合に「この機能は必要なかった。」「この処理をもっと早くして欲しい。」など決まっていないところで、想定外の要望をもらってしまい開発予算・開発期間が余計にかかってしまうことも発生してしまいます

 

仕事で手戻りすることがないよう要件定義はお客様とシステムエンジニア間のルールを決めるようなものです。お互いのためにここはできる限り具体的な要件を決めましょう。

 

要件定義で具体的にどんな内容を決めているのか一例をご紹介します。

【システム概要】要望のシステムの全体像の説明

【システム導入の目的】システムを導入する事によるメリット

【システム導入後の業務フロー】新システム後の業務の流れ

【リリース希望時期】システムを実際にユーザが利用する本番環境に移行する時期

【レスポンスタイム】各画面の応答時間が何秒以内に表示されるか

 

プログラミング初心者

確かに画面の表示に時間がかかったら利用者は不便さを感じるよね。

 

せかぺん

要件定義ではそういったユーザ視点の内容も含まれているよ。必ずシステムに反映して欲しい内容はこの工程で決まるんだ。

 

基本設計

要件定義でまとめたお客様も要望をシステムとして実現するために、どういう開発を行っていくのか、どこにどんな機能を作っていくのかを設計書に落とし込む工程です。

 

基本設計は開発前にお客様としっかり認識合わせができる最後の機会となることが多いです。開発予定の画面・出力ファイルのレイアウトイメージや業務の一連の流れをお客様と認識合わせを行い、最終チェックとして認識のズレを防止します。

 

後続の工程以降は、システム的な設計となっていくため、認識合わせができるお客様が少なくなるため注意が必要です。

プログラムスキルがあまりない新卒入社の開発担当は主にこの工程から担当になることが多いです。

 

プログラミング初心者

基本設計は概要で設計するイメージ?

 

せかぺん

そうだね。この工程はプログラミングスキルがなくてもできる設計。せかぺんも新人の頃はこの工程から任せてもらっていたよ。

詳細設計

基本設計で落とし込んだ設計から、さらにシステム的に実現させるにはどうやっていくのかプログラム設計のレベルで落とし込む工程です。

 

落とし込むにあたり新規システムの場合は、0からプログラムする能力が必要となり、既存システムの改修の場合は、既存のプログラム読み解き応用するスキルが求められます

 

この工程以降はプログラムスキルが必要となるため、開発スケジュールにあまり余裕がない場合、経験があまりない人は任せてもらえない工程となります。

 

詳細設計からコーディングルール(※)というものを厳守し、開発をしなければなりません。

※コーディングルールとは、開発現場内でコーディングする上での取り決めのことをいいます。コーディングとは開発言語でコードを入力していくことです。プログラムで同じ処理を書くだけでもその入力方法はコーディングする人によって様々です。コーディング方法を統一かすることで成果物のチェック者の確認負荷や作業の手戻りを最小限に抑えることができます。

 

プログラミング初心者

詳細設計からプログラミングスキルが必要となるんだ。

 

せかぺん

詳細設計から具体的にどうやってシステムとして作り込むかプログラミングスキルがないと読み解く力が難しい工程だよ。

単体開発

実際に設計した機能をシステムとして動く形で実現化していく工程です。

この工程から実際にシステムを作り動作確認ができる工程となります。システムエンジニアを目指す方はバリバリ開発しているこの工程をイメージする人も多いかもしれません。

 

単体開発を行う上で意識するポイントの例は以下の通りです。

【詳細設計書通り開発ができているか】

当然ですが、設計書に沿って開発するため、設計書通りの実装ができているか

【コーディングルールに沿った開発となっているか】

現場内のルールに沿って開発できているか

【基本設計書通り開発ができているか】

基本設計レベルで機能の概要が担保されているか

【要件定義書通り開発ができているか】

要件レベルで満たされているか(画面からの応答時間が1秒以内である等)

【後続の単体試験を実施できる実装方法となっているか】

動かしたらすぐエラーとなると論外

 

プログラミング初心者

自分で簡単なプログラム作ったけど、すぐエラーになった。これを業務レベルで解決するのか。。

 

せかぺん

最初の頃はほとんどの人が躓く壁、諦めたらプログラミングの楽しさがわかる前に終了となるから勿体無いよ。

 

単体試験

単体開発で作成した機能が問題なく動くかテストする工程です。

開発した機能をどのようにテストすれば良いか詳細設計書を元に試験項目を作成し、実施していきます。

 

詳細設計で考慮不足や設計ミスがあるとこの時点で不具合が出てしまうため、開発者はプログラム全体の処理を理解した上で開発する必要があります。改修部分だけ見て開発すると、他の機能との動作連携を確認する結合テストでも不具合となってしまいます。

 

プログラミング初心者

開発後、エラーになった場合はどういう流れになるんだろう。

 

せかぺん

エラーを直した後に、指摘管理表というのがあって、開発者の考慮漏れとして表管理されるんだ。

結合試験

結合試験とは、単体試験でテストした改修機能が複数の機能と連携した際にも上手くいくのかテストする工程です。

結合試験は単体試験を実施済み機能をテストしていくため、基本的には結合試験を実施前に単体試験が全て完了していることが前提です。

 

この工程で確認するポイントは機能間の連携が上手くいっているかどうかがポイントとなります。

新規作成・改修した機能部分を中心に連携パターンを網羅できているか確認する必要があります

 

結合試験として、主な試験種類は以下の3パターンです。

【インターフェーステスト】

機能の入出力部分のテストになります。インターフェースは一般的にコンピュータの入出力を表します。テスト時は画面からの入力値により、次の遷移画面が正しく表示されるかをテストします。

 

【業務シナリオテスト】

業務シナリオテストとは、実際の業務で起こり得る操作上で問題がないか、操作の流れをシナリオ化して確認するテストになります。例えば、複数のユーザーがデータを登録・削除しようとした場合など、同じデータを更新しにいって画面が予期しないエラーとならないかなど、想定外の事態にも耐えることができる設計となっているかがポイントとなります。

 

【負荷テスト】

データの登録量が膨大になればなるほど、画面の表示処理に時間がかかってしまうことがあります。データを表示するまでに要件定義で決められた時間内にデータが表示されているか、画面の正常処理がどれだけの負荷に耐えられるか確認する必要があります。

 

プログラミング初心者

結合試験の中にいろんな種類のテストがあるんだね。驚き。

 

せかぺん

各テストによって確認する観点が異なるよ。システム規模が大きいほどテスト毎に担当を割り振るケースもある。

総合試験

結合試験はシステム全体の処理の流れをテストする工程となります。

単体試験、結合試験実施済みの機能を本番とほぼ同一の環境を用意し、各機能が仕様書通りになっているか、最終チェックを行います。

 

本番環境とほぼ同一の環境とは、現場の開発環境では確認できないテストを実施するために用意されます。主にお客様導入先の開発環境などが利用されることが多いです。

 

プログラミング初心者

そろそろリリースが間近になってきている感じがするね。

 

せかぺん

この工程は開発側の最後の確認工程なんだ。開発責任者は一層注意して確認する必要がある。

運用試験

運用試験とは、実際の要件通りの仕様となっているかお客様が確認する工程となります。

結合試験以前までは開発者目線で開発・テストが行われて来ました。開発プログラムの内部処理を確認し、どういった作りこみが良いか開発者は考え、開発して来ましたが、今度はお客様目線でチェックが行われます。

 

運用試験は本番移行前の最終関門です。今まで開発目線とお客様目線双方で確認して来ましたが、ここで見逃しが出ると本番環境移行した際に障害となり、利用者に直接被害がでかねません。最後のチェック工程として、開発者・お客様もより念入りな確認が必要となります。

 

プログラミング初心者

お客様が確認する工程は少し緊張するな。

 

せかぺん

お客様・開発責任者は両方緊張するだろうね。確認する最終工程だから見逃しましたなんてことは許されないよ。

本番移行

いよいよ開発したシステムが日の目を見る工程です。プログラマなど実際に開発した人であれば、ワクワクする瞬間であり。開発責任者であれば一番緊張する瞬間かもしれませんね。

本番移行後はお客様が実際に取り扱っているリアルなデータが流れているので、テストすることは一切禁止となります。

プログラミング初心者

移行は問題なくても実際に業務を始めたらエラーとなったら最悪だね。

 

せかぺん

そうならないように今までの確認工程があるんだ。念入りにお客様・開発双方で確認していればエラーはゼロに抑えられるはず。

運用・保守

この工程は、実際に稼働した本番のシステムを不具合がないか、問題が起こりそうであれば事前に対処することがメイン業務となります。

 

ここでシステムの考慮漏れがあると不具合連絡が増え、お客様のシステム利用時間が減り、運用・保守担当の稼働が高くなる悪いケースにつながることもあります。

 

最悪な場合、障害が起こった際に設計書がなく、システムを熟知している担当が誰もいないなんてことも。その分、障害解決までの時間が長引いてしまいます。開発者は今後の運用も考え、わかりやすい設計書の作成・プログラム開発が求められます。

プログラミング初心者

本番で動いているシステムの保守だから、問題があれば即障害扱いになるんだよね。

 

せかぺん

その通り、障害となればお昼休みだろうが至急対応する必要がある。ここはリアルタイムで復旧が求められる業務だよ。

まとめ

いかがでしたでしょうか。システムエンジニアの仕事内容はシステムを開発することですが、1つのミスがお客様の不利益に直結する大惨事になりかねないため、慎重に細かい工程を組んでいます。

開発技術を高めると同時にシステム全体の動きを見て、細かいことに気づける人が活躍できる職業だと思います。

システムエンジニアを目指す方は、各工程の内容を確認し、働き初めの仕事のイメージをつけておくことをおすすめします。

プログラミング初心者

システムを開発するってざっくり理解していたけど、正確な開発のためにいろんな工程があるんだね。

 

せかぺん

システムの規模が大きくなればなるほど、煩雑になりガチだけど各工程をちゃんと抑えて開発すれば質の高いシステムを作ることが可能になるんだよ。

この記事を書いたライター

せかぺん

東京に上京してせかせか働くWebシステムエンジニア → 開発保守プロジェクト主任。日々、効率的に生きる方法を模索中。生活の中で有意義だと感じる情報をシェアしていきます。極度の暑がり。

この記事に関連するラベル

ページトップへ