- 追加された行はこの色です。
- 削除された行はこの色です。
[[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]
+ 新しいユーザに対応するオプションファイル名の生成
+ そのファイルに現在のユーザオプションを保存する
(つまり、新規作成を行ったときの利用者のオプションが、新規ユーザに引き継がれる)