【まっぴんぐ】

マッピング とは?

💡 異なるもの同士の「対応関係を定義する」作業、DB↔オブジェクト変換が典型例
📌 このページのポイント
マッピング ― データの対応付け システムA user_name mail_address birth_date phone_num 対応付け システムB fullName email dateOfBirth telephone
マッピングのイメージ
ひよこ ひよこ

マッピングって何?

ペンギン先生 ペンギン先生

2つの異なるものの間に「対応関係」を作ること。例えばDBのテーブル行をPythonオブジェクトに対応付けるのがO/Rマッピング(ORM)。「usersテーブルの1行 ↔ UserクラスのインスタンスA」という対応を自動的に処理してくれる。

ひよこ ひよこ

Dockerのポートマッピングって?

ペンギン先生 ペンギン先生

コンテナの内部ポートとホスト側ポートを対応付けること。`docker run -p 8080:80`とするとホストの8080番ポートへのアクセスがコンテナの80番に転送される。コンテナは独立したネットワーク空間を持つためポートマッピングで外部からアクセスできるようにする。

ひよこ ひよこ

URLマッピングって?

ペンギン先生 ペンギン先生

URLのパスとコードの関数を対応付けること。Webフレームワークルーティング設定。例えば「GET /users/{id}」というリクエストを`getUserById(id)`という関数に対応付ける。Djangaの`urls.py`・Expressの`app.get('/users/:id', handler)`などがその例。

ひよこ ひよこ

ORマッピング(ORM)って便利そうだけどデメリットはないの?

ペンギン先生 ペンギン先生

あるよ。「N+1問題」が有名で、関連データを取得するとき1回のクエリで済むはずが、ループの中で1件ずつ別のクエリが発行されてしまいパフォーマンスが激落ちする。ORMが裏で生成するSQLを理解していないと、知らないうちに遅いクエリを大量発行してしまうことがあるんだ。

ひよこ ひよこ

データマッピングとマッピングテーブルって何?

ペンギン先生 ペンギン先生

データマッピングはシステム間のフィールド対応表のこと。例えば旧システムの「customer_nm」を新システムの「customer_name」に対応づける定義。マッピングテーブルはDBで多対多の関係を表現する中間テーブルのことで、「ユーザーとロールの紐付け」のようにuser_role_mappingというテーブルで管理する。どちらも「2つのものを対応づける」という本質は同じだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
マッピングって出てきたら「2つの異なるデータや概念の間に対応関係を定義すること、ORMURLルーティングがその例」と思えばOK!
📖 おまけ:英語の意味
「Mapping」 = 写像・対応付け
💬 数学の「写像(map)」から来た概念。ある集合の各要素を別の集合の要素に対応付ける操作。コンピュータサイエンスでは「変換・対応付け」の意味で広く使われる
← 用語集にもどる