概要
分散SNSのGNU socialにはプラグイン機能が採用されています。プラグイン単位で機能をオン・オフできるほか、ソースコードを修正しなくても、サーバー管理者が機能を追加できます。
GNU social以外には、FriendicaとMisskeyにもプラグイン機能があります。ただ、Misskeyのプラグインはサーバー機能には干渉できないため、機能が限定的です。
同じ分散SNSで人気のMastodonやPleromaにはプラグイン機能が採用されておらず,基本的にはソースコードを修正するしか拡張の余地がありません。
そういう意味では、プラグインはGNU socialにとって、非常に柔軟・強力・特徴的な機能です。
今回は、マニュアル (DOCUMENTATION/SYSTEM_ADMINISTRATORS/PLUGINS.md、plugins/README.md)をベースに、プラグインの新規追加・インストール方法を紹介します。
手順
プラグインの追加は以下の手順で行います。
GNU socialに同梱されているプラグインの場合、手順1-2は省略され、手順3のconfig.php
の修正のみで済みます。
プラグインはplugins/
、local/
、 local/plugins/
ディレクトリーが検索対象となります。ただし、これらの内plugins
はGNU socialの同梱プラグインの格納ディレクトリーのため、サードパーティー製のプラグインは基本的にlocal/plugins
に配置すればよいです。
GNU social v2からディレクトリー構成が変更になったため、プラグインにCSS・JavaScript・画像などの公開リソースが存在する場合、public/plugins/
にも配置する必要があります。
以下のようなコマンドで、シンボリックリンクを作成するとよいです。シンボリックリンクではなく、単にファイルをコピーして配置してもOKです。
cd gnu-social
PLUGIN=Example
ln -fns local/plugins/$PLUGIN public/plugins/
使用する公開リソースだけを配置したほうが望ましいですが、更新忘れなどの手間になるため、ディレクトリーのシンボリックリンクや丸ごとコピーでよいと思います。
最後に、設定ファイルのconfig.php
でプラグインを有効にします。
addPlugin('Example');
addPlugin('Example', ['param1' => 'value1']);
addPlugin
の第1引数のExample
に対して,検索対象ディレクトリーから'ExamplePlugin.php'
または'Example/ExamplePlugin.php'
を読み込みます。したがって、ディレクトリー名が重要なので注意します。
プラグインのマニュアルなどで、パラメーターがある場合、配列でキーと値を指定できます。
最後のconfig.phpでのプラグインのオン・オフはGUIからも可能です。
[Admin]-[Plugins(/panel/plugins)] にプラグインの一覧が表示されるので、[Enable/Disable] でオン・オフを切り替えられます。このボタンを選ぶと、config.phpにaddPluginの行が自動的に追記・削除されます。ただし、パラメーターは設定できないため、その場合はconfig.phpを直接編集するしかありません。また、サードパーティープラグインの場合、[Delete] ボタンも表示され、プラグインの削除 (アンインストール) もできます。
なお、Plugins画面の冒頭に [Install Plugin] のボタンがあり、GUI上でインストールもできるようですが、ディレクトリーの書き込み権限をうまく解決できず、GUIでのインストールはうまくできませんでした。public/plugins/
へのリソース配置まで考慮されているかどうかも若干怪しいです。動作を確認できれば、情報を追記します。
事例
実際に外部からプラグインをダウンロードして有効にする手順を解説します。Qvitterプラグインの例で紹介します。
UNIX系OSのコマンドでだと、以下のコマンドでインストールできます。
mkdir -p local/plugins # 初回の場合ディレクトリーを作成
PLUGIN=Qvitter
git -C local/plugins clone --depth 1 https://notabug.org/gnusocialjp/Qvitter
ln -fns local/plugins/$PLUGIN public/plugins/
echo "addPlugin('$PLUGIN')" >>config.php
コマンドを使わない場合は以下の手順となります。
- 「gnusocialjp/Qvitter」にアクセスし、右端の↓アイコンを選んでファイルをダウンロード (
Qvitter-develop.zip
) します。 - ダウンロードしたzipファイルを
local/plugins/
に移動して解凍します。デフォルトでは,local/plugins
ディレクトリーが存在しないので、作成しておきます。 - 解凍後のディレクトリー名を
qvitter
からQvitter
に変更 (local/plugins/Qvitter
) します。 Qvitter
ディレクトリーをコピーして、public/plugins/
に配置 (public/plugins/Qvitter
) します。config.php
にaddPlugin('Qvitter');
を追加します。
以上でインストール完了です。
プラグインを無効にする場合、config.php
に追加したaddPlugin('Qvitter');
の行を削除かコメントアウトすればよいです。
結論
GNU socialの特徴的な機能であるプラグインの追加・インストール方法を紹介しました。
v2.0になって、public/plugins/にリソースの配置が必要になったのがやや手間ですが、それ以外はダウンロードして配置するだけなので、そんなに難しくはありません。
GNU socialは10年以上の歴史のある分散SNSの実装であり、同梱されているプラグインも数多くあります。さらに、他の人が開発したプラグインを使うこともできるし、気に入らなければ自作することもできます。
プラグインによる機能拡張がGNU socialの真骨頂ともいえると思います。プラグインにより、自分好みの分散SNSを実現していきましょう。
詳細プロフィール。SNS: Twitter/GS=gnusocialjp@gnusocial.jp/WP=gnusocialjp@web.gnusocial.jp。2022-07-17からgnusocial.jpとweb.gnusocial.jpのサイトを運営しています。WordPressで分散SNSに参加しています。このアカウントの投稿に返信すると、サイトのコメント欄にも反映されます。
コメント