macOSを使用している場合、Apple社の提供するKeynoteを無料で使用できます。
スライドを作成するツールは、Microsoft PowerPointが有名です。 macOS版も提供されていますが、どうしてもWindowsと比べると使い勝手が劣ってしまうことがあります。
KeynoteはmacOSに最適化されており、個人的には使い勝手がとても良いと感じています。
さて、Microsoft PowerPoint同様、Keynoteにもテンプレート機能があります。 通常、テンプレートはUIを介してテーマとして登録します。 しかし、次のような要件があった場合に使える公式のツールなどは提供されていません。
- 複数個テンプレートをテーマとして登録したい
- 管理化に置かれているデバイスに配布したい
今回は、KeynoteのテンプレートをUIを介さずに登録するツールを作成したので、その使い方を紹介します。
通常のテンプレート登録のおさらい
Keynoteのテンプレートはカスタムテーマと呼ばれ、kthファイルとして保存し、通常、ユーザーがそのファイルを開き、指示に従って操作することでテーマとして使用できます。

登録したテンプレートはテーマセレクタに表示され、いつでも使えます。

作ったもの
Keynote Template Deploymentというツールを作成しました。
macOS Catalinaからデフォルトシェルがzshになったため、このツールもzshで記述しました。 特殊なツールの追加インストールは必要なく、ビルトインのツールのみで動作します。
Keynote Template Deploymentの使い方
Keynote Template Deploymentのリリースページから最新バージョンのコードをダウンロードし、keynote-template-deployment.shを取得します。
このスクリプトは3つの引数を受け取るようになっており、次の値が指定できます。
- テンプレートファイルのURL
- テーマセレクタ上での名前
- 登録するユーザーのタイプ
つまり、以下のように実行します。
./keynote-template-deployment.sh "https://example.com/template.kth" "株式会社〇〇のテーマ" "current"テンプレートファイルのURL(第一引数)について
テンプレートファイルがGitHubなど外部サイトにホスティングされている場合は、対象のURLを指定できます。
# https://example.com/template.kth にテンプレートファイルがホスティングされてる場合./keynote-template-deployment.sh "https://example.com/template.kth" "株式会社〇〇のテーマ" "current"また、ローカルにファイルがある場合は、file://プロトコルを使用してください。
# /tmp/template.kth テンプレートファイルがある場合./keynote-template-deployment.sh "files:///tmp/template.kth" "株式会社〇〇のテーマ" "current"テーマセレクタ上での名前(第二引数)について
以下の画像ように、テーマセレクタ上での名前を指定できます。

文字数制限は(内部的にはSQLiteに保存しているため)ないに等しいです。ただし、あまりに長すぎるとテーマセレクタの動作を重くする可能性があるため、適切な文字数を設定してください。
登録するユーザーのタイプ(第三引数)について
タイプは次の2種類を用意しています。
currentall
currentの場合は、現在ログインしているユーザーに対してテンプレートをテーマとして登録します。
allの場合は、デバイス上に存在するすべてのユーザーに対してテンプレートをテーマとして登録します。
allを指定する場合は、root権限で実行する必要があります。
Jamf Proに導入
Keynote Template DeploymentはJamf Proをサポートしています。
今回はSelf Serviceで配布できるようにしてみます。
以降は、Jamf Proにログインをして作業します。
スクリプトの登録
-
[設定] > [コンピュータの管理] > [スクリプト]から新規作成に進みます。
- カテゴリの設定は任意ですが、このスクリプトの分類に使用できます。

-
次に、ScriptセクションにGitHubから取得してきた
keynote-template-deployment.shを貼り付けます。
-
オプションセクションのパラメータラベルを設定します。
- 設定しなくても動作しますが、ポリシー側で使用する際にわかりやすくなるので設定しています。
- 「パラメータ4」: KeynoteのテンプレートのURLを指定することがわかるような名前
- 例として、
Keynote template URLを指定しています。
- 例として、
- 「パラメータ5」: Keynoteのテーマセレクタの一覧に表示する名前を指定することがわかるような名前
- 例として、
Display name on theme selectorを指定しています。
- 例として、
- 「パラメータ6」: Keynoteのテンプレートをユーザーに配布するタイプを指定することがわかるような名前
- 例として、
Type of specify the local users (current/all)を指定しています。
- 例として、

-
[保存]してスクリプトの登録は完了です。
ポリシーの設定
-
[コンピュータ] > [ポリシー]から新規作成に進みます。
-
Generalセクションで各値を設定します。
- 「表示名」:
Deploy Keynote template for all local users - 「カテゴリ」:
Applications- カテゴリの設定は任意です。
- 「実行頻度」:
Ongoing- Self Serviceで実行できるようにするため、
Ongoingにしています。
- Self Serviceで実行できるようにするため、

- 「表示名」:
-
次に、スクリプトの項目を選択し、登録したKeynote Template Deploymentのスクリプトを追加します。
-
パラメータ4とパラメータ5、パラメータ6に値を設定します。
- 「パラメータ4」:
https://example.com/sample.kth - 「パラメータ5」:
株式会社○○のテーマ - 「パラメータ6」:
all- 今回はすべてのローカルユーザーに配布してみるため、
allにしています。
- 今回はすべてのローカルユーザーに配布してみるため、

- 「パラメータ4」:
-
次に、Scopeセクションからターゲットコンピュータを
All Computersにします。 -
最後に、Self ServiceセクションからSelf Serviceでポリシーを使用可能にします。

-
[保存]してポリシーの登録は完了です。
終わりに
Keynoteのテンプレートをテーマとして設定できるKeynote Template Deploymentを作成したので、このツールの使い方を紹介しました。
今回は紹介しませんでしたが、応用として次のようなことを行うと、テーマを自動でアップデートできると思います。
- 現在配布しているバーションを外部サイトなどにホスティング
- 拡張属性にバーション情報またはアップデートが必要な旨を記録
- テンプレートが古いデバイス条件に一致するSmart Computer Groupを作成
- Smart Computer Groupに一致した場合、ポリシーを実行
もしスクリプトに不具合などがありましたら、GitHubのIssueまたは@kenchan0130のTwitterまでお知らせください。