ユーザーマクロを書く
独自のカスタム マクロを作成する場合、ユーザー マクロを使用すると便利です。これらは特定のアクションを実行、カスタムの初期設定を適用するなどの操作が可能です。
ユーザー マクロは Confluence 内で作成および管理されているため、自身でアプリ (プラグイン) を開発する必要はありません。ただし、ある程度のコーディング スキルが必要となります。
ユーザー マクロを作成して管理するには、システム管理者権限が必要となります。
ユーザー マクロを作成する
新しいユーザー マクロを追加するには:
- Go to Administration > General Configuration > User Macros.
- Select Create a User Macro.
- Enter the macro details (see table below).
- [追加] を選択します。
マクロの詳細フィールド | 説明 |
---|---|
macroName | コードに表示されるマクロ名です。 |
表示方法 | マクロ ブラウザーまたはオートコンプリートでこのマクロを表示できるユーザーを制御します。オプションは次のとおりです。
「システム管理者にのみ表示」を選択した場合でも、ユーザーはページ上のマクロの出力を見ることができ、ユーザーがページを編集する際、マクロ プレースホルダーも表示されます。マクロ ブラウザーとオートコンプリートでのみ非表示になります。 マクロのタイトル、説明、パラメーター名およびその他のメタデータを含め、すべてのマクロ情報は検出可能です。システム管理者にのみ表示とマークされている場合であっても、ユーザー マクロの定義に機密データを含めないでください。 |
マクロ タイトル | マクロ ブラウザーとオートコンプリートに表示されるタイトル。 |
説明 | マクロ ブラウザーに表示される説明です。マクロ ブラウザーの検索は、タイトルと説明の両方の一致をピックアップします。 |
カテゴリ | マクロが表示されるマクロ ブラウザー カテゴリーを 1 つ以上選択します。 |
アイコンの URL | マクロ ブラウザにマクロのアイコンを表示したい場合、絶対 URL (例: http://mysite.com/mypath/status.png ) または Confluence ベース URL への相対パス (例: /images/icons/macrobrowser/status.png ) を入力します。 |
ドキュメント URL | マクロのドキュメントがある場合は、ここに URL を入力します。 |
マクロ本文処理 | マクロに渡す前に Confluence が本体をどのように処理するかを指定します。 マクロ本文は、Confluence ページに表示されるコンテンツです。マクロに本文がある場合、ユーザーが入力する本文のコンテンツは、 マクロ本体の処理オプション:
|
テンプレート | ここで、マクロの動作を決定するコードを作成します。
詳細と例については、「ユーザー マクロ テンプレート構文」を参照してください。 |
代わりにプラグインが必要ですか?
ユーザー マクロをプラグインとして配信する場合は、ユーザー マクロ プラグイン モジュール」に関する開発者ガイドを参照してください。Confluence でより複雑な、プログラミングを使用したマクロを作成したい場合は、マクロ プラグインの記述が必要となる場合があります。
ユーザー マクロを編集する
ユーザー マクロを編集するには
- Go to Administration > General Configuration > User Macros.
- Select Edit next to the relevant macro.
- Update the macro details.
- [保存] を選択します。
ユーザー マクロの削除
ユーザー マクロを削除するには:
- Go to Administration > General Configuration > User Macros.
- The currently configured user macros will appear.
- Select Delete next to the relevant macro.
ユーザー マクロを削除する前に、ページやブログ投稿でのそのマクロの使用箇所をすべて 検索 する必要があります。ページ上でまだ使用されているユーザー マクロを削除すると、ユーザーに「不明なマクロ」エラーが表示されます。
べスト プラクティス
このセクションには、独自のユーザー マクロを作成する際のベストプラクティスに関するヒントや提案が含まれています。
マクロ ヘッダーに説明的なヘッダーを追加する
テンプレート フィールドの一番上に、以下の用にコメントとして短い説明を含めることをお勧めします。
## Macro title: My macro name
## Macro has a body: Y or N
## Body processing: Selected body processing option
## Output: Selected output option
##
## Developed by: My Name
## Date created: dd/mm/yyyy
## Confluence version: Version it was developed for
## Installed by: My Name
## Short description of what the macro does
マクロ ブラウザーにパラメーターを表示する
ユーザーがマクロを構成する最も簡単な方法はマクロ ブラウザーです。ユーザーはマクロ カテゴリーを指定、アイコンへリンク、およびマクロ ブラウザーがユーザーに情報を要求するために使用するパラメーターを定義するなどを行うことができます。
マクロ パラメーターのデフォルトの値を供給する
ユーザーがパラメーターを指定したかどうかはわからないため、マクロ コードで後から依存する予定がある場合、最初に、マクロで一部の値を受け取ったかどうかを確認する必要があります。
以下の例では、マクロは 3 つのパラメーターを期待し、指定されない場合は実用的な既定値に置き換えられます。
#set($spacekey= $paramspacekey)
#set($numthreads= $paramnumthreads)
#set($numchars= $paramnumchars)
## Check for valid space key, otherwise use current
#if (!$spacekey)
#set ($spacekey=$space.key)
#end
## Check for valid number of threads, otherwise use default of 5
#if (!$numthreads)
#set ($numthreads=5)
#end
## Check for valid excerpt size, otherwise use default of 35
#if (!$numchars)
#set ($numchars=35)
#end
セキュリティへの影響を考慮する
また、ユーザーが表示権限を持っていないコンテンツを誤って表示してしまうのを防ぐため、制約付きのページやスペース権限など、多数の権限シナリオでユーザー マクロを徹底的にテストすることをお勧めします。詳細については、「ユーザー マクロ テンプレート構文」を参照してください。
ユーザー マクロの例
コンテキスト変数
既定では、ユーザー マクロは次のベロシティ コンテキスト変数にのみアクセスできます。
$generalUtil
$htmlUtil
ユーザー マクロに既定のベロシティ コンテキストの追加変数へのアクセスを許可するには、macro.required.velocity.context.keys
システム プロパティを使用して、変数をコンマ区切り形式で指定します。既定のベロシティ コンテキストで使用可能な変数のリストを確認してください。
たとえば、$authenticatedUser
と $action
へのアクセスを許可するには、VM オプションとして -Dmacro.required.velocity.context.keys=authenticatedUser,action
のように定義できます。
メソッドの許可リスト
Confluence 9.0 以降では、ベロシティ メソッドの許可リストと呼ばれるセキュリティ機能が新たに導入され、ユーザー マクロを含め、ベロシティ テンプレート内のすべてのメソッド呼び出しを明示的に許可リストに登録する必要があります。
アトラシアンは、一般的で既知の安全なメソッドのリストをあらかじめ作成して承認しています。ただし、ユーザー マクロのプレビュー時に生成されたログ警告出力に基づいて、ユーザー マクロ内の他のメソッドを手動で許可リストに登録する必要がある場合があります。
ユーザー マクロを定義して保存したら、新しいページに追加してみてください。次のようなログ警告が表示された場合は、これらのメソッドを手動で許可リストに登録する必要があります (右にスクロールすると完全な例が表示されます)。
16:21:05,888 WARN [http-nio-8080-exec-6] [velocity] log Invocation blocked as method is not allowlisted: com.atlassian.confluence.setup.settings.DarkFeatures#isDarkFeatureEnabled(java.lang.String)
ログから収集されたメソッドのリストは、システム管理者が atlassian.velocity.method.allowlist.extra
システム プロパティを使用して許可リストに登録できます。
たとえば、次の VM オプションを使用して 2 つのサンプル メソッドを許可リストに登録できます (右にスクロールすると完全な例が表示されます)。
"-Datlassian.velocity.method.allowlist.extra=com.atlassian.confluence.setup.settings.DarkFeatures#isDarkFeatureEnabled(java.lang.String),com.atlassian.confluence.extra.dynamictasklist2.NameRenderer#render(java.lang.String boolean)"
値が正しく設定されていないか解析できない場合は、Confluence の起動時に問題を示す警告が記録されます。
Confluence を使いこなす
マクロの作成が難しい場合、Atlassian Marketplace で多数の無料および有料マクロが提供されています。最も人気のあるマクロの一部を紹介します。
- Numbered Headings: 見出しに自動的に番号を付与し、ナビゲーションおよびドキュメント作成を支援
- HideElements for Confluence: いくつかの Confluence ページ要素 (例: タイトル、コメント、ボタン) をワンクリックで非表示に
- Composition Tabs & Page Layout: タブ、ハイライト、インスタント フォーカス、メニュー、および拡張可能なセクションでコンテンツを強化
次のステップ
ユーザー マクロの力をさらに詳しく調べるには、「高度なユーザー マクロを記述する」ガイドを参照してください。