マイコミジャーナル

知りたい!を刺激する総合専門サイト


  1. パソコン

  2. アップル
  3. コラム
  4. OS X ハッキング!

【コラム】

OS X ハッキング!

134 虎飼い日記 その2 - 噂のSpotlightを手なずける

2005/05/16

海上忍

先週末、アップルストアからほど近い銀座の某料理店にて、現編集担当O氏と前担当K氏の3人で痛飲してしまいました。話題はTigerやら内輪話やらいろいろですが、我ら3人の李徴は酒量が過ぎて3匹のトラへと変身、翌朝には袁サンではなく胃酸にたしなめられることに……さらに私の場合、帰宅するとそこには猛虎と化した妻が(以下略)。

さて、今回はTigerネタの2回目、Spotlight関連コマンドの活用事例について。前回はmdfindやmdlsなど、CUIでSpotlightを使うための基礎知識を中心に取りあげたが、今回はインデックスファイルの再構築など管理面に照準をあわせて話を進めてみよう。

Spotlightのインデックスを再構築する

Tigerを初めて起動すると、操作レスポンスが悪い状況がしばらく続くはずだが、これはSpotlightが参照するメタ情報のデータベース(以下、インデックス)を作成することによる負荷上昇が原因だ。利用しているハードの性能やHDDの容量によっても異なるが、数分〜数時間程度は覚悟しておいたほうがいい。

そのインデックスは、一度作成されてしまえば基本的にメンテナンスフリー。ファイル操作が検知され次第自動更新される(この仕組みがSpotlightのキモだ)ため、基本的にはインデックスを管理する必要はない。インデックスはルート直下の「.Spotlight-V100」ディレクトリに保管されるが、root以外のユーザには閲覧さえ許可されていないことを考慮すると、通常は意識する必要がない存在と言っていいだろう。

しかし、インデックスを更新するプロセス(mdimport)の反応がなくなる、などの問題が頻繁に発生する場合には、mdutilコマンドを利用してインデックスを再構築したほうが問題を早期解決できるかもしれない。たとえば、一度インデックス全体を削除して作成し直すには、次のとおりコマンドを実行する。なお、ルート(/)ではなく特定のボリュームのみ再構築する場合には、「/Volumes/Ext1」といった要領でパスを指定すればOKだ。

Spotlightのインデックスを再構築する(要管理者権限)

$ sudo mdutil -E /

不可視領域を検索対象に加える

Tigerでは、/System/Library/Find/SkipFoldersに定義されたディレクトリは"不可視領域"として扱われる。Spotlightもこのルールに従い、/usrや/privateといったディレクトリについてはインデックスを作成しない。/usr/include以下に大量にあるヘッダファイルを探そうとしてもヒットしないのは、この仕様が原因だ。

このルールを無視する場合には、「mdimport -f 〜」を実行してインデックスを更新する。たとえば、次のとおりコマンドを実行すれば、前述したインデックスファイルを対象としたSpotlight検索が可能になる。

あるディレクトリを強制的にインデックスに加える(要管理者権限)

$ sudo mdimport -f /usr/include

特定のボリュームを検索対象から外す

システム環境設定の「Spotlight」パネルにある「プライバシー」へ登録することが、特定の領域をSpotlightの検索対象から外す基本だ。外付けディスクにもこの方法を利用できるが、索引の作成そのものはOFFにならない。だが、外付けHDDを接続するたびにインデックスが更新されることはいかがなものか? 全ボリュームがSpotlightの対象となることを望まないユーザもいるはずだ。

そのような場合には、特定のボリュームをインデックス自動作成の対象から外すことを検討してみよう。たとえば、「/Volumes/IDE1」としてマウントされているボリュームは、次のとおり「mdutil -i off 〜」とすれば、以後インデックスファイルが更新されなくなる。コマンド実行後には「mdutil -s 〜」を実行し、実際に対象から外れたことを確認してみよう。

特定のボリュームをインデックス作成対象から除外する(要管理者権限)

$ sudo mdutil -i off /Volumes/IDE1
/Volumes/IDE1:
        Indexing disabled for volume.

Spotlightを無効化する

Spotlightの便利さに慣れてしまった筆者には考えにくいが、「Spotlightなんざいらねえ、locateで十分でい」という昔気質のユーザには、Spotlightそのものを無効化するという手も用意されている。次のとおり/etc/hostconfigの「SPOTLIGHT=」行を「-NO-」に変更、システムを再起動すればOK。これで、Spotlight検索ができなくなるはずだ。

/etc/hostconfigの修正箇所

SPOTLIGHT=-YES-

SPOTLIGHT=-NO-


画像で見るニュース(パソコン)

スペシャル

  • Windows 7 大百科
  • パソコン/ビジネスPC メールマガジン創刊のお知らせ

特別企画

注目情報


特設サイトの必見情報



注目サイト