Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Unionとは? わかりやすく解説

union

別表記:ユニオン

「union」とは、結合連合のことを意味する英語表現である。

「union」とは・「union」の意味

「union」は、結合連合意味する名詞である。州や国家などの連合併合意味することもある。また、結合体連合組織協会連盟連邦といった意味でも用いられるそのほか労働組合ユニオンのことも意味する結婚夫婦仲意味する場合もある。

「union」の発音・読み方

「union」の発音記号は「juːnjən」である。カタカナ読みだと「ユニオン」になる。

「union」の語源・由来

「union」の語源は、ラテン語一つにする、という意味の「unio」である。英語の「union」は、元々は「結合」や「合併」といった意味を持つ単語だった。しかし、19世紀アメリカ合衆国南北戦争勃発すると、「union」は南北の州を結びつける象徴として使用されるようになったまた、この時期から「union」は、国家政治的な集団を表す言葉としても用いられるようになったといわれている。

「union」を含む英熟語・英語表現

「union」を含む英熟語英語表現には、以下のようなものがある。

「labor union」とは


labor union」は、労働組合のことを指す。「trade union」という場合もある。

「student union」とは


student union」は、大学高校などの教育機関において、学生たちによって自主的に組織され団体意味する

「European Union」とは


European Union」は、欧州連合のことである。略してEU」と表記されるヨーロッパ中心に結成され政治的経済的な連合体である。

「Union Jack」とは


Union Jack」は、英国国旗のことを意味する。「Union flag」と呼ばれることもある。

「union catalog」とは


union catalog」は、図書館総合目録意味する

「union station」とは


union station」は、複数鉄道会社バス会社共用する合同駅のことである。

「union」に関連する用語の解説

「union」に関連する用語には、次のようなものがある。

「union(C言語)」とは


「union(C言語)」とは、複数異なる型のデータを同じ領域割り当てることができる共用体のことである。

「UNION TOKYO(セレクトショップ)」とは


「UNION TOKYOセレクトショップ)」は、東京都渋谷区にあるストリートファッションセレクトショップである。初号店は1989年NYオープン2018年TOKYOストアオープンしたバイヤーは「UNION LA」と「UNION TOKYO」の2店舗オーナー務めChris Gibbsである。

「union (雑誌)」とは


「UNION」は、日本のファッション・カルチャー雑誌である。1997年創刊された。当初ストリートファッション音楽アートなどを扱ったムック本としてスタートしたが、その後、高級ブランドかストリートファッションまで幅広く取り扱う雑誌となった。年に2回発行されている。

「unionize」とは


「unionize」は、団結させる組織化する、という意味の動詞である。たとえば、労働団体組織することを「unionize」という。

「unionism」とは


「unionism」は、労働組合主義や団主義意味するまた、労働組合員団結主義者のことを「unionist」という。アメリカにおいては南北戦争時連邦主義連邦主義者を「unionism」や「unionist」と呼ぶ。イギリス史において、「unionism」や「unionist」はアイルランド統一主義とその主義者のことである。

「union」の使い方・例文

「union」を用いた例文としては、次のようなものが挙げられる

「The union between the two countries led to increased economic growth.(2つ国家間連合は、経済成長促進した。」

「She was proud to be a member of the teachers' union.(彼女は教師組合メンバーであることを誇り思っていた)」

「The union of these two chemicals creates a reaction that produces heat.(これら2つ化学物質結合により、熱を発生する反応が起こる)」

「The union of the two companies was announced last week.(2つ企業合併先週発表された)」

「The European Union is a political and economic union of 27 member countries.(欧州連合は、27加盟国から成る政治的経済的な連合体である)」

「He is a proud member of the actor's union and has fought for better working conditions for performers.(彼は俳優組合メンバーであり、パフォーマーのためにより良い労働条件求めて戦ってきた)」

「The union of these two pieces of wood will create a stronger and more durable structure.(これら2つ木材結合により、より強く、より耐久性のある構造物作られる)」

ユニオン【union】

読み方:ゆにおん

結合連合同盟

組合労働組合


共用体

読み方きょうようたい
【英】union

共用体とは、同じメモリ領域異な変数共有するプログラム言語におけるデータ型のことである。

共用体は、一般的にはC言語C++におけるunionキーワードで定義したデータ型を指す。似たような構造データ型異な場合用いられる。共用体を用いることで、別々の変数用意することがなくなる上、煩雑さから開放される

共用体は、各メンバ括っているために見た目構造体似ているが、各メンバが同じメモリ領域共有するため、各メンバ先頭アドレス同一となる。

領域分割が容易であるためメモリ節約になるが、むやみに用いるのは非効率であり扱い難しい。このような特性から単体使われることはあまりなく、構造体メンバ1つとして用いられることが多い。

プログラミングのほかの用語一覧
コーディング:  逆ポーランド記法  記憶クラス  キャスト  共用体  固定小数点数  コーディング  コード最適化

ユニオン union


結合

結婚 1に関する研究は、結婚行動) 2、すなわち法もしくは慣習により規定され権利と義務に伴う両性間の結合 3頻度結婚婚姻訳注)によって結びついている者たちの属性、そしてそのような結合(結婚)の解消取り扱う。さらに、その発生頻度ある程度高ければその他の夫婦的結合(503-8)の研究もまたこれに含まれる婚礼 4ないし結婚式 4とは、一人男性一人女性の間の結合を配偶者 5、つまり夫 6と妻 7として一般に認知させるための儀式のことを指し、それは法もしくは慣習によって規定されている。配偶者同士総称して夫婦 8と呼ぶ。


関係の終了

結婚生活 1もしくは夫婦生活 1終りにおける(両性間の)関係の終了 2婚姻の解消 3、つまり配偶者地位から発生するところのあらゆる法的義務終了意味し、それには新たな婚姻への法的障害除去含まれている。もし婚姻配偶者死亡によって解消され場合生存している配偶者は、男性の場合寡夫男やもめ) 4女性の場合寡婦(やもめ) 5呼ばれる死別者 6とは、寡婦もしくは寡夫の状態 7にある人を指す。


ユニオン (曖昧さ回避)

(Union から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/01/10 04:00 UTC 版)

ユニオン(英語:Union)は英語労働組合を指す。

労働組合関連

地名

施設

スポーツ関連

企業

  • ユニオン (企業) - 日本のドアハンドルのメーカー。
  • ユニオン (セメントメーカー)朝鮮語版 - 韓国セメントメーカー(旧:大韓炭礦、ユニオン白セメント工業)。

音楽

その他のユニオン


共用体

(Union から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/27 00:24 UTC 版)

ナビゲーションに移動 検索に移動
共用体は、同一のメモリ領域に異なる型のデータを格納できる

共用体(きょうようたい、: union)は、プログラミング言語におけるデータ型の一つで、同じメモリ領域を複数の型が共有する構造である。

例として、ある入力が数字の場合は数値として、そうでない場合は文字列のまま保持したいという場合を考える。この場合、数値用と文字列用の領域をそれぞれ用意するのが一つの解法だが、入力は数値か文字列のどちらか一方なので、片方しか使われず無駄が出る。そこで代わりに、格納用の領域を一つだけ用意して、これを数値である、文字列であると場合により解釈し分けることで領域の無駄が抑えられる。この「格納用の領域」こそが共用体である。

共用体から意味のある値を取り出すためには、中身のデータそのものに加えて「今、何の型のデータが入っているか」という情報(タグという)が必要となる。タグを付加情報として持ち、常に正しい型でデータを得られるように設計された共用体を特にタグ付き共用体英語版あるいはバリアント型英語版という[1]

一方で、タグの付いていない共用体の場合は、正しい型でアクセスすることは利用者側の責任である。利用者は何らかの方法で共用体に今何が入っているかを管理しなければならない。誤った型でアクセスした場合、例えば数値の入った共用体から文字列を取り出そうとして得られた値は大抵は無意味か不正なものとなる。ただし、敢えて格納時と異なる型で値にアクセスすることで、一つのバイト列に対して複数の型で解釈するテクニックもある。例としては、ある整数型の値が格納された共用体に、より小さな整数型が格納されているものとしてアクセスすることで、元々の長い整数の上位/下位バイト部分を取り出すことができる。このテクニックは実際にはエンディアンなど環境に強く依存し、移植性は低い。

C言語

C言語は(タグなし)共用体をサポートしている。Cの共用体は全てのメンバのオフセットが0である(つまり先頭バイトから始まる)構造体であり、宣言に予約語structではなく共用体を意味するunionを使うことを除いて構造体と全く同じ構文で宣言・定義される。またメンバへのアクセスも構造体と同様に.演算子あるいは->演算子で行える。共用体全体のサイズは少なくともメンバの中で最大のものを格納できる大きさに決められる(後ろにパディングされる可能性がある)。

共用体の初期化は、先頭で宣言したメンバの型で行わなければならない。

構造体を含む共用体については配置について特別な規定があり、共用体のメンバとして、先頭のメンバの型が同じである構造体を複数持つ場合は、それらの構造体の先頭メンバに限り、正確に重なり合うことが保証される。つまり、先頭メンバは別の構造体の先頭メンバの名前でも正しく参照できる。この仕様は似たような構成の構造体を集めた共用体で、先頭メンバをタグ情報として使うために役立つ。

#include <stdio.h>
#include <string.h>

/* 共用体 MyUnion1 を定義 */
union MyUnion1 {
    double x;
    int y;
    char z[10];
    /* double, int, char[10]のいずれかを格納できる */
};

/* 共用体 MyUnion2 を定義:構造体の共用体 */
union MyUnion2 {
    struct Foo {
        int ifoo;
        double dfoo;
    } foo; /* 構造体Fooとメンバfooの定義 */
    struct Bar {
        int ibar;
        void *pbar;
    } bar; /* 構造体Barとメンバbarの定義 */
}; /* FooとBarの先頭メンバは同じ型(int) */

/* 共用体を使ってみる */
int main(void) {
    /* 共用体変数の宣言と初期化 */
    /* 先頭メンバの型(double)で初期化しなければならない */
    union MyUnion1 u1 = { 100.0 };
    union MyUnion2 u2;
#ifdef __cplusplus
    /* C++ では、入れ子になった型はスコープ解決演算子で名前修飾する必要がある */
    MyUnion2::Foo f = { 3, 0.14 };
#else
    struct Foo f = { 3, 0.14 };
#endif

    u1.y = 42;                  /* int型の値を書き込む */
    strcpy(u1.z, "UnionTest");  /* charの配列を書き込む */
    /* u1.y += 100; */          /* 不正: charの配列が入ったu1をint型として扱っている */

    u2.foo = f;                 /* Foo構造体を書き込む */
    u2.bar.ibar = 9;            /* OK: Barの先頭メンバとしてアクセスしても良い */
    /* u2.bar.pbar = NULL; */   /* これはダメ: 今u2に入っているのはあくまでFoo型 */

    return 0;
}

C99までは無名の構造体および共用体が許可されていなかったが、C11では許可されるようになった[2][3]

#include <stdio.h>

enum VariantType {
    VariantTypePointer,
    VariantTypeInt,
    VariantTypeDouble,
};

struct Variant {
    enum VariantType type;
    union { /* 無名の共用体 */
        void* p;
        int i;
        double d;
    };
};

int main(void) {
    struct Variant v1;
    v1.type = VariantTypePointer;
    v1.p = NULL;
    v1.type = VariantTypeInt;
    v1.i = 999;
    v1.type = VariantTypeDouble;
    v1.d = 0.5;
    return 0;
}

C++

C++の共用体はクラス(および構造体)の一種で、Cの共用体の機能に加え、メンバ関数を持てるなど機能が追加されている。ただし普通のクラス(および構造体)に比べ以下のような制約が加わっている。

  • 継承の機能がない。
    • 基底クラスを持つことができない。
    • 共用体から派生することはできない。
    • 仮想関数を持てない。
  • 静的メンバを持てない。
  • PODでないクラスのオブジェクト型のメンバを持てない[4]
  • 参照型のメンバを持てない。

これらの制約の一部はC++11で撤廃された。

また、C++では共用体タグ名[5]を省略して定義することで、スコープを形成しない無名の共用体を作れるようになった。ただし、無名の構造体は許可されていない[6]

先の制約のために、標準ライブラリのものも含めてほとんどのクラスは共用体に格納できない。これは共用体がタグ情報を持たないために、コンストラクタデストラクタを正しく実行するコードを自動生成できないからである。そのため、C++で共用体が積極的に利用されることは少ない。

なお、共用体に類似したC++の機能にreinterpret_castがあり、バイト列再解釈の用途にはこちらが用いられることが一般的である。

#include <iostream>
#include <string>

// 共用体Uを定義
union U {
private:
    double x;
    int y;
    //std::string z; // 不正: PODでないクラスはメンバにできない
    std::string *z; // ポインタは可
public:
    // コンストラクタ、デストラクタおよびメンバ関数を持てる
    explicit U(double d) : x(d) { std::cout << "U(double)" << std::endl; }
    explicit U(int i) : y(i) { std::cout << "U(int)" << std::endl; } 
    ~U() { std::cout << "~U()" << std::endl; }
    double getDouble() const { return x; }
    int getInt() const { return y; }
};

int main(void) {
    U u1(3.14), u2(22); // コンストラクタによる共用体の構築

    std::cout << u1.getDouble() << std::endl; // メンバ関数呼び出し
    std::cout << u2.getInt() << std::endl;
    //std::cout << u2.getDouble() << std::endl; // ※何が起こるかわからない

    // 無名共用体
    union {
        int i;
        char c;
    };
    i = 777; // メンバは外から見える
    c = 'X';

    std::cout << c << std::endl;
    //std::cout << i << std::endl; // ※何が起こるかわからない

    return 0;
}

C#

C#では、共用体専用の構文は存在しない。 ただし、System.Runtime.InteropServices.StructLayoutAttributeで明示的なレイアウトを指定した構造体では、共用体同様の動作を指定することが可能である。

以下に例を示す。

using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Explicit)]
public struct Union {
    // メモリレイアウトのオフセットを指定する
    [FieldOffset(0)]
    public byte B0;
    [FieldOffset(1)]
    public byte B1;
    [FieldOffset(2)]
    public byte B2;
    [FieldOffset(3)]
    public byte B3;
    // メモリレイアウトのオフセットを B0, B1, B2, B3 と同じ領域に重ねる
    [FieldOffset(0)]
    public int N;
}

class Program {
    static void Main() {
        var u = new Union();
        // N の領域に値を書き込む
        u.N = 0x12345678;
        // B0, B1, B2, B3 の領域より値を読み出す
        Console.WriteLine(u.N.ToString("X")); // ⇒ 12345678
        Console.WriteLine(u.B0.ToString("X")); // ⇒ リトルエンディアンでは 78
        Console.WriteLine(u.B1.ToString("X")); // ⇒ リトルエンディアンでは 56
        Console.WriteLine(u.B2.ToString("X")); // ⇒ リトルエンディアンでは 34
        Console.WriteLine(u.B3.ToString("X")); // ⇒ リトルエンディアンでは 12
    }
}

脚注

  1. ^ 例えばMicrosoft Windows SDK<oaidl.h>では、共用体を利用したVARIANT型が定義されている。
  2. ^ 共用体宣言 - cppreference.com
  3. ^ 多くのCコンパイラでは(C11よりも前の時代から)拡張として無名の構造体および共用体をサポートしている。
  4. ^ 全ての共用体メンバは必ずPODだが、共用体自身がPODになるとは限らない。共用体はユーザー定義のコンストラクタなどを持てるからである。
  5. ^ 共用体の型名を決める識別子(union xxx {...};xxx)のことで、冒頭の説明にある「タグ情報」とは別物。
  6. ^ 多くのC++コンパイラでは拡張として無名の構造体をサポートしている。

出典

関連項目





固有名詞の分類


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

辞書ショートカット

すべての辞書の索引

「Union」の関連用語

1
part union デジタル大辞泉
76% |||||

2
エー‐ユー デジタル大辞泉
76% |||||

3
76% |||||

4
76% |||||

5
アイ‐エー‐ユー デジタル大辞泉
56% |||||

6
アイ‐ジー‐ユー デジタル大辞泉
56% |||||

7
アイ‐ピー‐ユー デジタル大辞泉
56% |||||

8
アイ‐ユー‐アール デジタル大辞泉
56% |||||

9
イー‐シー‐ユー デジタル大辞泉
56% |||||

10
シー‐エス‐ユー デジタル大辞泉
56% |||||

Unionのお隣キーワード
検索ランキング

   

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



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

   
実用日本語表現辞典実用日本語表現辞典
Copyright © 2025実用日本語表現辞典 All Rights Reserved.
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【共用体】の記事を利用しております。
ダイキン工業ダイキン工業
Copyright (C) 2025 DAIKIN INDUSTRIES, ltd. All Rights Reserved.
コンテンツはAttribution-Share Alike 3.0 Unportedのライセンスで利用することができます。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのユニオン (曖昧さ回避) (改訂履歴)、共用体 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS