できるものをつくってみた。まずは動画をみていただければと思います。
概要
-
Windows形式のファイルパスを開ける: Windows形式のネットワーク上のファイルパス(スラッシュ
\\
で始まるもの)のテキストを選択してServices
からAutomatorを呼び出すと、Finderでそのパスを開ける。 - マウントポイント調整: 内部的にマウントポイントを調整しているため、開いた後、そのまま親ディレクトリにも行ける。
- ファイルシステム上のファイルやディレクトリを選択したあと、Windows形式のパスをクリップボードにコピーできる。
- 認証機能: ユーザ名やパスワードが必要な場合、入れられる。また、一部スクリプトを改変すれば、毎回入力しなくても、常に固定のユーザ名とパスワードを使うことも可能。(GithubのCustomizeを参照)。
インストール方法
$ git clone https://github.com/greymd/osx-open-winfs.git
$ cd osx-open-winfs
$ sudo make install
ソースは下記で公開してます。
Github: https://github.com/greymd/osx-open-winfs
環境
手元のMac OSX Yosemite 10.10.5の端末上で動作は確認。多分最近のなら動く気がします。
その他、細かい話
なぜ作ったか?
-
他のQiitaの記事でもありましたが、職場を始めとした共同環境で、Windows形式のファイルパスをSlack上などでやり取りをされると、Macユーザとしては割とストレスです。
-
WindowsのパスをMacで扱う方法に関しては、幾つかソリューションが存在しましたが、いずれも欠点があったため、それを直したいと思いました。
既存手法との違い
PathCon
「MacとWindowsのファイルパスを相互変換できるサイト」です。
すなわち、Windowsのパスを受け取ったら……
- ブラウザ開く→パスを変換→コピー→Finderを開く→サーバに接続
という手順を踏まなければいけません。これはさすがに面倒です。とはいえ、Webサービスなので、人様のMacを操作する時も気軽に使えるのは強いです。
MacのAutomatorを使ってWindowsのファイルパスを変換しつつFinderで開く方法
あるブロガーさんが提案した方法。Automatorを使っています。テキストを選択してメニューを開いてクリックするのみ。気軽に開けます。ただ、個人的には、一旦マウントしたら、それより上のディレクトリに行けないのが辛いです。(これは、PathConを使って開いても同じです。)
例えば\\ホスト名\share\mydirectory
というファイルパスを渡されて、それを開くと、ボリュームの最上位マウントポイントが最下位のディレクトリであるmydirectory
になります。
つまり、こんな感じにそれより上にはいけないです。
もしWindowsユーザに\\nas\共有\プロジェクト一覧\プロジェクトA
などというパスを渡され「あ、ごめんパス間違えた、一旦親ディレクトリに戻ってプロジェクトB
に行って!」などと言われたらかなりのストレスです。結局手作業でプロジェクトA
という文字列を削除して、再度マウントして移動することになります。オマケに単一のマシンが異なるマウントポイントで同じネットワークボリュームをマウントするという大変気持ち悪い状況が完成します。私には耐えられませんでした。そこで、多少面倒でしたが、上で紹介したものを作りました。
ソリューション
上で紹介した私のスクリプトは、Automator経由でシェルを叩き、そこからmount_smbfs
コマンドを叩いてマウントしています。既存手法が採用している「smb://...
の形式に変換→Finderの機能でマウント」というアプローチは取っていません。
Windowsで使われるSMBファイルシステムのパス形式は\\ホスト名\ボリューム名\サブディレクトリ...
と続きます。そこで、一旦はボリューム名までをマウントポイントに指定してマウント、その後、全体のパスをFinderで開く、という操作をしています。内部的にはopen
コマンドを使っているため、ファイル名を直接指定したばあいマウント→所定のアプリケーションでファイルを開く、という流れになります。
余談
自分の手元以外の環境で試してないので、なにかソースにおかしい点があれば、是非教えて下さい。。そもそも、AppleScriptを書くのも、自分で作ったworkflowを配布するのも、コレが初めてなので、配布方法が正攻法かどうかもよくわかってません。。