CommentViewerCollection / MultiCommentViewer

いろんな配信サイトのコメントを表示できるコメビュです
https://ryu-s.github.io/app/multicommentviewer
GNU General Public License v3.0
180 stars 44 forks source link

作り直したい #130

Open ryu-s opened 4 years ago

ryu-s commented 4 years ago

概要

16 とか#44 も絡んでくる問題だけど機能追加をする際に設計が悪くて簡単にはできなくなってきたから、1から作り直したい。

自己満のためでもある。 そもそも今のはプロトタイプ。実際に動くものを作って、沢山の人に要望を聞いて、このコメビュに必要なものが分かってきた。

mcvに必要な主な機能(プラグインも含めて)

・複数の配信サイトのコメント取得に対応 ・コメントをファイルに保存 ・保存したコメントを読み込んで生放送同様に再生 ・コメント投稿 ・配信サイト毎にコメントの色を変更 ・ユーザ毎にコメントの色を変更

modelに必要な要素を洗い出す

・コメント、メタデータの出力 ・コメント、メタデータの入力  →コメントログファイルを読み込んだり、デバッグ用のデータを入力する ・ユーザ情報の出力  →ユーザIDを入力すると、そのユーザのコテハンとか色とかコメントとかを取得できる ・コテハンの入出力 ・プラグイン側で発生したエラー情報を収集  →プラグインがエラー情報をオブジェクト化してmodelに渡す ・あるプラグインが他のプラグインの情報を取得できるようにする  →今のところ用途は思い浮かばないけど、あったら面白そう ・メインウインドウサイズ。x,y,width,height  →メインウインドウをプラグイン化したとしても必要。他のプラグインの表示位置を判断するため。 ・コメビュのバージョンの出力 ・対応している配信サイト ・接続の追加、削除、接続、切断、入力URL、選択しているサイト・ブラウザ、接続しているか、接続一覧(List<IConnectionStatus>) ・コメント投稿 ・入力メソッドには必ず成否を表す戻り値が欲しい  →Result<T, E>的な統一の型 ・Modelのインタフェースのバージョン  →少し変更を加えた場合でも沢山あるプラグインを全て書き換えるような手間を回避するためにバージョニングは欲しい  →プラグインには採用しているmodelバージョンを伝えてもらう。プラグインと直接やり取りしている部分にadapter的なものを置いて、最新のmodelインタフェースの形に変換する。  →コメビュ起動時にmodelバージョン毎にプラグインを選別する必要があるかもしれない。 ・各プラグインの設定情報の入出力  →JSONをやり取り。いや、文字列なら何でも良いかも。iniとか。 ・cookieの場所を指定するプラグインを作りたい。cookieが置いてあるsqlファイルの場所や直接cookieの生のデータを入力できるようにしたい。

プラグイン関連

・メインウインドウもプラグイン化する。  →コンソール用のプラグインを導入すればコンソールアプリとしても使えるようになるかも ・プラグインの追加・削除が簡単にできるようにウインドウを作る  →サーバに問い合わせてプラグイン一覧を取得し、機能説明やタグから欲しい機能を検索し、良さそうなのが見つかったら追加ボタンを押してダウンロードする。  →誰かがプラグインを作ってくれたらソースを公開することを条件に配布サーバに置く。  →→セキュリティチェックのため。ウイルスとか紛れ込んでるかもしれない。  →→サーバに置くプラグインのバイナリは@ryu-sがビルドすればいい。