Microsoft Document Explorerの使い方メモ
皆さんは、Microsoft Document Explorer ってソフトをご存知でしょうか。
何のことはない、VB なんかについてくるヘルプのことなんですが。
もう少しきちんとお話しすると、VB2008 などについてくるヘルプ(これを msdn Library といいます)はhtml ファイル(正確には複数の html ファイルや各種関連ファイルをジャンルごとにひとつのファイルにまとめて圧縮してあります)になっていまして、Web ブラウザでも見られるようになっているわけです。(これも正確には ie で、ということになるでしょうか。FireFox や Opera で見られるかどうか私は知りません。)
で、もちろん Web ブラウザで見てもいいんですが、もうちょいヘルプとして使いやすい操作性にならないものか、と専用のブラウザがあるわけです。
それがMicrosoft Document Explorer。
ヘルプの各ページを表示する領域の実体はieですので、URL を叩いてやれば一般の Web ページも見ることができます。
さて、今回はこの Microsoft Document Explorer (MDE) の使い方についてちょいとメモを。
いや、自分がよくわからなくて調べたので、単に備忘録なわけですが。
1. 検索の高速化と信頼性のトレードオフ
MDE は Ver.9 (VB2008 添付版)になってから、ずいぶん検索にかかる時間が短くなったように感じます。
しかしそれでも、少しでもより速い検索環境がほしい、それがプログラマ魂。
しかしまぁそんな都合のいい高速化手段はありません。
ので、速くしたいなら抽出対象範囲を狭める、というのが一般的な解決策となるわけです。
試しに VB2008Exp 添付版の MDE をインストールデフォルトの設定状態のままで検索をかけてみると、
| MSDN オンライン(日本語) | Web で提供している msdn ライブラリ(日本語版ヘルプ)。 スタンダード。 |
| MSDN オンライン(英語) | Webで提供している msdn Library (英語版ヘルプ)。 日本語に翻訳されていない情報も多いです。 また、訂正情報や追加情報は英語版で書かれてから日本語に翻訳されますので、日本語版のほうが遅い、または訂正部分は追加翻訳されない場合があります。 |
| Codozone コミュニティ(日本語) | マイクロソフトと提供契約みたいなのを結んだっぽい協力サイト。 どんな契約なのか、そもそも契約なのかは私は知りませんけれども。 日本からは AILight.jp、@IT、Codezine、Insider.NET、IT Pro が参加しています。 |
| Codozone コミュニティ(英語) | マイクロソフトと提供契約みたいなのを結んだっぽい協力サイト。 日本語サイト以外では16サイト(内韓国語サイトが1つ)、私でも知っているようなメジャーサイトがけっこうあります。 |
| 質問(日本語) | msdn フォーラム(日本語)から。 |
| 質問(英語) | msdn Forum(英語)から。 |
| ローカルのヘルプ | 自分のマシンにインストールされたヘルプファイルから。 |
と、検索対象ソースが7つも。
ここから、自分が参照しないだろう部分を取り外せばいいわけですね。
私の場合は、「Codozone コミュニティ」をざっくり切ってしまっています。
登録サイト以外にも参考になるサイトや blog はたくさんありますので、こっち方面を調べるなら MDE ではなく Google を使っちゃうので。
あと、「質問」も切っちゃってます。
日本の msdn フォーラムってキーワード提示かリンク提示しかない回答が多く、あまり役に立たないので。
アメリカの msdn Forum は Microsoft の中の人も参加して建設的に、質問者が理解納得できる結論まで編み上がる議論が多くあって読み応えはあるんですが、これも一般の Web 検索で検索対象になっちゃいますし。
MSDN オンラインは…最新情報はここが一番早いです。が、どうも抽出の精度が荒く、あまりキーワードにきちんと引っかかっていないページまで抽出されがちのように思えます(これは Web ブラウザで msdn オンラインの検索欄を使っても同じ)。しかも上位 100 件で切られちゃいますので、目指す情報にたどり着くのはなかなか難しいように思います。
検索時間は、下手するとローカルヘルプの検索よりも速い(通信回線の太さやマシンのスペックにもによりますが)です。
ローカルのヘルプを切っちゃうと、MDE を使う意味はあまりないんではないでしょうか。
自分の使い慣れた Web ブラウザで Web 検索かけちゃった方が速いですから。
ただし、Express Edition をお使いの方は、ローカルヘルプがダイジェストになってしまっており、目指す情報がそもそも存在しないケースがかなりあります。ので、MSDN オンラインとの併用をせざるを得ない状況です。
とまあ各プロバイダ(ソース)によって長所短所がありますので、自分の好みに合わせてなるべく少ない検索対象範囲にするのがいいかなーと思います。
対象の指定は、メニューから[ツール]-[オプション]→[オプション]ダイアログ→[ヘルプ]-[オンライン]-[検索するプロバイダ]で設定できます。
ついでに、日本語のみを対象としたい場合は、[ツール]-[オプション]→[オプション]ダイアログ→[ヘルプ]-[全般]-[英語のトピックも表示する]のチェックを外します。
これで、MSDN オンライン・Codozone コミュニティ・質問のそれぞれ(英語)が検索対象外となります。
2. 検索キーワード
基本的な検索キーワードの書き方は「フルテキスト検索のヒント」(msdn オンラインのページ と Exp 版ローカルヘルプのページ )に記述されています。
が、どういうわけかこのページは msdn オンラインでは左側の目次ツリーと連動しません。周辺のページまでまとめ読みして概念を理解する、ってのはツラいです。
ので、このあたりはローカルヘルプで読むのがいいように思います。
3. デフォルトの抽出条件は OR
例えば「express」で検索してみると、VB2008Exp 添付版のローカルヘルプでの抽出結果は159件、ヒットページの1件目は「SQL Server 2005 Express Edition」となります。
では VB2008Exp に絞り込もうと思って、「visual basic 2008 express」で検索してみます。
…結果500件(上限)。増えちゃうわけです。
VB2005 添付、または msdn サブスクリプションで配布されている msdn ライブラリ / MDE でも同様の結果となります。キーワードを増やすたびに増えていく。
これは、複数のキーワードを列挙した場合は「そのいずれかの単語があればヒットする」、つまり「OR」条件となっているからです。
VB2005 添付 MDE のヘルプでは「AND」となる、と記述されていたので、私は当時かなり混乱しました(;-;)。
で、列挙時に「AND」にするか「OR」にするかは、実はオプションで切り替えることができるということについ最近気づきました。
メニューから[ツール]-[オプション]→[オプション]ダイアログ→[ヘルプ]-[全般]-[ローカルの検索結果での部分的な一致を含める]にチェックがついていれば「OR」、外せば「AND」です。でもってインストールデフォルトはチェックがついていたんでした。
このチェックを外して検索してみると、117件まで絞り込めました。
4. 結合演算子の明示
チェックと無関係に、明示的に AND / OR を設定することもできます。
「visual AND basic AND 2008 AND express」とすると、設定がどうでも「すべての AND」条件となります。
AND / OR は、大文字で記述します。小文字だと演算子として認識されません。
「.」(ドット)は、原則として「 」(スペース)と同様の区切り文字として認識されます。
ので、「部分的な一致を含める」設定で「windows.forms」を抽出すると、「windows」または「forms」のどちらかが含まれているページがヒット、332件の結果となります。
「windows.forms」という複文節で検索したい場合は、キーワード全体を「"」(ダブルクォーテーション)で括ります。
結果66件、ページへのマーキングも「windows.forms」でひとつのマークとなります。
VB2008Exp に関する情報を含み、VB6 からのアップグレード系のページは邪魔だから排除したい場合は、「NOT」演算子を使います。
「visual AND basic AND 2008 AND express NOT "6.0"」(「6.0」は「.」を含むので「"」で括ります)とすると結果104件、「Visual Basic 6.0」を含むページが排除されます。
5. 結合演算子の順序の影響
抽出条件の演算子には、優先順位がありません。また、「( )」のような優先順位を指定する文法もありません。(「( )」は、単に検索文字列の一部となります。)
ではどういう順で抽出条件を組み立てているかというと、どうも単純に左から判断しているようなんですね。
てことで、ちょっと確認してみました。
まず、「"visual basic express" AND 2008」で抽出すると40件ヒットします。
「2008」だけだと422件、「2008」を含んで「"visual basic express"」を含まないページは「2008 NOT "visual basic express"で抽出でき、結果は382件。
422 = 40 + 382
で合ってますよね。
同様に、「"visual basic express" AND 2005」で13件、「2005」で90件、「2005 NOT "visual basic express"」で77件。これも、
90 = 13 + 77
でいいですよね。
ついでに、「"visual basic express" AND 2008 AND 2005」だと10件、「2005 AND 2008」だと53件となりました。
さて、ここから。
「"visual basic express" AND 2008 OR 2005」だと、120件となりました。
これは、「"visual basic express" AND 2008」の結果40件に「2005」の90件が追加され、両方にヒットして重複する分「"visual basic express" AND 2008 AND 2005」の10件を引いた件数なわけです。
120 = 40 + 90 – 10
これに対し、「2008 OR 2005 AND "visual basic express"」だと43件となります。
これは「2008」または「2005」でヒットした結果の中からさらに「"visual basic express"」を抽出しますので、「"visual basic express" AND 2008」の40件と「"visual basic express" AND 2005」の13件を足して、重複分「"visual basic express" AND 2008 AND 2005」の10編を引いた件数です。
43 = 40 + 13 – 10
ということで、条件(というか演算子)の記述順がそのまま優先順となります。
6. よくわからない
演算子には、あと NEAR と THRU があります。
NEAR は、「a NEAR b」で「a の8語前後内に b がある」という抽出条件になります。が、英語はともかく日本語で「どこまでを『1語』と数えるか」がなんかわかりにくいです。
ので、まあなんかそんな感じーで使いたい時にはいいかもしれません。
もうひとつ、THRU は全然わかりません。
検索文字列から除外されるキーワードにはなっているらしいんですが、「検索式における論理演算子」( msdn オンラインのページ と Exp 版ローカルヘルプのページ )には記述されていないんですよ。
どうしろってんだい。
