どんな仕事?
顧客の情報システムの開発を受託し、ソフトウェアを開発する。アプリケーションエンジニア、アプリケーションスペシャリスト、業務系SE(システムエンジニア)などとも呼ばれる。ここでは以下、短くSEとしている。
開発には顧客のサーバー上に開発するもの、クラウド上に開発するもの、また、スマホで利用するものなど様々な種類がある。これらのシステムを顧客の要求に応じて、パッケージやモジュールとして既にあるソフトウェアとオーダーメイドで作成するソフトウェアを組み合わせて、設計・開発する。以前は顧客のサーバー上にシステムを構築することが多かったが、近年はクラウドの利用が広がり、クラウド上にシステムを構築する仕事が大半となっている。既にあるパッケージやクラウドサービスを、顧客の目的に合うようカスタマイズする開発をSEとして行うこともある。
隣接する職業としてプログラマーがあるが、プログラマーはSEが作成した詳細設計書(下で説明)に基づいてコーディングし、プログラムを作成する。
具体的な仕事を業務の流れに沿ってみていくと、まず顧客にヒアリングし、開発するシステムの概要をまとめる。顧客の業務のプロセス(特に伝票や書類の流れ、種類、形式、量など)やコンピュータ処理する内容をよく理解し、顧客が自覚していない課題までも抽出し、どのようなシステムにするか決めていく(要件定義)。この段階で顧客と認識にずれがあると、満足できるシステムができないため、ITについての技術力とコミュニケーション能力によって顧客とよく検討していく。次に、確定した要件定義をもとに、データベースの設計や外部システムとの連携、画面構成などを固めていく(基本設計)。基本設計に従い、システムで扱うデータ形式やファイル形式、詳細な内部処理の方法、操作画面の詳細などを決め、処理の流れを細分化した設計書を作成する(詳細設計)。
開発に利用可能な既存のパッケージやモジュールがある場合は、詳細設計にそれを盛り込む。新規に作成が必要なソフトウェアは詳細設計に基づき、プログラマーに作成を依頼する。プログラマーの作成の工程を管理するとともに、次の工程であるテストの準備として、テスト計画を作成する。
このテスト計画に従って、プログラマーがソフトウェアを単体でテストし(単体テスト)、その結果についてSEが確認する。なお、SEがソフトウェアの単体テストを行う場合もある。プログラマーに依頼したソフトウェアに不具合があればプログラマーに修正を依頼する。システムを構成するパーツがまとまってきたら、パーツ間のデータの受け渡しや画面の遷移などをテストする(結合テスト)。パーツが揃ったところで、実際のデータを投入し、開発しているシステム全体の動きをテストする(総合テスト)。このテストでは品質管理や情報セキュリティの担当者に協力してもらうこともある。
既存のシステムを改修し、機能追加、性能向上等を行うことも多く、この場合は開発したシステムに以前のシステムのデータを移し替える等の工程をSEが管理する。
完成して納品したシステムが当初の意図通りに動くかどうか、顧客とともにテストし(受け入れテスト)、不具合があれば修正する。システム導入先に新システムの運用、操作に関する教育を行う(導入)。システムの運用が開始されたら、順調に稼働するよう、また、その後生じた問題の解決やアフターケアを行う(保守・管理)のもSEの仕事である。
大規模なシステム開発の場合、数人のSEで開発を分担して行うこともあるが、中規模、小規模の開発であれば一人のSEで担当する場合も多い。
よく使う道具、機材、情報技術等
クラウドサービス(AWS、GCP)、統合開発環境(IDE:integrated development environment、Visual Studio、Eclipse、Xcode等)、プログラミング言語(JAVA、Python、Ruby等)、データベース(SQL Server、Oracle等)、コラボレーション・ツール(Microsoft SharePoint 、Microsoft Teams、 Google Workplace)、サーバー、パソコン、表計算ソフト(Excel、GoogleGoogleスプレッドシート等)