@vaginaplant
プラグイン機構は活発な開発者のかわりにはならない
https://hakabahitoyo.wordpress.com/2018/11/23/active-committer-is-better-than-plugin/

この記事は以前に読んでいたし、
https://plr.ph3j.com/notice/9iWxvsXyt6ig0uYPmC
のスレッドでも思い出しはしていたのですが、私は開発の内幕、内情については分からないし、プログラミング経験が乏しいので、一般的にプラグイン機構が開発者の負担を減らすのかどうか、正直わかりません。しかし、開発者側の人間ではないけど改造したい、というような場合には、そのような機構が導入されていれば、場合によっては改造し易い、ということはあるかもしれないという気はします。

だから、プラグイン機構でなくても、関数〇〇のインターフェイスは変更しない、とか、変数〇〇の使い方、意味には変更がない、というような保証があれば、改造は楽になるはずで、そういう文法レベル、意味?レベルまで考慮したgitのようなものがあれば、いろいろと楽になるでしょうし、そのような研究はきっとあるのだろうけど、一般レベルで実用化された製品はまだ広まっていないのかも。

というようなことを考えました。
フォロー

@sumiyaki @vaginaplant 別の観点から言うと、開発側が安定したコードを維持するより、いつでもリファクタリングしたり機能変更できる状態を維持していたい、という部分はあると思います。

Pleromaにしろ、Misskeyにしろ、破壊的変更に躊躇がありません。APIすら安定していない状況で、プラグインどころではないと思います。

また、Railsなどのフレームワークは、それ自体が機能追加・変更の仕方を規定していて、直接いじることを前提にしているところがあり、プラグイン実装にあまり向いていないのではないかと思います。

@noellabo @vaginaplant
ありがとうございます。
確かに、プラグイン機構を構成しながら開発を進めるとなると、かえって負担が大きくなったり、柔軟な開発ができなくなるなど、は想像できます。
ただ、Firefoxのプラグインにしても、けっこうちゃぶ台返しされているから、仕様は永遠の保証みたいには考えなくても、とりあえず固まって来た、くらいでもよいのでは、という気もします。
本当は、gitでコンフリクトが起きてもうまくマージしてくれる人工知能みたいなものができれば一番よいのでしょうけど。

とりあえず、言語とpluginでぐぐってみると、
ElixirではBehavior
PythonではYapsy
RoRでは
https://railsguides.jp/plugins.html
なんていうものが見つかりました。

@sumiyaki @vaginaplant PythonのYapsyはイメージしているプラグインにあたると思いますが、Behaviorやgemはソースコードを書き足すイカした方法という感じかな。

プラグインをAPIのように簡単に記述できるようにするには、ソースコードのあちこちにフックを用意するか、機能をもっと分類整理してアプリケーションをプラグインの集合体のように構成することで、追加や差し替えを容易にする、という感じになるかと思います。

個々のプラグインは呼び出されただけではデータや機能にアクセスできないので、データや機能を抽象化してAPI通じて提供しなきゃいけないし、

変更したい部分が切り出されていないと手が出せないし、

諸々、あらかじめ設計に含んでおかなければならないので、結局、プラグインで何をしたいかが問われますね。

いずれにしても、整備して維持するために、かなりのマンパワーが要るんじゃないかなぁ。

言語やフレームワークの便利機能を使わず、自力で再実装するような作りになりがちなのであります。

ログインして会話に参加
DTP-Mstdn.jp

DTP-Mstdn.jpは、DTP・デザイン・印刷に関わる人々のためのMastodonインスタンスです。特定分野の専門インスタンスですので、日々のつぶやき、耳寄りな情報の共有、ディスカッション、質問とその回答、役立つスクリプトなど、他では投稿しづらい内容も、思う存分トゥートしましょう!