2005-09-27
■[OO]オブジェクト指向クイズ 
修行中の某氏が設定ファイルを読み込む部分のコードを書いていた。その某氏に質問してみた。
設定ファイルは BCE (MVC) のどれか?
間違った答えが返ってきた。
みんな、間違ってないよね?
■[Browser]Operaでメールアカウントの設定ができない 
自宅のパソコンでは、Opera を RSS リーダーとして使っているんだけど、会社のパソコンでは使えてなかった。不便だけどなかなか原因が分からないので我慢していたんだけど、今日、やっぱり使いたくなってぐぐってみた。
そしたら、同じことで困っている人がいた。(^^)
アカウント設定を行おうと思ったのですが 「メールとチャットアカウントの編集」 部分が灰色で表示され、選択できないのです。
でも、回答がなかった。orz
これは自分で解決するしかないと、別のパソコンに Opera を新規インストールして設定ファイルを比較する力技で原因を探ってみた。
まず、使用中の設定ファイルを全部バックアップしていつでももどせるようにし、そこに新規インストールした状態のファイルを上書きコピーしていった。
その結果、C:\Documents And Settings\username\Application Data\Opera\Opera\profile\opera6.ini を上書きしたときに「メールとチャットアカウントの編集」が有効になった。
で、opera6.ini の内容をチェックしてみたら、使用中の opera6.ini にだけにしかない行を diff で抜き出して mail を含む行を抜き出してみた。
C:\tmp> diff opera6.ini opera6.ini.new | grep -i mail < Mail Button Type=1 < Mail View Hotlist Splitter=16384 < Mail View List Splitter=21306 < Show E-mail Client=0 < Mail Out File < Mail Window=100,100,500,400,2 < Mail Filter Dialog=260,493,650,469,0 < Delete Mail Dialog=287,647,596,160,0 < Reindex Mail Dialog=393,637,393,179,0 < Search Mail Dialog=396,526,381,420,0 < Mail Panel Window=100,100,700,500,2 < Mail Index Properties Dialog=342,495,482,494,0 < EMail=xxxxxxxx@xxxxx.com < Mail View=0, 25600, 1, 1, 51200, 1, 2, 76800, 1, 3, 38400, 1, 4, 20480, 1, 5, 51200, 1, 6, 38400, 1
この結果を見ると、それっぽいのはこの行だけ。
Show E-mail Client=0
そういえば、かなり前に Opera のメール機能を使ったことがあったけど、とても使えるレベルじゃなかったので、メニューから消すためにこの設定をしたような記憶がある。
そこで、使用中の opera6.ini からこの行だけを削除して、もとの場所に書き戻してやった。そしたら、予想通り、「メールとチャットアカウントの編集」が有効になった。
■[OO]オブジェクト指向クイズの答え 
正解は Boundary。id:m_pixy さん正解。
設定ファイルは、Entity の一部を抜き出してファイル化したものにすぎない。設定ファイルは、Entity に対するひとつの Boundary 表現といえる。Boundary は、もとの Entity を表現する方法を自由に選択できる。例えば、XML形式でもいいし、iniファイルでもいいし、DB でもいい。
ちなみに、間違えた某氏は Model(Entity) と答えた。設定ファイルがなくたってプログラムは動くのよ。起動時の引数で指定するとか、GUI や CUIで設定させるとか、API 経由で外部から指定するとか。
←はてなカウンター
# m_pixy 『びびり気味ですが、同じく修行中なので回答。
B(V)?』
# 通りすがり 『Cですかね?』
# 通りすがり 『> 例えば、XML形式でもいいし、iniファイルでもいいし、DB でもいい。』
# 通りすがり 『> 例えば、XML形式でもいいし、iniファイルでもいいし、DB でもいい。
DBは言いすぎじゃないの。ファイルじゃないし。
つうか,ファイルもバウンダリとは思わんけど。』
# 元の通りすがり 『「コントローラの一部分が特定の形式で切り出されたもの」かな、という風に思ったのでCかなと答えました。イメージはPerlでrequireとかでそのままスクリプトの部分として取り込んでしまうような。
が、ユーザーとコントローラの仲立ちという風に考えれば、まぁ、バウンダリなんでしょうか。そもそもBCEの理解がたりてないのかな>自分
勉強しなきゃ。』
# 通りすがり 『設定ファイルはただのデータと考えればいいんだよ。
バウンダリ(大抵はUIだけど)を通してデータが取り込まれる。バウンダリがデータを持つなんてことはないんだよ。バウンダリの責務はデータの入出力だからね。』
# satoshis 『>ただのデータ
BCEならそれが正解かもしれませんね。MVCだと明らかにVなんですが、MVCのVを単純にBCEのBに対応させるのはちょっと強引すぎですね。
MVCのどれか?と設問すべきでした。反省します。すみません。>みなさま』
# 通りすがり 『うん。MVCならVというのはわかる気がするよ。’View’だからね。でも,MVCは範囲が広いから定義のリファーを提示した方がいいんじゃないかな。』