Kanban Broのプラグインは、Kanban Broで表示しているページの動作を拡張するための仕組みです。
プラグインは以下の3パートに分かれます。
- マジックコメント
- メタデータ部
- 本文
マジックコメントは、このスクリプトがKanban Broのプラグインであることを示すための以下の文字列です。
// @KanbanBroPlugin
メタデータ部は、プラグインの情報であるメタデータを記述した文字列です。
メタデータ部はJsonコードが //
によってコメントアウトされたものです。
例:
// {
// "name": "com.example.example_plugin",
// "title": "Example Plugin",
// "version": "1.0.0",
// "description": "This is <b>an example</b> plugin."
// }
本文は、プラグインの処理を記述するJavaScriptコードです。
メタデータ部との競合を回避するために、本文の先頭は行コメントであってはなりません。
本文の内容は概ね自由ですが、多くの場合、特定のページ上でのみ動作するための判定が含まれます。
例:
if (location.href === 'https://example.com/') {
console.log('This is example.com');
}
以下は完全なプラグインの例です。
// @KanbanBroPlugin
// {
// "name": "com.example.example_plugin",
// "title": "Example Plugin",
// "version": "1.0.0",
// "description": "This is <b>an example</b> plugin."
// }
if (location.href === 'https://example.com/') {
console.log('This is example.com');
}
プラグインのファイル名は .kbb.js
という拡張子である必要があります。
より正確にいうと、プラグインがダウンロードできるURLは .kbb.js
で終わることが想定されます。
プラグインを一意に識別するための名前です。
プラグインの名前は、Javaのパッケージ名のようにドット区切りで表現された識別子のような形式を取ることが想定されています。
識別子は、1文字以上の半角英小文字・半角数字・アンダースコア( /[a-z0-9_]+/
)で構成されることが想定されます。
例: com.example.example_plugin
人間にとって読みやすいプラグインのタイトルです。
タイトルは英語でなくてもかまいません。
タイトルは、全角10文字、半角20文字以内が推奨されます。
例: Example Plugin
プラグインのバージョンです。
バージョンはセマンティックバージョニングの <version core>
である( /([1-9][0-9]*)\.([1-9][0-9]*)\.([1-9][0-9]*)/
)ことが想定されます。
例: 1.0.0
プラグインの説明です。
説明は英語でなくてもかまいません。
説明は、以下のコードによってAndroidのGUI上で解釈可能な簡易的なHTMLをサポートします。
textView.setText(Html.fromHtml(description, Html.FROM_HTML_MODE_COMPACT))
例: This is <b>an example</b> plugin.
プラグインはページが完全にロードされた後にJavaScriptとして実行されます。
したがって、onloadイベントを待つ必要はありません。
プラグインの本文ではawaitを使うことができません。
awaitを使う場合は、以下のようにPromiseで囲う必要があります。
new Promise(async () => {
// awaitを使う処理
});