Project

General

Profile

Actions

機能 #960

closed

Modelをシリアライズ可能にする

Added by toshi_a 初音 about 8 years ago. Updated over 7 years ago.

Status:
終了
Priority:
通常
Target version:
Start date:
2017-01-02
Due date:
% Done:

0%

プラグイン名:

Description

要件

テキストにして、ファイルに保存するなど、IOオブジェクトに渡すことができるようにする。

目的

  1. メモリを共有しない空間で動作しているPluggaloidに対してイベントを送れるようにしたい(別のプロセスなど)
  2. キャッシュなどの目的で、単純にファイルに保存したい

特に2.については、 #957 でIntentTokenが保存できると便利なことがあるということがわかった。

シリアライズする範囲

定義されたfieldのみを対象とする。定義されていないフィールドは存在しなくても良いものや、単なるキャッシュであるため。
明示的に定義しているフィールドでdumpしたくないものもありそうなので、fieldのオプションで制御できるようにする。

インスタンス変数は全て対象外とする。

形式

特定の形式に縛られる必要はないとは思うが、JSONだけとかでもよさそう…。

Marshal

かつてはMessageが間違って設定などに保存されて、Marshal.loadされた時に不具合が発生することがあったが、今はそういったチェックをUserConfigでしっかり行っているのでこの制限には何の意味もない。

キャッシュなどの保存するデータが大量に含まれているという問題はある。マーシャライズの時も基本的には定義されたfieldだけが保存されていれば問題なさそう。

利点

Rubyでよく使われている方法でセーブ・ロードできる

欠点

Rubyでしか利用できない。ロードする環境に、Modelが定義されてなければならない。プラグインの削除やアップデートなどでModelの定義が消えた時にロードできなくなる可能性がある。

JSON

言語を問わずよく使われているのでさまざまなメリットがある。Rubyで扱うのも容易。
ただのオブジェクトとModelを見分けるために、またModelの種類を特定するために特殊なキーを入れる必要がありそう。

利点

他の言語でも扱うことができ、PluggaloidをMarshalの仕組みがないRubyの実装や他の言語に移植するのが容易になる。
mikutterに現在定義されていないModelを読み込んでもなんとかできそう。

欠点

表現できるオブジェクトの種類が限られている( Time は文字列に変換する?など)。


Related issues

Blocks 機能 #961: レジュームされたプロフィールについても、スクリーンネームをクリックした時にIntentの候補からプロフィールを省くようにしたい却下toshi_a 初音2017-01-02

Actions
Blocks 機能 #981: カスタムアカウント終了toshi_a 初音2017-01-30

Actions
Blocked by 機能 #987: Retrieverのコードを削除し、代わりにDiva gemを利用する終了toshi_a 初音2017-02-28

Actions
Actions #1

Updated by toshi_a 初音 about 8 years ago

  • Related to バグ #957: プロフィールのアカウント名をクリックした時に、Intentの候補にプロフィールが挙がっている added
Actions #2

Updated by toshi_a 初音 about 8 years ago

  • Blocks 機能 #961: レジュームされたプロフィールについても、スクリーンネームをクリックした時にIntentの候補からプロフィールを省くようにしたい added
Actions #3

Updated by toshi_a 初音 about 8 years ago

  • Related to deleted (バグ #957: プロフィールのアカウント名をクリックした時に、Intentの候補にプロフィールが挙がっている)
Actions #4

Updated by toshi_a 初音 about 8 years ago

  • Related to 機能 #981: カスタムアカウント added
Actions #5

Updated by toshi_a 初音 about 8 years ago

  • Related to deleted (機能 #981: カスタムアカウント)
Actions #6

Updated by toshi_a 初音 about 8 years ago

  • Blocks 機能 #981: カスタムアカウント added
Actions #7

Updated by toshi_a 初音 about 8 years ago

  • Status changed from 新規 to 実装待ち

#981 アカウント情報をModelで表現するような実装にしたいので、JSONと相互変換できるようにする

Actions #8

Updated by toshi_a 初音 about 8 years ago

  • Blocked by 機能 #987: Retrieverのコードを削除し、代わりにDiva gemを利用する added
Actions #9

Updated by toshi_a 初音 over 7 years ago

  • Status changed from 実装待ち to 終了

既にDiva 0.3.0で実装しています

Actions

Also available in: Atom PDF