【Xcode9】ファイルヘッダーコメントをカスタマイズする

Xcode9から作成するファイルのヘッダーコメントを独自定義のものに置き換えることができるようになりました。

会社でコードを書く時など、今までわざわざヘッダーファイルを調整していた方々はぜひ試してみてください :tada: 

## ファイルヘッダーコメントとは
Xcodeでファイルを作成する際にデフォルトでファイル上部に追加されるヘッダーコメントのことです。

<img width="537" alt="スクリーンショット 2017-09-23 18.09.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/1500/c5fe418a-a74b-6e85-d5cc-bdf7ad1896e1.png">

今までは `Shunsuke Furubayashi` の部分の `Organization` しか変更することができませんでしたが。Xcode9より全体を編集することができるようになりました。

## IDETemplateMacros.plist
Xcode9より決められた場所に `IDETemplateMacros.plist` を定義しておくことで、Xcodeが自動で内容を読み取りファイルヘッダーを書き換えてくれます。

[Apple Reference](https://help.apple.com/xcode/mac/9.0/index.html?localePath=en.lproj#/dev91a7a31fc)

実際の `IDETemplateMacros.plist` はこのような形となります。

```IDETemplateMacros.plist
<?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> 
// Copyright (c) 2017年, Shunsuke Furubayashi.
// All rights reserved.
//
// GitHub:
// https://github.com/econa77
//</string>
</dict>
</plist>
```

上記のファイルで実際に出力されるヘッダーコメントが以下のようになります。

```file.swift
// 
// Copyright (c) 2017年, Shunsuke Furubayashi.
// All rights reserved.
//
// GitHub:
// https://github.com/econa77
//

import Foundation
```

注意すべき点は以下の２点です。

- 行頭の `//` は自動挿入される
- 行末と `import Foundation` の間の改行も自動挿入

改行位置など間違ってしまうと意図しない自動改行が入りますので気をつけてください。

## ファイルの置き場所
Xcodeが `IDETemplateMacros.plist` を自動で認識してくれるディレクトリは以下の５箇所です。
ファイルを作成した後はプロジェクトの構成に応じてこの５箇所のうちどこか１箇所にファイルを保存してください。

**Project user data:**
`<ProjectName>.xcodeproj/xcuserdata/[username].xcuserdatad/IDETemplateMacros.plist.`

**Project shared data:**
`<ProjectName>.xcodeproj/xcshareddata/IDETemplateMacros.plist`

**Workspace user data:**
`<WorkspaceName>.xcworkspace/xcuserdata/[username].xcuserdatad/IDETemplateMacros.plist.`

**Workspace shared data:**
`<WorkspaceName>.xcworkspace/xcshareddata/IDETemplateMacros.plist.`

**User Xcode data:**
`~/Library/Developer/Xcode/UserData/IDETemplateMacros.plist.`

## 使用できるマクロ
デフォルトで使用できるマクロは以下の種類があります。

[Apple Reference](https://help.apple.com/xcode/mac/9.0/index.html?localePath=en.lproj#/dev7fe737ce0)

細かい出力される内容についてはAppleのReferenceを確認してください。
`.plist` ファイルに記述する際は下記のように `___` でマクロ名を囲むことで使用することができます。

- `___DATE___`
- `___DEFAULTTOOLCHAINSWIFTVERSION___`
- `___FILEBASENAME___`
- `___FILEBASENAMEASIDENTIFIER___`
- `___FILEHEADER___`
- `___FILENAME___`
- `___FULLUSERNAME___`
- `___NSHUMANREADABLECOPYRIGHTPLIST___`
- `___ORGANIZATIONNAME___`
- `___PACKAGENAME___`
- `___PACKAGENAMEASIDENTIFIER___`
- `___PRODUCTNAME___`
- `___PROJECTNAME___`
- `___RUNNINGMACOSVERSION___`
- `___TARGETNAME___`
- `___TIME___`  
- `___USERNAME___`
- `___UUID___`
- `___WORKSPACENAME___`
- `___YEAR___`

上記のマクロを指定して `IDETemplateMacros.plist` を指定すると以下のようになります。

```IDETemplateMacros.plist
<?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> 
// Copyright (c) ___YEAR___, ___ORGANIZATIONNAME___.
// All rights reserved.
//
// GitHub:
// https://github.com/econa77
//</string>
</dict>
</plist>
```

## マクロの編集
マクロで出力されるテキストは正しいフォーマットを指定して編集することができます。
細かいファイルの拡張子の削除などを行いたい場合は以下のリファレンスのようにマクロを指定してください。

[Apple Reference](https://help.apple.com/xcode/mac/9.0/index.html?localePath=en.lproj#/devc8a500cb9)