Project

General

Profile

機能 #960

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

Added by toshi_a 初音 almost 3 years ago. Updated almost 2 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の候補からプロフィールを省くようにしたい却下2017-01-02

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

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

Actions

History

#1

Updated by toshi_a 初音 almost 3 years ago

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

Updated by toshi_a 初音 almost 3 years ago

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

Updated by toshi_a 初音 almost 3 years ago

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

Updated by toshi_a 初音 almost 3 years ago

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

Updated by toshi_a 初音 almost 3 years ago

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

Updated by toshi_a 初音 almost 3 years ago

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

Updated by toshi_a 初音 almost 3 years ago

  • Status changed from 新規 to 実装待ち

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

#8

Updated by toshi_a 初音 over 2 years ago

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

Updated by toshi_a 初音 almost 2 years ago

  • Status changed from 実装待ち to 終了

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

Also available in: Atom PDF