Takuro Ashie
ashie****@homa*****
2002年 5月 1日 (水) 05:16:12 JST
足永です。 At Wed, 01 May 2002 01:28:20 +0900, Ken-ichi HASHIMOTO wrote: > >controller.rbが繰り返し対応になったようですね。 > >program_item.rb が reservation_generator.rb に対応すれば > >最終的には 全てのプログラムで program_item.rb を経由する事で > >一つにまとまりそうですね。 > >ちと弄ってみます。 言い間違えました。 s/program_item.rb/program_admin.rb/ で読み変えて下さい。 私は,ProgramAdmin クラスで ProgramItem と Reservation* をうまく吸収できるかな? と考えています。 ProgramAdminオブジェクトがReservationList と ProgramItemのリストを握っ て,フロントエンドに対しては ReservationList を, バックエンドに対して は ProgramItem を見せるというような感じです。 できれば,ReservationList は文字列の配列ではなくて, ReservationItem とかなんとか言うオブジェクトの配列にして頂けると,フロントエンドから 扱い易いと思います class ReservationItem attr_reader :repeate_mode # STRING attr_reader :start_time # Time attr_reader :end_time # Time attr_reader :channel # String attr_reader :quality # String attr_reader :filename # String (ファイル名もプラグインで # 生成できるといいですね!) end で,ReservationListが(ProgramAdminを介して)フロントエンドによって変更 された場合には,(ProgramAdminによって)自動的にProgramItemリストを更新 すると。 ReservationGenerator は 単に ReservationItem -> ProgramItem 変換器 という事で全てカタが付くと考えていますが,いかがでしょうか? (という事は) > そこで、各リピートモードプラグインにパラメータフォーマットを > 返させる機構の考えをもっています。 > > 例えば、次のような感じです。 > rg = ReservationGenerator.new > > ### アルゴリズム一覧の取得 > algList = rg.getRepeatModePluginList() > # => ["ONE","EVERYWEEK","WEEKDAY"] > > ### 各アルゴリズムのパラメータ順序とパラメータ意味の取得 > rg.getParameterList('ONE') > # => ["StartDay","StartTime","EndTime","Channel","Quality","Filename"] パラメータは各プラグインで自由に定義できるという事ですね。 ここは誤解していました。 だとすると前述の私の考えでは無理がありそうです。 しかし,現実的に考えるとせいぜい日付とファイル名(場合によってはクオリ ティも?)を一定間隔で変えられるという程度で殆どのニーズに応えられると思 います。そして,おそらくそれ以上の細かい繰り返しパターンが用意できたと しても,殆どのユーザーは使いこなす事ができないのではないかと思います。 私が個人的に思いつく繰り返しパターンとしては 毎日 毎週◯曜日 毎週月-金 毎週月-土 その他 毎週月水金 など特定曜日とか 毎月 毎年 (^^;; 毎月第◯週◯曜日 などといった感じですが,この程度なら > # => ["StartDay","StartTime","EndTime","Channel","Quality","Filename"] の固定パラメータでもなんとか対応できる(もう一つ,繰り返しパターンの終 了日時くらいはあってもいいかもしれませんが)と思いますし,それ以上複雑 なパターンは,おそらく普通の人ならそれぞれ個別の予約にしてしまうかと思 います。 「あるパターンでは追加パラメータを設定できる」くらいはあっても良いと思 いますが,上記6項目くらいは固定しておかないと,たぶん破綻すると思いま す。 > # 新しいリピートモード(WeekEndなど)を追加する場合には > # repeat_mode_plugin の ディレクトリに 対応するプラグインを > # 正しく 導入すると、GUI などは、自動的に対応できるという...(^^; たとえばGUIの場合は 特定の型に対して特定のWidgetを対応させるという事で 確かにできると思いますが,コロコロとインターフェースが変わってしまうと ユーザーが混乱すると思います。 前述の「追加パラメータ」に対してはそれでもいいかもしれませんが, やはりある程度基本部分は固定しておかないとまずいと思います。 > # GUI は Linuxのネイティブで動くものも必要だろうし > # Web経由みたいなものも必要だろうし、CUI なものも必要だろうから > # 上記の機構は、全くいらないというわけでもなさそうなので。 個人的に CLIインターフェース GUIインターフェース WEBインターフェース メールインターフェース Palm用インターフェース :D (WebやメールインターフェースのWrapper?) があればいいなと思ってます。 で,よっぽど複雑な繰り返しパターンの場合は,結局 CLI インターフェース を使って(あるいはファイルを直接編集?)シェルスクリプトを組むという感じ になってしまうのではないでしょうか?