Mac でハック
(その 1: 基礎環境編)
目次
1. はじめに
1.1 世に裏切り者の種は尽きまじ
1.2 右往左往の成果?
2. 環境整備
2.1 こけつまろびつ (Mountain) Lion
2.2 MacPorts と基本コマンドのインストール
3. Application の設定
3.1 Terminal.app と Zsh
3.2 Emacs
3.3 Python
1. はじめに
1.0 改訂のお知らせ
本稿は古くなっています。 改訂版を御覧下さい。
1.1 世に裏切り者の種は尽きまじ
ちょっとしたでき心で(実は自分のチョンボのせいで) 「Mac でオタク」を始めて、もうかれこれ 7 年くらいにもなる。 「とりあえず Linux Machine の frontend になれば良いや」 というくらいの気持で始めたが、使ってみると、オタクにも MacOSX はなかなか快適。 どれくらい快適かというと、「(Server 用途はともかく) Desktop 機や Lap Top 機ではもう Linux に帰る気は失せてしまう」くらい……
実は、MacOS へ出戻ってから暫くは、少々疚しいような気もしていたのだが、 今となっては、何の負い目もない。(いや、本当は "Live Free, or Die" なんて標語を見ると、どこかがチクリとするんですけどね。) なにせ世の中はどうやら「Mac でオタク」どころか「Mac でハック」まであたり前の事になったようなのである。 それを裏付ける事例には事欠かない
- もう Linux Desktop は死んだ、という事になってるらしい。しかも、MacOS X に殺されたんだとか……
- Emacs for Mac の完成度は Carbon 版あたりで Unix/Linux 版を追い越していた。(← 個人の印象です。)Cocoa になってから少し遅れを取った事も有ったようだが、 また追い付いている。むしろ今や、Native Aqua 版(というか Emacs 界で言うところの GNUstep 版)の方が、X11 版より進んでいる(ような気がする。)
- Python でも MacOSX のサポートは手厚くなってきているようで、 バイナリパッケージがソースのリリースと略同時に出る。 何より感心するのは、Python-3.x では、Mac 独特のモジュールが無くなっている事 (モジュールのリストには、 後に "(Mac)" とつくモジュールは無い。) これはつまり、MacOSX で動くように作っておけば、Unix でも Windows でも問題なく動作する、という事だろう。
- GnuCash とか Gimp というような Free Software の大物が Aqua で動くようになっている。 (以前のように port された古いバージョンが、細々とメンテナンスされているのではなく、 最新版が、開発チームによって MacOSX バイナリになっている、という事のようだ。)
- Software Design 誌の 8 月号で、「今あらためてお勧めする OS はこれだ」という特集の中で、全部で五人の著者のうち二人までが front end に MacOSX (の載った MacBook Air)を使っているんだとか。(隠れユーザがまだ他にもゐるに違ひない。)
1.2 右往左往の成果?
七年もの間つきあってきたのだから、 それなりの進歩というか変化は有ってしかるべきである。 が、目指す目標は「Mac でオタク」に書いたのそれと然程変わらない。 しかし、その実現方法は右往左往の末の淘汰・洗練 (?) を経てより単純・明快になっている。
- 何よりまずサーバ機能は、ThinkPad の myhome (Linux) server に任せる事にした
- Terminal Emulator ⇒ Terminal.app (MLterm, xterm 等の事はもう忘れた)
- Shell ⇒ zsh (Z-shell) (これは変わりなし)
- かな漢字変換:
- ⇒ AquaSKK (Emacs 以外),
- ⇒ DDSKK (Emacs では)
- Python ⇒ Python-2.7.3 from MacPorts (近々、Python-3.3 に移行予定)
- Editor ⇒ (GNU) Emacs-24.2 from MacPort (XEmacs, Aquamacs, Carbon
Emacs などへの遍歴のあげく、結局 GNU Emacs に戻った)
- Email reader (IMAP Client) ⇒ Wanderlust (Mew, gnus も試してみたが、結局これに落ち着いた)
- かな漢字変換 ⇒ DDSKK (かつては SKK のどのバージョン?と迷った事もある)
- 言語サポート ⇒ python-mode (一度は python.el に浮気した事もあったが)
- 辞書検索 ⇒ eblook + lookup on Emacs (Mac には Dictionary というアプリケーションが付いてくるが、 もはや殆んど使う事がない。)
この基本環境をできるだけ簡単に作り上げる、つまり「オタクを卒業する」 というのも長らくの(しかもちっとも解決に近付かない)課題であった。 これまたこの何年かの右往左往の結果、
- 追加コマンド・アプリケーションは MacPort からインストール
- 文字コードは、全て UTF-8 に(メールを除く)
- 自作のコマンドと Emacs の el ファイルは、Git でバージョン管理
- Python での開発環境は、IDLE その他より、Emacs 上の Python-mode で
2. 環境整備
2.1 こけつまろびつ (Mountain) Lion
先のこけつまろびつ MacOSX Tiger では、「なんでこんな風に変えるかねぇ」と結構泣きが入ったが、 さすがにもう慣れてきた……。一部重複もあるが、再度まとめてみた。
- ディレクトリ構成:
- home directory (以下 '~'):
/Users/user_name/
(root のための home は無い) - CUI commands:
/usr/bin/, /bin/
等。 (MacPorts:/opt/local/bin/
) - GUI Applications:
/Applications/, /Applications/Utilities/ 等。 (MacPorts: /Applications/MacPorts/
) - 特殊なディレクトリ: ディフォルトで作られるもののうち、
オタクに特に意味があるのは、
~/Downloads/ (Firefox 他でファイルをダウンロードすると、ディフォルトでここに入る)、~/Library/ (個人用環境設定パラメータが入る)等
- home directory (以下 '~'):
- 環境変数の設定:
- shell から起動される場合: Linux 等と同様(
~/.bashrc, ~/.zshrc
などで定義) - double click で起動される場合:
~/.MacOSX/environment.plist
(ML では、ディフォルトでは作られない)(サンプル) これらは、再ログインしないと有効にならない事に注意。
- shell から起動される場合: Linux 等と同様(
- アプリケーションの設定ファイル:
~/Library
もしくは~/Library/Application Support
以下に置かれる。 - daemon の起動: これはあまり変ってないようなので、「こけまろ Tiger」を参照。
2.2 MacPorts と基本コマンドのインストール
何とか、「プチオタク」を卒業しよう、つまり、 環境構築・維持に手間暇を掛けないようにしたい、と色々右往左往してきたが、 得られた結論は「できる限り MacPort に頼る」につきる。 何故 MacPort か?
- パッケージングのバグが減り、 またバイナリで供給されるパッケージが増えてきた事もあり、 インストール・メンテナンスが楽(ML では、まだ数が少ないようだが。)
- かつては Emacs, Wine 等はソースが出てから MacPort になるまで、かなり時間がかかっていたものだが、 最近は迅速に提供されるようになった。 極め付けは、gnuradio だろうか。(長らく、MacPort には -2.x.x 版しか無かったが、最近いきなり最新版の -3.6.2 になった。)
- Python, Emacs 等かつては個別にインストールしていたものも、 MacPorts に統一する。
- なるべく xorg, gnome 等への依存は避ける
- コンパイラはなるべく標準のを用いる
ただ、Apple さん、どうやら「どうしてもユーザからオタク環境を取り上げたい」 と思っているらしく、MacPorts のインストールがちょっとづつ面倒になっていくような気がする。
- (もしまだなら)App Center から最新の Xcode をダウンロードしてインストール
- Apple Developer Site から、Command Line Tools をダウンロードしてインストール。 (Xcode が最新だと、Lion でもこれが必要)
- macports.org
から、MacOSX に応じた Package Installer をダウンロードして、インストール。
port
コマンドは、/opt/local/bin/
にインストールされる。 - Launchpad から、Utilities の箱の中にある、Terminal をクリックして起動。(ML では、Utilities が Others に変わっている。)(この後、ずっと使うので、Dock のアイコンを右クリックして、Options ⇒ "Keep in Dock" としておいた方が良い。)
- とりあえず、Menu bar ⇒ Preferences... ⇒ Settings ⇒ Text で font size を 14 もしくは 18 pt くらいに設定し、 Encodings で、UTF-8 を選んでおく。(Font は Menlo のままでも可) 以降はもっぱらこの上で作業する。
- 基本コマンドをインストール
% /opt/local/bin/port install xxxx
で、xxxx に次のようなパッケージ名を入れる:aspell aspell-dict-en binutils coreutils eblook emacs-app gnupg git-core lv mercurial py27-numpy py27-readline python27 w3m wget zsh-devel
(複数並べても OK) - System に密着しているコマンド類は、(たとえ MacPort に有っても)MacOSX 附属のものを使い続けた方が吉。 例えば、ifconfig, locate, sudo 等。
3. アプリケーション・コマンドの設定
3.1 Terminal.app と Zsh
何はともあれ CUI がなくては始まらないのだが、 今のところこの組合せがベストと思われる。ただ、まだ完璧とは行かない……
- Terminal.app は、文字幅の扱い方がおかしいという問題がある。 ML についてくる Terminal-2.3 では、Terminal on Menubar => Preferences => Advanced で、"Unicode East Asian Ambiguous Charasters are wide" にチェックを入れれば改善されるが、まだ完全ではない。 (しかし、実用には問題ないレベルだし、どうしても、という事であれば Emacs で見れば良い。)
- AquaSKK を「ひらがな」モードに入れるための Control-J を Terminal が奪って return と解する。 今のところこれを避ける方法が見付からないので、AquaSKK の設定を弄って、Control-; でも「ひらがな」モードに入れるようにして凌いでいる。
- Sytem Preferences => Keyboard => 'Modifier Keys...' で、Caps Lock を Control にする。(お好みに合わせて)
- Terminal.app を起動し、Terminal
(on Menu bar) ⇒ Preferences... ⇒ Settings で、最小限次の設定をしておく。
- Text => Text: 'Antialias text' にチェック
- Advanced => International => Character encoding: Unicode (UTF-8)
- Zsh の設定ファイルを作る。zsh を初めて立ち上げたら、menu に沿って、簡単な設定は可能。でも、 お急ぎの人はこのサンプルを使うと良いかも(ファイル名を .zshrc に変更して、'~/' (home directory) に置く。)
-
% chsh
で、shell を/opt/local/bin/zsh
に設定 (vim が立ち上がるが、'i' と key in して、cursor key を駆使して編集、 Esc key で insert mode を抜けて、':wq' で良い筈。) - Terminal.app を再度起動して、zsh が立ち上がる事を確認。
~/.MacOSX/environ.plis>
の設定と相俟って、ssh でホストを渡り歩いても、その先々で、
破綻のない日本語環境が得られる(相手が、Linux/Unix の場合を含む。
Cygwin ではまだ少し問題が残っている。)
3.2 Emacs
MacPort で emacs-app をインストールすると、
/Application/MacPort/Emacs.app
にインストールされている筈。
-
/usr/local/bin/emacs
というファイルを作り、中身を#!/bin/sh /Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs "$@"
として、実行パーミッションを与える (% chmod +x
) 。こうする事で、command line から emacs とやって、 アプリケーションとして立ち上げる事ができる。しかし、もっと重要なのは、emacs lisp package の compile/install がとても楽になる事。 - Finder もしくは Dock
から立ち上げた時に、正しく環境変数が Emacs に渡されるように、
.MacOSX/environment.plist
の中の PATH の値を指定する。(Emacs から、shell を呼ぶのでなければ必要無いかも知れないが、ssh で remote host から command を投げられる場合は必須。) -
~/.emacs.d/init.el
を作る。お急ぎの方は、 このサンプルを使ってみて下さい。 - 「Package パッケージ(ややこしぃ!)」を使って、pymacs と python-mode をインストールする。 (Sakito さんのページ を参考にして下さい。残念な事に、 私が重宝している他のパッケージの多くは、package では扱えないようです。)
- DDSKK をインストールする。
3.3 Python
Python-2.7.x と py27-numpy, py27-readline がインストールされている筈。 とりあえず、MacPorts を使ってインストールした訣だが、他にもお勧めすべき 「選択」がいくつか有る。
- 日本語を扱うなら py27-readline は必須。 (MacPort でインストールするだけで、 Python prompt の下で、Gnu-readline が動くようになる。)
- 現状の IDLE は日本語の扱いや応答性に問題が有るのでお勧めしない。
- スクリプトの編集は Emacs + Python-mode でやる
- デバッグは Zsh からやるか、Emacs の py-shell 他を使った環境で実行する。
183/1,793,519 Taka Fukuda Last modified: 2014-03-08 (Sat) 09:11:37 JST