はじめに
想定する読者層
- GitHub/GitHub Pagesを使える
- Misskey Plugin/Themeを作ったことがある
- Misskey Plugin/Themeの配布を検討している
- 自分でサーバーを持つ気がない
メリット
まず初めに、この手法を使った場合のメリットを明らかにしていきます。
製作者のメリット
- サーバーを自分で用意する必要がない
- 専門的な知識がそれほど必要ない
- 無料
ユーザーのメリット
- インストールが簡単になる
手順
前提
以下の環境が整っていることを前提とします。
- GitHubアカウントを持っている
- Misskey PluginまたはThemeのソースファイルがある
- 改行コードが
LF
(\n
)である
また、以下の環境があることを推奨します。
- パソコンからもろもろの作業ができる
ただ、一応スマホからでもできないことはないと思います。
ソースファイルからhash値の計算
ソースファイルのハッシュ値を計算しましょう。sha512sum
コマンドであればターミナルからhash値を計算できます。
$ sha512sum {FILE_NAME}
{HASH} {FILE_NAME}
コマンドを実行した結果はhash値と入力したファイル名が出力されます。
ここで出力されたhash値はファイルの整合性チェックに使います。
JSONの用意
{
"type": "{TYPE}",
"data": "{CODE}"
}
{TYPE}
はplugin
かtheme
のいずれかです。適当な方を選びましょう。
{CODE}
はリソースのソースコードを文字列で入力します。このとき、改行(\n
)やダブルクオーテーション("
)、バックスラッシュ(\
)などは適当な形でエスケープする必要があります。
GitHub PagesにJSONをあげる
前章で作ったJSONをGitHub Pagesにあげましょう。
GitHub PagesにJSONをあげると以下のような形式のリンクでJSONにアクセスできるようになります。
https://{USERNAME}.github.io/{REPOSITORY_NAME}/{FILE_PATH}
{USERNAME}
はGitHubでのユーザーネームが、{REPOSITORY_NAME}
はリポジトリの名前が、{FILE_PATH}
はGitHubのリポジトリ上でのファイルパスが入ります。
ファイルパスがわからない場合は、GitHub上でファイルパスを確認したいファイルへと移動して三点リーダー(…
)からCopy path
でパスのコピーができます。
URLができたら上のリンクに一度アクセスし、適当なJSONが返ってくることを確認してみましょう。
配布用URLの作成
配布リンクは以下のような形式になります。
https://{HOST}/install-extentions?url=https://{USERNAME}.github.io/{REPOSITORY_NAME}/{FILE_PATH}&hash={HASH}
{HOST}
はMisskeyサーバーのホストドメインです。他のホルダーにはそれぞれ適当な値を入れてください。
例
ここでは一例としてflexible_user_mute_plugin
を載せます。{HOST}
は適当に編集してください。
GitHubのリポジトリ: https://github.com/saranann/MisskeyPlugins
https://{HOST}/install-extentions?url=https://saranann.github.io/MisskeyPlugins/json/flexible_user_mute_plugin.is.json&hash=dbdf80635d40f7387d93d307368c3a2d92c0c0e08e2a0f4f8509a065eb8d8b9fc8ed542758215ac750a700a21f24fdc33a88a494085323a7748bed90f9d4c34e
注意点
GitHub Pagesには回数制限があります。
付録:インストール時のエラー
パラメータが不足しています
外部サイトからデータを取得するために必要な情報が不足しています。URLをお確かめください。
このエラーが出る場合には要因が二つ考えられます。
一つはURLのパラメーターが不正な場合です。URLの?
移行に書かれたパラメーターにurl
とhash
の両方があるか確認してください。
もう一つは、URLを「ウィンドウで開く」で開いている場合です。これはMisskey側の仕様なので、「ページで表示」をするようにしましょう。
この外部リソースには対応していません
この外部サイトから取得したリソースの種別には対応していません。サイト管理者にお問い合わせください。
(未検証)
データの取得に失敗しました
外部サイトとの通信に失敗しました。もう一度試しても改善しない場合、サイト管理者にお問い合わせください。
url={API_URL}
の項目が不正なリンクになっているか、JSONを返していません。確認してみましょう。
データの取得に失敗しました
外部サイトから取得したデータが読み取れませんでした。サイト管理者にお問い合わせください。
(未検証)
正しいデータが取得できませんでした
提供されたデータの整合性の確認に失敗しました。セキュリティ上、インストールは続行できません。サイト管理者にお問い合わせください。
hash値が不正です。正しくhash値が計算されていないか、ファイルかhash値の値が改竄されています。
AiScript エラー
データは取得できたものの、AiScriptの解析時にエラーがあったため読み込めませんでした。プラグインの作者にお問い合わせください。エラーの詳細はJavascriptコンソールをご確認ください。
Ai Scriptの解析エラーです。
プラグインのインストールに失敗しました
プラグインのインストール中に問題が発生しました。もう一度お試しください。エラーの詳細はJavascriptコンソールをご覧ください。
(未検証)
テーマ解析エラー
データは取得できたものの、テーマファイルの解析時にエラーがあったため読み込めませんでした。テーマの作者にお問い合わせください。エラーの詳細はJavascriptコンソールをご確認ください。
Themeの解析エラーです。
テーマのインストールに失敗しました
テーマのインストール中に問題が発生しました。もう一度お試しください。エラーの詳細はJavascriptコンソールをご覧ください。
(未検証)