【たぷる】

タプル とは?

最終更新:
💡 値を順番のある組で扱う。性質は言語ごとに確認

複数の値を順序のある組として扱うもの。Pythonでは要素を差し替えられないシーケンス、TypeScriptでは配列の各位置の型などを表す型として使われ、変更可否などの性質は言語によって異なる。

📌 このページのポイント
タプル:言語による性質の違い 順序のある値の組 名前 → 年齢の順で扱う例 Python TypeScript ("田中", 25) [string, number] tupleという値 配列に対する型 要素の差し替え不可 各位置の型を指定 中のリストは変更可能 実行時は配列 TypeScriptでは 省略可能・残余要素で長さが変わる型も作れる readonlyは型検査での書き換え制限
PythonのtupleとTypeScriptのタプル型を比較した例。どの言語でも固定長・変更不可、とは限らない。
ひよこ ひよこ
タプルって配列のこと?
ペンギン先生 ペンギン先生
複数の値を順序のある組として扱うものだよ。ただし言語で仕組みが違う。Pythonにはtupleという値の型があり、TypeScriptのタプル型はJavaScriptの配列に対して各位置の型などを表すんだ。
ひよこ ひよこ
Pythonではどう書くの?
ペンギン先生 ペンギン先生
例えば("田中", 25)のように名前と年齢を組にできるよ。要素の差し替えや追加はできない。ただし、中にリストなどが入っていれば、そのリスト自体の内容は変更できるんだ。
ひよこ ひよこ
変更できないなら、全部辞書のキーに使える?
ペンギン先生 ペンギン先生
Pythonでは中の要素もハッシュ可能である必要があるよ。例えば文字列と数値の組は使えるけれど、リストを含むタプルは使えない。不変という説明だけで判断しないようにしよう。
ひよこ ひよこ
TypeScriptのタプルも変更できないの?
ペンギン先生 ペンギン先生
それだけでは変更不可にならないよ。[string, number]なら0番目が文字列、1番目が数値という型だね。readonlyを付ければ、その型を通じた書き換えを型検査で禁止できる。実行時に配列を凍結する仕組みではないんだ。
ひよこ ひよこ
要素の数は必ず固定?
ペンギン先生 ペンギン先生
TypeScriptでは省略可能要素や残余要素を使い、長さが変わるタプル型も書けるよ。また、順番だけでは意味が分かりにくいAPIなら、名前付きのプロパティを持つオブジェクトを使うことも検討しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「タプル」って出てきたら「値を順番のある組にして扱うもの」と思えばだいたいOK!
📖 おまけ:英語の意味
「Tuple」 = 順序のある値の組
💬 プログラミングでは複数の値を組として扱う場面で使う言葉だよ。同じ名前でも、Pythonの値とTypeScriptの型では性質が違うんだ。

参考資料

← 用語集にもどる