それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

高速で便利なWindows Vista/7の検索と仮想フォルダはどんどん活用されるべき

WindowsVistaの検索と仮想フォルダ機能は使われていない。可哀想だ。実はこれは革命的に使える機能だったのです。

まず実例を見て欲しい。

昨日作ったファイルを探すとき

検索ボックスに
日付=昨日

と入力する。結果はこれ

おもしろいね。ちなみに検索結果を疑似フォルダとして保存しておける。

一部の記事は結構嘘を書いてる。

Windows 7で採用されている検索エンジンは、VistaやXP用にもリリースされている「Windows Search 4.0」が使われている。しかしWindows 7では、VistaやXPと同じ検索エンジンが使われているとは思えないほど、使いやすくなっている。

http://ascii.jp/elem/000/000/429/429657/

VistaやXP??はぁ???Vistaの検索はXPのソレとは比べものにならないんだよ!

検索インデックス使うべきです。

XP時代のインデックスとは全く別物のインデックス機構が採用されています。Vistaの検索機能は、XP時代においてWindowsSearchと全く別物として呼ばれていました。また別のパッケージとして提供されていました。

WindowsXPでVista/7の検索機能が使いたいときは、いまでもWindowsSearchをインストールすれば使うことが出来ます。

XPならWindowsSearchをインストールしてください。

逆にVista/7でXP時代のインデックスや検索機能が欲しい人は、

コントロールパネル→プログラムと機能→Windowsの機能の有効化と無効化

からXP互換の検索機能を有効にしてあげてください。僕は遅くて不便なXPの検索に戻れないです。

And/ORも使える

以下はWindowsのヘルプより引用しました。

ブール フィルタを使用した検索

ブール フィルタを使用した検索
より正確な検索を行う別の方法として、ブール フィルタを使用する方法があります。ブール フィルタを使用すると、簡単なロジックを使用して検索語句を組み合わせることができます。次の表に例を示します。

フィルタ 用途
AND tropical AND island 「tropical」と「island」という単語が両方含まれるファイルを検索する場合 (これらの単語がつながっている必要はありません)。
NOT tropical NOT island 「tropical」という単語は含まれるが「island」という単語は含まれないファイルを検索する場合。
OR tropical OR island 「tropical」または「island」といういずれかの単語が含まれるファイルを検索する場合。
引用符 "tropical island" 「tropical island」と完全に一致する語句が含まれるファイルを検索する場合。
かっこ (tropical island) 「tropical」と「island」という両方の単語が順序に関係なく含まれているファイルを検索する場合。
> date:>01/05/06 特定の値よりも大きな値を含むファイルを検索する場合。この例の場合、01/05/06 より後の日付を含むファイルが検索されます。
< size:< 4 MB 特定の値よりも小さな値を含むファイルを検索する場合。この例の場合、サイズが 4 MB 未満のファイルが検索されます。KB や GB のような他のサイズを指定することもできます。

日付も差分形式で表現できる。

今週のTEXTファイルを探したいなら
date>last week AND *.txt

と書ける。

結果はこれ

以下は英語のヘルプページからの転載。

日付と数値は相対表記、しかも自然言語に近い形で表現できる。

Numbers and ranges
Relative dates Today, tomorrow, yesterday
Multi-word relative dates week, next month, last week, past month, or coming year. The values can also be entered contracted, as follows: thisweek, nextmonth, lastweek, pastmonth, comingyear.
Days Sunday, Monday ... Saturday
Months January, February ... December


http://www.microsoft.com/windows/products/winfamily/desktopsearch/technicalresources/advquery.mspx

Windows Search の形式

http://msdn.microsoft.com/en-us/library/windows/desktop/bb892885(v=vs.85).aspx


日本語がドコまで使えるか分からないけれど、検索フォルダで保存しちゃうとすごく便利。

TODO管理に使えます。

たとえば、ファイル名

「TODO_2010-06-30_明日までに後藤さんに連絡.txt」
「済_TODO_2010-06-30_明日までに後藤さんに連絡.txt」


の場合、検索条件を工夫すれば、仕事フォルダとTODOフォルダで同じファイルを使うことが出来ます。もうエイリアス(ハードリンク)はったりファイルをコピーしなくて良いんです。

ソースコードも管理できます。

「昨日作ったエクセルフォルダ」を作ることが出来ます。
「昨日作ったrubyフォルダ」を作ることが出来ます。

何に使えるかというと、TODOや、連絡事項に応用することが出来ます。とくに複数人でフォルダを使っているとき、どのファイルが変わったかすぐに分かるので便利です。

タグ付けも出来ます。

ファイルにタグを付けて管理することが出来ます。またタグ別にフォルダを作ることが出来ます。

デジカメの写真は柔軟に管理できます。

タグ付けと仮想フォルダを多用すれば

  • 素材タグを付ける
  • 人物タグをつける
  • 昔の彼女タグを付ける
  • 旅行先タグを付ける
  • 建物名タグを付ける

など、柔軟な運用が出来ます。


ただしタグはファイル内部に保存されるため、タグをサポートしないファイル形式(TXTなど)では使えません。残念。この問題を解決するためにWinFSがロングホーンで提唱されてたみたいだけど。。。どうなったんでしょうか。

検索条件に使えるもの

ファイルのプロパティーで見えるもの。詳細タブの中にあるもの全部。とファイルサイズ、作成更新日時。など

検索条件は仮想フォルダとして保存できる。

仮想フォルダを使えば、alias無くても生きていけます。いままで一つのファイルを複数のフォルダに入れることが出来なったので、手作業でショートカット(Alias)を作っていたのが不要になり、自動でファイルが仕分けられていき、管理の手間が10%は軽減されます。


XPしか使えないゆとり脳は誰ですか

XPとか設計が古くさくてもはや使い物にならないと思います。ファイルが増えつづけるなかで、ファイルに埋もれて整理も、仮想フォルダも作れないXPに未練はないです。とっととVista以降に乗り換えましょう。VistaでもWindows7と遜色ないので、大丈夫ですよ。


XPとか淘汰されればいいのに。

AeroキモいからVista嫌、と言った貴方はラピュタの大佐と同レベルです。


Aeroなんて素人のための目くらましです。ラピュタの心臓部が別のところにあったように、Vista/7の心臓部は別のところにあるのです。

Vistaの本質はAeroデスクトップじゃないです。

硬度のあるUAC、検索フォルダ、エクスプローラーの拡張。重ねて表示、そしてファイルコピーをしたときの名前やリモートデスクトップ、そしてdocument and settings の廃止。そして。。。

個人的には

  • document and settings の廃止
  • ファイルコピーしたときの名前

が気に入っています。

検索フォルダをプログラムから作る方法

検索フォルダの細かい仕様はWindowsSearchのドキュメントに記載されています。
ただし、どうやっても分からないのが日付の差分形式(Duration)。これが全然分からなかった。

まず、日付の検索条件をしている箇所を抜き出してみました。

<conditions>
<condition type="leafCondition"
  property="System.ItemDate"
  propertyType="string"
  operator="imp" 
  value="R00UUUUUUUUD-1DNNU" 
   valuetype="System.StructuredQueryType.DateTime">
<attributes/>
</condition>
</conditions>
どうやら次の値が日付らしい。
value="R00UUUUUUUUD-1DNNU"

どうやらこれがそうらしい。valueの"30NU"の部分を"10NU"にすれば「10日以内」になる。その前の"R00UUUUUUUUZZXD"と"30NU"の"NU"の部分は意味がわからなかった。

とりあえず、これで日付による範囲指定はできた。

http://d.hatena.ne.jp/gae/20081219/1229683976

Wikipediaで調べてみたら。日付の差分形式は次のように表現するようです。

PnYnMnDTnHnMnS
PnW
PT

もしかしたらISO日付なのかもしれない。

DurationsPnYnMnDTnHnMnS
PnW
PT


Durations are a component of time intervals and define the amount of intervening time in a time interval. They should only be used as part of a time interval as prescribed by the standard. Time intervals are discussed in the next section.

Durations are represented by the format P[n]Y[n]M[n]DT[n]H[n]M[n]S or P[n]W as shown to the right. In these representations, the [n] is replaced by the value for each of the date and time elements that follow the [n]. Leading zeros are not required, but the maximum number of digits for each element should be agreed to by the communicating parties. The capital letters 'P', 'Y', 'M', 'W', 'D', 'T', 'H', 'M', and 'S' are designators for each of the date and time elements and are not replaced.
P is the duration designator (historically called "period") placed at the start of the duration representation.
Y is the year designator that follows the value for the number of years.
M is the month designator that follows the value for the number of months.
W is the week designator that follows the value for the number of weeks.
D is the day designator that follows the value for the number of days.
T is the time designator that precedes the time components of the representation.
H is the hour designator that follows the value for the number of hours.
M is the minute designator that follows the value for the number of minutes.
S is the second designator that follows the value for the number of seconds.

For example, "P3Y6M4DT12H30M5S" represents a duration of "three years, six months, four days, twelve hours, thirty minutes, and five seconds". Date and time elements including their designator may be omitted if their value is zero, and lower order elements may also be omitted for reduced precision. For example, "P23DT23H" and "P4Y" are both acceptable duration representations.

To resolve ambiguity, "P1M" is a one-month duration and "PT1M" is a one-minute duration (note the time designator, T, that precedes the time value). The smallest value used may also have a decimal fraction, as in "P0.5Y" to indicate half a year. The standard does not prohibit date and time values in a duration representation from exceeding their "carry-over points" except as noted below. Thus, "PT36H" could be used as well as "P1DT12H" for representing the same duration.

Alternately, a format for duration based on combined date and time representations may be used by agreement between the communicating parties either in the basic format PYYYYMMDDThhmmss or in the extended format P[YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]. For example, the first duration shown above would be "P0003-06-04T12:30:05". However, individual date and time values cannot exceed their moduli (e.g. a value of 13 for the month or 25 for the hour would not be permissible).

http://en.wikipedia.org/wiki/Iso8601#Durations

ISO-8601形式のDurationを使って日付の差分を表現しています。

直近一週間なら
value="R00UUUUUUUUD-1WNNU" # 1D →1W
直近1ヶ月なら
value="R00UUUUUUUUD-1MNNU" # 1D →1M

これとWindowsSearchのドキュメントを読めば検索条件を次々プログラムから作ることが出来ます。仮想フォルダの検索条件はXMLなんでかんたんですね。

FenrirFSとか、WindowsSearchと互換性あれば使うのに。