フッターコンテンツにスキップ
.NETヘルプ

C# New GUID(開発者向けの仕組み)

GuidクラスのNewGuid()メソッドは、一般的にグローバルに一意な識別子(GUID)を作成するために使用されます。 GUIDは128ビットの整数で、すべてのコンピュータとネットワークで重複を避けて情報を一意に識別するために使用できます。 この記事では、C#でGUID(グローバルに一意な識別子)を扱うための実用的な使い方、例、コードスニペットに焦点を当てた詳細なガイドを提供します。 また、IronPDFライブラリについても探究します。

GUIDとは何ですか?

GUID (Globally Unique Identifier) はソフトウェア開発で使用される一意の識別子です。 .NETフレームワークでは、GUIDはSystem名前空間内のGuid構造体として表されます。 GUIDはデータベースの主キーとして、他のシステムで一意の識別子が必要な場合など多目的に使用されます。

C#でのGUID生成

C#で新しいGUIDを生成するには、Guid.NewGuid()関数が使用されます。 このメソッドはGUIDオブジェクトの新しいインスタンスを作成し、生成される各GUIDが一意であることを保証します。 内部的には、GUIDは乱数ジェネレータを使用して生成され、同じ値を持つGUIDがないようにしています。

ここに新しいGUIDを生成する簡単なコード例があります。

using System;

class Program
{
    static void Main()
    {
        // Generate a new GUID
        Guid newGuid = Guid.NewGuid();

        // Output the newly generated GUID to the console
        Console.WriteLine(newGuid);
    }
}
using System;

class Program
{
    static void Main()
    {
        // Generate a new GUID
        Guid newGuid = Guid.NewGuid();

        // Output the newly generated GUID to the console
        Console.WriteLine(newGuid);
    }
}
Imports System

Friend Class Program
	Shared Sub Main()
		' Generate a new GUID
		Dim newGuid As Guid = Guid.NewGuid()

		' Output the newly generated GUID to the console
		Console.WriteLine(newGuid)
	End Sub
End Class
$vbLabelText   $csharpLabel

このコードでは、Guid.NewGuid()メソッドが内部的に乱数ジェネレータを用いて新しいGUIDを生成し、Console.WriteLineが生成された新しいGUIDをコンソールに出力します。

GUIDの構造と形式

GUIDは32桁の16進数で構成され、通常は8-4-4-4-12の形式で表示されます(例: e02fd0e4-00fd-090A-ca30-0d00a0038ba0)。 ToString()メソッドを使用して文字列に変換すると、GUIDはこの形式で表されます。 この表現により、GUIDをJSON、XML、データベースなどテキストベースのフォーマットに簡単に保存できます。

以下のコード例は、GUIDを文字列に変換する方法を示しています。

using System;

class Example
{
    static void Main()
    {
        // Generate a new GUID
        Guid newGuid = Guid.NewGuid();

        // Convert the GUID to a string
        string guidString = newGuid.ToString();

        // Output the GUID string
        Console.WriteLine(guidString);
    }
}
using System;

class Example
{
    static void Main()
    {
        // Generate a new GUID
        Guid newGuid = Guid.NewGuid();

        // Convert the GUID to a string
        string guidString = newGuid.ToString();

        // Output the GUID string
        Console.WriteLine(guidString);
    }
}
Imports System

Friend Class Example
	Shared Sub Main()
		' Generate a new GUID
		Dim newGuid As Guid = Guid.NewGuid()

		' Convert the GUID to a string
		Dim guidString As String = newGuid.ToString()

		' Output the GUID string
		Console.WriteLine(guidString)
	End Sub
End Class
$vbLabelText   $csharpLabel

このコードは、GUIDを文字列に変換し、それを出力します。

GUID文字列の解析

時には、文字列をGUIDオブジェクトに解析する必要があるかもしれません。 これはGuid.Parse()メソッドを使用して行われます。 文字列が正しい形式であれば、GUIDインスタンスに解析されます。 形式が不正であれば、例外がスローされます。

こちらがコード例です。

using System;

class ParseExample
{
    static void Main()
    {
        // Define a GUID string
        string guidString = "e02fd0e4-00fd-090A-ca30-0d00a0038ba0";

        // Convert the string back into a GUID object
        Guid parsedGuid = Guid.Parse(guidString);

        // Output the parsed GUID
        Console.WriteLine(parsedGuid);
    }
}
using System;

class ParseExample
{
    static void Main()
    {
        // Define a GUID string
        string guidString = "e02fd0e4-00fd-090A-ca30-0d00a0038ba0";

        // Convert the string back into a GUID object
        Guid parsedGuid = Guid.Parse(guidString);

        // Output the parsed GUID
        Console.WriteLine(parsedGuid);
    }
}
Imports System

Friend Class ParseExample
	Shared Sub Main()
		' Define a GUID string
		Dim guidString As String = "e02fd0e4-00fd-090A-ca30-0d00a0038ba0"

		' Convert the string back into a GUID object
		Dim parsedGuid As Guid = Guid.Parse(guidString)

		' Output the parsed GUID
		Console.WriteLine(parsedGuid)
	End Sub
End Class
$vbLabelText   $csharpLabel

このコードでは、Guid.Parse()メソッドが文字列をGUIDオブジェクトに変換します。

2つのGUIDの比較

GUIDは比較可能であるため、それらが等しいかどうかを確認できます。 Guid構造体は等価演算子(==)を実装しているので、2つのGUIDオブジェクトを直接比較できます。

こちらが例です:

using System;

class CompareExample
{
    static void Main()
    {
        // Generate two new GUIDs
        Guid guid1 = Guid.NewGuid();
        Guid guid2 = Guid.NewGuid();

        // Compare the two GUIDs
        if (guid1 == guid2)
        {
            Console.WriteLine("The two GUIDs are the same.");
        }
        else
        {
            Console.WriteLine("The two GUIDs are different.");
        }
    }
}
using System;

class CompareExample
{
    static void Main()
    {
        // Generate two new GUIDs
        Guid guid1 = Guid.NewGuid();
        Guid guid2 = Guid.NewGuid();

        // Compare the two GUIDs
        if (guid1 == guid2)
        {
            Console.WriteLine("The two GUIDs are the same.");
        }
        else
        {
            Console.WriteLine("The two GUIDs are different.");
        }
    }
}
Imports System

Friend Class CompareExample
	Shared Sub Main()
		' Generate two new GUIDs
		Dim guid1 As Guid = Guid.NewGuid()
		Dim guid2 As Guid = Guid.NewGuid()

		' Compare the two GUIDs
		If guid1 = guid2 Then
			Console.WriteLine("The two GUIDs are the same.")
		Else
			Console.WriteLine("The two GUIDs are different.")
		End If
	End Sub
End Class
$vbLabelText   $csharpLabel

このコードでは、2つのGUIDが比較されます。 Guid.NewGuid()によって生成される各GUIDは一意なので、結果は通常「2つのGUIDは異なる」となります。

GUID使用時の一般的な間違い

  1. GUIDが順序性を持つと仮定する: GUIDはランダムであり、NewGuid()メソッドは順序性のある値を生成しない。 したがって、GUIDが何らかの順序を維持することを仮定すべきではありません。

  2. 文字列としてGUIDを比較する: GUIDを文字列として比較することは非効率です。 GUIDオブジェクトを直接比較し、文字列に変換して比較するのは避けるべきです。

  3. インデックスを付けずに大規模データベースでGUIDを使用する: GUIDは大きく、インデックスを適切に付けない場合、大規模データベースでパフォーマンスに影響を与える可能性があります。 主キーとして使用する際は、GUID列にインデックスが付いていることを確認してください。

.NET CoreとフレームワークにおけるGUID

GUIDは.NETフレームワークと.NET Coreの両方でサポートされています。 Guidクラスの使用法は.NETプラットフォームの異なるバージョン間で一貫しています。 したがって、任意のバージョンの.NETで作業する開発者は、Guid.NewGuid()メソッドを使用して簡単にGUIDを生成できます。

GUIDとUUIDの比較

GUIDはUUID(Universally Unique Identifiers)に似ており、これらの用語はしばしば交換可能に使用されます。 仕様に多少の違いがありますが、一意の識別子を生成するという目的は同じです。

GUIDとのIronPDFの利用

C# New GUID (How It Works For Developers): 図1 - IronPDF

IronPDFは、HTMLからPDFを生成し、.NETアプリケーションでその他のPDF操作を行うためのPDFライブラリです。 PDFドキュメントのユニークなファイル名を生成する必要がある場合に、GUIDとIronPDFを組み合わせることができます。 これにより、生成される各PDFが一意の名前を持ち、ファイルの上書きや命名の競合を防ぐことができます。 以下は、新しいGUIDと一緒にIronPDFを使用する簡単な例です。

using System;
using IronPdf;

class Program
{
    static void Main()
    {
        // Generate a new GUID object for the PDF filename
        Guid pdfId = Guid.NewGuid();
        string filename = $"{pdfId}.pdf";

        // Create a PDF document using IronPDF
        var renderer = new ChromePdfRenderer();
        var pdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");

        // Save the PDF with the unique filename
        pdfDocument.SaveAs(filename);
        Console.WriteLine($"PDF saved as: {filename}");
    }
}
using System;
using IronPdf;

class Program
{
    static void Main()
    {
        // Generate a new GUID object for the PDF filename
        Guid pdfId = Guid.NewGuid();
        string filename = $"{pdfId}.pdf";

        // Create a PDF document using IronPDF
        var renderer = new ChromePdfRenderer();
        var pdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");

        // Save the PDF with the unique filename
        pdfDocument.SaveAs(filename);
        Console.WriteLine($"PDF saved as: {filename}");
    }
}
Imports System
Imports IronPdf

Friend Class Program
	Shared Sub Main()
		' Generate a new GUID object for the PDF filename
		Dim pdfId As Guid = Guid.NewGuid()
		Dim filename As String = $"{pdfId}.pdf"

		' Create a PDF document using IronPDF
		Dim renderer = New ChromePdfRenderer()
		Dim pdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>")

		' Save the PDF with the unique filename
		pdfDocument.SaveAs(filename)
		Console.WriteLine($"PDF saved as: {filename}")
	End Sub
End Class
$vbLabelText   $csharpLabel

Visual Studioで上記のコードを実行し、出力を観察してください。

C# New GUID (How It Works For Developers): 図2 - Visual Studioのコンソール出力

Guid.NewGuid()を使用して、各PDFファイルのユニークなランダムGUIDを作成します。 このGUIDは文字列に変換され、ファイル名として使用されます。

結論

C# New GUID (How It Works For Developers): 図3 - ライセンス

この記事では、C#におけるGUIDの基本を紹介しました。 新しいGUIDの生成方法、比較、文字列からの解析、データベースなどの実際のシナリオでの使用方法を見ました。 Guid.NewGuid()メソッドは、システム間で一意の識別子を確保するため、新しいGUIDインスタンスの生成を容易にします。 .NETで作業する開発者は、アプリケーションでランダム性と一意性を提供するためにGUIDを信頼できます。

IronPDFは、投資する前のテストの重要性を理解しており、そのため無料トライアルを提供しています。 ソフトウェアのパフォーマンスを無償で評価することができます。もし役に立つと感じた場合、ライセンスは$799から開始します。

よくある質問

C# で新しい GUID を生成するにはどうすればよいですか?

C# では、Guid.NewGuid() メソッドを使用して新しい GUID を生成できます。この関数は GUID オブジェクトの新しいインスタンスを作成し、生成された GUID が一意であることを保証します。

C# における GUID の実用的な用途は何ですか?

C# の GUID はデータベースエントリー用の一意の識別子の作成、ドキュメントの一意のファイル名の生成、分散システムでの一意性の保証に使用できます。

GUID を使用して PDF ファイル名を管理するにはどうすればよいですか?

GUID は PDF 生成ライブラリと統合して、PDF 用の一意のファイル名を作成することができます。これにより命名の競合を防ぎ、各ドキュメントに固有の識別子が付けられます。

GUID と UUID の違いは何ですか?

GUID と UUID は基本的に同じで、どちらも一意の識別子を生成するためのものです。ソフトウェア開発においてはしばしば互換的に使用されます。

C# で GUID を文字列に変換できますか?

はい、C# で GUID を文字列に変換するには、GUID オブジェクトの ToString() メソッドを使用します。

C# で文字列から GUID を解析するにはどうすればよいですか?

C# で文字列から GUID を解析するには、Guid.Parse() メソッドを使用します。例外を回避するために、文字列が正しい GUID フォーマットになっていることを確認してください。

GUID がデータベース管理を改善する方法は?

データベースでは、GUID は主キーとして使用して各レコードが一意に識別可能であることを保証し、特にデータが複数のシステム間で同期される場合に役立ちます。

C# で GUID を使用するときの一般的な間違いは何ですか?

一般的な間違いには、GUID が順序付けされていると仮定すること、GUID を文字列として比較すること、および大規模データベースで適切なインデックスを使用しないことです。

C# で 2 つの GUID を比較するにはどうしますか?

C# では、等価演算子 (==) を使用して 2 つの GUID を比較できます。これにより、2 つの GUID が同じか異なるかを確認できます。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。