トレイトとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 日本語表現辞典 > トレイトの意味・解説 

trait

別表記:トレイト

「trait」の意味

「trait」とは、個人特徴性格を表す言葉である。特に、遺伝的または環境的要因によって形成され個性的な特徴を指すことが多い。例えば、勇敢さ誠実さなどの性格的特徴や、美術才能音楽才能などの能力特徴該当する

「trait」の発音・読み方

「trait」の発音は、IPA表記では /treɪt/ であり、IPAカタカナ読みでは「トレイト」となる。日本人発音するカタカナ英語では「トレイト」と読むことが一般的である。

「trait」の定義を英語で解説

A trait is a distinguishing quality or characteristic, typically belonging to a person, that can be inherited or acquired through environmental factors. It can refer to both personality traits and abilities or talents.

「trait」の類語

「trait」の類語には、characteristic特徴)、attribute属性)、quality(質)、feature特色)などがある。これらの言葉は、個人特徴性格を表す際に使われるが、ニュアンス使い方には若干違いがある。

「trait」に関連する用語・表現

「trait」に関連する用語表現には、personality trait(性格的特徴)、genetic trait(遺伝的特徴)、inherited trait(遺伝的に受け継がれ特徴)、acquired trait(環境的要因獲得した特徴)などがある。

「trait」の例文

1. Honesty is an admirable trait.(正直さ称賛値する特徴である。)
2. She has a genetic trait for artistic talent.(彼女は美術才能を持つ遺伝的特徴持っている。)
3. His sense of humor is one of his most attractive traits.(彼のユーモアのセンスは、彼の最も魅力的な特徴一つである。)
4. The acquired trait of perseverance helped her succeed in her career.(環境的要因獲得した忍耐力という特徴が彼女のキャリア成功するのを助けた。)
5. Genetic traits can be passed down from one generation to the next.(遺伝的特徴世代から世代へと受け継がれることがある。)
6. She has a unique trait of being able to remember every detail of a conversation.(彼女は会話あらゆる細部覚えていられるという独特の特徴持っている。)
7. His leadership traits were evident from a young age.(彼のリーダーシップ特徴若い頃から明らかであった。)
8. The study of human traits can help us understand human behavior better.(人間特徴研究は、人間行動をより理解するのに役立つ。)
9. Some traits are more dominant than others in a person's personality.(ある特徴は、人の性格の中で他の特徴よりも優位であることがある。)
10. Environmental factors can influence the development of certain traits.(環境的要因は、特定の特徴発達影響与えことがある。)

トレイト

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/09/13 03:00 UTC 版)

トレイト (: Trait) は、コンピュータープログラミングでの概念であり、専らオブジェクト指向プログラミングで用いられている。トレイトはメソッドの集合体であり、クラスの機能を拡張するために使われる[1][2]

特徴

トレイトは、(1)自身が定義+実装しているメソッドを継承先クラスに注入する役割と、(2)自身が定義だけしているメソッドを継承先クラスに叙述してそこで実装させる役割の双方を持っている。定義=メソッドシグネチャ、実装=メソッドコードである。トレイトの継承は、インクルードと言われることが好まれるがそうでない言語もある。トレイトのインクルードを扱う作法はミックスイン(mixin)と言われることが多いがそうでない言語もある。なお、ミックスインでもトレイトを扱っていない言語もある。

トレイトは2000年代にSmalltalk方言のSqueakで最初に実装が試されてから、各言語で様々な形態に解釈されて導入されている。トレイトは多重継承されることから、同様の機能であるインターフェースとよく対比されて説明される。インターフェースとの違いは以下のようになる。

  1. インターフェースがメソッドシグネチャのみを持つのに対して、トレイトはメソッド(定義+実装)とメソッドシグネチャの双方を持ち、またデータメンバを持つこともある。
  2. インターフェースはサブタイピングでクラスに継承させるのに対して、トレイトはサブタイピングでクラスに継承させるか、アドホック多相英語版でクラスにインクルードさせるの二通りに分かれる。
  3. インターフェースは記名的型付け英語版で識別されるのに対し、トレイトは構造的型付け英語版で識別されることが多い。

トレイトは合成(union)と交差(intersection)ができる。これも大きな特徴である。

  1. トレイトの合成は交換法則が成り立つ。即ちS = A + BT = B + AとしてのSTは同型トレイトと判定される。
  2. トレイトの合成は平坦化される。即ちX = B + CとしてS = A + Xとし、またT = A + B + Cとすると、STは同型トレイトと判定される[3]

また、専用の書式でメソッドを列挙しての”その場トレイト”を作成できる言語もある。”その場トレイト”は構造型(structural type)とも呼ばれており、合成と交差に利用できる。

トレイトは任意の数だけクラスに継承/インクルードさせることができる。ここでクラスの多重継承と同様に名前衝突や菱形継承問題が発生するが、それをより柔軟に解決できる方法をトレイトは備えている。それは以下のようなものである。

  1. 対称和(symmetric sum)- トレイトは合成できるので、多重継承を”その場合成トレイト”に置換できる。
  2. 非対称和(override / asymmetric sum)- トレイトのメソッドを継承/インクルード先のメソッドでオーバーライドして、メソッド実体を任意に入れ替えることができる。
  3. 別名化(alias)- 各メソッドをリネームした”その場トレイト”を継承対象に置換できる。
  4. 排除(exclusion)- トレイトは交差できるので、必要メソッド群を切り抜いて不要メソッド群を除外した”その場トレイト”を多重継承に置換できる。

冒頭で述べた通り、トレイトはメソッドの集合体なので、合成と交差と構造型を用いての要素メソッドの自由な組み替えによって多重継承問題に対応できる。

導入している言語

トレイトを採用

  • Smalltalk - 最初のトレイトは Smalltalk 処理系のひとつである Squeak を使ってベルン大学のソフトウェア合成グループによって実装が試され[4]、その有効性が実証された[5]。Squeak にはその後、公式リリースにもトレイトが組み込まれ標準で利用可能となった。Squeak から派生した Pharo も同様。
  • PHP - 5.4.0 からサポート[6]
  • Raku -「ロール」。Perl 5 では Moose モジュールで利用可能。なおロールの限定的な用途のみ「トレイト」と呼称し紛らわしい。
  • JavaScript の Joose フレームワーク
  • Ruby のモジュールのmix拡張(試作のみ)[7] - Ruby 2.0 向けの新機能として計画された[8]が運用上の問題が見つかり放棄された[9]

トレイトの類似品/派生品を採用

  • Racket - エンティティとしてのトレイトは無いが、ミクスインをトレイトのように振る舞わせる関数やマクロが整備されている。
  • Curl - 抽象クラス多重継承することでトレイトを実現することができる。
  • Swift - protocol、extensionを利用することでトレイトを実現することができる[10]
  • Rust - トレイトを有し、型変数に対する制約をトレイトで指定したり、ユーザー定義型の演算子に対する振る舞いを設定するのに利用されるが、その運用に際しそもそも衝突を許さないので(Orphan rule)、メソッドの集合という意味を除きSchärliの想定した使われ方はされず、トレイトとしては別物(実装の記述できるインタフェース程度)と考える方が良い。

Rustの他にもトレイトと称する言語機能を有する静的型言語もあるが、その本質は従来のミクスインのままである(平坦化されない)。ただし平坦なトレイトを模したりミクスインの問題点を回避する拡張を施すなどの工夫により、トレイトに近い使い勝手を実現している場合もある。

脚注

  1. ^ Nathanael SchärliStéphane DucasseOscar NierstraszAndrew P. Black 共著、Traits: Composable Units of Behaviour. Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science 誌、2743巻、Springer-Verlag、2003年、pp. 248-274
  2. ^ Stéphane DucasseOscar NierstraszNathanael SchärliRoel WuytsAndrew P. Black 共著: Traits: A mechanism for fine-grained reuse. ACM Trans. Program. Lang. Syst. 誌、28(2): 331-388 (2006)
  3. ^ Schärli, Nathanael; Ducasse, Stéphane; Nierstrasz, Oscar; Black, Andrew P. (2003). “Traits: Composable Units of Behaviour”. Proceedings of the European Conference on Object-Oriented Programming (ECOOP).. Lecture Notes in Computer Science 2743: 248–274. http://scg.unibe.ch/archive/papers/Scha03aTraits.pdf. 
  4. ^ Nathanael Schärli, Stéphane Ducasse, Oscar Nierstrasz, and Andrew P. Black. Traits: Composable Units of Behavior. Technical Report -2, Institut für Informatik, Universität Bern, Switzerland, November 2002
  5. ^ Andrew P. Black, Nathanael Schärli, and Stéphane Ducasse. Applying Traits to the Smalltalk Collection Hierarchy. Technical Report -2, Institut für Informatik, Universität Bern, Switzerland, November 2002
  6. ^ Marr, Stefan. “Request for Comments: Horizontal Reuse for PHP”. The PHP.net wiki. The PHP Group. 2011年1月31日閲覧。
  7. ^ http://marc.info/?l=ruby-cvs&m=130685857122161
  8. ^ http://www.rubyist.net/~matz/20100617.html
  9. ^ https://ruby-trunk-changes.hatenablog.com/entry/20111003/ruby_trunk_changes_33379_33380
  10. ^ Mixins and Traits in Swift 2.0”. 2022年2月10日閲覧。
  11. ^ http://www.scala-lang.org/node/126 A Tour of Scala: Traits
  12. ^ http://www.ibm.com/developerworks/java/library/j-scala04298.html The busy Java developer's guide to Scala: Of traits and behaviors
  13. ^ http://docs.groovy-lang.org/next/html/documentation/core-traits.html Groovy Language Documentation

関連項目

外部リンク


「トレイト」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「トレイト」の関連用語

トレイトのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



トレイトのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
実用日本語表現辞典実用日本語表現辞典
Copyright © 2025実用日本語表現辞典 All Rights Reserved.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのトレイト (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS