MacOS X 移行日記

重要!

この日記には、Macユーザ(ひょとしたらWinユーザも?)にとって不愉快かもしれない文章が多発します。というか、これは私の備忘録なので、苦情は受付けません(笑)

でも、これからWinからMacへの移行を考えている人にとっては、それなりに役立つと思います。

戻る
「戻る」のキーボードショートカットはBACKSPACEキーです。このショートカットは、Macのブラウザでも使えることが多いです。が、「戻る」をマウスでなく、ショートカットでやろうとするような人は、Macに移行するのはやめたほうがいいでしょう。


はじめに 2008/03/25

いま私の机には、MacPro(quadcore Xeon 3GHz x 2)が鎮座しています。主に数値計算用に買ったのですが、どうせなんで普段のデスクトップ環境もMacに移行できないものかと思い、格闘を開始しました。これはその汗と涙の結晶を綴った日記です(爆)

さて、この日記もMacで書こうと思い、ファイルサーバ(Samba)上のHTMLファイルを編集することにします。MacとWinとの間のファイル共有は実にスムーズです。私の環境では、ウェブサーバも同一マシンなので、編集すればいきなりWEBが更新されます。なんで、HTMLファイルをテキストエディットなるソフトで開いてみました。すると!
ブラウザで開いたかのような画面が表示されます。む~、HTMLソースで書きたいんですけど・・・Winのメモ帳みたいなソフトはないんですか?? OS標準ソフトとして、もっとも基本的なソフトだと思うんですが・・・
そうか! emacsがあるじゃん! UNIX系OS万歳!というわけで、ファイルサーバ上で
  joefs> emacs index.html &
を実行します(すでにXの出力はMacに設定済み)。すると表示されたのは・・・文字化けしまくりの文章(涙)。そういやファイルサーバには日本語フォント入れてないんだった。んーと、ファイルサーバのファイルはMacにもmountされてるので、今度はMac側で
  macpro> emacs index.html &
あ~そうでした、XEmacsはMacには入ってないんでした。悩んだ末に、今度は無理やりXCODEで開いてみます。やはり文字化けです。SJISは、DOS系の文字コードなんで、そもそもMacのアプリで開くには無理があるんですかね? でもテキストエディットは、ちゃんとSJISの文章を表示してたんですけどね。
もうどうにも大変なので、諦めてWinから書くことに決定したのでした・・・

2008/03/24まで

フォントが見にくいです
どうもモニタの性能にかなり依存するようです。アナログ接続だと、一気に汚くなる模様。MacBookAirではフォントはとっても奇麗です。 が、綺麗なだけで単位面積あたりの情報量は犠牲になってる気が。くっきりした「コンピュータっぽいフォント」を求めて、環境設定で、フォントスムージングするサイズを変更すると・・・まあ、Mac持ってる人はやってみてください(笑)。システムフォント、変更できないのかな(まあこれはWinでも危険な技として知られてますが)
エクセル
F2でセルを編集しますよね。もうこれは全エクセルユーザーの常識かと思っていたら、MacにはF2はコピーという慣習が昔から残っているらしく、セルの編集はCTRL+Uです。気が狂いそうになります。変更する方法も今のところ不明。 
Finder(ファイル表示)
ファイルとフォルダがごっちゃに並びます。Winだと、名前でソートするとき、まずフォルダだけを上に並べることができます。どう考えても、Winのが便利ではないかと・・変更もできない模様。
マルチモニタ環境
メニューは左モニタにしか出ません。マルチモニタや巨大モニタ使うと、メニューが左上のほうにちっこく表示されるだけです。右モニターで Firefox使ってると、たとえば新しいタブを作るとか、いっこ前に戻るとかは右モニター上でマウス操作です。でもブックマークからページを選ぶときは、左モニターに移動です。気狂いそうです。
XCODE
Xcodeでプログラム書くとき、キーバインドをEmacs風にできます。
が、^X^Sが上書き保存に割当不可です。何もしないならまだしも、なんか「?」を上下逆さまにした分けわからん文字が挿入されます。その他のコマンドがEmacs風なだけに、いっそう混乱します。 
UNIX ??
MacOS X はご存知のようにUNIXカーネルですが、UNIXとの共通点はカーネルだけと言ってもいいくらい、全然違うOSです。ホームディレクトリが/home/ (username)じゃないUNIXは、生まれて初めて見ました。プロセス番号1にinitがおられない時点で、かなり炸裂しておられます。
	(とはいえ、デフォルトでXサーバが使えるし、sshも入ってるし、その辺はUNIXですが)
XEmacsはインストール可能なようですが、それにはソースからコンパイルが必要。 Winとなんも変わりません(Winの方がネットに情報多い分楽)。XEmacsの代わりにCocoaEmacsがあって、これは簡単にインストできますが、Xサーバへの出力はもちろん不可(Cocoaとは高機能Xみたいな感じかな、よう知らんけど)。UNIXユーザならMacの方が楽というのは絶対嘘です。WinにCygwinいれた環境と、いい勝負するんじゃないかと思います。
MacBookAir
薄さはすばらしいですが、その代償としてインターフェースが貧弱すぎです。とくにUSBポートが1個しかなく、Ethernet ポートも存在しないので、有線LAN+USBマウスを使うためには、USBポートレプリケータが必要です。タッチパッドは高機能らしいですが、これもコンピュータが人間に多くを要求するAppleの哲学の現れ。MacBookAirにしか通用しないタッチパッド操作をマスターする気にはなれません。貧弱インターフェースな上に、重さは1.3kg。Winノートと比較して、薄さ以外に有利な点は特にないのでは。 
	(とはいえ、この薄さは感動的ですよ!)

2008/03/25

Finder
やはりFinderが使いずらい。DELでファイル削除されない(アップル+DEL)、ENTでファイルを開けない(アップル+O)、F2でファイル名変更できない(ENT)、右クリックからファイルを新規作成する機能が貧弱、"R"キーを押していっても"R"で始まるファイルを次々とフォーカスしない、などなど・・・
矢印キーは使えるものの、あきらかに同じことをやるのにキー入力が多すぎです。これらのショートカットはどれも変更不可な模様。PathFinderというシェアウェアは優秀という噂も聞きますが、やはりキーボードショートカットは弱い模様。
キーボードで操作したい人は、Macを使うなということか。
WindowsのExplorerって、MacOSでコンパイルできないんでしょうか?(爆笑)
Dock と Expose
なんか文句ばっか言ってるので、Macの素晴らしい部分も書きましょう。なんといってもExposeです。素晴らしいです。ウィンドウ管理が圧倒的に楽になります。モニタ面積を効率的に使えます。とくにノートなど、どうしてもモニタ面積に制約あるマシンで威力を発揮しそう。DockはWinのタスクバーみたいなものです(誤解しないように言っておきますが、Macの画面の上に表示されるメニューは、Winだと各ウィンドウのメニューに対応します。MacのメニューバーとWinのタスクバーは、時計と日本語IMEが表示されるという点では同じですが、別モノです)。
メニューバー
位置が固定されてて、使いにくいことはすでに書きました。さらに問題として、キーボードショートカットがあります。Winのメニューは
  ファイル(F)  編集(E)  表示(V)・・・
のように、かならずショートカットが示されています。たとえばWordやExcelでは、
  「印刷プレビュー画面」  ALT+F,V
です。0.1秒で印刷プレビュー画面を表示可能です。これらのショートカットを使いこなすことで、効率よい操作が可能です。しかるに、Macのメニューは
  CTRL+F2
で、メニューにフォーカスして、矢印キーで選択するのが精一杯です。これではマウスと大差なし(そもそもこの機能は、身体障害者向け機能の一部だそうです。私もマウス使いの下手な障害者だったようです)。ためしに、Mac版Excelで印刷プレビューを表示してみましょう・・・と思ったら、なんかコマンド自体が存在しなかったので、
  「形式を選択して貼り付け」 ALT+E,S
で試してみました。これもよく使う機能です。Macだと
  「形式を選択して貼り付け」 CTRL+F2,右,右,右,下,下,下,下,下,下,ENT
で到達可能です・・・ 絶対マウスの方が早いね(涙)
がんばって練習してみましたが、どうしても1秒を切れませんでした(笑)
もちろん、「保存」=「アップル+S」など標準的ショートカットは統一されているものの、メニューの深い階層にある機能に、キーボードだけでアクセスするのは事実上不可能です。
起動が早い
やっぱりいいとこも書かないと片手落ちな気がするので。私のMacProはハード的性能も高いですが、それでも起動はだいぶ早い気がします。とくに、起動直後にもたもたしません。Winだと、デスクトップ表示されてからも、1分くらいはがちゃがちゃやってて遅いですからね。
Finder
いいとこもあります。フォルダにどんどん深く入っていくとき、新しいウィンドウを開かずに、なんというか、とにかく上手く表示してくれます。でも、長いファイル名を表示しきれなくなったりするので、邪魔なときもありますw

2008/03/26

CarbinEmacs
インストしてみました。おかげで、この日記をMacから書くことが可能にw
こいつは本物のEmacsです。なんと、アップル+Qで終了しません。すばらしい。。。
が
日本語入力モードだと、CTRL+Yで特殊文字入力モードに入ります(ちなみにCTRL+YはEmacsではペースト機能に対応してて、もっともよく使うコマンドの一つです)。誰がこんな余計なお世話を焼いてるのか謎ですが、ことえり、MacOSXのいずれかでしょうね。非常に残念です。これではCのプログラムならともかく、日本語HTMLファイルは書けません(涙)
というわけで、今からWin起動します(笑)
UNIX数値計算マシンとしての速度比較
さて、Winに来ました、ということはどうでもよくて、数値計算マシンとしての実力チェックです。
Linux側代表は quad さん。1CPUながら、クアッドコアの強力計算機です。
	quad
	CPU: Core 2 Extreme QX6700 (quad core 2.66GHz/ FSB 1066MHz)
	Mem: 1GB DDR2 SDRAM (800MHz, 512MBx2)
	OS:  Fedora Core 6
Mac側代表は macpro さん。クアッドコアCPUのSMP構成という、豪華仕様。
	macpro
	CPU: Xeon x 2 (quad core 3 GHz/ FSB 1333MHz)
	Mem: 2GB DDR2 FB-DIMM ECC (667MHz, 512MBx4)
	OS:  Mac OS X Leopard
シングルコアの性能はほぼ互角(Macが若干早い)。コマンドラインから同じCプログラムを走らせるので、基本的に大差はないはずですが、この状況で両者どういう戦いを見せるのか、テスト開始です。
	ee6-vsjava.c (2次元反応拡散系の計算、PNGファイル出力)
	(gcc -O3 -lpng)
	quad : 164 sec   (GCC 4.1.2 RedHat)
	macpro: 109 sec  (GCC 4.0.1 Apple)
おおっと!
予想以上に差がつきました。macproが1.5倍も早いです。クロック比は1.13倍で、FSBもMacの方が早いとはいえ、GCC環境ではMacの圧勝といえそうです。
OpenMP+8コア
続いて、OpenMPによって並列化されたCプログラムの実行速度比較です。
ここからは、OpenMPをサポートし、SSE3命令などを使って高速化してくれる、Intel_C_Compiler (ICC)君の出番です。
	ee6-vsjava.c
	(icc -O3 -lpng -openmp ほかいろいろ)
	quad :  61 sec   (ICC 9.1,  OMP_NUM_THREADS=1)
	macpro: 55 sec  (ICC 10.1, OMP_NUM_THREADS=1)
やはりICC君は早いです。さくっとGCC君の2倍の速さを出してきました。
また、シングルスレッド対決でも、ICC君使用だとかなり差が詰まってきます。原因は不明ながら、ICCはバージョンによっていろいろ速さ変わるので、そのせいかも。つづいて、マルチスレッド実行のテストに入ります。
	quad :  55 sec   (おまけ:GCC 4.1.2 RedHat, -fopenmp, OMP_NUM_THREADS=4)
	quad :  20 sec   (ICC 9.1,  OMP_NUM_THREADS=4)
	macpro: 27 sec  (ICC 10.1, OMP_NUM_THREADS=4)
4スレッド実行では、結果が逆転! しかも1.3倍と大差です。quadは4スレッド実行で3倍の速度を達成しているのに対し、macproは2倍にしかなってません。
	macpro: 20 sec  (ICC 10.1, OMP_NUM_THREADS=8)
8スレッド実行でも、macproはquadに勝つことはできませんでした(涙) 8スレッドも使って、速度はわずか2.7倍。quadの4スレッド実行より、並列効率が悪い。
いったいこれはなんなんでしょうか? よくわかりません。MacのカーネルであるDarwinは static link libraryをサポートしないので、これがOMP関連のスレッド生成オーバーヘッドを激しく大きくしているのでしょうか。
(このプログラムは、作成者の怠慢により、狂ったようにスレッドの生成と終了を繰り返しまふ)
にしても、予想外の実験結果となりました。
	・・・このMacに電源入れる理由がどんどんなくなっていく・・・

2008/03/27

mi
というフリーのテキストエディタを入れてみました。少なくともHTMLファイルをソースで表示してくれます。感謝w
SMPにおける数値計算
Macで遅い理由は、スレッド作成オーバーヘッドの違いかとも思われましたが、プログラム書き直してスレッド作成を劇的に減らしても、なんの変化も現れず。つまり、スレッド生成コストはほとんど関係ない模様。
次に考えられるのは、SMPゆえに発生するメインメモリへのアクセスです。そこでまずはマシンのおさらいを
	quad
	CPU: Core 2 Extreme QX6700 (quad core 2.66GHz/ FSB 1066MHz)
	L2:  4MB x 2
	Mem: 1GB DDR2 SDRAM (800MHz, 512MBx2)
	OS:  Fedora Core 6
	
	macpro
	CPU: Xeon x 2 (quad core 3 GHz/ FSB 1333MHz)
	L2:  4MB x 4
	Mem: 2GB DDR2 FB-DIMM ECC (667MHz, 512MBx4)
	OS:  Mac OS X Leopard
Core2アーキテクチャでは、L2キャッシュはコア2つにつき1つ共有されてます。また、quadcoreCPUはコア4つが同じダイに乗ってるので、4MBx2の8MB分までは、メインメモリを介さずにアクセス可能。というわけで、もっとでかい二次元配列を使って調査開始です! (Tの値は適当に調整し、quadは4スレッド、macproは8スレッド実行)

	配列サイズ小 320KB(昨日の結果)
		macpro / quad = 1.0

	配列サイズ中  8 MB
		macpro / quad = 1.57

	配列サイズ大 32 MB
		macpro / quad = 1.41

この結果の解釈として、まず配列サイズ小では、SMP環境ではメインメモリへのアクセスの分だけ遅くなり、コア数が多いことによる計算速度向上と相殺して結果は等しくなっている。配列サイズ中では、quadのキャッシュからは多少はみ出るので、quadもmacproもメインメモリアクセスが発生している。しかし配列は、16MB分存在するSMP環境のキャッシュには入るので、その結果、SMPが最も早い。さらに配列サイズ大では、完全にL2からはみ出ている。計算速度が早い分、SMPが早い。
配列サイズ中で、2倍には程遠い結果となってしまっているのは、並列化のオーバーヘッドに加えて、MacProはメインメモリが 667MHz+ECC と遅いことも影響しているだろう。
SMP環境では、2つあるクアッドコアCPUの一方だけを重点的に使って計算してくれれば、quadと同じ結果が理論上でるはずであるが、スレッドのCPUコアへの割当はOpenMPでは指定できない。よってこのような悲しい結果となる。
さて、この仮説が正しければ、次のテストではシングルコア性能で勝り、実際に1スレッド実行では早いMacが勝利するはずである。

	配列サイズ小 320KB(両者とも2スレッド実行)
		macpro / quad = 0.86

謎すぎる。2スレッド実行の場合、スレッドのコアへの割当は、馬鹿な方法と賢い方法があるが、この結果は何回やっても再現性があった。純粋に、Darwinカーネルがダメダメなんだろうか? それともSMPだからなのか? やはりこのMacProにLinuxインストールしてテストする必要があるようだ。
モノリシックカーネル vs マイクロカーネル
たった今勉強しました。モノリシックカーネルとは、カーネル全体が一つのプログラム、マイクロカーネルとは多数の部品からなるプログラム、といったイメージの模様。どちらかというと Linux はモノリシック、MacOSX はマイクロカーネルに近い模様。どちらが早いかというのは、あまりにもディープな議論なので分からんが、なんとなくモノリシックカーネルの方が、(コードは汚いかもしれんが)一人が全体を見渡して子分達(プロセス、スレッド)を最適に配分できる気もする。というわけで、上述のMacOSXでの並列実行の遅さは、カーネルの性能の違いな気もする。しかしカーネル性能でここまで違うのか、よく分かりませんが。。。

2008/05/03

LeopardにおけるSMBネットワーク上のワークグループ名の変更
はい、結論から行きましょう。これは 「 不可能 」 です。
Leopardは、SambaサーバやWindows機にあるファイルを読み書きできますが、恐れ多くもジョブス様の作られたOS上のファイルに対し、Windowsごときがアクセスすることは、お許しになられないようです。。。

http://docs.info.apple.com/article.html?artnum=107083-ja
から引用:
「Windows ワークグループ名を指定する
デフォルトの Mac OS X SMB ワークグループ名は“WORKGROUP”です。Mac OS X のカスタムインストールを行って、BSD Subsystem を削除した場合は、ワークグループ名を変更できない可能性があり、このために共有を使用できない場合があります。標準インストールを行った場合は、この問題は起こりません。必要に応じて、BSD Subsystem を選択した状態で Mac OS X 10.2 を再インストールしてください。
Mac と PC とでファイル共有を行う場合は、ワークグループ名が両方のコンピュータで 正確に同じである ことを確認してください。」

まずは、ワークグループ名を変更する方法を書いて欲しいですねえ(笑)
どうも、以前のバージョンでは「ディレクトリなんたら」というツールで変更できたらしいですが、Leopardでは不可能な模様。smb.confを強引に書き換えるという荒業を実行している人のWEBページなども発見しましたが、うまく行かないようです。

相変わらず喧嘩売ってる仕様ですね。電話したら、「Windowsのワークグループ名を“WORKGROUP”にしてください」っていうお姉さんが出てくるんでしょうか?ww

2008/12/26

というわけで、Win→Macへの乗り換えについてまとめると、
初心者:周囲の人がMacユーザー多いなら、Macも可。でも職場とか、やっぱりWinが多いと思うので、右も左も分からない人にMacを勧めるのは難しい。
初級者:乗り換えるなら、ここかも知れません。Macにストレス感じるほどWinの世界に浸りきっておらず、PC界の基本知識だけは確保した今がチャンス? お勧めはしませんがw
中級者:せっかくある程度Winに慣れたのだから、もっとWinを極めたほうが便利。ネット情報の豊富さでもWinでしょう。
上級者:Winに慣れた体にMacはストレス溜まります。もし、何か新しいOSで遊びたい、というのであれば、UNIXを勉強しましょう。そのほうがよっぽどコンピュータの理解が深まります。タダで始めれるし
オタク級:好きなことやればいいと思いますが、Win→Macのハードルの高さだけは自覚してから逝ってくださいw でもMacでの動作確認とかのため、最近はMacも安いし、1台あって損はないかも
Microsoftむかつく、という気持ちは分かりますが、Macを触り始めれば、そんな理想論より現実の方が大事、と気づくはず(というか私はそうだった(笑))
なお、Macユーザに、Mac→Winをお勧めしてるわけではないので、念のため。

戻る
「戻る」のキーボードショートカットはBACKSPACEキーです。このショートカットは、Macのブラウザでも使えることが多いです。が、「戻る」をマウスでなく、ショートカットでやろうとするような人は、Macに移行するのは大変でしょうね。。