エンジニアとして働いていると、「キミ、意味多すぎない?」という単語といくつか遭遇します。
そういった言葉は業務中の会話に頻繁に出現します。
しかし、会話の中でふと思うことがあります。
「あれ? 私が思っている単語の意味とちょっと違くない?」
そう、同じIT用語だとしても、文脈や製品、分野によって意味が異なってくる単語があるのです。
インターフェース
schema
(二者間の)境界面、接点、共通の問題、インターフェイス
意味を調べているのにカタカタでそのまま意味が出てくるのは困ります。個人的ややこし単語No1です。
「接点」という意味なので、基本的になにかと何かをつなぐ役割を担うモノを指すときに、この単語は出現します。
JavaやC#などにおけるインターフェース
インターフェースはクラスに近い概念ですが、クラスと違って、実装を書かず、変数やメソッドのみを定義します。インターフェースを実装したクラスはインターフェースで定義された変数やメソッドを定義するといった使われ方をしています。
ユーザーインターフェース
例えばユーザーがシステムにデータを入力するとき、Webの画面などを介してシステムにデータを入力します。このときの画面がインターフェースです。
よくUIがイケてないとか言われるそれがこれです。
ハードウェアインターフェース
ハードウェアにおけるインターフェースは、USBなどの、
ソフトウェアインターフェース
何気なくAPIという単語が使われていますが、これもApplication Programming Interfaceの略、インターフェースの一種です。
システム開発の現場では、システム間にデータの連携が発生する時、そのデータ連携の仕様のことを、「IF仕様」あるいは「インターフェース仕様」と呼びます。
Javaの勉強を終えてシステム開発現場に配属になった時に、先輩に「IF仕様書を書いてください」と言われたときの、「なんでインターフェース???プログラミングしていないのに??」と、Javaとソフトウェアインターフェースの意味がごっちゃになってわけがわからなくなった社会人1年目の記憶は今でも忘れられません。
スキーマ
schema
図式、図表、図解、概要、大要
そもそも英和辞典の時点で曖昧な意味ですね…。
Oracle Databaseでは、スキーマは≒ユーザーとして扱われます。
MySQLでは、データベース1つ1つのことをスキーマとして扱います。
RDBMS以外でも、Google BigQueryでは、スキーマはテーブル定義として扱われます。
スキーマ、製品や分野によってその意味が異なるので要注意です。
オブジェクト
object
(知覚できる)物、物体、対象、目的、目標、おかしなもの、目的語、客観、客体
オブジェクトとは物体です。この時点でものすごい抽象的な概念です。
よく日常会話で「オブジェ」という単語で会話することがありますが、それも物体という抽象的な概念を指します。
IT業界でも、オブジェクトは抽象的な概念として扱われます。
例えばMicrosoft Office製品だったり、画像描画ソフトでは、オブジェクトはグラフだったり図表だったりを指します。
オブジェクト指向プログラミングでは、モノ、コトをオブジェクトとして扱います。Javaではクラスを実体化したものをオブジェクトと呼びます。PythonやRubyはクラスもオブジェクトです。
世界トップクラスのCRMクラウドサービス、Salesforceでは、オブジェクトはデータの箱、RDBでいうテーブルのような概念を指します。
わけがわかりません。
インスタンス
instance
例、実例、事例、実証、場合、事実、段階
インスタンスとは実例という意味です。
プログラミングでは、メモリ上に実体化したデータをインスタンスと呼びます。「クラスからインスタンスを生成する」とよく表現しますね。
AWSのEC2やGCPのGCE、Cloud SQLなどの仮想マシンは、実体化したサーバのことを指します。
インスタンスは、
といった意味であると考えるのが良さそうです。先ほど挙げた3つよりはわかりやすいです。
まとめ
エンジニアは、意味のある言葉で対話し、互いに認識の齟齬が発生しないようにプロジェクトを進める義務があります。
なのに曖昧な用語が行き交うのこの業界、今回ご紹介した4つの言葉以外にも、一つひとつ正しい意味を理解し、齟齬のないやりとりを心がけたいと思いました!