2021.11.29

構成プロファイルを自作する時に必要なUUIDの作り方

UUIDとは Universally Unique IDentifier の略で、何かを一意に識別するための128ビットの数値を使った識別子です。一般的にはその128ビットの数値を16進数で

8894C432-FA57-4FA5-BF46-198B291F8DAB

のような書き方をして使います。

エンタープライズIOSの世界でUUIDを意識することはほぼほぼありませんが、AppleConfiguraotr2 を使わずに構成プロファイルを手書き・編集する時や、構成プロファイルを自動生成するプログラムを独自に開発する時には意識する必要があります。


(構成プロファイルのXMLにはUUIDが随所に現れる)

本稿では、構成プロファイルで使うUUIDについて解説します。

 

構成プロファイルにおけるUUID

UUIDは構成プロファイルのXML(plist形式)の主に2箇所で使われます。

  • 構成プロファイルそのものを識別するためのUUID
  • 構成プロファイル内の各設定(ペイロード)を識別するためのUUID

構成プロファイルのファイル1つにつき前者は1つで、他の構成プロファイルと重複してはなりません。また後者は構成プロファイルに含めた各設定ごとにそれぞれ重複しないように指定します。


(構成プロファイルの構造。各ブロック毎にUUIDが必要。重複してはならない)

いずれも PayloadUUID というキー名を使ってUUIDを指定しますが、XML(plist)形式内のタグ構造が上図のようになっていることを意識していれば混乱することはありません。

興味深いのは、構成プロファイルの仕様書 で PayloadUUID は必須の項目であるとされていながら、

A globally unique identifier for the profile. The actual content is unimportant, but it must be globally unique.

とあり、実は余り重要ではない(unimportant)とされていることです。じゃぁなぜ作った…という話なのですが(笑)

実際には PayloadUUID とセットで指定するPayloadIdentifier のほうを一位性を担保する値として使っているようです。とはいえ PayloadUUID の一意性を軽んじて、将来万が一仕様変更されて影響を受けるのも避けたいですので、構成プロファイル内で使用するUUIDは全て異なるよう都度生成した方が良いでしょう。

 

UUIDの作り方

UUIDの仕様はWikipediaが詳しいです。16進数で32文字を闇雲に並べたらそれでokというわけではありませんので、UUIDを生成する時は仕様にそって作ってくれるツールを使う必要があります。以下で順に紹介します。

MacでUUIDを作る

Macには uuidgen というUUID生成コマンドが最初から入ってますのでこれを使います。

Finderでアプリケーションから[ユーティリティ]フォルダを開き、中にある [ターミナル] を起動して、 以下のように uuidgen コマンドを実行するだけでUUIDの生成完了です。

簡単ですね。生成されたUUIDをコピペして構成プロファイル内に貼り付けて使います。コピーするのが面倒臭いなら

$ uuidgen | pbcopy

のように pbcopy コマンドをパイプで繋いでも良いでしょう。自動的にクリップボードにコピーしてくれます。

WindowsでUUIDを作る

Windowsの場合は PowerShell を使うのがオススメです。

[Windowsキー] + [R] で powershell を入力して PowerShell を起動。New-Guid を入力してエンターでUUIDが生成できます。

生成結果の Guid と書かれた16進数表記部分をコピペして使います。コピーが面倒な場合は PowerShell で

> (New-Guid).Guid | clip

を入力しても良いでしょう。クリップボードにUUIDがコピーされます。

ブラウザでUUIDを作る

いわゆるコマンドラインを操作する事に慣れていない方は、以下のようなUUIDを生成できるサイトを使うことができます。


(右側 Version4 UUID Generator を使うのが良い)

 

ところでUUIDは重複することがないのか?と疑問に思われる方は、こちらの検証記事が参考になりますので興味があれば参照して下さい。

以上、UUIDの生成について紹介しました。構成プロファイルの中身に直接手を入れるようなことがある場合に活用して下さい。

本サイトはACNメンバーの(株)フィードテイラーが運営するエンタープライズiOS情報サイトです

最近の投稿