とりゅふの森

GCPデータエンジニアとして生きる

「キミ、意味多すぎない?」って思うエンジニア用語4選

f:id:true-fly:20210907234537p:plain エンジニアとして働いていると、「キミ、意味多すぎない?」という単語といくつか遭遇します。
そういった言葉は業務中の会話に頻繁に出現します。
しかし、会話の中でふと思うことがあります。
「あれ? 私が思っている単語の意味とちょっと違くない?」
そう、同じIT用語だとしても、文脈や製品、分野によって意味が異なってくる単語があるのです。

インターフェース

schema

(二者間の)境界面、接点、共通の問題、インターフェイス

出典 Weblio辞書 英和辞典

意味を調べているのにカタカタでそのまま意味が出てくるのは困ります。個人的ややこし単語No1です。
「接点」という意味なので、基本的になにかと何かをつなぐ役割を担うモノを指すときに、この単語は出現します。

JavaやC#などにおけるインターフェース

JavaやC#などのプログラミング言語には、インターフェースという概念があります。 ざっくりいうと、クラスの定義を記述したものです。

インターフェースはクラスに近い概念ですが、クラスと違って、実装を書かず、変数やメソッドのみを定義します。インターフェースを実装したクラスはインターフェースで定義された変数やメソッドを定義するといった使われ方をしています。

ユーザーインターフェース

UIとも呼ばれます。ユーザーとシステムを結びつけるモノを指します。

例えばユーザーがシステムにデータを入力するとき、Webの画面などを介してシステムにデータを入力します。このときの画面がインターフェースです。
よくUIがイケてないとか言われるそれがこれです。

ハードウェアインターフェース

ハードウェアにおけるインターフェースは、USBなどの、

物理的にハードウェアと別の機器を接続するモノのことを指します。

ソフトウェアインターフェース

システムとシステム間のデータのやり取りをするときの入出力の形式のことを指します。

何気なくAPIという単語が使われていますが、これもApplication Programming Interfaceの略、インターフェースの一種です。

システム開発の現場では、システム間にデータの連携が発生する時、そのデータ連携の仕様のことを、「IF仕様」あるいは「インターフェース仕様」と呼びます。

Javaの勉強を終えてシステム開発現場に配属になった時に、先輩に「IF仕様書を書いてください」と言われたときの、「なんでインターフェース???プログラミングしていないのに??」と、Javaとソフトウェアインターフェースの意味がごっちゃになってわけがわからなくなった社会人1年目の記憶は今でも忘れられません。

スキーマ

schema

図式、図表、図解、概要、大要

出典 Weblio辞書 英和辞典

そもそも英和辞典の時点で曖昧な意味ですね…。

IT業界では主にデータベースの構造を定義するモノのことを指します。 しかし、RDBMS製品によってその役割は異なります。

Oracle Databaseでは、スキーマは≒ユーザーとして扱われます。
MySQLでは、データベース1つ1つのことをスキーマとして扱います。
RDBMS以外でも、Google BigQueryでは、スキーマはテーブル定義として扱われます。

スキーマ、製品や分野によってその意味が異なるので要注意です。

オブジェクト

object

(知覚できる)物、物体、対象、目的、目標、おかしなもの、目的語、客観、客体

出典 Weblio辞書 英和辞典

オブジェクトとは物体です。この時点でものすごい抽象的な概念です。
よく日常会話で「オブジェ」という単語で会話することがありますが、それも物体という抽象的な概念を指します。

IT業界でも、オブジェクトは抽象的な概念として扱われます。
例えばMicrosoft Office製品だったり、画像描画ソフトでは、オブジェクトはグラフだったり図表だったりを指します。
オブジェクト指向プログラミングでは、モノ、コトをオブジェクトとして扱います。Javaではクラスを実体化したものをオブジェクトと呼びます。PythonやRubyはクラスもオブジェクトです。
世界トップクラスのCRMクラウドサービス、Salesforceでは、オブジェクトはデータの箱、RDBでいうテーブルのような概念を指します。

わけがわかりません。

インスタンス

instance

例、実例、事例、実証、場合、事実、段階

出典 Weblio辞書 英和辞典

インスタンスとは実例という意味です。
プログラミングでは、メモリ上に実体化したデータをインスタンスと呼びます。「クラスからインスタンスを生成する」とよく表現しますね。

AWSのEC2やGCPのGCE、Cloud SQLなどの仮想マシンは、実体化したサーバのことを指します。

インスタンスは、

「雛形があって、そこから生成された実体のあるモノ」

といった意味であると考えるのが良さそうです。先ほど挙げた3つよりはわかりやすいです。

まとめ

エンジニアは、意味のある言葉で対話し、互いに認識の齟齬が発生しないようにプロジェクトを進める義務があります。
なのに曖昧な用語が行き交うのこの業界、今回ご紹介した4つの言葉以外にも、一つひとつ正しい意味を理解し、齟齬のないやりとりを心がけたいと思いました!