[Xcode] ファイルヘッダテンプレートのカスタマイズ

Xcode でファイルを作るときに、自動で挿入されるヘッダー部分のカスタマイズ方法を説明します。

きっかけ

Xcode11 までは、作成したファイルのヘッダに、ユーザー名だけではなく、Organization 名も自動で入れられていました。

以前は、Contact アプリで設定した会社名が入れられている時もあったのですが、いつの間にか変わったのかもしれません。

いずれにしても、Xcode12 からは、Organization 名が入らなくなりました。

無くても困りはしないのですが、Xcode11 同様入れたくなって調べました。

過去の指定方法

上にも書きましたが、Contact で指定した会社名が使用される時もありましたし、プロジェクトを作る際のダイアログで Organization 名を聞かれて、その名前が使われル時もありました。

Xcode12

プロジェクトを Inspector ビューの File で見ると、Organization というフィールドがあり、このフィールドの値が、ファイルを生成するときに参照されます。

set Organization info in project

「set Organization info in project」

この方法は、プロジェクトに設定するものですので、プロジェクト作成後に有効になります。

プロジェクト作成時に指定する方法を探したのですが、関連しそうなドキュメントをざっと読んだ感じでは見つかりませんでした。

では、方法がないのか というとそうではなく、テンプレートそのものを編集してしまう方法を見つけました。

Xcode のカスタマイズ

カスタマイズというとおおげさかもしれませんが、ファイル生成時のヘッダーについてカスタマイズができるようになっています。

ファイルヘッダーのカスタマイズについての Apple のドキュメントは こちら

Xcode 向けのページは、こちらで、Xcode 12 以降は、Developer Documentation の ここを参照するように書かれてますが、こちらには、カスタマイズの方法が載っていません。

# もしかすると、近い将来は、カスタマイズの方法が変わるかもしれません。

テンプレートに使えるマクロ

デフォルトでも様々なマクロを使って指定できるようになっています。

___ (アンダーバーを3つ)を前後につけることで、マクロが展開されます。

例えば、___DATE___ とすれば、日付が展開されますし、___FILENAME___ とすれば、ファイル名が展開されます。

使用できるマクロは、こちら で確認できます。

ORGANIZATIONNAME というマクロも用意されていて、組織名に該当します。

テンプレートの用意

マクロ等を使用したテンプレートを用意することで、Xcode がそのテンプレートを使用して作成するようになります。

テンプレートの情報は、IDETemplateMacros.plist という名称のファイルとして用意する必要があります。

プロジェクト、ワークスペース、ユーザーのプロジェクト、ユーザーのワークスペース、ユーザー という分類があり、どの範囲で使用されるかで、テンプレートを配置する場所が変わります。

配置場所は、こちらです。

今回は、ユーザー単位で指定しようとしたので、 ~/Library/Developer/Xcode/UserData/IDETemplateMacros.plist として配置しました。

Library フォルダ
(Tips) macOS の Finder からは、⌥ (option) キーを押しながら、”移動”メニューを開くと、”Library”フォルダが見えるようになります。

IDETemplateMacros.plist の作り方

いわゆる、plist ファイルです。 Xcode から新規ファイルで、Resource の Property List を指定して作成するのが簡単です。

FILEHEADER というテキストマクロを設定するとファイルヘッダを指定できますので、以下のようなファイルとしました。

IDETemplateMacros.plist

COMPANYNAME と DEVELOPER は、自分で変数を定義しています。
それらの変数を使用して FILEHEADER を定義しています。

この内容を持つ IDETemplateMacros.plist を配置することで、ファイルを新規作成すると以下のようなファイルが作成されます。

生成された Swift ファイル

# 一番先頭のコメント業は、自動で付与されるようです。

テキストマクロ USERNAME, FULLUSERNAME

ユーザー名を使用するのに、USERNAME, FULLUSERNAME もあったのですが、システムのアカウント名等だったので、自分で変数定義して指定するようにしました。(この辺りは、アカウント名をどのように管理しているか等の環境依存で、使い方が変わると思います。)

まとめ

Xcode で生成されるファイルのヘッダーをカスタマイズする方法
  • IDETemplateMacros.plist でテンプレートを指定する
  • 使えるテキストマクロは、以前のバージョンの Xcode ドキュメント(こちら)に記載されている。
  • 設定ファイルの配置場所は、適用範囲により異なる。配置場所のドキュメントは、こちら
  • Xcode 12 のドキュメントには記載されていないので、動かなくなるかもしれません。(Xcode12.1 では動いてます)

説明は以上です。
不明な点やおかしな点ありましたら、ご連絡いただけるとありがたいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です