はじめに
本日(2021/4/16)、Qiitaから「コミュニティガイドラインの改定を行います」という通知が来ており、その中に以下の記載があった。
「エンジニア」という言葉の定義はコミュニティガイドライン内で以下のように定義しています。
・プログラミングの知識と経験を活用している人
この記載にひっかかったので、前から思っていることを述べる。
煽りタイトルの『Qiitaのいう「エンジニア」はエンジニアではない』は、『Qiitaのいう「エンジニア」はエンジニアのごく一部でしかない』ぐらいに思っている。
エンジニアとは
Google先生に『エンジニア』と入れれば、Wikipedia先生の「技術者」1のページがヒットする。当該ページに以下の記載があり、個人的にも「工学者」の方がしっくりくる。
技術者に対応する英語として、または同じ意味合いの外来語として、エンジニア (engineer) の呼称も用いられる。
ただし、一般的な語の対応としては、「工学」が「エンジニアリング」で「技術」が「テクノロジ」であるため、どう対応あるいは同じなのかは微妙である。
日本語版ウィキペディアでは工学者の記事を、工学分野の研究者の記事としている。
技術士
日本には「技術士(Professional Engineer)2」という公的資格があり、その技術部門に限っても21ある。そのうち、プログラミングと直接関連がある部門は「情報工学部門」であろう。
- 機械部門
- 船舶・海洋部門
- 航空・宇宙部門
- 電気電子部門
- 化学部門
- 繊維部門
- 金属部門
- 資源工学部門
- 建設部門
- 上下水道部門
- 衛生工学部門
- 農業部門
- 森林部門
- 水産部門
- 経営工学部門
- 情報工学部門
- 応用理学部門
- 生物工学部門
- 環境部門
- 原子力・放射線部門
- 総合技術監理部門
情報工学
今回Qiitaが定義した「エンジニア」は情報工学3/計算機科学(Computer Science)4のことを指していると考えられる。
個人的にも、Qiita記事の範囲をソフトウェア工学の一分野であるプログラミングから計算機科学まで広げることに異論はない。
情報工学とは「情報」を工学的に利用するための学問分野である。
情報の発生(データマイニング、コンピュータグラフィックスなど)、
情報の伝達(コンピュータネットワークなど)、
情報の収集(コンピュータビジョン、検索エンジンなど)、
情報の蓄積(データベース、データ圧縮など)、
情報の処理(計算機工学、計算機科学、ソフトウェア工学)
を扱う総合的な工学分野といえる。
基礎
- 数論
- 組合せ数学
- グラフ理論
- 数理論理学
- 情報理論
- 理論計算機科学
- 計算理論
- チューリングマシン
- ラムダ計算
- アルゴリズム解析
- データ構造
- 形式言語
- プログラム意味論
- 領域理論
- 計算科学
実装
- プログラミング言語
- コンパイラ
- 分散コンピューティング
- 並列コンピューティング
- 並列処理
- ソフトウェア工学
- プログラミング
- コンピュータ・アーキテクチャ
- オペレーティングシステム
- 通信
- コンピュータネットワーク
- 暗号理論
- データベース
- 人工知能
- ロボット工学
- コンピュータグラフィックス
まとめ(私見)
前章で示したことから、『Qiitaのいう「エンジニア」はエンジニアのごく一部でしかない』という意見には賛同いただけると思う。ソフトウェアエンジニア(プログラマ)を「エンジニア」と呼ぶことは「猫クラス」に「生物クラス」と名付ける程度の気持ち悪さがある。(普段から、名前大事とか定義大事とか言ってますよね?)
ここ10年程ソフトウェアエンジニアがエンジニアの代表者面する表現が散見されてもやもやしてた。個人的な見解なら突っ込むことはないが、暇なときに公式案内が来たので、一言書いた。
補足
Qiitaの公式
Qiitaの公式には一応、以下の記載はあるが、『別のものを同じ言葉で定義することはやめろ』という意見には多くのプログラマが賛同すると思う。
世の中のエンジニアの定義とは少しずれた定義とはなってしまいますが、Qiitaとして「エンジニア」という表現を使う際は、このような意味として用いていきたいと考えています。
原理主義者たちの意見
ちなみに、Wikipedia先生の「技術者」1のページには以下の記載がある。
日本以外の国においては「エンジニア」の称号には工学士の学位が必要とされるなど明確な制限がある場合が多く、日本語での「技術者」「エンジニア」は、こうした国においては別の職種とみなされる「テクニシャン」(技能者)に相当することも多いため注意が必要である。
また、ソフトウェア工学(Software Engineering)5のページには以下の記載がある。
建築に携わる全ての人が建築学者ではないのと同様、ソースコードを書く人が常にソフトウェア工学者とは限らない。
また、カナダの Professional Engineers Ontario という団体は、software engineering という呼称自体に反対している。
すなわち、ソフトウェア開発は工学と呼ぶには未成熟で、それに携わる人々はプロのエンジニアとは呼べないという。
ソフトウェア工学はコンピュータ科学でない、という意見の中には、科学か否か以前に、ソフトウェア工学はそもそも工学としての性質すら全く持っていないという考えさえある。
上記のように、タイトルの字句通り『Qiitaのいう「エンジニア」はエンジニアではない』論もある。ただ、個人的には工学とは物を作る学問であると思っているため、プログラムも工学の一分野であるとは思っている。
最後に
「引用がすべてWikipediaじゃねーか」と思った方はおそらく研究者の素質があります。
-
https://ja.wikipedia.org/wiki/%E6%8A%80%E8%A1%93%E8%80%85 ↩ ↩2
-
https://ja.wikipedia.org/wiki/%E6%83%85%E5%A0%B1%E5%B7%A5%E5%AD%A6 ↩
-
https://ja.wikipedia.org/wiki/%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6 ↩
-
https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E5%B7%A5%E5%AD%A6 ↩