はじめに
第1章 Swift-DocC
第2章 APIリファレンス
第3章 APIリファレンスの拡張
第4章 チュートリアル
おわりに
更新履歴
奥付
Swift-DocCは、Swiftフレームワークやパッケージのためのドキュメント作成ツールです。Swiftのソースコードからドキュメントを生成したり、Markdownを使ってドキュメントを作成したりできます。
Swiftのソースコードからドキュメントを生成するツールは、これまでにも、Jazzy*1やswift-doc*2といったサードパーティ製のツールが存在していました。
これに対して、Swift-DocCはSwift.orgから公式リリースされたツールとなります。Swift-DocCは2021年6月にWWDC21で発表され、Xcode 13に同梱する形でリリースされました。その後、2021年10月にオープンソースソフトウェアになりました。
Swift-DocCはXcodeとの連携が最初から組み込まれている点が強みです。他にも、単なるAPIリファレンスだけでなく、技術記事風の文書を作ったり、チュートリアルを作ったりできるのも面白い特徴です。
本書では、このSwift-DocCの使い方を、初めて触れる方にも分かるよう丁寧に解説します。本書がSwift-DocCの普及に少しでも貢献できればと考えています。
前提知識として、Swift言語の基本はある程度知っているものとします。また、Xcodeの使いかたもある程度知っているものとします。
開発環境としてMacとXcodeを使います。Swift-DocCはMac以外でも使用可能ですが、本書では扱いません。Xcodeはバージョン13以降が必要です。
Swift-DocCはドキュメントコンパイラと呼ばれるツールで、Swiftフレームワークやパッケージのためのドキュメントを作成できます。作成されたドキュメントはXcodeで開いて見ることができます。また、Webサイト上にホストできて、Webブラウザで見ることができます。
Xcodeには標準フレームワークのドキュメントが付属しています。このドキュメントは、Xcodeのメニューから「Help」→「Developer Documentation」を実行すると表示できます。Xcodeを使っているアプリ開発者ならば何度も見たことがあるでしょう。
Swift-DocCを使うと、これと同様のドキュメントを、ユーザーが簡単に作成できます。
Swift-DocCを使う方法は2通りあります。
ひとつは、Xcodeに同梱されているものを使う方法です。Xcode上でドキュメントをビルドするとき*1、デフォルトでは同梱されているSwift-DocCが使われます。
もうひとつは、docc
コマンドを自分でインストールして使う方法です。Swift-DocCはオープンソースソフトウェアとして公開されています。GitHubのapple/swift-docc*2リポジトリにdocc
コマンドのインストール方法が書かれています。この方法の場合はXcodeなしで使うことができ、Mac以外のプラットフォームでも動作させることができます。また、このdocc
コマンドをXcodeから呼ぶような設定もできます。
本書では、前者のXcodeを使う方法でSwift-DocCを学んでいきます。後者のdocc
コマンドを使う方法は紹介だけにとどめておきます。
Swift-DocCの公式ドキュメントは2つあります。ほとんど同じ内容ですが、若干異なる部分もあります。
ひとつは、Xcodeに付属しているドキュメントです。このドキュメントは、Xcodeを使う前提で書かれている箇所があります。
もうひとつは、Swift.orgからリリースされているドキュメントです。このドキュメントは、docc
コマンドを使う前提で書かれている箇所があります。
また、docc
コマンドについては、GitHubのapple/swift-doccリポジトリにも詳細な情報が書かれています。
Swift-DocCを使ったサンプルがAppleから提供されています。
このサンプル、SlothCreatorを少し眺めてみましょう。
SlothCreatorはSwiftパッケージになっています。まず、Package.swift
ファイルをXcodeで開きます。
Sources
フォルダの中に拡張子.swift
ファイルがいくつかあります。このSwiftソースコードには、ドキュメント用のコメントがいくつか書かれています。
また、SlothCreator.docc
というフォルダがあります。この中には拡張子.md
ファイルがいくつかあります。Markdown形式でドキュメントが書かれています。
Xcodeのメニューから「Product」→「Build Documentation」を実行すると、Swift-DocCによってドキュメントがビルドされます。ビルドできると、Developer Documentationのウィンドウに表示されます。
Swift-DocCがビルドできるドキュメントの種類は、APIリファレンスとチュートリアルがあります。それぞれについての詳細は、第2章「APIリファレンス」、第3章「APIリファレンスの拡張」、第4章「チュートリアル」で説明します。
単にサンプルを見るだけでなく、実際に自分で試してみたい場合もあるでしょう。そのためには、題材となるSwiftフレームワークやパッケージが必要になります。ここでは、比較的簡単に準備できるSwiftパッケージを作ってみましょう。
空のディレクトリで次のコマンドを実行すると、Swiftパッケージに必要なファイルが作成されます。--name
オプションでパッケージの名前を指定します。この指定を省略した場合は現在のディレクトリの名前がパッケージの名前になります。
$ swift package init --name MySlothCreator --type library
Creating library package: MySlothCreator
Creating Package.swift
Creating README.md
Creating .gitignore
Creating Sources/
Creating Sources/MySlothCreator/MySlothCreator.swift
Creating Tests/
Creating Tests/MySlothCreatorTests/
Creating Tests/MySlothCreatorTests/MySlothCreatorTests.swift
作成されたPackage.swift
ファイルをXcodeで開きます。Xcodeのメニューから「Product」→「Build Documentation」を実行すると、Swift-DocCによってドキュメントがビルドされます。
もちろん、まだ何もドキュメントを書いていないのでほとんど空っぽです。しかし、これでSwift-DocCを試すための環境としては十分でしょう。
Swift-DocCは、基本的にはフレームワークやパッケージに対してのドキュメント生成で活用できます。一方で、アプリ開発で活用することも考えられます。開発中のアプリのドキュメントをSwift-DocCで生成できるようにしておくと、メンテナンスが楽になりそうです。
本書の執筆時点(2022年1月)ではbeta版ですが、Xcode 13.3ではアプリターゲットに対してもドキュメントが生成できるようになりました。
Xcode 13.2までは、アプリターゲットに対してドキュメントをビルドしてもドキュメントは生成されません。そこで、アプリ開発プロジェクトをマルチモジュール構成にして、モジュール化した部分のドキュメントをSwift-DocCで生成する、という手法が考えられます。マルチモジュール構成は通常、設計上の問題を解決したりビルド上の問題を解決したりするために導入されることが多いです。しかし、ドキュメント作成にSwift-DocCが使いやすくなるというメリットも、案外考慮する価値がありそうです。
Swift-DocCによってドキュメントをビルドするには、通常はXcodeのメニューから「Product」→「Build Documentation」を実行します。
実は、XcodeプロジェクトのBuild Settingsの設定で、プロジェクトのビルド時にドキュメントもビルドするようにできます。「Build Documentation during 'Build'」の項目をYesにすれば良いです。
前述の「1.5 実際に手を動かすための準備」のようにSwiftパッケージをXcodeで開いている場合には、Build Settingsが設定できないため利用できません。しかし、Xcodeプロジェクトが存在する場合には便利な設定です。
生成したドキュメントは、エクスポートして別の人に渡すことができます。
Xcodeの「Developer Documentation」ウィンドウの左ペインで、フレームワークを選択して右クリックすると「Export」メニューが出てきます。
これを実行すると.doccarchive
拡張子を持つドキュメントアーカイブが作成され、ほかの人へ渡すことができます。ドキュメントアーカイブを受け取った人は、Xcodeで開くことができます。
生成したドキュメントは、Webサイトに公開できます。公開する方法として、次の2つを紹介しておきます。
また、本書の執筆時点(2022年1月)では開発中の機能ですが、次の方法も紹介しておきます。
[*1] xcodebuild docbuild
コマンドでもドキュメントをビルドできますが、これもXcodeに同梱されているSwift-DocCが使われます。