LoginSignup
2
1

GitHub Pagesを使ってMisskeyのPluginやThemeを配布する

Posted at

はじめに

想定する読者層

  • GitHub/GitHub Pagesを使える
  • Misskey Plugin/Themeを作ったことがある
  • Misskey Plugin/Themeの配布を検討している
  • 自分でサーバーを持つ気がない

メリット

まず初めに、この手法を使った場合のメリットを明らかにしていきます。

製作者のメリット

  1. サーバーを自分で用意する必要がない
  2. 専門的な知識がそれほど必要ない
  3. 無料

ユーザーのメリット

  1. インストールが簡単になる

手順

前提

以下の環境が整っていることを前提とします。

  • GitHubアカウントを持っている
  • Misskey PluginまたはThemeのソースファイルがある
  • 改行コードがLF(\n)である

また、以下の環境があることを推奨します。

  • パソコンからもろもろの作業ができる

ただ、一応スマホからでもできないことはないと思います。

ソースファイルからhash値の計算

ソースファイルのハッシュ値を計算しましょう。sha512sumコマンドであればターミナルからhash値を計算できます。

$ sha512sum {FILE_NAME}
{HASH}  {FILE_NAME}

コマンドを実行した結果はhash値と入力したファイル名が出力されます。
ここで出力されたhash値はファイルの整合性チェックに使います。

JSONの用意

{
    "type": "{TYPE}",
    "data": "{CODE}"
}

{TYPE}pluginthemeのいずれかです。適当な方を選びましょう。
{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の?移行に書かれたパラメーターにurlhashの両方があるか確認してください。
もう一つは、URLを「ウィンドウで開く」で開いている場合です。これはMisskey側の仕様なので、「ページで表示」をするようにしましょう。

この外部リソースには対応していません
この外部サイトから取得したリソースの種別には対応していません。サイト管理者にお問い合わせください。

(未検証)

データの取得に失敗しました
外部サイトとの通信に失敗しました。もう一度試しても改善しない場合、サイト管理者にお問い合わせください。

url={API_URL}の項目が不正なリンクになっているか、JSONを返していません。確認してみましょう。

データの取得に失敗しました
外部サイトから取得したデータが読み取れませんでした。サイト管理者にお問い合わせください。

(未検証)

正しいデータが取得できませんでした
提供されたデータの整合性の確認に失敗しました。セキュリティ上、インストールは続行できません。サイト管理者にお問い合わせください。

hash値が不正です。正しくhash値が計算されていないか、ファイルかhash値の値が改竄されています。

AiScript エラー
データは取得できたものの、AiScriptの解析時にエラーがあったため読み込めませんでした。プラグインの作者にお問い合わせください。エラーの詳細はJavascriptコンソールをご確認ください。

Ai Scriptの解析エラーです。

プラグインのインストールに失敗しました
プラグインのインストール中に問題が発生しました。もう一度お試しください。エラーの詳細はJavascriptコンソールをご覧ください。

(未検証)

テーマ解析エラー
データは取得できたものの、テーマファイルの解析時にエラーがあったため読み込めませんでした。テーマの作者にお問い合わせください。エラーの詳細はJavascriptコンソールをご確認ください。

Themeの解析エラーです。

テーマのインストールに失敗しました
テーマのインストール中に問題が発生しました。もう一度お試しください。エラーの詳細はJavascriptコンソールをご覧ください。

(未検証)

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1