macOSを使用している場合、Apple社が提供するKeynoteが無料で使用できます。

スライドを作成するツールは、Micosoft PowerPointが有名です。 macOS版も提供されていますが、どうしてもWindwowsと比べると使い勝手が劣ってしまうことがあります。

KeynoteはmacOSに最適化されており、個人的には使い勝手がとても良いと感じています。

さて、Micorsoft 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つの引数を受け取るようになっており、

  1. テンプレートファイルのURL
  2. テーマセレクタ上での名前
  3. 登録するユーザーのタイプ

が指定できます。

つまり、以下のように実行します。

./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に保存しているため)ないに等しいですが、あまりに長すぎるとテーマセレクタの動作が重くなる可能性があるため、適切な文字数を設定してください。

登録するユーザーのタイプ(第三引数)について

タイプは、

  • current
  • all

の2種類を用意しています。

currentの場合は、現在ログインしているユーザーに対してテンプレートをテーマとして登録します。

allの場合は、デバイス上に存在するすべてのユーザーに対してテンプレートをテーマとして登録します。 allを指定する場合は、root権限で実行する必要があります。

Jamf Proに導入

Keynote Template DeploymentはJamf Proをサポートしています。

今回はSelf Serviceで配布できるようにしてみます。

以降は、Jamf Proにログインをして作業します。

スクリプトの登録

  1. [設定] > [コンピュータの管理] > [スクリプト]から新規作成に進みます。

    • カテゴリの設定は必須ではありませんが、このスクリプトを分類するのに使用できます。

    Keynote Template Deploymentの新規スクリプト作成の一般セクションの設定

  2. 次に、ScriptセクションにGitHubから取得してきたkeynote-template-deployment.shを貼り付けます。

    Keynote Template Deploymentの新規スクリプト作成のスクリプトセクションの設定

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

    Keynote Template Deploymentの新規スクリプト作成のオプションセクションの設定

  4. [保存]してスクリプトの登録は完了です。

ポリシーの設定

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

    Keynote Template Deploymentをポリシーとして設定 オプションセクションのGeneral設定

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

    Keynote Template Deploymentをポリシーとして設定 オプションセクションのスクリプト設定

  5. 次に、ScopeセクションからターゲットコンピュータをAll Computersにします。
  6. 最後に、Self ServiceセクションからSelf Serviceでポリシーを使用可能にします。

    Keynote Template Deploymentをポリシーとして設定 Self Serviceセクションの設定

  7. [保存]してポリシーの登録は完了です。

終わりに

Keynoteのテンプレートをテーマとして設定できるKeynote Template Deploymentを作成したので、このツールの使い方を紹介しました。

今回は紹介しませんでしたが、応用としては、

  1. 現在配布しているバーションを外部サイトなどにホスティング
  2. 拡張属性にバーション情報またはアップデートが必要な旨を記録
  3. テンプレートが古いデバイス条件に一致するSmart Computer Groupを作成
  4. Smart Computer Groupに一致した場合、ポリシーを実行

のようなことを行うと、テーマを自動でアップデートできると思います。

もしスクリプトに不具合などがありましたら、GitHubのIssueまたは@kenchan0130のTwitterまでお知らせください。