Emacs から単語や選択テキストをGoogle検索
英語を書いている時にその表現に自信が無い時よくGoogleで検索してヒット数を見てる(^^;)
sakitoさんが紹介していたURLをブラウザで開く Elisp を少し変えて、選択領域を C-c g でSafariでGoogle検索できるようにしてみた。範囲が指定されていない場合は単語を検索。ついでにGoogle scholar 検索(C-c G)と、OSX辞書アプリでの検索(C-c w)もまとめておいた。
新しい MacBook Pro
久しぶりに新しい Mac を買った。がんばって MacBook Pro retina display、2.6Ghz/500GB!今まで使っていたのが、黒い MacBook (2007 late) だから、使用感等を書き出したらきりがないので省略。旧世代を残して、次世代として導入された Retina display モデル、いろいろと困ることがあるだろうけど、それも含めて楽しもうと思って注文した。でも今のところ「困った〜」ということには遭遇していない。とにかく速いし奇麗。そして使いやすい。(前回の購入から約5年。MacBookよくがんばってくれた。たいしたことを書いていないけど、前に書いたものをみると今回よりも導入で少し苦労している。)
購入
- オンラインのアップルストア(ドイツ)でクレジットカードが使えなかったので、電話での注文。電話でやりとりするまで知らなかったのだけど、自分の所属する研究機関向けの割引があり、Education 価格よりもさらに少し安くなった(もしオンラインストアで買っていたらこの割引は受けられなかった)。とはいえ、消費税20%のドイツで買うと日本よりずっと高い。(ドイツの定価は2.899,00ユーロ=28万円で、日本だと23万8800円。)
- Mac は世界中どこで買ってもOSは1つ。違いはキーボードとマニュアルだけ。ヨーロッパのオンラインのアップルストアでは、国際英語と US キーボードが選べる(前に書いている)。日本でも購入できるのは US キーボード。自分は最初に触った Mac からずっと US キーボードだから、海外での購入も困らなくてよい(でも、アップルストアに在庫はない)。(しかし、電話での注文時にPDFの書類を送ってもらって確認したにも関わらず、ドイツ語キーボードが届いてしまいUSキーボードの交換を依頼。その後メールで届いた明細をみると今度は国際英語になっていたので、すぐに電話してまた変更といろいろと手間取った。)
- キャンペーンで80ユーロ分の AppStore カードがついてきたけど、ドイツの AppleID が必要。今はドイツのクレジットカードがあるけど、他の国に引っ越ししてクレジットカードがなくなったときに、どうなるのかわからないので、とりあえず保留中。ドイツ人に買い取ってもらったりできるのかな?
インストール、設定等。
- Xcode を AppStore から。
- キーボードの設定。キーリピート→最速、リピートまでの認識時間→最短。Caps Lock を Control に変更。
- スポットライトのショートカットを "Ctrl+Space" から "Ctrl+Shift+Space" に変更。"Ctrl+Space" は Emacs で使うので。
- OSXWS を入れる。これでEmacs、TeXLive(+LaTeXiT+Skim)、gnuplot、yaplot、povray 等々をすぐに使えるようになる。
- 前のマシンの ~/bin をコピー。
- Dropbox を入れる。
- BibDesk を入れる
- AppStore の購入済みからいろいろ( VoodooPad, twitter, iCompta など)
- iWork を DVD から。新しいMBPは光学ドライブがないので、DVD は前のマシンでマウント。(そろそろ新しいのが出る頃だろう。)
- OmniGraffle Pro を入れる。AppStore ではなく、Omni Store からEducation ラインセンスを買っている。
- OmniFocus を入れる。同じく Education ラインセンス。
- iWeb.app を入れる。(インストーラーDVDを自宅に忘れたので、古いマシンからコピー)。iLife アプリとして、もうプリインストールされていないのか。AppStore にもない。ということで、いずれ iWeb は使えなくなるかもしれないけど、Webサイトにはあまり時間を使えないのでもうしばらくお世話になる。
- LaTeXiT 2.5 を入れる。(
OSXWSはまだ2.4.1なので追記(2012-07-21): 2.5にアップデートされた。) - 他に使っているものはあるけど、必要な時にインストールすれば十分かな。
- iTunes 10.6.3 のアップデートが失敗する。ウェブサイトからダウンロードして手動でアップデート。
- cd to.appをインストール。ツールバーにドラッグ&ドロップ。Finderで開いているディレクトリがターミナルのカレントディレクトリに。
- (あと、研究所ライセンスのソフトウェア)
- このような感じで、とても素直な使い方をしている(^^;)
データの移行
MBPはフラッシュストレージで今の500GBをそのうち増量ということはなかなか難しそうなので、丁寧に整理しながら手動で移行したい。前のMacBookのデータをすべて持ってきたら450GBになるので(汗)。
- ファイル共有(AFP)で、前のマシンからデータを移行。研究所のLANはさすがに速い。
- リモートにある1GBくらいのフォルダを削除したら途中でマシンが固まったけど、バグだろうか?
- タイムマシーンでバックアップがあるので、移動したファイルは前のマシンから消すように。ファイルの不要な重複はさけたい。
- 古い数値計算のデータファイルはなるべく圧縮する。
- 論文 PDF や VoodooPad のファイルのような、日常的に使うファイルは Dropbox に入っていたのでとても楽。
- iWeb のデータは ~/Library/Application Support/iWeb/をコピー。
- OmniFocus は前のマシンでファイルメニューの「データベースをバックアップ」として、新しいマシンで「データベースのバックアップを復元」すればいい。(最初、あまりよく考えずに ~/Library/Application Support/OmniFocus をコピーしたけどうまく行かなかった。)
- Mail.app のアドレス欄で、過去に送信したメールアドレスを保管してくれる「宛先の履歴」は、~/Library/Application Support/AddressBook/MailRecents-v4.abcdmr をコピーしたらうまく行った。
動作確認
- とても静か。普通の使用では大丈夫だけど、ちょっと使っていると熱くなる。廃熱がよいとこういうものなのかな。
- Emacs (23.4.1)。Retinaでとてもきれい。ちゃんと動く。
- TeX。速くて非常に快適。yatex のデモ動画を取り直したいくらい。
- LaTeXiT もばっちり。
- X11アプリがちゃんと動く!yaplot も問題ない。ビットマップの解像度が細かくなっているわけではないけど、アンチエイリアスをしていないためか、くっきりと見えるので違和感はない。
- Twitterアプリの表示がぼけぼけ。入力部分は奇麗だけど。
- Keynote で発表中に動画スライダーを動かすと落ちる問題、新しいマシンでも起こるのか。。。(言語を日本語にした場合のみ。)(追記:その後の iWork のアップデートで解消!)
- どうでもよいことだけど、白くて四角いACアダプターのデザインは何年間もずっと同じ。MagSafe の部分は今回少し変わったけど。
- グレア液晶だけど映り込みは少ない。比較の画像(1.2MB)
Emacs で書いている英語の文を Siri の声で読み上げる
OSX の say コマンドを利用して英語を読んでもらう。TeX書類を想定して、完全ではないけど、読み上げる必要がない部分を適当に取り除いてみた。
Alex の発音も良いけど、Siri の声を入れるとさらに流暢な英語で読んでくれる。システム環境設定のスピーチ→テキスト読み上げ→システムの声→カスタマイズから、「英語(アメリカ合衆国)女性」の所にある Samantha にチェックを入れてダウンロードすれば選べる。Tomやイギリス英語のDaniel なども良い感じ。
領域を選択している場合はその領域を、していない場合は行頭%から行頭%の間にあるテキストを読み上げる。(自分は文毎に%を置いているので、領域を選択することなく、カーソルのある文を読んでくれる。%が見つからないと失敗するけど、その対処はしていない。)
ショートカットは ⌘R にしてみた。
解説
- スピーチが再生されていればそのプロセスを削除して終了。
- 領域を選択している状態(mark-active が t)なら、その領域の始まりと終わりの位置を b と e に。
- 領域を選択していないなら、% で始まる行を後方、前方に検索して、それぞれの位置を b と e に記録。
- b から e までを文字列 s にする。
- s の中に \% があれば、コメントと認識されないように percent に置換。
- s の中に %に続いて改行文字以外の文字が続いている部分(コメント部)を""に置換(削除)。
- TeX のコマンドで、section型(\hoge{にマッチ)を削除(" " に置換)。
- $,\,_,^,~,(,),{,},`といった記号や改行文字を削除(" " に置換)
- 空白が続くところを1つの空白に置換。
- 結果の文字列 s を表示
- シェルから引数 s で say コマンドを実行。
領域を選択していないときにスピーチする文章を自動的に区切る部分は、自分のスタイルに合わせて書き換えれば良いと思う。
re-search-backward/forward で、後方、前方へ正規表現でマッチする文字列を探している。"\\|" が or で、"^" は行頭を意味している。つまり、"^\\ *%" は行頭から0個以上のスペースの後に%があるという意味で、"^\\ *\n" は行頭から0個以上のスペースの後改行がある(つまり何もない行)という意味で、そのどちらかにマッチすればそれが区切りになる。Emacs の文字列はエスケープ文字(バックスラッシュ)のために、バックスラッシュが必要みたいで、慣れないと読み難い(自分も慣れていない。)
追記: say コマンドはファイルに書き出せる。iTunes にはファイルをコピーするだけで自動的に iTunes にインポートする機能がある。上を少し書き換えれば、Emacs のメモを iPod や iPhone で聞くような機能が作れる。
$ say Hello, World -o ~/Music/iTunes/iTunes\ Music/iTunes\ に自動的に追加/foo.aiff
LaTeX タイプセットスクリプト(SemiAutoTeX)
数式番号やページ番号はタイプセットすることで決まるので、それらの数字を参照して表示させるためにタイプセットを繰り返す必要がある。さらに面倒な bibtex 実行は、その前にまず一回タイプセットし、その後に bibtex を実行し、さらにその後に二回タイプセットしないと、正しいプレビューを得られない。
このような LaTeX タイプセットを自動処理する latexmk という Perl スクリプトがある。 必要な処理を全て自動判定してくれる。しかし、判定のために余計に時間がかかるので、作業するマシンによっては遅いとかんじるかもしれない。
YaTeX は次のバージョン(1.76)から auto-rerun 機能が追加される予定になっている。しかし、bibtex を利用している場合に、タイプセットの回数が常に倍になってしまうというデメリットがあり、仕様変更を提案している。その提案している試用の動作確認のために書いたシェルスクリプトがこれだ。YaTeX はもともとタイプセット(C-c C-t j)だけでなく、bibtex や makeindexの実行も Emacs 上からできた(C-c C-t b や C-c C-t i)ので、latexmk のように全ての状況に対応する1つの命令にしなくても、3つそれぞれの処理が賢くなればそれなりに便利ではないだろうか、という提案。bibtex を実行する必要があるとか、makeindex が実行する必要があるというタイミングはユーザーが決めるけど、latex→bibtex→latex→latexと手動で順番通り実行する必要はなく、? を見る頻度はずっとすくなくなる。
特徴
ここで試しているシェルスクリプトは、LaTeX の再実行は自動判定だけど、bibtex や makeindex の実行はユーザーが呼び出す必要がある。ただ、予め実行順序が決まっている事なので、YaTeXの C-c C-t b (又はShift+Command+B) で一度呼び出せば必要な処理は一括でしてくれる。この呼び出しを自動でするわけではないので「半自動」のスクリプトだ。普通の入力作業で bibtex を実行する必要がある回数は、普通の LaTeX 実行より圧倒的に少ない。おそらく一つの原稿を完成させるまでに LaTeX を3000回実行するとすると、bibtex の実行回数は100回くらいではないかと思う。
スクリプトの仕様
- ホームディレクトリの設定ファイル .semiautotexrc でコマンドを指定する。
- dvipdf が設定されている時は DVI からPDFファイルを生成する。
- LaTeX 実行は .aux ファイルが変更される限り繰り返す。
- 参照番号(\ref)、目次(\tableofcontents)を一度の呼び出しで正しくアウトプット
- .aux ファイルの更新の為に md5 を二回使っているけど必要な時間は合計で0.01秒以下。
- 1回実行:既に typeset 済みのファイルで、新しい編集が文章のみの場合。目次を付ける場合はセクションのページ番号が変更されない場合。
- 2回実行:番号付き数式を追加、sectionを追加等。
- 3回実行:目次のページ数が変化する場合。(@at_aka さんに教えていただいた。)
- BibTeX 実行は LaTeX→bibtex→LaTeX→LaTeX という順序で実行する。
- MakeIndex 実行は LaTeX(auxをみて繰り返し)→makeindex→LaTeX という順序で実行する。
- pdflatex を使う時は draftmode オプションを使って、PDF出力の回数を減らす。
処理速度の比較
処理速度の比較 (12ページで12個の図、文献引用36件、数式43個を含む論文の原稿(執筆中!)を10回測定。time コマンドの real の値。MacBook, 2.2Ghz Core 2 Duo)
通常の編集で LaTeX を一回実行する必要がある場合
- pdflatex: 1.19 ± 0.2 sec
- latexmk: 2.06 ± 0.1 sec
- semiautotex.sh: 1.19 ± 0.2 sec
bibtex を実行する場合(latexmk は自動判定で実行、semiautotex.sh は -b オプションで実行。LaTeX処理が三回必要なので上の時間の3倍が妥当な時間。)
- latexmk: 7.70 ± 0.7 sec
- semiautotex.sh: 3.73 ± 0.2 sec
YaTeX は Emacs 上でタイプセットを実行した時の処理時間を計測できるようになっていたので、「通常の編集で LaTeX を一回実行する必要がある場合」を比較してみた。(現在の開発版YaTeX で試されている auto-rerun では bibtex を利用している書類をタイプセットする時に常に typeset + bibtex + typeset と二回タイプセットするようになっている。changeset 262)
- YaTeX auto-rerun: 3.3 ± 0.2 sec
- semiautotex.sh: 1.2 ± 0.1 sec
動画で比較。
YaTeX の設定
YaTeXの設定は以下のようになる。
~/emacs.d/my_yatex.el
YaTeX の気になる所
YaTeX の気になる所をフィードバック.
YaTeX は状況判断をしながら必要な補完を行う.他のエディタでのTeX入力支援は予め用意された文字列を挿入するくらいで,YaTeX のように動作するものはめずらしい(あるかな?).この賢さが YaTeX の特徴.
ここでは自分が毎日使っていて気になるところをフィードバックする.
理解が不十分なまま書いている事もあるので,間違いに気付いたらすぐに編集・削除する。
タイプセットの自動 Rerun 機能について(1.76以降)
数式番号などの参照 \ref{...} を追加した後はタイプセッタ(latex)を2回実行する必要があり、文献引用の \cite{...} を追加した後は latex → bibtex → latex → latex という順序で実行する必要がある。
これらを自動で行ってくれる Perl スクリプト latexmk がある。YaTeX は 1.76 からこれに相当する機能をデフォルトで提供することになりそうだ。
■ 開発は以下のような経過を辿って、現在 (3) の状態にある。
- (1) タイプセッタのログ("LaTeX Warning: There were undefined references" など?)を見て、もう一度タイプセッタを実行する auto-rerun が実装された。(\label \ref の対応はこれで解消できる。\tableofcontentsには未対応。)
- (2) 文献引用(\cite{...})や索引(\index) にも対応した。これらはタイプセッタのログを見て判定していることから、\cite を追加した再には正しく判定できるが、削除した後の不整合を判定できなかった。
- (3) cite 削除の後の判定には aux ファイルの解析など余計な処理が必要になるのでこの方向での解決は目指さず、『結局、「bibtexを使う文書の場合は問答無用で最初に platex+bibtex」としました。』という別のアプローチに変更された。(mendex の自動判定が出来なくなった!?)
(2) の問題点は、ユーザーからすると bibtex コマンドを自分で実行する必要がない「全自動タイプセット機能」に見えるため、bibtex を手動で実行しなくてよいと思える。しかし、cite を削除した後の不整合は、何度タイプセットを繰り返しても解消しないので、文献リストと本文の番号が一致しないまま印刷してしまうというミスが起こりうる。
(3) は、文を更新のみでも毎回 latex + bibtex + latex と2回 LaTeX が実行される事になる。普段から latex (pdflatex)の処理時間が0.1秒でも短くなってほしいと思っていた(編集作業をリアルタイムプレビューに近づけたい)自分としては受け入れ難い仕様だ。(LaTeX に必要な処理時間は書類による。)
いずれの仕様も、自動判定のところはタイプセットログを解析するだけなので、目次(\tableofcontents)を作る時に必要な2回処理が判定できない(?)
■ 問題点ばかり指摘しても建設的ではないので、自分なりに1つ代案を考えた。以下で LaTeX は (p)latex か pdflatex コマンドの実行。
- "LaTeX 自動 rerun": rerun 機能は LaTeX 処理だけに限定する。(ref/label や \tableofcontents のために必要な2回目の LaTeX 処理を自動で判断して行う)
- "bibtex 一括実行": bibtex(pbibtex) の実行はこれまで通りユーザーからの命令で実行する。ただし、bibtex 実行(C-c C-t b) では、必要な処理を一括で行う。つまり「LaTeX→bibtex→LaTeX→LaTeX」を行う。
- "makeindex 一括実行": makeindex(mendex) の実行はこれまで通りユーザーからの命令で実行する。ただし、makeindex 実行(C-c C-t i) では、必要な処理を一括で行う。つまり「LaTeX→makeindex→LaTeX」を行う
- "pdfdviモード" PDFプレビュアを利用している場合は上の3つの処理の最後に dvipdfm(x) を実行する。
bibtex の実行が面倒だったのは、bibtex を1回実行する前後にLaTeXを合計3回正しい順序で実行する必要があった事だ。いつ実行する必要があるかというタイミングはユーザーはだいたい分かっている事なので、その部分を自動判定にしなくても良い。
以下、補足。
- latexmk との棲み分け:全自動タイプセット環境を実現したい人は latexmk を使うように誘導。半手動だけど、自動判定のための処理が少なく、最短時間で結果を出力してくれる機能を YaTeX として提供する。
- pdflatex を利用している場合:、 "bibtex一括実行"の最初の2回のpdflatex呼び出しは「draftmode」オプションをつける。そうすると不用なPDFファイルを生成せず処理時間が短くなる。
- bibtex(pbibtex) や makeindex(mendex) は本来 LaTeX とは独立のプログラムなので、完全な自動実行機能を提供しない場合は、独立したコマンドにしておく事でユーザーの誤解などによるトラブルを防げる。
- "LaTeX 自動 rerun" は \tableofcontents も自動判定してほしいところだが、タイプセットログに警告がでないみたいなので、.aux ファイルの更新を md5 (Windows では FCIV?)で見る必要があるかもしれない。
array 環境、tabular 環境などで挿入されるテンプレートに「\\」は必要か?
\begin{array}[t]{ccc} & & \\ \end{array}
「\\」はターミネータではなくデリミタでは?
ML: [yatex:04679], [yatex:04680], [yatex:04682]
ref補完で種類を問い合わせる
ref 補完の時に eq/fig/tab/sec/enumerate などを聞けば良いと思う.数式がたくさんある原稿で,種類毎に参照先を拾ってくる機能は実用的.(図などは比較的近くで参照するけど、セクションを参照する場合は遠い。)
(追記:refのストローク数を最小限にするために実装しないと返答を頂いた.ストローク数を優先することは理解できる.でも種類毎に拾ってくる機能は既に実装されていて,figref や tabref のみでしか呼び出せないのは勿体ない気がする.)
ref 補完で subsection などを拾わなくてよいか?(2012-1-31:追記)
デフォルトの状態では section しか集めてこないけど,subsection や sub subsection を参照することはよくある。以下のように設定すれば良いのだけど,最初からできるようにしてもよいのでは?
(setq YaTeX::ref-labeling-section-level 3)
括弧サイズの調節(保留)
YaTeX は括弧のサイズを変更する \biggl \biggr など l と r が付いたものを知っているけど,l や r のない\bigg などの命令もある参考
\left \right という括弧を自動でサイズ調節する命令は,後者の拡張のような振る舞いをする.
- 1.76リリース以降にサポートが必要かどうかを吟味する
amsmath パッケージのコマンド(保留)
amsmath パッケージを使うと,cdots の代わりに dotsc, dotsb などが用意されているけどYaTeX は覚えていない.amsmath パッケージの利用は,標準だと思うので,AMSLaTeXに対応するなら網羅したほうが良いけど,作業量が多くなりチェックも大変なので 1.76 リリースではできないとおもう.amsmathについて徹底したほうが良いと思ったのは,YaTeX を使えば LaTeX の正しい使い方ができるということを実現するため.(でも線引きは難しい.dotsc などを使っている人は少ないかも.)
- 1.76リリース以降にサポートが必要かどうかを吟味する
text{} の引数の中が数式モード
数式環境の中でテキストを入力するのは text{} で,この中では数式モードではなくテキストモードと判定されている必要がある.その中で $...$ で数式を入れることもある.
親ファイルを見つける.返答を頂いたけどまだ考え中
YaTeX-indent-line が使い難い(課題)
section,subsection と階層ごとに深くなるけど,TeXの場合はインデントで階層構造を見せなくても良いと思う.YaTeX以外のエディタで,テキストが行頭から始まらないものはあまりない.
個人的にはlatex-indent.elを使っていてその動作に満足している.
広瀬さんに以下のように説明して頂いたが,解決策がないか考える.でも1.76リリース以降の課題.
このインデントは M-x YaTeX-section-overview
(または [prefix] s C-v)
で使われます。使いまわし原稿のセクション階層を1ずらしたりするのに
使うのである意味必須です(Sectioning バッファの u d U D)。
タイプセットの 1 or 2 ストロークキーバインド
C-c C-t のように,複数の操作にアクセスするメニュー的なUIはもちろん便利だけど,TeXの編集作業の中でタイプセットを実行する回数は頻繁.毎回プレビューを丁寧に見なくても,新しく追加した部分に間違いがないかということを確認することにもなり,作業時間が短くなる.(PDFビュアーは背面にあるまま自動で更新してくれるものもある.)
既に他が割り当てられているけど「C-c C-c」をタイプセットの呼び出しにするのが1つの候補.(Macなら⌘キーによるショートカットが空いているので1ストロークのものを好きに定義できるけど.)
数式環境のbeginの前の \ の色(保留)
Font-Lock による色付けで,数式環境(equation, alignなど)の場合だけ,\begin の \ だけ色が違う.(color-themeを利用している)
害はないので直さない.
cite{} 補完でのリスト作成(保留)
文献データベースを作ってそのbibファイルを読み込んでいる場合にcite{}補完をすると毎回リストを作成し時間がかかる.文献数が数百とか数千というのは珍しくない.
文献管理ソフトで bib ファイルを作っている人は,おそらく YaTeX のciteコマンド補完を使わずに入力している(参考(youtube))だろうから,急いで実装する必要はない.
ミニバッファからの引数入力は便利か? 追記:2012-1-30
デフォルトのまま YaTeX を使うと section型の補完による引数はミニバッファから聞かれる.変数 YaTeX-skip-default-reader を t にすればよいけど,デフォルトでは nil だ.この入力方法は本当に必要だろうか?引数がただの数字や単語だけならいい.例えば\section{}の場合,引数は複数の単語を入力する.英語ならスペルチェックを利用しながら書きたいかもしれない.ミニバッファの中だと ispell もちゃんと動作しない.数式環境の \sqrt{} や \frac{}{} も引数の中で数学記号
イメージ補完やギリシャ文字補完による入力が必要なものもある.このように LaTeX の多くのコマンドが取る引数はミニバッファではなく普通の入力の方がよいものだ.
提案としては,デフォルトから YaTeX-skip-default-reader を t にするか,場合分け(引数が一覧リストの中から選べる場合や\tilde{x}のように文字を修飾するコマンドの場合はミニバッファから,そうでない場合はすぐに \hoge{|} を挿入)するのが良いと思う.
TeXの要らないファイルを削除する機能 追記:2012-2-3
時々トラブルで aux ファイルを消す必要がある.このような LaTeX が作るファイル aux や log ファイルを一括で削除する clean 機能があると便利かもしれない.(latexmk -c に相当する機能)
textcolor 補完 追記:2012-2-4
pdflatex を使っている場合,textcolor コマンドを補完入力すると `named' color を使うか聞かれるが,それに従って \textcolor[named]{Blue}{yatex} と入力するとエラーがでる.
`named' color とは dvips によって定義されている68種類の色で,それらを使うには pdflatex 等でも使うには以下のように書けば良いらしい.(xcolorパッケージの使い方だと思っていたけど color パッケージでもできた.もう少し勉強する必要がある.)
\documentclass{article} \usepackage[usenames,dvipsnames]{color} \begin{document} \textcolor{Aquamarine}{\LaTeX} \end{document}
includegraphics での [prefix] C-g の動作 追記:2012-2-8
サイズ指定などがあると EPSファイルをうまく開けなかった.またPDFファイルの場合も正しく動作しないようだ.(山本さん@munepixyz からOSXWSのMLで教えて頂いた.)