Mac用FUSE

 FUSE(Filesystem in Userspace)はずいぶん前から、Linuxシステムに関する私のお気に入りの機能の一つだ。FUSEモジュールを利用すれば、Gmail、Flickrの写真、リモートのSSHサーバなど、あらゆる種類の革新的なリソースを直接的に自分のローカルマシンのファイルシステム内にマウントして、そのコンテンツを通常のファイルとまったく同じように利用することができる。そして今や同じことが、MacFUSEのおかげでMac OS X上でもできるようになっている。

 FUSEという仕組みは、今までもLinuxだけでしか利用できなかったわけでは(もちろん)ない。FreeBSDでも何年か前からFUSEが利用可能となっていて、Google社の技術者であるAmit Singh氏がMacFUSEを書くことができたのもOS XがBSD互換だったためだ。MacFUSEはFUSE用のカーネル拡張とライブラリで、今年1月に初リリースが行なわれた。

1-s
 MacFUSEプロジェクトのホームページでは、MacFUSE Core本体と、SpotlightFSとsshfsという2つのFUSEファイルシステムモジュールのインストール用パッケージが提供されている。なおMacFUSE Coreの最新リリースは0.4.0だが、現時点では、一つ前のリリースをダウンロードすることをお勧めする。MacFUSE Core 0.4.0は新しすぎて、SpotlightFS 0.1.0パッケージやsshfs 0.3.0パッケージなどのお薦めのモジュールを使用することができない。

 MacFUSE Core 0.3.0は、MacFUSEのページの「Downloads(配布物のダウンロード)」タブ経由でダウンロードすることができる。プルダウンメニューは最初は「Current Downloads(最新版の配布物)」に設定されているが、それよりも古いリリースを表示するためにはAll Downloads(すべての配布物)またはDeprecated Downloads(旧版の配布物)を選択すれば良い。

 MacFUSEを利用するにあたって、FUSE本体と様々なFUSEファイルシステムモジュールとを区別して考えるようにしておいた方が良い。その点が区別できてないと、用語の意味を理解できずに混乱してしまうかもしれない。

 一言で言えば、FUSEはAPI(アプリケーション・プログラム・インターフェース)だ。そのためMacFUSE Coreパッケージをインストールするということはすなわち、OS XシステムにFUSE APIの呼び出しに呼応して呼び出される呼び出しをインストールしているということだ。そしてsshfsなど特定のファイルシステムを利用するためには、そのための個々のパッケージをインストールする必要がある。MacFUSEプロジェクトによるsshfsとSpotlightFSの各インストール用パッケージは、どちらもそのようなパッケージに該当する。なおMacFusionプロジェクトからも独自のパッケージがさらに提供されている。

FUSEについて

 前回FUSEとsshfsについての記事を書いた際、KDEのKonquerorブラウザでfish://を使用したりGNOMEのNautilusでssh://を使用したりしても同じこと、すなわちリモートのSSHサーバ上のファイルをローカルのファイルと同じように扱うことができると指摘したコメントをいくつかもらった。しかし実際にはKonquerorやNautilusがやっていることはFUSEがやっていることと同じことではない。

 Konquerorの場合もNautilusの場合も、ユーザの操作は実際にはローカルにある一時的なコピーに対して行なわれ、更新後にファイルをリモートのマシンへアップロードするということを行なっている。そしてその際には単に、リモートマシンへのSSH接続を開いてファイル全体を行ったり来たりさせる転送をしているだけだ。

 一方FUSEを使った場合は、リモートのディレクトリがユーザのローカルのファイルシステムにマウントされる。つまり変更がリアルタイムでリモートのファイルに反映されるということだ。ユーザがファイルを開いたり読んだり編集したりするのは、原本である、リモートにあるファイルそのものであり、行ったり来たりする一時的なコピーではない。

 このように原本のファイルに対する操作をリモートから行なうことができるということこそ、NFSやSMBのようなネットワークファイルシステムが作成され、今日でも根強い人気を保っている理由だ。そのようなネットワークファイルシステムにはできるが、ファイルのコピーの行ったり来たりを繰り返す方法ではできないことも数多くある。例えばネットワークファイルシステムではリモートのログファイルの末尾の追加部分をtailで表示させることができる。またローカルのマシンでファイルを編集していてローカルのマシンがクラッシュした場合に失われるのは、最後に保存して以来変更した部分だけだ。さらに、各クライアントで同期を取ることを心配することなく、複数の場所から同じファイルを取り扱うことができる。

豊富なファイルシステム

 MacFuse Coreがインストールされていれば、既存のFUSEファイルシステムのほとんどをソースからコンパイルすることができる。ソースからのコンパイルをしたいという場合には、始める前に必ずプロジェクトのwikiにあるHOWTOのアドバイスをしっかりと確認するようにしよう。ソースからのコンパイルを特にしなくても良いという人は、プロジェクトから提供されているSpotlightFS用とsshfs用のパッケージを使用することで、より簡単に済ませることができる。

 SpotlightFSはOS X独自のSpotlight統合検索機能を発展させて、検索結果をあたかも通常のMac用ファイルシステムの一部であるかのように見せかけている。言い換えると、どのアプリケーションの中からでも、SpotlightFS/fooというフォルダにアクセスすれば、Spotlight検索でfooを検索した結果の全ファイル/ディレクトリに簡単にアクセスすることができるようになるということだ。

 それはそれで面白いが、日々の使用という観点からはsshfsの方がはるかに便利だと私は思う。sshfsは、Linux上でとまったく同じように機能する。つまり、MacであろうとLinux PCであろうと有料ホスティングサービスのウェブサーバであろうと、あらゆるリモートマシンとSSH経由で接続するために使用することができる。FTPクライアントを使用するよりも、ドラッグ&ドロップでファイルを転送することができ、ずっと簡単だ。また、sshfsを使用する場合、複数のコピー間での同期を考慮する必要がないため、設定ファイルの管理や編集もずっと簡単だ。

MacFusionショートカット

2-s
 MacFUSEプロジェクトのsshfsインストール用パッケージを使った場合、sshfsモジュールとともに、リモートのSSHサーバをマウント/アンマウントすることができるシンプルなGUIフロントエンドがインストールされる。ただしこのフロントエンドには「サポートされていない」という欠点がある。なお「サポートされていない」のここでの意味は「運が悪いと動かないことがある」ということだ。

 sshfs付属のGUIフロントエンドよりも優れたソリューションに、MacFusionがある。MacFusionは、MacFUSEと一緒に使用するように設計されているが別の開発者によって管理されているオープンソースのアプリケーションだ。MacFusionのインストール用イメージはプロジェクトのページからダウンロードすることができる。なお最新バージョンは1.1だ。

 MacFusionは、「menu extra」(画面トップにあるメニューバーのアイコン)から実行することができる。MacFusionには、sshfs用のモジュールと、FTPサーバ接続用のCurlFtpFS用のモジュールとが付属している。接続するためには、MacFusionアイコンをクリックしてQuick Mountを選択し、FTPまたはSSHの適切な方を選択する。するとダイアログがポップアップするので、接続先のサーバのアドレスと、接続先でのユーザ名と、必要であればその他の詳細オプション(接続先のディレクトリなど)を入力する。またMacFusionはパスワードの入力を要求するのだが、それ以降素早くアクセスすることができるようにKeychainにパスワードを保存しておくこともできる。

 マウントされたサーバはFinderの中でネットワークディスクとして表示され、通常の外部ドライブとまったく同じように閲覧/検索/使用することができる。接続を切断するためには、FinderでEjectアイコンをクリックするだけで良い。MacFusionでは、お気に入りのサーバのリストを保存することができる。また、MacFusionのアップデート版がリリースされているかどうかを自動的に確認させることもできる。

 MacFUSEとMacFusionの開発は連係して行なわれているわけではないため、新機能を享受するためには、両方のパッケージが更新されるまで待つ必要があることもある。現在まさにそのようなケースとなっていて、MacFUSE 0.4.0では(非常にクールに思えるのだが)ボリュームのアイコンを指定できる機能が追加されているのに対して、その機能を利用したMacFusionのアップデートはまだリリースされていない。

 けれどもそのような点は不便とは言え全体的に見ればかなり小さなことに過ぎない。MacFUSEとMacFusionを合わせて使えば簡単、高速、便利であり、リモートサーバへのSSH経由での暗号化された接続はすべてのアプリケーションで透過的に利用可能になっている。これだけで十分利用に値するのではないだろうか。

NewsForge.com 原文