[iOS] Xcodeのデフォルトのヘッダーコメントのテンプレートを作成したい

2019.03.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。きんくまです。

Xcodeで新規ファイルを作成すると、デフォルトでヘッダーコメントが挿入されます。

こんなやつです。

//
//  Hello.swift
//  SampleTarget
//  
//  Created by YourName on 2019/03/08
//  Copyright © 2019 YourCompany. All rights reserved.
//

これのテンプレートを差し替えたい! 検索したところ、こちらの記事が見つかりました。

Customizing the file header comment and other text macros in Xcode 9

どうやらXcodeの機能として用意されているみたいです。

IDETemplateMacros.plistを作る

まずは IDETemplateMacros.plist という名前のxmlファイルを作ります。

Xcodeのメニューから plistファイルが作れます。

といいつつ、中身はxmlファイルなので、ファイル名とプロパティなどの項目さえ合っていればよく、初回のみXcodeで作って、あとは普通にテキストエディタで作れば良いと思います。

中身をこんな感じにすると、デフォルトで設定される項目が記述できると思います。
keyを FILEHEADER にして、あとは string のところにテンプレートを書きます。

たぶんデフォルトのやつ

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>FILEHEADER</key>
	<string>
//  ___FILENAME___
//  ___TARGETNAME___
//  
//  Created by ___USERNAME___ on ___DATE___
//  ___COPYRIGHT___
//</string>
</dict>
</plist>

各変数については、後でご説明するとして、ファイルの置き場所は以下のドキュメントに書いてありました。

Customize text macros

参照順 場所 パス
1 Project user data [ProjectName].xcodeproj/xcuserdata/[username].xcuserdatad/IDETemplateMacros.plist
2 Project shared data [ProjectName].xcodeproj/xcshareddata/IDETemplateMacros.plist
3 Workspace user data [WorkspaceName].xcworkspace/xcuserdata/[username].xcuserdatad/IDETemplateMacros.plist
4 Workspace shared data [WorkspaceName].xcworkspace/xcshareddata/IDETemplateMacros.plist
5 User Xcode data ~/Library/Developer/Xcode/UserData/IDETemplateMacros.plist

Xcodeは上の表で参照順の数値の少ない方から探していって、最初に見つかったものを使用します。

なので、5の~/Library ディレクトリにはデフォルトのものを置いておいて、必要があれば、1のところに追加で置くという運用もよいかなーと思います。

ちなみに1はxcodeprojの中なので、Finderのshow package contentsメニューから入れます。

マクロの変数について

マクロの変数は以下に一覧があります。

Text macros reference

例えばファイル名だったら FILENAME です。
ただし、埋め込む際は、左右に3つの連続したアンダースコアをつけたす必要があります。

___FILENAME___

という感じです。

変数を調整したい

変数を調整するときは、以下のドキュメントに書いてあります。

Text macro format reference

例えばファイル名から拡張子を取り除きたければこんな感じに : の後に Modifier を書き足します。Modifier は , で複数追加できるみたいです。

___FILENAME:deletingPathExtension___

変数を追加したい

plistを適当にいじっていて気が付いたのですが、変数が定義できました。

plist内に以下のプロパティを追加すれば

	<key>COMPANYNAME</key>
	<string>会社名ですよー</string>

フォーマット内に、こんな感じにかけます。

___COMPANYNAME___

フォーマットの注意

上のブログの記事にも書いてあったのですが、フォーマットを記述する際に注意点がありまして、

  1. 最初の行の // はXcodeが自動で追加するので不要
  2. 最後の行に自動で1行空の行(改行)が追加される

という挙動があります。

実際に作ってみよう

というわけで、サンプルで作ってみました。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>FILEHEADER</key>
	<string>
//  ___FILENAME:deletingPathExtension___
//  
//  作った人: わたしのなまえなのです
//  Copyright (c) ___YEAR___  ___COMPANYNAME___
//</string>
	<key>COMPANYNAME</key>
	<string>会社名ですよー</string>
</dict>
</plist>

上のやつは実際には、こんな感じに出力されました。

//
//  SampleFile
//  
//  作った人: わたしのなまえなのです
//  Copyright (c) 2019  会社名ですよー
//

まとめ

マクロの USERNAME は macのログイン名だったりするので、USERNAME を使わないで、plistファイルに直接書いてしまえば、いろいろとカスタマイズができますね!

xcuserdata ディレクトリ は .gitignore に指定されていたりすると思うので、ここに個人用設定を書いたり、xcshareddata にプロジェクト共通の設定を置いたりする。といった運用もできるかなーと思います。

ではでは。