社内SEになりました

社内SEは本当に楽なのか?ユーザー系IT企業とSierとの違いは?これからIT企業への就職や転職を考えている人むけに、ユーザー系IT企業から社内SEに40代で転職した筆者がITエンジニアの仕事内容やプロジェクト管理のノウハウ等をご紹介。

ITエンジニアの分類(スキル領域)

ITエンジニアをスキルの観点で分類すると、アプリ系、インフラ系、運用系に分類できます(私はアプリ系)。この3つをシステムをゼロから構築する場合の流れに沿って、説明していきたいと思います。 

①PCやサーバー、ネットワーク回線やネットワーク機器を作る。

これはITエンジニアではなく、メーカーの人たちの仕事です。

余談ですが、昔はこのハードとOSやソフトウェアがセットだったので、それらを作る人たちをメーカー系のSEと呼んでました。メーカー系以外に、ユーザー系、独立系(会社の資本が独立)という3つがメジャーな分類でした。今はユーザー系だけが生き残って?、メーカー系と独立系は主にSierと呼ばれています。

②PCやサーバー、ネットワーク機器を動かすOSやツール、ミドルウェアを作る。

ここからがITエンジニアの領域です。
が、これらを作れるような人はかなり高度なスキルを持っている人です。私には未知の世界の人たちで、ITエンジニア全体では少数派です。
強いて言えばアプリケーション系のエンジニアに分類できます。

③サーバーやネットワーク機器を組み立てる。

これはITエンジニアではなく、メーカーの人たちの仕事です。

たまにユーザー系IT企業の人間もやらされます。私もデータセンターに行って、ルーターの設置をやらされたことがあります。ルーターをラックに設置して、床をはがしてLANケーブル這わせて、ケーブルの長さが足りなかったので、タクシーで大型電気店に行ってLANケーブル買い直して、また配線し直して、ラックとルーターの間の超狭いスペースを涙を流しながらLANケーブルを通して・・・。アプリ系の人間なのに、インフラ系の仕事をやらされることもあるのです。サラリーマンなので。 

④OSの設定をする。

ここからがシステム構築のメインです。
一般的にはOSの設定はインフラ系のエンジニアが担当しますが、会社によっては初期設定をインフラ系、カスタマイズをアプリ系のエンジニアが分担する場合もあります。

ただし、通常はOSは初期設定のままで問題なく、よほど非機能要件がシビアなシステムでなければ、OS設定のチューニングをすることはありません。

ミドルウェアのインストール、設定をする。

ここがインフラ系とアプリ系の一番のグレーゾーンです。

標準化が進んでいる会社であれば、標準化チームがやってくれますが、そういう部隊のない会社だと、たいていはアプリ系のエンジニアがやらされます。具体的に言えば、OracleとかSQL ServerPostgreSQLといったデータベース、IISApacheTomcatWeblogicUnicornといったWebサーバーやAPサーバーの設定です。

システムを安定稼働させる上で、これらの設定値を適切な値にすることは非常に重要なのですが、これらに詳しいITエンジニアは非常に少なく、希少価値があります。

強いて言えば、アプリ系のITエンジニアの役割になります。

⑥アプリケーションを構築する。

アプリ系のエンジニアの本丸です。

要件定義でユーザーのやりたいことを実現する範囲や実現方法を決めて、基本設計で要件の実現方法をシステムの言葉に置き換え、詳細設計でプログラムの構造を決めて、プログラミングをしていきます。作った後はテストを実施し、ユーザー部門の受入テストで合格すると晴れて完成です。

<補足>
正確には、この要件定義から詳細設計(あるいは製造)までは、③から⑤と並行して行われます。要件定義の中で非機能要件を決めて、必要なCPUやメモリー、DISKが決まって、基本設計の中でOSやミドルウェアの設定値も決めていきます。これらは主にインフラ系のエンジニアの仕事になります。小規模なプロジェクトだとアプリ系のエンジニアが兼任することも多いです。

⑦運用担当者の受入

どこまできっちりやるかは会社によって違いますが、管理の厳しい会社だと運用部門の受入判定はとても厳しいです。特に運用マニュアルに対してのこだわりは尋常ではなく、アプリ系やインフラ系のエンジニアは辟易させられることも多々あります。

運用担当者はシステムを守る人たちなので安全第一なのに対して、アプリ系のエンジニアは顧客満足第一です。どちらも正しいのですが、その立場の違いからアプリ系のエンジニアと運用担当者は仲が悪いところが多いです。

運用部門が受けてくれないシステム運用は、保守担当者(=アプリ系のエンジニア)が実施することになります。「運用部門が受けてくれない」という事態はストレスが溜まるので、ほとんどの場合は、はじめから自分たちがやる計画にしておいて、運用部門には”綺麗な”システム運用のみ依頼することが多いです。

⑧アプリケーションをリリースする。

ユーザー部門や運用部門からOKをもらえると、ようやくリリースです。

リリースを誰がやるかは、会社によって違います。

管理が厳しい会社だと、運用部門(運用担当者)がリリースをします。開発部門(アプリ系のエンジニア)は本番環境には一切触れません。そこまで管理が厳しくない大半の会社はアプリ系のエンジニアがリリースをします。

リリースは夜間や土日等に実施する場合が多いです。

このリリースが上手く行かず、元に戻すような残念な事態になることも、ごくたまにあります。そんなときは、がっかりします。

⑨システムを運用する。

システムはどんなに頑張って作ってもトラブルが発生します。そのトラブルを最初に見つけるのが運用担当者の役割の一つです。トラブルが多いシステムを作ってしまうと、アプリ系のエンジニアは運用担当者から恨まれます。

コールセンター(最近ではコンタクトセンターと呼ぶ)も広い意味では運用担当者です。問合せを受けるだけでなく回答もしますが、難しい問合せの場合には、アプリ系のエンジニアにエスカレーションします。

システムの数が非常に多くなったり、複雑になったりしてきているので、運用担当者の役割もとても多くなってきています。それらはITIL(アイティル)と呼ばれているもので体系化されています。そのITILには保守も含まれているはずですが、保守はアプリやインフラのエンジニアが対応することが多いです。

【振り返り】

ざっと以下の分類の①についてご説明しましたが、イメージが湧いたでしょうか?

次回は②について詳しくご紹介していきたいと思います。

①スキル領域
 ①−1 アプリケーション系
 ①−2 インフラ系
 ①−3 運用系

②会社による違い
 ②−1 事業会社のIT部門(社内SE)
 ②−2 ユーザー系IT企業
 ②−3 Sier

③仕事の役割
 ③−1 システム企画
 ③−2 システム開発
 ③−3 運用保守