開発環境としてのMac OS X Leopard

なかなかrootにならせてくれない、ハードウェアを選ばせてくれない、設定ファイルをviでいじらせてくれないなど、不自由なUNIX : Mac OS Xですが、それ故の自由が何物にも代え難い今日この頃。Leopardになってcron+pdumpfsの仕事まで持って行かれてしまいました。

前回のTiger版カスタマイズメモに引き続いて、Mac OS Xのカスタマイズを書いておこうと思います。

Terminal.app

タブ機能が実装されたりssh-agentがKeychainと統合されたりと、Leopardで驚異的なアップデートが行われたターミナル周りですが、まだまだ改善できる余地があります。問題は以下の3点。

  • HomeキーとEndキーが使えない
  • 色が見にくい
  • ショートカットキーが使いにくい


まずHomeキーやEndキーですが、これは環境設定で変更できます。Terminal.appの環境設定の「キーボード」タブで、以下の設定をすればOKです。

キー 修飾キー 操作 操作の内容
end なし 文字列を下記のシェルへ送信 \033[F
home なし 文字列を下記のシェルへ送信 \033[H

(どうでもいいですが「文字列を下記のシェルへ送信」は「下記の文字列をシェルへ送信」の誤訳ですよね…)

LeopardになってTerminal.appの設定のインポート/エクスポートができるようになりました。私の設定を↓ここに置いておくので、これをインポートしてもOKです。


続いて色が見にくい問題ですが、背景色や文字色は簡単に変えられるのに、なぜかANSI Colorは変えられません。Tigerでお世話になっていたTerminalColorsは、現時点ではLeopardのTerminal.appには対応していません。
そんなところに、Leopard版Terminal.appでもANSI Colorを変えられるようにするプラグインを開発された方が現れました!おかげさまでTerminalColoreopardをインストールすれば解決です。
個人的にはRedを(255,50,20)、Blueを(110,110,255)にするのがいい感じ。


最後にショートカットキーが使いにくい問題ですが、これはMac OS Xの環境設定で設定を変えてやればOKです。
環境設定(Quicksilverで起動するにはSystem Preferences.app)の「キーボードとマウス」の「キーボードショートカット」タブで、Terminal.app用の設定を追加します。「アプリケーション」に「ターミナル」を選択、メニュータイトルに「前のタブを選択」、キーボードショートカットに「Shift + ←」を入力、というような流れでカスタマイズできます。
Terminal.app以外のアプリケーションでもカスタマイズできて、たとえばSafariで検索窓にフォーカスを持って行くショートカットは押しにくくてサッパリですが、ここでカスタマイズできます。

MacPortsをホームディレクトリにインストールする on Leopard

LeopardMacPortsをホームディレクトリに入れるには、↓このconfigureオプションでMacPortsをソースからビルドすればOKです。ユーザー権限でMacPortsが使えます。

$ ./configure --prefix=$HOME/ports --with-install-group=`id -gn` --with-install-user=`id -un` --with-tclpackage=$HOME/ports/tcl
$ make
$ make install

それから~/.bash_profileでPATHとDYLD_FALLBACK_LIBRARY_PATHを設定しておきます。

export DYLD_FALLBACK_LIBRARY_PATH=$HOME/self/usr/lib:$HOME/self/lib:$HOME/ports/lib
export PATH=$HOME/ports/bin:$PATH


GNU coreutils派な方は、まずcoreutilsパッケージを+with_default_names付きで入れておくと吉です。

$ port selfupdate
$ port install libiconv +enable_cp932fix
$ port install coreutils +with_default_names
$ port install findutils +with_default_names
$ port install wget
$ port install nkf
$ port install ruby
$ port install rb-rubygems
$ port install python24 +puredarwin
$ port install mercurial
$ port install subversion
$ port install -f svk


MacPortsをホームディレクトリにインストールすると、たまにインストールに失敗するパッケージがあります。だいたいはパーミッションの設定に失敗しています。イントールが中断した時点で↓このコマンドを実行して、再度port installするとうまくいくことがあります。

find ~/ports/var/macports/sources/rsync.macports.org/release/ports/lang/python24/work/destroot/Users/`id -un`/ports/ -gid 0 -exec chgrp `id 
-gn` {} +
# lang/python24のところをパッケージ名に置き換える

ディスプレイを閉じた状態でノート型Macを使う

ご存じの方も多いかと思いますが、MacBookMacBook Proは外部ディスプレイとキーボードをつなげて、フタを閉じた状態で使うことができます。正式名称は「リッドクローズドモード」と言うらしいです。(Mac OS X 10.5 Help 「ディスプレイを閉めた状態でノート型コンピュータを使用する」
私は自宅でも手元のマシンにはMacBookを使っていて、外部ディスプレイ+キーボード+ペンタブレットで使っています。帰ってきたらフタを閉じたままのMacBookにもじゃもじゃとケーブルをつないで、そのまま作業を再開できます。UIは常に見慣れたMac OS Xで、ブックマークやターミナルの設定などを同期する必要もなく、至極快適です。

「ダウンロード」「ライブラリ」を「Downloads」「Library」にする

Finderでディレクトリを移動するとき、ホームディレクトリにある「ダウンロード」や「ライブラリ」ディレクトリは名前が日本語なので、キーボードで移動できなくて困ります。これはローカライズされたディレクトリに入っている、.localizedファイルを削除するか移動すればOKです。ただし有効にするには再ログインが必要なので注意。

$ mv ~/Downloads/.localized{,.disabled}
$ mv ~/Library/.localized{,.disabled}

参考文献:Mac OS X 10.2から搭載されたフォルダ名のローカライズ(国際化)機能

fcdとopen .

fcdが便利です。

Finder で選択されている場所に cd する(ターミナルの working directoryを変更する)シェルスクリプト(中身はほとんどAppleScript)です。
ターミナルで 「fcd」とタイプするだけで、Finder で選択されている場所に簡単に移動できます。

fcdの逆、つまりターミナルで現在いる場所をFinderで表示する場合は、open .でいけます。~/.bashrcにalias here="open ."と書いておくと、得も言われぬ快感に浸れます。

pbcopy/pbpasteでUTF-8を使う

pbcopyは標準入力をクリップボードに貼り付けてくれる便利なコマンドなのですが、デフォルトだとShift_JISしか通してくれません。そこで~/.bash_profileに↓を書いておくと、UTF-8が使えるようになります。(pbcopy で UTF-8 テキストを扱う。より)

export __CF_USER_TEXT_ENCODING=${__CF_USER_TEXT_ENCODING/:*:/:0x08000100:}
#export __CF_USER_TEXT_ENCODING=0x1F6:0x08000100:14

↓こんなaliasを~/.bashrcに書いておくのも良いかもしれません。だいたいどんな文字コードでもclipクリップボードに貼り付けられます。

# 標準入力をUTF-8に変換してpbcopy
alias clip="nkf -w | pbcopy"

nkfMacPortsで。

screencaptureコマンド

Command + Shift + 3でスクリーンキャプチャが取れるのですが、3だったか4だったかすぐ忘れるし、ウィンドウ単位のスクリーンキャプチャを取りたかったりもします。Grab.appもいいですが、screencaptureコマンドが素敵です。Mac OS Xに標準で入ってます。↓こんな感じで使えます。

$ screencapture -w -i window.png

Multicast DNS & DNS-SD

いわゆるZeroconfとかBonjourと呼ばれる代物です。内向きDNSを立てなくても、「ホスト名.local」という名前でLAN内で名前解決ができます。これが便利で、メンテナンスはいらないし、「192.168....」などとIPアドレスを打ち込む必要もありません。
LinuxFreeBSDではAvahiというフリーな実装があって、Multicast DNSに応答できます。それからnss-mdnsを入れると名前解決もできるようになります(/etc/nsswitch.confでMulticast DNS!)。
WindowsにはAppleからBonjour for Windowsが配布されています。
我が家のLANはVMも含めて全てのマシンがMulticastDNSに対応していて、とても快適です。


BonjourBrowserを使うとLAN内のMulticast DNS対応マシンを一覧できます。


Mac固有のコマンドを調べる

pbcopyやscreencaptureコマンドなど、Mac OS Xには固有のコマンドがいろいろありますが、/usr/share/man/man1を"Mac OS X"という文字列でgrepすると他にも見つかります。ただmanpageはgzipで圧縮されているので、grepの代わりにzgrepを使う必要があります。

$ zgrep -l "Mac OS X" /usr/share/man/man1/*

その他メモ

Tips他
UNIX 狂が使う Mac OS X (Leopard編)
さらにUNIXLeopard
Inside Leopard: X11.appと日本語環境の問題
LeopardでのX11
XQuartz
X11.appのアップデート
QLPlugins
QuickLookプラグインまとめ
QuickLook Plugins List
QuickLookプラグインまとめ
アプリケーション
Quicksilver
Quicksilver
Growl
Growl。
KeyRemap4MacBook
カーネルに潜り込んでキーマップをカスタマイズ
PCKeyboardHack
Windows 用の日本語キーボードにある「無変換」「変換」「ひらがな」キーを Mac で使えるようにする
Witch
アプリケーション単位ではなくウィンドウ単位でウィンドウを切り替えられるようにする
日めくり
メニューバーに日めくりを表示してくれる
CotEditor
GUIエディタ
Ensemble2
MacなRSSリーダー
Adium
IMクライアント
Colloquy
IRCクライアント
LimeChat for OSX
IRCクライアント
Cyberduck
FTPクライアント
CleanArchiver
キレイに圧縮してくれるアーカイバ
The Unarchiver
いろいろ対応しているアーカイブ展開ソフトウェア

※2008/2/7: メモ追加, 文章を少し修正,「Mac固有のコマンドを調べる」を追加