知りたがりなおサルさん
こんにちわ!たかと(@tktakato1)です!
今回はそんな疑問にお答えします!
システムエンジニアって響きだけ聞くと漠然と「仕事ができそう」だったり「頭がキレそうな人がやる」イメージがあったりしませんか?
私も業界に入る前は「何となくカッコ良さそう」というイメージで入ったのを今でも覚えています。
ただ具体的にどんなととやるの?と聞かれたときに、正直答えられなかったんですよね。
なので今回はシステムエンジニアの仕事内容について解説していこうと思います。
普通に解説しても面白くないので、料理に例えてお話ししますね!
料理を作る流れがイメージできれば、システムエンジニアがやってることもほぼ分かると思います。
ちなみに私がどんな人間かというと
- IT業界歴は15年
- フリーランスは6年目に突入
- 理解力に乏しくいつも四苦八苦
- 誰でも分かりやすくとモットーに一般の方向けのIT講師経験もあり
目次
システムエンジニアとは?
業界用語的にいうとシステムエンジニアとは「情報システム関連の業務を行っている人」を指します。
・・・漠然としてますね(笑)
分かりやすい言葉に変えると
ユーザーが実現したいことをシステムで形にする業務に携わってる人がシステムエンジニアかなと思ってます。
料理で言うと料理人のことになります。
料理人は「こんな材料で、味付けはこんな感じで何か作って欲しい」と言われたら、そのリクエスト通りに作りますよね。
システムエンジニアも同じことです。ユーザーから「こんなことをシステムで出来たらよいんだけど出来ないかな?」と言われたらそれをどうやったらシステムで出来るかを考えるのが仕事になります。
システムエンジニアの仕事は大きく分けると5つ
システムエンジニアは主に5つに分けて仕事があります。
1.要件定義
2.基本設計
3.詳細設計
4.プログラミング
5.テスト
これらを料理に例えつつ解説します。
【要件定義】ユーザーが何を求めてるか聞き取ること
要件定義とはユーザーがどのようなシステムを望んでいるか聞き取ることです。
この要件定義が一番大事で、ここでしっかりすり合わせておかないと望んだものと違うものが出来上がってしまうのでしっかり聞き取ります。
料理でいうと、どんな食材を使った料理を食べたいか聞き取ることになります。
ユーザーから「辛くて野菜が入ってるスパイシーな食べ物が食べたい」と言われたら、具体的にどんな食材が入って、味、風味、辛さなど細かく聞き取るイメージです。
【基本設計】ユーザーが望んだものをどうシステムで実現するか決める
要件定義でユーザーが何をしたいか聞き取りました。
その要件をどういった機能があるシステムで作るのか、操作方法、画面があればどういった画面を表示させるのか決めるのが基本設計になります。
システム開発をやったことがない方からすると中々イメージが湧きづらいですよね。
料理で言うと必要な食材や調味料、作る大まかな流れを決める感じですね。
これが分かると、何となく料理のイメージがついていきますよね!
【詳細設計】基本設計で決めた機能を作るための設計書を作る
詳細設計では基本設計で決まった内容をどのような技術、仕組みで実現するかなどプログラマーが実際にプログラミングする際に必要な具体的な設計を行います。
料理でいうと、調理の流れ、調味料の分量、食材の切り方が網羅されていて、料理を作る人が「詳細設計書を見て料理が作れるレベル」のものを指します。
「これで料理が作れるぜ!」というものを作るのがこの詳細設計になります。
【プログラミング】詳細設計書を元にプログラムを作る
詳細設計書には実際に実現したいシステムを作るための仕様が事細かに書いてあります。
この詳細設計書をもとにプログラマーの方がプログラムを組んでいきます。
プログラムは一つで全ての機能を網羅しておらず、いくつものプログラムを組み合わせることでやりたいことを実現させていきます。
料理で言うと、レシピが出来上がってるのそれに沿って調理することを指します。
調理も細かい作業工程がありますよね。食材を切ったり、下味をつけ、煮込んで炒めて、最後に味付けをする。
プログラムもそういった工程ごとに機能を分けています。
理由は簡単、全部一緒だと分かりづらくなるのでなるべく細分化したいからです。
【テスト】作ったプログラムの動作確認をする
これが最後の工程です。
作ったプログラムを動かし、要件定義で聞いた機能の要件を満たしているか確認します。
ここで思った通りの動きでなかったら、プログラムが詳細設計書通りでなかったか、詳細設計書に問題があったかなど過去をさかのぼり原因を探ります。
ここは料理で言うと味見ですね。味が違ってたら、調理の仕方かレシピを疑いますよね。
まとめ:システムエンジニアの仕事内容も紐解けば簡単
改めて、料理の時の例えで流れをおさらいしてみます!
- 【要件定義】ユーザーからどんな料理にしたいかヒアリングをする
- 【基本設計】ヒアリングした料理はどういった食材、調味料、調理工程で作れるか考える
- 【詳細設計】基本設計の内容を、調理できるレベルまで落とし込んだレシピ(仕様書)を作る
- 【プログラミング】詳細設計で作ったレシピを元に、調理をする
- 【テスト】調理したものが要件定義を満たしているか味見する
まとめるとこういった感じでしょうか。
私も中々理解するまで大変でしたが、日常的なものに例えるようにしてからは理解する速度も速くなったように感じます!
物事は基本シンプルなはずなのですが、どこかでいつの間にか難しくなってしまうので自分が理解しやすいように例えを考えながら理解すると楽しいかもしれません。
そして「こんな感じなら私もシステムエンジニアの仕事できるかも!」と思って頂けたら幸いです。