世の中にはいろんな仕事があります。)などは、ソフトウェアが大きく貢献しています。そんなソフトウェア開発を行う職業にソフトウェアエンジニアがあります。就職活動の時期になると学生のみなさんは企業や職業のことを調べることが多くなるのではないでしょうか。今ある仕事から転職を考えていて他の職業や会社の働き方について興味を持っている社会人の方も多いと思います。IT業界やソフトウェアエンジニアの実際の業務内容を知りたい自分の勤めている業界や会社以外の仕事の実情を知りたいエンジニアの仕事内容について、7年目の現役エンジニアが紹介します。要件定義(仕様策定)構造設計(全体設計)・詳細設計コーティングテストその他:医療系ならではの仕事まとめエンジニア(SE)の普段の仕事内容エンジニアが普段どんな仕事をしているのか紹介します。言葉だけだとイメージが湧かないと思うので、具体例を挙げつつ説明していきます。要件定義(仕様策定)まずはどういったものを作るかを決める作業、要件定義(仕様策定)と呼ばれる作業です。お客さんの求めるニーズを分析して製品としてどういったものを作るかを決めます。これらをソフトウェアとしての動作仕様に落とし込みます。具体的なイメージを膨らませるために、例えば某有名なパズル&何とかのようなスマートフォンのゲーム開発を行うことを想定してみましょう。その場合、以下のような動作仕様を定義していきます。モンスター5対を1チームとして戦うRPGのスマートフォンアプリ指の操作でパズルアクションを行うことで戦闘をする戦闘で得たお金やモンスターを使ってモンスターを合成し強化できる会社の外へ足を運ぶことが多くなる仕様を決めるためにはお客さんの目線に立って物事を考えることが大切です。実際に使うのは開発者ではなくユーザです。ユーザのニーズに合ったものでなければ売れません。販売する方々からしても、売れないものを作られてもセールストークに困ってしまいます。そのため、ユーザのニーズを把握するために会社の外へと足を運ぶことが多くなります。お客さんに近いところで仕事をしている営業やサービス担当の方々に、お客さんがどのようなニーズを持っているかをヒアリングしに行きます。お客さんのところに持っていき、考えている仕様が本当にニーズに合っているかを実際に使ってもらって評価してもらうこともあります。他社のアプリや今世の中で受け入れられているアプリはどういう特徴があるか、などを調査した上で、自社独自の特徴を仕様に盛り込む必要があります。他社の真似だけでは売れません。出張する時は、小旅行を兼ねてその土地の美味しいものを食べて帰ってくることを忘れてはいけません(むしろこっちが本題)行き先によって出張するかしないかを決めてしまうこともあったりなかったり。家を建てるのと同じで、大きなソフトウェアシステムを作り上げるためには設計がかかせません。要件定義で決めた仕様を満たして動作するソフトウェアの構造を設計する作業を行います。要件定義で決めた仕様を機能レベルで分割しつつ機能をつないでいくことで、一連のソフトウェアアプリケーションを実現するように全体設計を行います。分割した機能レベルに対して実装ができるように詳細を詰めて設計していきます。先程と同様にゲームを想定した場合、次ののように構造を設計していく作業になります。持っているモンスターやお金といったユーザ毎に異なるデータを管理するユーザ毎のデータをインターネットを介して取得や反映を行うダンジョンや育成といったゲームの画面フローを制御する技術調査と仮説検証を繰り返す大きなシステムになってくると複数のシステムと連携して機能を実現することが多くなります。そのため、ソフトウェア設計にはソフトウェアに関する幅広い知識が必要になります。私みたいな凡人は知らないことにたくさんぶつかります。いったときは、インターネットを使って調べたり、それぞれの分野のスペシャリストに話を聞いて解決することが多いです。自分でプロトタイプを作成して仮説検証を行うことで、検討した方法で本当に機能が実現できるかを調査します。個人的には、技術を調べただけでは不十分で、プロトタイプを作成して動作確認を行い確証を持つことは結構大切だと思っています。試してみると、バージョンの違いで上手く動かなかった、ということがよくあるので。構造設計で技術の選定を間違えると大きな手戻りになってしまいます。(いつもはテキトーに生きていますが)全体の構造設計は慎重に行うようにしています。コーティングソフトウェアをあまり詳しく知らない人がイメージするソフトウェアエンジニアの仕事はおそらくここの部分ではないでしょうか。画面に何やら英語を打ち込んでいるアレです。あの気持ち悪いやつです。ソースコードと呼ばれるソフトウェアを動かすプログラムを書く作業です。手を動かしてキーボードをカタカタします。開発する対象によって使用するプログラミング言語が異なります。言語毎の書き方や特徴を知っている必要があるので、開発者の実力によって開発スピードが大きく差が出る部分です。チームで開発を行うときは、自分がソースコードを書くだけではなく、他人が書いたコードをレビューします。複数人でソースコードを書き上げることで品質向上を行なっています。地味な作業ですが、実際に動くものはコーディングを行うことで完成します。物作りをしている感が一番あるので私は好きです。いうより、好きじゃないとやってられないかも...テスト要求定義通りにソフトウェアが作成できているかを確認する作業です。テストをする際はただ闇雲にテストをするのではなく、どういったテストをするかを事前に決めて行います。品質を確保するためにテストを設計するのもソフトウェアエンジニアのひとつのスキルです。私が開発をしている製品が医療機器なのもあり、一般的なソフトウェアと比べて品質面に関しては非常に厳しいです。テスト嫌いな私にとっては結構嫌なフェーズだったりします。その他:医療系ならではの仕事ソフトウェアは様々な分野で使われています。その中で私は医療系のソフトウェア開発を行っています。医療系ソフトウェアはならではの他の分野にはない特殊な部分がいくつかあります。医療系ソフトウェアを作るためには国の法律で定められた規格に準拠する必要があります。何を隠そうこの作業がめちゃくちゃ大変です。趣味でアプリを作るのに比べて5倍ぐらい大変です。具体的には、医療機器なので人の命に関わるリスクがあるので、どんなリスクが潜んでいるか洗い出します。電源が落ちたらとか、操作を間違えたら、といった具合です。次は洗い出したリスク全てに対して対策を講じます。「そんなことになるケースはレアケースだし、慎重に考えすぎじゃない・・・?」って突っ込みたい気持ちをグッと堪えて向き合います。まとめエンジニアの仕事内容について本記事で紹介したことをまとめます。同じエンジニアでも務める企業の規模や開発する製品によって取り組む内容は大きく異なっています。その違いは、実際に勤めている人でないとなかなか分からないと思いますので、興味のある人はぜひいろんな情報を調べてみると良いと思います。コメントをキャンセルメールアドレスが公開されることはありません。プログラミング2020/2/21僕がプログラミングをするときに紙のノートを使う3つの理由プログラミング2020/2/20デバッグを制すものはプログラミングを制す【3つのコツと真髄を伝授】プログラミング2020/2/20【作業効率爆上げ】プログラミングをするならデュアルディスプレイ推奨プログラミング2020/2/14CodeCampの評判は?特徴と実体験レビューをまとめてみた【割引特典あり】プログラミング2020/2/14【本質】ソースコードを読むコツはソースコードを読まないことカテゴリーブログライフスタイル仕事コードプログラミングコミュニティドナちきドナ●ドを人間化して可愛さ成分を取り除いた30代サボリーマン&エンジニア。半年後に副業月20万で人生を変える。脱サラ&独立に向けて爆進中。『楽しんで稼ぐ』がモットー。ブログのノウハウ|エンジニアを目指す人へ有益情報発信中。ブログを共に頑張るコミュニティ「B-ENGINE」運営。AFFINGER5.。