30歳過ぎから工学 vol.2

http://d.hatena.ne.jp/j130s/ から移行しました.オープンソースロボットソフトウェア技術者兼主夫. 高校・大学学部文系-->何となくソフトウェア開発業-->退職・渡米,テキサス州でシステムズ工学修士取得,しかし実装の方が楽しいと気付き縁があったロボティクス業界で再就職.現在 Texas 州内の産業用オートメーションのスタートアップに California 州から遠隔勤務.

米国式システムズエンジニアリングって何?他の工学領域や日本の SE と比べて

極寒の先週が終わり,地元ダラス(近郊)でのスーパーボールも幸い暖かい中での開催となったようです.せっかく地元なので気分を味わっとかないと損,ということで私も二十人以上のアメリカ人に混ざって,渡米三年目にして初めて生観戦 (TV) しました.ちなみにその会は熱狂的な盛り上がりというより,じっくりしっかり観る,という人が多かったように思う.バカ騒ぎをイメージしてた私としては意外でしたが,内情は実は多くの人がそんなに興味がなく,中には彼氏の付合いで観てるが実は Super Bowl 中継の後に始まるドラマ Glee を心待ちにしてる (笑) という女子も居たりして,思いは様々なんだなと.ただ,以前誰かが "英国では中流以上はサッカーの話題を特に好まない" と真偽は知りませんが言っていたものの,米国では授業でも教員が話題にすることが何度かあったし,スポーツコーナーじゃない一般の TV ニュースも Super Bowl はかなり取り上げていたので,(私ごときが言うことじゃないが) やはり国民的行事なのは間違いないかと.




私が好きだった TV CM はコレ.いつも通りのコカコーラのナンセンスっぷりにニヤっとさせられる.しかも大好きな一八一二年序曲.


さて,ところで私が米国の大学院で学んでいるシステムズエンジニアリング (SE) とは何か,よく説明を求められますが,中々満足いく説明を差し上げられてないのではないかと歯痒く思っています.日本版 Wikipedia ですらシステムズエンジニアリングの項目が未だに無い*1くらい,日本では学問あるいはビジネススキルとして認知されていない.しかし米国でも一般に流通しているとはとても言い難く,米国のある大学工学部のコンピュータサイエンス学科長ですら,SE の大学院に行くんですとお話した時に "SE って具体的には何するの?" と説明を求められたことがあります.そこで,学問的に体系だったことは未だ書けないけれども,SE を学ぶ人は何がしたいかが少し分かって頂けるように,以下説明を試みます.
SE の話をする前に,工学の各領域について考えましょう.多くの大学がある程度共通した工学領域区分を持っていると思いますが例えばスタンフォード大の工学部には次の専攻があるようです:
航空宇宙工学,生物工学,化学工学,土木・環境工学,計算機科学,電気工学,科学・工学マネジメント,材料科学/工学,機械工学 (日本語訳:筆者)
私の非常に限られた知識の範囲ですが,上記の例において (私がよく理解していない科学・工学マネジメント以外は) "(人ではない) 成果物/システムに注力する" 学問という見方ができると思います.勿論成果物の享受者は人なのですが,どうすればより良い物が作れるか,生み出せるか,により強い焦点が当たっているのがこれらの学問ではないでしょうか.例えば私も米国で計算機科学の学部課程に在籍したことがありますが,コンピュータサイエンスの焦点は "どうやったらコンピュータシステムがもっとよく動くか" だと思います.学問というからには定量的な改善度を測り易くするため何らかの尺度を用いますが,(少なくとも学部レベルの) 計算機科学で扱われるそれらの尺度はアルゴリズムの効率だったり演算装置の処理速度だったり,殆どがシステムの動作自体に関するものです.そして他の工学分野でも状況は似ているのではないでしょうか*2
一方,SE は "システムのためではなく,システム利用者に注力する" ものだと私は考えています.利用者に満足してもらう,そのためのすべての活動に関する知識の蓄積です.したがって SE ではコンピュータプログラミングも,電子回路の設計も,力学も物理学も学びません.それら実装技術はとても大事なのは言うまでもなく,"イノベーション" というものが語られる時にまず最初に話題に挙がるものですが,SE では実装工程はあくまでシステムのライフサイクルの一工程と捉えます.どちらのほうが大事だとか重要だとかいう低レベルの議論ではなく,どちらもあってこそであり,ただ焦点が違うだけに過ぎません.SE は実装技術ではなく,信頼性・運用性等の品質の向上,リスク管理,異種部品の摺り合わせ,それらを反映した設計等を技術として学びます."利用者","顧客" という判断基準が(おそらく他の工学領域以上に密接に)常に付きまとう.乱暴を承知しつつ,ざっくり短文で SE の対象範囲を表すなら,"システムのゆりかごから墓場まで" と言えるのではないかと.
ちなみに SE に特化した国際学会 INCOSE の 2002年の定義は次のとおり:

(from http://www.incose.org/practice/whatissystemseng.aspx)
Systems Engineering is an interdisciplinary approach and means to enable the realization of successful systems. It focuses on defining customer needs and required functionality early in the development cycle, documenting requirements, then proceeding with design synthesis and system validation while considering the complete problem:
Operations | Cost & Schedule | Performance | Training & Support | Test | Disposal | Manufacturing
Systems Engineering integrates all the disciplines and specialty groups into a team effort forming a structured development process that proceeds from concept to production to operation. Systems Engineering considers both the business and the technical needs of all customers with the goal of providing a quality product that meets the user needs.
霧に包まれた感じがするかもしれませんが,注目すべきは "Customer" や "User" が複数回使われている点と,システムのライフサイクル (= from ゆりかご to 墓場) 中の各工程が中段に列記されている点で,私のここまでの説明はこの定義に基づいているのを感じて頂けると思います.また,ビジネスついて触れられている点からも,工学の一分野ではあるがより顧客に近い視点に立っているという主張が窺えます.
冒頭のコンピュータサイエンス学科長の疑問はある意味もっともで,実際に日常的・継続的に使われるシステムを作った経験が無い場合,そもそも信頼性,運用性等には目を向ける必要が無いので,SE 自体あまり必要性が無い.勿論 SE を知らないと良いシステムを作れないわけでは勿論なく,むしろすべての工学領域の人は利用者のことを考えつつ各実装技術に携わっているわけですが,SE は逆に実装技術はそれぞれの専門家にお任せし,品質を上げることに注力します.繰り返しですが,SE は利用者の満足を上げる事に特化した知識なのです.
ちなみに,日本で言うシステムエンジニア (ここでは以降 JSE と標記)と英語の Systems Engineer (ESE) は意味が少し異なる,と何度も書いてきました.JSE はソフトウェアシステムに特化して用いられる点が,上で繰り返しているとおり実装技術を特定しない ESE に比べまず何より違います.しかし,その点以外においては,今日付けで見た 日本版 Wikipedia のシステムエンジニアの説明自体は ESE と近いようにも思います.ただ実情としては JSE の多くが "ソフトウェアシステム開発/納入課程の何でも屋" として働いておられるのではないでしょうか.このページでは米国の有望職種1位が ESE だったことに対し JSE と思しき方々が "あんな激務が?冗談だろ" 等とコメントされてますが,日米の勤務事情の違いを差し引いても,JSE と ESE では異なるので理解出来ないのは仕方が無いのでしょう.アメリカの SE はこれまで何度も書いてきているとおり元は超大規模システム構築から上がって来た知識体系なので,分業体制もはっきりしており,何でも屋な ESE はほぼ皆無なはず*3.ただ SE が大規模開発以外へも普及するにつれそこは変わっていくのかも知れませんが.
なお,米国の学校にある似た専攻 (私もかつて混同した) に "Engineering Management" (EM) があります.(私の理解の範囲では) 一言では "プロジェクトマネジャーに必要な知識を学ぶ学問" と言ってよく,SE では必須でない場合が多いお金(会計,経済) や人(産業心理学),プロジェクト運営等に関して学ぶようです.EM はチーム管理・運営に特化するのに対し,SE はより技術的で,なにより SE は顧客を中心に捉える姿勢が徹底しているように思う.しかしながら,学問領域としてはそういう区分ですが,実際のエンジニアリング組織ではそこまで厳密に区分せず,プロジェクトマネジャーとしてもチーフシステムズエンジニアとしての業務も兼ねている方は (大規模プロジェクトでない場合特に) 沢山おられるのが,米日問わず実情なんだろうとも思うし,学校で SE を修めた後にプロジェクトマネジャーとして働く人は多いようです.

韓国人が運営する場末のアジア料理屋 "Sushi Time" で見付けた "Dallas Roll".アメリカナイズされた寿司としては California Roll が有名でしょうが,ダラスロールは初めて見た.どの辺がダラスなのか一切不明.アメリカナイズされたスシ,A-Sushi (勝手に命名) は最早日本の伝統的寿司とは別物でしょうが,それはそれとして好きです.これも美味しく食べました.

*1:"システム工学"の項はあるが, 対象が "顧客" でなく "システム" な時点で SE とは異なるもの.

*2:何をシステムと呼ぶかからして分野によって違いそうですが,ここではシステム = 人ではない何か,の意味で用いています.

*3:ただ,上記有望職種の元記事である CNN のこのサイトでは,短所として "Long hours are common; project deadlines can be fierce." とあり,少なくとも米国人的感覚において激務なのは想像できますが.