システムエンジニア、プログラマーと聞いてなんとなくはイメージできると思いますが、実際にどのような職種の人がシステム開発に関わっているかあまり知らないと思います。
システム開発に関わる職種について依頼側も含めて大まかに説明します。
システム開発の登場人物
前章では依頼側と開発側と表現しましたが、システム開発にはたくさんの人々が登場します。
大きく分けると依頼側と開発側ですが、システム開発に使用する機器のメーカーなども登場する場合があります。
この記事ではシステムエンジニアとして関わる人をメインで紹介します。
依頼側
依頼側とは、当然ですがシステム開発にお金を払う企業、団体です。
「ユーザー」、「顧客」、「クライアント」、「お客様」などと呼ばれます。
依頼側は職種というよりは担当部門になりますが、大きく分けて 2種類、「情報システム部門」と「業務部門」に分かれます。
あくまでもシステム開発時のシステムエンジニア目線です。
実際には各企業ごとに複雑な組織になっていますので誤解の無いよう・・・。
情報システム部門
依頼側の情報システムを担当する部門で、システム開発時には依頼側の意見をまとめたり、スケジュール調整したりします。
また、システム開発時の予算管理や、費用交渉、契約なども担当する場合があります。
システムを開発する訳ではなくシステム開発を依頼側から管理する部門であり、業務知識やシステム全体把握、交渉力等が必要です。
大企業になると、システム部門を子会社化している場合もありますが、開発側から見ればどちらも依頼側となります。逆に、依頼側に情報システム部門がない場合もあります。
業務部門
システム開発したものを使用する側の部門で、システム開発により改善、効率化される部門です。
業務のプロフェッショナルなので、システム化する際に必要な情報を教えていただくことになります。
依頼側の業種によりますが、システムに関する専門知識を持っていない場合が多いため、コミュニケーションを取る場合は専門用語はあまり使用しない方が良いです。
システム開発時、通常業務とは別に時間を調整して参加しているため、会議等は決まった時間内で完結できるように進めましょう。
開発側
開発側とは、依頼側からの要望を受けて人とモノを組み合わせる仕組みを考え、業務改善、効率化するシステムを提案、作成する企業です。
「SIer (エスアイヤー、システムインテグレーター)」、「vendor (ベンダー : IT ベンダー、開発ベンダー等)」などと呼ばれたりします。
※ 正確には、SIer と vendor は意味合いが違いますが、ここでは本題と異なるので説明は省きます。
開発側は、担当する作業内容でいろいろと呼ばれ方が違います。
元々はあまり細かくは分かれていませんでした (と思います) が、IT の高度化で特化した専門知識が必要となり細分化されています。
今後もさらに高度化が進んでいくと思いますので、新たな職種がどんどん増えていくのではないでしょうか。
ここではすべてを紹介することはできませんが、システム開発に関わる職種の一部を紹介します。
※ 記事で登場するシステム開発工程は、以下をご覧ください。
システムエンジニア
システム開発に関わるエンジニアを総称してシステムエンジニア (SE : エスイー) と呼びます。
海外では高度な資格を取得した人だけが呼ばれる場合もありますが、日本では特に資格がなくても同様の業務を担当する人の総称として呼ばれています。
大きな分類として、まとめてシステムエンジニアで良いと思いますが、一般的にシステムエンジニアというとソフトウェアエンジニアを意味することが多いようです。
ソフトウェアエンジニア
ソフトウェアエンジニアはアプリケーションエンジニアと呼ばれることもあり、コンピューター上で動作するプログラム、アプリケーションを開発します。
※ 動画や音楽等のコンテンツのこともソフトウェアと呼びますが、システム開発でのソフトウェアは主にプログラム、アプリケーションとなります。
主に依頼側の業務部門が使用する画面や帳票などを開発するため、業務に詳しいと設計する際に有利となります。
業務担当者の関わり方や、画面・帳票の使われ方、外部システムとのデータ連携も知る必要があるため、業務フロー、バッチ設計、データ構造などが担当範囲です。
システム開発工程
システム開発工程は、人数の増減はありますが要件定義から運用・保守まで幅広く担当します。
作業内容としては、業務フローや、画面・帳票レイアウト、データ構造などの作成から、作成したプログラムのテスト、本番稼働後の運用・保守まで様々です。
インフラエンジニア
インフラエンジニアは、ソフトウェアを動かすコンピューター (サーバー) やデータ通信用のネットワークを設計、構築します。
※ 電気、水道、ガスなどもインフラと呼ばれますが、システム開発でのインフラはサーバーやネットワークを指します。
インフラエンジニアをさらに細分化して、「サーバーエンジニア」、「ネットワークエンジニア」と呼ぶこともあります。
システム開発工程
システム開発工程は、要件定義から基本設計あたりまでと、運用・保守。
ソフトウェアエンジニアが製造工程に入る時はインフラ環境が構築されている前提ですので、システム開発が始まってから比較的早い段階から作業をはじめ、構築までで一旦完了します。
その後、システム本稼働後にサーバーやネットワークを監視、保守します。
(構築時の担当者とは異なる場合が多いです。)
データベースエンジニア
システム内のデータベースに特化した専門知識を持つエンジニアで、システム全体で使用するデータ件数や、使用頻度、更新・参照の割合などを想定して、データベース設定を最適化します。
データベースだけに特化したエンジニアは少なく、データベース知識を有するソフトウェアエンジニア、またはインフラエンジニアが設定することも多いです。
セキュリティエンジニア
サーバーやアプリケーションに対しての悪意のあるアクセスを防ぐため、インフラ設計やソフトウェア開発に参加します。
データベースエンジニアと同じく、セキュリティだけに特化したエンジニアは少ないですが、比較的大きなシステム開発になるとセキュリティチームが入ることがあります。
企業秘密、個人情報など、情報漏洩があった場合には大きな問題となるため、非常に重要な役割と言えます。
ブリッジエンジニア
ブリッジ SE と呼ばれる方が多いと思いますが、海外拠点でシステムの設計やプログラム開発する場合に、日本と海外拠点を橋渡しするエンジニアです。
海外拠点で設計、開発することをオフショア開発と呼び、要件定義などの深い業務知識が必要な部分を日本で、プログラム開発等の比較的業務知識が不要な部分を海外拠点で開発します。
海外拠点は、ベトナム、フィリピン、ミャンマー (過去にはインド、中国) などとなり、英語や、各国の言語でやり取りすることも多いため、言語能力が優れた方が担当します。
プログラマー
システム開発工程
システム開発でのプログラマーは、主に詳細設計から結合テストまで担当します。
ほとんどの場合は細分化されることはありませんが、「プログラマー」、「コーダー」、「テスター」に分けて説明します。
プログラマー
基本設計で作成された資料をもとに、プログラミングに最適な処理を設計し、作成したプログラムの動作を確認します。
画面、帳票等の細かな動きや内容を把握する必要があるため、システムエンジニアとコミュニケーションを取り、詳細に設計します。
また、作成した詳細設計書をもとに、プログラム作成後の単体テスト、結合テストの仕様書を作成します。
重要
よく「プログラマーはコミュニケーション不要」と思われますが、基本設計で作成された資料では詳細設計のすべてを作成できないため、システムエンジニアとのコミュニケーションは必須で、コミュニケーションが取れないプログラマーは正しく設計できません。
プログラマーは、コーダーとテスターを含みます。
コーダー
コードとはプログラムの中身 (プログラムコード) のことで、コードを書く人をコーダーと呼びます。
詳細設計書の記述通りにプログラムコードを記述すれば良いので、業務の知識はほとんど不要です。
テスター
作成されたプログラムをテストする人がテスターです。
システムエンジニアやプログラマーが作成したテスト仕様書に沿ってプログラムを動かし、想定結果と実施結果が同じであるか検証します。
プロジェクトマネージャー
システム開発のような複数の企業、組織、部門等が関連してひとつの業務を遂行することをプロジェクトと呼び、そのプロジェクトをプロジェクトマネージャーが管理します。
大規模プロジェクトの場合、プロジェクトマネージャーひとりでは管理できないので、PMO (プロジェクトマネジメントオフィス) という組織を作成して管理する場合もあります。
逆に、小規模プロジェクトの場合、システムエンジニアがプロジェクトマネージャー業務を遂行する場合もあります。
プロジェクトマネージャー
主な作業は、プロジェクトに関するすべての管理業務で、システムの全体計画、予算管理、スケジュール管理、人員管理等。
また、プロジェクト遂行に支障がある問題や、解決できていない課題の管理などを依頼側と調整、確認します。
他にも、システム全体のセキュリティや品質に問題がないかなど、時には外部組織に検証を依頼したりします。
PMO (プロジェクトマネジメントオフィス)
大規模なプロジェクトになると、プロジェクトマネージャーのみでは全てを管理できなくなるため、PMO と呼ばれる部門がプロジェクトマネージャーを補佐します。
品質や文書、課題などの管理から、新規プロジェクト参画者へのセキュリティ講習など、プロジェクトマネージャーに代わって作業します。
なお、プロジェクト管理が主な作業なので、システムの設計にはほとんど関わりません。
営業職
営業が専門ではないので、概要だけ記載します。(営業の方が気分を悪くされたらすみません・・・。)
営業職は、依頼側の要望などから対応する製品などを提案します。
依頼側の要望が既存製品では対応できない場合、業務経験や IT 知識が豊富な IT コンサルタントがシステム開発を提案したりします。
まとめ
今回はシステム開発に関わる人々を紹介しました。
システム開発には多くの業種、エンジニアが関わっています。
当然ですが、数か月で全てを習得することはできないため、できることからコツコツとキャリアアップしていきましょう。