Xcode9でのMarkdownレンダリング

Xcode9ではマークダウンファイルはデフォルトではレンダリングされません。レンダリングするためにはどうしたらよいでしょうか。

マークダウンファイルのレンダリング

Xcodeのマークダウンファイルでソースコードへのリンクができるときいてやってみようとしたところ……

Xcodeでは、そもそもマークダウンファイルはレンダリングされず、生のマークダウンファイルのままで表示されてしまいました。 (Playgroundファイルでは、ファイルの中のマークダウンレンダリングをon/offする「Editor>Show Rendered Markup」メニューがあるんですが、通常のファイルではこのメニューが表示されません。)

でも、最近のAppleが配布しているサンプルコードだと、プロジェクトファイルに含まれたマークダウンファイルはレンダリングされてますよね。それはどうやっているんでしょう。

Xcodeでのレンダリングon/off

Appleのサンプルファイルを調べてみると、レンダリングのon/offは、プロジェクトファイルのなかに特定のplistファイルがあるかどうかで決定されていました。

ファイルパスはこちら。(プロジェクトファイル名を「MyFirst」とします) MyFirst/MyFirst.xcodeproj/.xcodesamplecode.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">
<array/>
</plist>

このファイルをおくと、自分のプロジェクトでもマークダウンファイルがちゃんとレンダリングされました。

ソースコードへのリンク

このマークダウンファイルには、通常のマークダウン文だけでなく、ソースコードへのリンクも記述できます。

マークダウンファイルにこちらをかき、

[View in Source](x-source-tag://AddIdle)

ソースコードにこちらをかいておくと、

    /// - Tag: AddIdle

リンクをクリックした時に下記の場所にジャンプします。

ハイパーリンク

また、通常のハイパーリンクなども実現できます。

アプリをつくるときには、 [iOS Human Interface Guidelines][0] をよくよみましょう。

[0]:https://developer.apple.com/ios/human-interface-guidelines/

画像の表示

画像の表示もできます。 ファイルパスは、プロジェクトの中の相対パスで指定してください。

![神崎蘭子](idleimage/ranko.jpg)

コードの表示

コードの表示もできます。言語の指定をしても、コードハイライトはしてくれないようです。

 ``` swift
func addIdle(name: String, id: Int){
   let idle = Idol(name)
}
 ```

まとめ

プロジェクト内に特定のplistファイルをおくと、Xcodeでマークダウンファイルがレンダリングされるようになります。

なお、レンダリングをファイル単位でon/offするのは(いまのところ)できないようです。

便利な機能ではあると思いますが、現状ではレンダリングをon/offするのに手間がかかるのでちょっと使いどころに迷いますね。 Githubにはこのファイルをcommitしておいて、マークダウンファイルの編集をするときだけローカルで削除するなどの作業フローがいいかもしれません。

また、この記事の内容はXcodeVersion 9.2 (9C40b)で調べた情報なので、他のバージョンでは動作が異なるかもしれません。 できれば、Xcodeのバージョンアップでon/offが簡単になるといいですね。  

参考リンク

下記のサイトを参考にさせていただきました。