MacBook Pro retina ディスプレイの設定(3)

Mountain Lion が発売されたので、早速インストールしました。Mountain Lion についてはいずれ別の機会でまとめます。今日はちょっとした自作のツールを一つ紹介します。

Mac のファイル管理について

以前はファイルを項目ごとにフォルダに整理して管理していました。これも一長一短でコウモリ問題などが発生し、ファイルをどこに保存したのか忘れ、探し回る日々を過ごしていました。

しかしながら、Mac に Spotlight が搭載されてからは、ファイルがどこに保存されていても瞬時に表示されるため、そこまでフォルダ分けを気を使う必要がなくなりました。ただし、その代償として「ダウンロード」フォルダにファイルが溜まり続け、見るも無残な状態に成り下がっている人が多いのではないかと思います。適当なタイミングで断捨離をするのですが、数が多いと滅入りますし、いちいち選ぶのも面倒です。

また、rMBP は研究連絡で持ち運びたいため、職場の個人情報は極力持ち歩きたくありません。そのため、職場の授業などの情報は研究室の iMac ですべて管理し、教務室の rMBP からリモートデスクトップを使ってアクセスする形を取ろうと思っています(afp 共有でもいいのですが、せっかくのバージョン管理機能が使えないので悩み中)。

問題なのは、メールで来る情報です。これらをいちいちリモートデスクトップで処理するのはかなり面倒なので、一昨日書いたように IMAP 接続にして、rMBP でも読めるようにしました。様々な提出書類などがメールで寄せられるため、ダウンロードフォルダは職場の情報で溢れかえります。そこで、いつものごとく手抜きのスクリプトを作ってみました。設計指針は以下のような感じです。

  • iMacでは以下のようなフォルダ構成を取ります
    • by_kind
      • 00.jugyou.localized (Finder からは 「00.授業」と見えます)
        • 001.ip1.localized (Finder からは 「001.情報処理I」と見えます)、以下授業分続きます
      • 01.jimu.localized (Finder からは 「01.事務」と見えます)、重要な事務書類で分類分けが可能で頻繁に使うものだけを入れます。
    • by_year
      • 2011
        • 2011_12
          • 2011_12_15
            • この日に作成したファイルを入れます
        • 2012_01
          • 2012_01_10
            • この日に作成したファイルを入れます(年度なので2011フォルダに入れます)
  • by_kind には、種類のまとまりが強いもの、重要なもの、年度を超えて使うものなどを入れます。こちらは手動で分類します。一方、とりあえず保管するものは by_year の下に上記の構成でいれます。
  • 手動でフォルダを作ったりするのは非常に面倒なので、後者の処理を自動化します。
  • この手の仕事はスクリプトで書くのが便利ですが、ファイル名の指定が面倒です。そのため、いつもの Automator を使います。

move_ymd Automator アプリの作成


  • 見にくいのでスクリプトを書き出してみました。こちらは、教務室の rMBP から使う場合のスクリプトです。あらかじめ、iMac のホームをマウントしておきます。なお、研究室の iMac でも同じスクリプトを使いますが、ローカルファイルへのアクセスになるので、Heading の Volumes のところを Users に変更します(自動判別してもいいんだけど……)。
require 'FileUtils'
Heading = '/Volumes/hkob/by_year'
LogFile = "#{Heading}/move_ymd.log"
if File.exists?(Heading)
	file = open(LogFile, "a") do |file|
		ARGF.each do |f|
			fn = f.chomp
			d = File.mtime(fn)
			yn = d.strftime("%Y").to_i
			mn = d.strftime("%m").to_i
			yn -= 1 if mn < 4
			y = "#{Heading}/#{yn}"; Dir.mkdir(y) unless File.exists?(y)
			ym = d.strftime("#{y}/%Y_%m"); Dir.mkdir(ym) unless File.exists?(ym)
			ymd = d.strftime("#{ym}/%Y_%m_%d"); Dir.mkdir(ymd) unless File.exists?(ymd)
			FileUtils.mv(fn, ymd);
			file.print "#{fn} -> #{ymd}\n"
		end
	end
end
  • アプリケーションとして保存します。
  • Automator で作成したアプリケーションのアイコンは、すべてロボットになってしまうので、情報を見るの画面で適当なアイコンを貼り付けます。
  • Applications フォルダなどにコピーしておきます。
  • このアプリを Finder のツールバーに置きます。以下の図のようになります。右側の FILE と書かれたアイコンが今回作った make_ymd アプリです。ちなみに左は同じように作った makebb アプリです(後で紹介するかも)。


move_ymd アプリの使い方

  • 移動したいファイル群を選びます。複数あっても構いませんし、フォルダも選択できます。
  • ファイルを選択した状態で、先ほどツールバーにおいた move_ymd アプリをクリックします。

この結果、上記のスクリプトが実行されます。選んだ個々のファイル、もしくはフォルダの更新日付を見て、その日付のフォルダを作成し、そこに移動する作業を繰り返します。実行してしまうとファイルがどこに行ったのかわからなくなってしまうので、by_year フォルダの下の move_ymd.log に作業状況が記録するようにしています。

導入した結果

  • rMBP から iMac に移動する手間が、「選択してワンクリック」で済むようになり、ダウンロードフォルダの混沌はなくなりました。
  • rMBP に職場の情報が極力残らなくなりました。
  • 日ごとにファイルがフォルダとしてまとまっているので、断捨離がやりやすくなりました。
  • 年度ごとに大きな区切りになっているので、古い情報をアーカイブしやすくなりました。

Automator + シェルスクリプトの組み合わせはかなり協力なので、今後もこんな手抜きアプリをたくさん作っていきたいと思います。