[[PSS/ロードマップ]]

#contents

* 背景 [#e9369967]

2006/06/15 現在の最新版である Ver.8.1.0 では、スマート学習をはじめ、オプションの切り替え機能など、実に様々な機能が搭載されている。
しかし、これらの機能は「利用者変更機能」との整合性がとれていない。

これは、現在までの様々な機能追加において、「利用者変更機能」を考慮していなかったためである。

現状ではあくまでも「利用者変更機能」は「利用者毎の履歴を切り替えるための機能」であるが、ユーザが期待しているのは「利用者を切り替える機能」であり、明らかに機能不足(名が体を表していない)である。

そこで、各種機能との整合性を確保するために、「利用者変更機能」の再構築を行う。


* 現状での問題点と要望 [#mcb66ee0]

現状での問題点・要望をまとめると下表のようになる。

|項番|機能|問題点・要望|実装上の問題|h
|1|スマート学習リスト|利用者を変更してもスマート学習リストが切り替わらない|スマート学習リストが利用者毎に用意されていない|
|2|オプション切り替え機能|利用者の変更時に、オプションも自動的に切り替わって欲しい|「利用者とオプションファイルとの対応付け」が必要|
|3|スキン機能|利用者の変更時に、スキンも自動的に切り替わって欲しい|2を実装すれば実現可能|
|4|学習モード|利用者の変更時に、学習モードも自動的に切り替わって欲しい|利用者毎の「学習モード」を保存する機能が必要。|


* 設計 [#t2d475f5]

** 実装手順 [#waffba4d]

下記の手順で実装を行っていく。

+ 「スマート学習リスト」関連
++ スマート学習リストを利用者毎に用意する(新たなテーブルが必要か?)
++ 利用者変更時に、スマート学習リストID(問題集ID)を自動的に切り替え、スマート学習リストを再読込するルーチンを追加する。
+ 「学習モード」関連
++ 利用者切り替え時に、学習モードも切り替える。
+ 「オプション切り替え機能」「スキン機能」関連
++ 利用者とオプションファイルとの対応表を新たに作る。
++ 利用者変更画面に「自動切り替え先オプションファイル」のような項目を追加する。
++ 利用者変更時に「自動切り替え先オプションファイル」が(その利用者に)指定されていれば、オプションファイルを自動的に再読込する。~
(これにより、スキンも自動的に切り替わる)

** 利用者変更画面 [#u946441f]

「実装手順」から「利用者変更画面」について検討する。

まず、利用者のエントリー毎に「プロパティ」を設定できるようにする。

「プロパティ」には、
- 利用者に関連づけられた「オプションファイル名」
- デフォルトの学習モード

の項目があれば十分。

 欲を言えば、この画面に「総学習時間」や「平均学習時間」、学習数などを表示できる
 と面白いかもしれないが、それは別の画面(統計、のような名前か?)に表示すべきだ
 ろう。

実際にはこれらに加えて、
- スマート学習リストのフォルダのID
- 現在のスマート学習リストの問題集ID


** スマート学習関連 [#gaed0939]

''基本方針''

利用者毎に「ユーザIDに対応した既定のパス」でスマート学習リストを割り当てる。

例えば、
 SmartLearning/user1/1
 SmartLearning/user2/1
 SmartLearning/user3/1
のようなパスを割り当てる。

項目としては、

- 「ユーザのスマート学習リストが格納されているフォルダのID」
- 「ユーザの(現在の)スマート学習リストの問題集ID」

の2つを保存する。


''データベーススキーマアップデート時の処理''

既存の利用者毎に下記の処理を行う
+ 「ユーザIDに対応した既定のパス」でスマート学習リストを生成する。
+ 「従来のスマート学習リスト」を「ユーザのスマート学習リスト」にコピーする。
+ user_property テーブルに「ユーザIDに対応したスマート学習リストID」を追加する。


''起動時の処理''

現在は、スマート学習リストIDは「決め打ち」だが、これを「動的に取得する」ように修正する。

これは、「user_propertyテーブル」からユーザIDに対応するスマート学習リストIDを取得する形になる。

もし、「ユーザIDに対応するスマート学習リストID」が存在しない場合は、自動的に「既定のパス」でスマート学習リストを生成し、その問題集IDを利用する。


''利用者切り替え時の処理''

利用者変更画面で OK ボタン押下後の処理は下記の通り。

+ スマート学習リストを再読込する処理を行う。


''利用者新規作成時の処理''

利用者変更画面で「利用者の新規作成」を行ったときの処理は下記の通り。

+ user_property テーブルの「スマート学習リストID」項目には、"" を割り当てる。

実際に必要になった際に、動的に「既定のパス」でスマート学習リストが生成され、その問題集IDが利用されることになる。



** 問題点いろいろ [#obe6f5ad]

- 学習モードをどこに保存し、切り替えるのか?~
現状では、学習モードは「前回の終了時のモード」をレジストリに記録している。~
最もわかりやすいのは、~
 利用者毎に『デフォルトの学習モード』を設定できるようにする~
ことか?


* 各ユーザ毎のオプションデータ割り当て [#a5eaa9ac]

各ユーザ(利用者)に別々のオプションデータを(強制的に)割り当て、切り替える機能を搭載する。

''起動時の処理シーケンス''
** 起動時の処理 [#xb4c5b42]

+ レジストリ読み込み(システム項目)
+ システムオプションの読み込み(レジストリ)
++ オプションファイル用フォルダパスの解決
++ カレントユーザ名解決
+ ユーザオプションの読み込み(レジストリ)
+ 「オプションファイル名設定済み」フラグが Off なら、各ユーザにオプションファイルを設定する
++ 各ユーザのオプションファイルが設定されていなければ、下記の処理を行う。
+++ ユーザに対応するオプションファイルパスを生成(userXX.ini)。
+++ ユーザオプションをそのオプションファイルに保存する。
+ (DBから)カレントユーザに対応するオプションファイル名の取得
++ 対応ファイルなし:パス生成、保存
+ オプションファイル読み込み
+ オプションファイルの読込み


** 終了時の処理 [#o55fe816]

+ オプションファイルの保存
+ ユーザ項目のレジストリ保存
+ システム項目のレジストリ保存


** 利用者切り替え時の処理 [#n6873c87]

+ 切り替え前のユーザに対応するオプションファイルの保存
+ 切り替え後のユーザに対応するオプションファイルの読み込み


** 利用者新規作成時の処理 [#k7c5d2b2]

+ 新しいユーザに対応するオプションファイル名の生成
+ そのファイルに現在のユーザオプションを保存する
(つまり、新規作成を行ったときの利用者のオプションが、新規ユーザに引き継がれる)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS