macOS

macOS Sierraに対応途中(まだEl Capitan,Yosemite,Mavericks,Mountain Lionの記述が一部残っている)。

macOS Sierraは野良アプリが動かないという説があるが,従来通り,右クリック>開くで実行できる(Gatekeeperの機能が強化されたmacOS 10.12 Sierraで未署名のアプリを起動する方法参照)。Homebrew を brew update するには,コマンドラインツールをアップデートし,/usr/local の持ち主を自分にする(新しいものは /usr/local が root の持ち物でも大丈夫)。

El Capitan/Sierraは /usr などシステム領域が管理者でも書き込めなくなる。これは SIP (System Integrity Protection) という機能(LinuxのSELinuxみたいなもの)で,これがオンなら csrutil status と打ち込めば System Integrity Protection status: enabled. という答えが返ってくる(How to fix permission issues on Homebrew in OS X El Capitan?)。したがってEl Capitanに更新する前に /usr/local を作っておくべきである。MavericksからYosemiteに更新するときは /usr/local を別の場所に移動しておくとインストールの時間が大幅に短くなったが,今回は /usr/local は残しておかねば後で面倒になる。

YosemiteやEl Capitanでは,最大化ボタンの動作がフルスクリーン表示になった。従来の動作にするには option キーを押しながら最大化ボタンをクリック。

参考になるサイト:

ウイルス対策ソフト

ウイルス対策ソフトを入れるリスクと入れないリスクとを比較して,入れるかどうか考える。コンピュータに十分詳しい人なら,入れないほうがリスクが低いであろう。

ときどき (/System)/Library/Launch* や ~/Library/Launch* の中を見て,変なものが自動起動になっていないか調べるとよいかもしれない。

システム環境設定

「アクセシビリティ」で「透明度を下げる」をチェックしておくと,見やすく,しかも動作が多少軽くなるかもしれない。

「セキュリティとプライバシー」で適切な設定をする。具体的には,「一般」では「スリープ解除/スクリーンセーバ解除にパスワードを要求 開始後:すぐに」,「自動ログインを使用不可にする」が推奨。ダウンロードしたアプリケーションの実行許可は,絶対に「すべてのアプリケーションを許可」にしない。「FileVault」は移動して使うノートパソコンでは必須。「ファイアウォール」は入にする。

「ユーザとグループ」で「ゲストユーザ」は「切」にする。自分以外に「管理者」を作り,自分がふだん使うアカウントの権限は「通常」にする。これにより,システムに改変を要するときは管理者のIDとパスワードの入力が求められるので,うっかり危ないことをするおそれが減る。

UNIXユーザ向け:自分を「通常」のユーザにすることにより,自分が sudoer ではなくなるので,いったん管理者に su してから sudo することになる(root に su するのは避ける)。

ディスクユーティリティ

OSをアップデートした後は,Finder→ユーティリティ→ディスクユーティリティで,ディスクのアクセス権を修復するべきだという説がある。確かに,いろいろパーミッションの間違いを直してくれるが,それが必須かというと,よくわからない。

NTFSドライブがマウントできないときは,初期化するかどうか聞いてくるが,もちろん初期化せず「無視」し,ディスクユーティリティでそのディスクを探して「情報」で「BSD装置ノード」を調べる。例えば disk3 だとすると,おそらく disk3s1 が望みのパーティションである。書き込むのはサポート外なので,リードオンリーでマウントする。

mkdir ~/mnt
sudo mount -t ntfs -o rdonly /dev/disk3s1 ~/mnt

あるいは /etc/sudoers に次のように書いておくといちいちパスワードを要求されない:

okumura ALL=(ALL) NOPASSWD: /sbin/mount
okumura ALL=(ALL) NOPASSWD: /sbin/umount

いちいち面倒な場合は /etc/fstab に書いておくという方法も使えるかもしれない。うまくいけば書き込むこともできるかもしれない(How to write to NTFS drive in MacOS Sierra)。

Finder

Finderの「環境設定」の「詳細」で「すべてのファイル名拡張子を表示」,「確実にゴミ箱を空にする」にチェックを付ける(セキュリティのため)。完全消去は /usr/bin/srm でもできる(Linux 等でよく使われる shred コマンドもインストールできる)。El Capitanでは「確実にゴミ箱を空にする」がなくなった代わりに「すぐに削除」というメニューができた(Apple、フラッシュストレージを搭載したMacでは「確実にゴミ箱を空にする」オプションが保証できないとして、OS X 10.11 El Capitanからこのオプションを削除。)。

あとは好みで適宜設定。例えば「表示」で「パスバーを表示」にすると便利。

Safari

Safariの環境設定「一般」で「ダウンロード後、“安全な”ファイルを開く」のチェックを外す。「プライバシー」で「CookieとWebサイトのデータ」を「アクセス中のWebサイトのみ許可」(ただしSafariのバージョンによってはFacebookのログインに失敗する),「Webサイトによる位置情報サービスの使用」を「確認せずに拒否」とし,「Webサイトによるトラッキング」は「Webサイトにトラッキング停止を求める」にチェック。

SafariStandを入れると便利。特に便利なのはダウンロードフォルダを日付で分類できること。SafariStandを動かすにはEasySIMBLを使う。→EasySIMBLが使えなくなったのでオリジナルのSIMBLを使う。→El CapitanではSafariStandを断念。

Safariの「開発」メニューを出す:

defaults write com.apple.Safari IncludeDebugMenu -bool true

「開発」メニューには「WebGL を有効にする」オプションもある。

似たようなもので「Debug」メニューもある:

defaults write com.apple.Safari IncludeInternalDebugMenu -bool true

このメニューで「Disable Per-Tab Web Processes」にチェックを付けておくと,Safariが軽くなる。と思ったら,Yosemiteではここにあるような不具合のきっかけになるようだ。

SafariでPDFを開くときにどうするか。デフォルトでは標準のプラグインが使われるが,これでは日本工業標準調査会でJIS規格(セキュリティ保護されたPDF)が閲覧できない。Adobe (Acrobat) Reader (DC) のものに変える方法はここにある。具体的には,日本工業標準調査会サイトを開いた状態で,Safariの環境設定→セキュリティ→プラグインを許可→Webサイト設定で,左で「Adobe Reader」を選び,右に表示された www.jisc.go.jp を「常に許可」にする。「許可」「常に許可」ではAdobeのプラグインが,「確認」「開かない」ではAppleのプラグインが使われるようだ。

逆にAdobeのプラグインを外す方法は /Library/Internet Plug-Ins/AdobePDFViewer*.plugin を消すか移動する。

SafariでPDFを開きたくない:

defaults write com.apple.Safari WebKitOmitPDFSupport -bool true

上のコマンドで以前はPDFをダウンロードするようになったが,MavericksのSafariではPDFをテキストとして表示してしまう。

defaults write com.apple.Safari WebKitOmitPDFSupport -bool false

で元に戻すしかなさそう。

Twitterを使っているなら,履歴中で t.co リンクを展開する Detox も必需品。Mavericksでは不要。

プレビュー

Yosemiteのプレビューが重い。特にファイルサイズの大きなスキャンPDFを開いたときには,耐え難いほど重い。まだAdobe Readerのほうが軽い。代替策としてターミナルから qlmanage -p ファイル名 で開くと軽い。

プレビューでPDFファイルを開いたときなど,不用意にクリックしただけで「編集済み」になってしまうことがある。気づかないでいると,閉じたときに編集済みバージョンが上書き保存されてしまう。「システム環境設定」→「一般」で「書類を閉じるときに変更内容を保持するかどうかを確認」をオンにしておけば,不用意に更新した状態を保存してしまうことが避けられる。

間違えて編集してしまったなら,保存する前であれば「ファイル」→「バージョンを戻す」(あるいはcommand-Z)で戻す。保存してしまっても,バージョン管理機能で元に戻すことができる。

真正性を保証しなければならないファイルはリードオンリー(chmod 444)にしておくのが安全。

自動保存もバージョン管理もやめたいときは,例えばプレビューなら次のように打ち込んでおけばよい。

defaults write com.apple.Preview ApplePersistence -bool no

詳しくは What happened to Save As?: Apple Support Communities などあちこちに載っている。

ターミナル

Finderよりターミナルをよく使う人種であれば,ターミナルの適切な設定が欠かせない。フォントは好みによる。昔は「Osaka-等幅」を使っていたが,Microsoft Office同梱の「Consolas」や,最近ではフリーフォントの Inconsolata が気に入っている。「テキストをアンチエイリアス処理」は必須。

コマンドラインツール

巨大なXcodeをインストールしなくても,gcc(clang)などのコマンドラインツールで十分なことが多い。コマンドラインツールは,(Xcodeをすでにインストールした場合はApplicationsフォルダのXcodeをゴミ箱に捨てて,もし古いXcodeがあるなら sudo /Developer/Library/uninstall-developer-folder してから)gccでもmakeでも何かトリガーとなるコマンドを打ち込めば,インストールするかと聞いてくる。あるいは明示的にはターミナルに xcode-select --install と打ち込めばよい。

科学計算には GFortran も必要かもしれない。

Homebrew

今まで GnuPG,wget,Ghostscript,ImageMagick,ffmpeg などの必須ツールは自分で入れていた。しかし,これからは Homebrew を使うほうが,手間がかからず,共同研究者と環境を揃えやすい。ただ,Xpdf の pdftotext など一部のツールは自分でカスタマイズしたいので手で入れている(pdftotextの代わりになる Tika というツールも紹介していただいたがJavaが必要らしいのでまだ使えていない)。

あらかじめ /usr/local/{bin,share,lib,etc,include,opt,Library,Cellar} は空または自分で管理できるように整理しておく。また,~/.curlrc を設定している場合はリネームしておく。

インストールは次のコマンドを実行するだけである(sudo は付けないが sudo できるアカウントで実行する):

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

終わったら,もし通常使うユーザが管理者でない(sudo できない)場合は,/Library/Caches/Homebrew をその人が書き込めるようにしておく(sudo chown とか)。

brew doctor と入力して,問題点を解決する。特に /usr/local/bin を PATH の最初に置く。

あとは好きなパッケージを入れる:

brew install gpg wget ghostscript imagemagick ffmpeg nkf exiftool

ときどき brew update; brew upgrade する。brew update できなくなたら mac でbrew がおかしくなった(brew updateができない)のを解決が役に立つ。

JAGS をインストールしようとして brew insall jags すると,2時間ほどかけて280Mほどのgccをまずインストールしてくれた。ただし起動コマンドは gcc-6 なのでシステムのgcc(clang)とぶつからない。gfortran も使える。これがわずらわしい場合は JAGS のサイトのリンクからMac用インストーラをダウンロードする。

Emacs

OSX - Yosemite で Emacs-24.4 をビルドして動かすEl Capitanで Emacs-24.5 をビルドして動かす に従ってソースからビルドした(事情により ./configure には --without-imagemagick も付けた)。

上記サイトは今は OSX で Emacs 25.1 をビルドして使う。もう OSX じゃなく macOS だって? になっている。もうパッチは当ててないのでバイナリを取ってきても同じかもしれない。ちなみに,HomebrewでEmacsをインストールしようとすると「brew cask install emacs のほうがいいよ」と言われるようになった。これは Emacs for Mac OS X から Emacs 25.1 バイナリを取ってくるだけのようだ。

千葉大の山本光晴さんによるパッチを当てる場合は次のようにする:

wget http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-25.1.tar.xz
wget ftp://ftp.math.s.chiba-u.ac.jp/emacs/emacs-25.1-mac-6.0.tar.gz
tar xvzf emacs-25.1.tar.xz
tar xvzf emacs-25.1-mac-6.0.tar.gz
cd emacs-25.1
patch -p1 < ../emacs-25.1-mac-6.0/patch-mac
cp -R ../emacs-25.1-mac-6.0/mac .
cp ../emacs-25.1-mac-6.0/src/* src/
cp ../emacs-25.1-mac-6.0/lisp/term/mac-win.el lisp/term/
cp nextstep/Cocoa/Emacs.base/Contents/Resources/*.icns mac/Emacs.app/Contents/Resources/
./configure --without-x  --without-imagemagick
make 
make install

これで mac の下の Emacs.app を動かしてみて問題ないようなら /Applications にコピーする。

パッチを当てると window-system'ns から 'mac に変わる。system-type はどちらも darwin だ。

~/.emacs.d/init.el のフォントの設定はおおよそ以下の通り。

(when (or (eq window-system 'mac) (eq window-system 'ns))
  (set-face-attribute 'default nil
                      :family "Menlo"
                      :height 200) ;; 20pt
  (set-fontset-font nil 'japanese-jisx0208
		    (font-spec :family "Hiragino Kaku Gothic ProN"))
  (setq face-font-rescale-alist
        '((".*Hiragino Kaku Gothic ProN.*" . 1.2))))

パッチ入りのほうは (mac-auto-ascii-mode 1) するとよいかもしれない。

パッチなしのほうは mac-command-modifiermac-option-modifier'meta にするとメタキーが変えられる:

(when (eq window-system 'ns)
  (setq mac-command-modifier 'meta))

EmacsからGnuPGを使う必要がある場合,brew install gpg で入るものがgpg2になり,このパスワードの入力が標準的でないので,Emacsからパスワードが入れられなくなる。OS X の Emacs で EasyPG が gpg2 で Opening input file: Decryption failed, になったので対処したにあるように brew install pinentry-mac としたが,コマンドラインツールじゃダメで Xcode.app をインストールせよと言われる。最初これで諦めたが,やはりこれが一番楽なので Xcode.app をインストールしてこれを入れ,~/.gnupg/gpg-agent.confpinentry-program /usr/local/bin/pinentry-mac という行を書き込んだ。

なお,Emacs 24なら (setq epg-gpg-program "gpg1") だけでうまくいくようだが,Emacs 25はこれではダメ。Gentoo Linux GPG encrypts properly a file passed through parameter but throws “Inappropriate ioctl for device” when reading from standard input にあるように,いったんEmacsを終了し,ターミナルに


export GPG_TTY=$(tty)
open -a Emacs.app

でEmacsを立ち上げる(export ... は .bashrc に書いておけばよい)。この場合,パスワードはEmacsのミニバッファではなくターミナルに入力する。ただ,この方法はSierraになってから不安定で,2回に1回くらいキーの取得に失敗しエコーバックされてしまう。

Emacsのパッケージは一つずつ手で入れてもいいが,最近のEmacsにデフォルトで入っている package というパッケージを使って管理すると簡単である。次のように init.el に書き込んでおく:

(require 'package)
(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
                         ("melpa" . "http://melpa.milkbox.net/packages/")))
(package-initialize)
(when (not package-archive-contents) (package-refresh-contents))

(let ((default-directory "~/.emacs.d/elpa/"))
  (normal-top-level-add-to-load-path '("."))
  (normal-top-level-add-subdirs-to-load-path))

これでEmacsを再起動するか M-x eval-buffer する。次に M-x package-list-packages するとパッケージ一覧が表示されるので,必要なパッケージあるいは更新したいパッケージの上にカーソルを動かして i キーを打つ(I マークが付く)。次に x キーを打つと実際にインストールされる。

Emacsからの子プロセスは必ずしもシェルの環境変数を受け継がない。受け継がせるにはEmacsをシェルから open -a Emacs で起動するか,あるいは init.el に次のように書いておく:

(require 'exec-path-from-shell)
(when (memq window-system '(mac ns))
  (exec-path-from-shell-initialize))

TeX

美文書作成入門のDVDからインストールする。

最新のTeX Live 2016を入れたい場合は MacTeX をインストールするのが簡単だが,一般的なUnixのディレクトリ構成と違うので,慣れた人にはかえってややこしいかもしれない。

Unix派は TeX Live の install-tl-unx.tar.gz をダウンロードして展開し ./install-tl でネットインストールする。通常は /usr/local/texlive 以下にインストールする。詳しくはTeX Wikiの TeX Live/Mac 参照。デフォルトではIPAexフォントになるが,ヒラギノを使いたい場合は次のようにする。GhostscriptはHomebrewなどであらかじめインストールしておく。

cjk-gs-integrate --link-texmf --force
mktexlsr
kanji-config-updmap-sys --jis2004 hiragino-elcapitan-pron

Ruby/Python

MacのRubyはまだ2.0のままで,そろそろ gem で入らないものが出てきた。Homebrewを使っているなら brew install ruby で新しいもの(今なら 2.3.1)になる。gem も sudo しないで使えるようになる。

Pythonは2.7系だ。pipはない(easy_install を使う)。

Python 3.xを入れる方法はいろいろある。Homebrewを使っているなら

brew install pyenv

する。また,.bash_profile に次を登録する:

PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

まずはインストール可能なバージョンを確認:

pyenv install --list

3.5.1をインストールしたいなら:

pyenv install 3.5.1

pyenv versions でバージョンを確認。おそらく system3.5.1 があり,デフォルトでは前者になっているので,新しいほうに替える:

pyenv global 3.5.1
pyenv rehash

python --version でバージョン確認。

あとは pip で追加インストールする。あるいは,ディスクに余裕があれば,Python全部入りのAnacondaをpyenv経由でインストールする:

pyenv install anaconda3-4.0.0
pyenv global anaconda3-4.0.0

いらなくなったものは pyenv uninstall 3.5.1 のようにして消せる。

X11

今はMacにX11はほぼ必要ないが,どうしても必要な場合は XQuartz をインストールする。

Java

Sierra で Java 6 が使えなくなった。古いソフトは要注意。特にAdobeのソフトは問題だが,macOS Sierra (10.12) で Photoshop CS6 / Illustrator CS6 を使う によれば,実はJavaっぽいディレクトリを作っておくだけで大丈夫だ。私のところでもIllustrator CS3が動いた。

メール

今のMail.appはiPhoneのメールみたいな表示になったが,環境設定→表示で「クラシックレイアウトを使用」にすると古い表示に戻る。ついでに,ここの「スマートアドレスを使用」を切っておけばメールアドレスが名前だけになるのが避けられるはずだが,うまくいかないときは,いったんこれをオンにしてから,またオフにしてみる。

Apple Mailを快適に使う設定が参考になる。具体的にはLetterFixというプラグインを使う。Yosemite対応も即日行われた。

LetterFixを使わない場合,Mavericksでメールを新規作成すると文字コードはASCIIかutf-8(base64)になる。ただしISO-2022-JPメールへの返信はISO-2022-JPになる。返信に「μm」と書くとiso-2022-jp-2になって,非対応メーラで化ける。「⌘」と書くと必ずutf-8になる。ややこしいので署名に「⌘」を含ませるのが一つの手段。特にiPhoneの場合はこれしか手がない。

辞書

Lion→Mountain Lionで辞書が微妙に違う。Lionの辞書をMountain Lionの ~/Library/Dictionaries にコピーすれば,大辞林と大辞泉,WisdomとProgressiveを両方使えるようになる。

スクリーンショット(画面キャプチャ)

command + shift (+ control) + (3 または (4 [ space (option +) click ]))

+ control なしだとデスクトップにファイルを作る。ありだとクリップボードにコピーするのでプレビューがアクティブになっているところで ctrl + N すればプレビューに貼り付く。3 だと全画面,4 だとマウスで範囲指定した部分だけ。ただし 4 の後にスペースを押すとマウスカーソルがカメラになって,窓を指定してクリックするとその窓が対象になる。クリック時に option を押していれば影が含まれない。

コマンドでも同じことができる。詳しくは man screencapture。例えば,一つの窓だけ(-w),影を付けない(-o),プレビューで開く(-P)というオプションで hoge.png にキャプチャするには:

screencapture -w -o -P hoge.png

ファイル名・圧縮・展開

Macのファイル名はUTF-8で,アーカイブ(圧縮)ファイルを日本語環境のWindowsとやりとりするときにトラブルが生じやすい。

ターミナルで使う zip/unzip 以外に,圧縮ファイルをダブルクリックしたときやFinderで圧縮するときに使われる /System/Library/CoreServices/Archive Utility.app がある。後者はWindowsのCP932(拡張シフトJIS)ファイル名をMacのUTF-8に自動変換してくれる。

日本語環境Windows互換なZIPファイルを作るにはMac App Storeにある無料の「WinArchiver Lite」を使うとよいらしい。ほかにもunarやパッチをあてたunzipなどの方法があるようだ(ここ参照)。

ファイル名のエンコーディングを変換するには convmv を使う。次のようにしてもよいだろう:

find -d . | while read f; do mv "$f" "`echo $f | nkf -w`"; done

ここで nkf -w はUTF-8に自動変換する(元がCP932なら iconv -c -f CP932 -t UTF-8 と同じ)。

ちなみにMacのUTF-8は例えば「げ」を「け」と濁点に分離して保存する。表示時は合成済みの「げ」を使うので見た目では区別がつかないが,次のような実験で確かめられる:

echo 'ほげ' | hexdump -C  # e3 81 bb  e3 81 92
touch 'ほげ'         # 「ほげ」というファイルを作る
ls ??                # 見つからない
ls ???               # 「ほげ」が見つかる
ls ??? | hexdump -C  # e3 81 bb  e3 81 91  e3 82 99
ls ??? | iconv -c -f UTF-8 -t CP932 | iconv -c -f CP932 -t UTF-8  # 「ほけ」になる

Unicodeの正規化については小形克宏の「文字の海、ビットの舟」参照。

cron・at

at コマンドを有効にするには sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist と打ち込む。

ただし at も cron も deprecated である。Daemons and Services Programming Guide: Scheduling Timed Jobs を見て launchd を使うのがよい。crontab to wake osx from sleep も参考になる。

フォトストリーム

iPhoneなどで撮った写真は ~/Library/Application Support/iLifeAssetManagement/assets/sub/* フォルダに入るようだ。

ssh

他マシンにsshでログインしたりrsyncしたりgitしたりするとき,次のようにするとパスワードなしで認証できる。まず自マシンで鍵ペアを生成する:

mkdir ~/.ssh
cd ~/.ssh
ssh-keygen -t rsa -C "自分のメアド"

公開鍵 id_rsa.pub と秘密鍵 id_rsa が生成される。秘密鍵はパーミッション400にしておく。公開鍵の内容をログイン先の ~/.ssh/authorized_keys に書き込んでおく(パーミッションは600とか)。

Sierra 10.12.2 から仕様が変わったみたいで,上の設定だけではパスフレーズを毎回聞いてくる。~/.ssh/config というファイルを作って,そこに次のように書いておくと,起動後一回だけで済むようになる:

Host *
        IdentityFile ~/.ssh/id_rsa
        AddKeysToAgent yes

その他

メタデータ

MacのHFS+ファイルシステムではメタデータを保存できる。これがSpotlight検索に使われる。ls -lでパーミッションに @ が付いているのがこれである。ls -l@ すればメタデータの名前(キー部)がわかる。例えばSafariでファイルをダウンロードするとダウンロード日時が com.apple.metadata:kMDItemDownloadedDate に,URLが com.apple.metadata:kMDItemWhereFroms に入る。

メタデータを見たり書き換えたりするには xattr コマンドを使う。xattr -l ファイル名 で表示する。mdls ファイル名 とすればファイル中にあるものも含めてたくさんのメタデータが表示されるが,HFS+ のメタデータは com.apple.metadata:何々 という名前のものに限られるようだ。

自分で導入した wget でダウンロードした場合はメタデータが付かない。wget の代わりにMac付属の curl を使えばよい。curl -ORL --xattr ファイル名 で付くURLは user.xdg.origin.url という名前であり,mdls では見えないが xattr -l ファイル名 で表示できる。

HFS+に保存されたメタ情報は,rsync-E オプションを付ければ他のMacにも送れる。よく使うのは rsync -auvzE という形。

おまけ

壁紙用写真の /System/Library/Frameworks/ScreenSaver.Framework/Versions/A/Resources/Default Collections/ にある最後のものは日本人写真家のもの:


10.4/10.5時代の古いコンテンツ

10.8時代のコンテンツ


Last modified: