Sponsor Link
きっかけ
Xcode11 までは、作成したファイルのヘッダに、ユーザー名だけではなく、Organization 名も自動で入れられていました。
以前は、Contact アプリで設定した会社名が入れられている時もあったのですが、いつの間にか変わったのかもしれません。
いずれにしても、Xcode12 からは、Organization 名が入らなくなりました。
無くても困りはしないのですが、Xcode11 同様入れたくなって調べました。
過去の指定方法
上にも書きましたが、Contact で指定した会社名が使用される時もありましたし、プロジェクトを作る際のダイアログで Organization 名を聞かれて、その名前が使われル時もありました。
Xcode12
プロジェクトを Inspector ビューの File で見ると、Organization というフィールドがあり、このフィールドの値が、ファイルを生成するときに参照されます。
この方法は、プロジェクトに設定するものですので、プロジェクト作成後に有効になります。
プロジェクト作成時に指定する方法を探したのですが、関連しそうなドキュメントをざっと読んだ感じでは見つかりませんでした。
では、方法がないのか というとそうではなく、テンプレートそのものを編集してしまう方法を見つけました。
Xcode のカスタマイズ
カスタマイズというとおおげさかもしれませんが、ファイル生成時のヘッダーについてカスタマイズができるようになっています。
ファイルヘッダーのカスタマイズについての Apple のドキュメントは こちら。
Xcode 向けのページは、こちらで、Xcode 12 以降は、Developer Documentation の ここを参照するように書かれてますが、こちらには、カスタマイズの方法が載っていません。
# もしかすると、近い将来は、カスタマイズの方法が変わるかもしれません。
テンプレートに使えるマクロ
デフォルトでも様々なマクロを使って指定できるようになっています。
___ (アンダーバーを3つ)を前後につけることで、マクロが展開されます。
例えば、___DATE___ とすれば、日付が展開されますし、___FILENAME___ とすれば、ファイル名が展開されます。
使用できるマクロは、こちら で確認できます。
ORGANIZATIONNAME というマクロも用意されていて、組織名に該当します。
テンプレートの用意
マクロ等を使用したテンプレートを用意することで、Xcode がそのテンプレートを使用して作成するようになります。
テンプレートの情報は、IDETemplateMacros.plist という名称のファイルとして用意する必要があります。
プロジェクト、ワークスペース、ユーザーのプロジェクト、ユーザーのワークスペース、ユーザー という分類があり、どの範囲で使用されるかで、テンプレートを配置する場所が変わります。
配置場所は、こちらです。
今回は、ユーザー単位で指定しようとしたので、 ~/Library/Developer/Xcode/UserData/IDETemplateMacros.plist として配置しました。
(Tips) macOS の Finder からは、⌥ (option) キーを押しながら、”移動”メニューを開くと、”Library”フォルダが見えるようになります。
IDETemplateMacros.plist の作り方
いわゆる、plist ファイルです。 Xcode から新規ファイルで、Resource の Property List を指定して作成するのが簡単です。
FILEHEADER というテキストマクロを設定するとファイルヘッダを指定できますので、以下のようなファイルとしました。
FILEHEADER // ___FILENAME___ // // Created by : ___DEVELOPER___ on ___DATE___ // © ___YEAR___ ___COMPANYNAME___ // COMPANYNAME Company A DEVELOPER Foo Bar
COMPANYNAME と DEVELOPER は、自分で変数を定義しています。
それらの変数を使用して FILEHEADER を定義しています。
この内容を持つ IDETemplateMacros.plist を配置することで、ファイルを新規作成すると以下のようなファイルが作成されます。
//
// File6.swift
//
// Created by : Foo Bar on 2020/10/20
// Copyright 2020 Company A
//
import Foundation
# 一番先頭のコメント業は、自動で付与されるようです。
テキストマクロ USERNAME, FULLUSERNAME
ユーザー名を使用するのに、USERNAME, FULLUSERNAME もあったのですが、システムのアカウント名等だったので、自分で変数定義して指定するようにしました。(この辺りは、アカウント名をどのように管理しているか等の環境依存で、使い方が変わると思います。)
まとめ
説明は以上です。
不明な点やおかしな点ありましたら、ご連絡いただけるとありがたいです。
Sponsor Link