2012年01月26日

Mac 嫌いのための iPhone 開発環境

 前にも言いましたが、僕は DOS と Windows で育ってきたため、Mac の文化にどうにも馴染めません。極力キーアサインやら何やら Windows と似た感じに設定して使ってますが、それでもできるだけ Mac 上で作業したくありません。

 それと、今 iPhone 開発に使っているのは友達に譲ってもらった MacBook なのですが、短期間ならともかく、常に机の上にデスクトップと MacBook が鎮座してるのはせま苦しいことこのうえないので、どうにかして1つのモニターで開発したかったんですが、やっとほぼ理想形になったのでその紹介でも。

 ほら、ひとつにしたらこんなにスッキリ!
20120126a.jpg
 ちなみにですね、木造アパートなもので、この季節は足元が寒すぎて作業にならないので、ほとんどここに座って作業はしません。大抵は奥のイケア椅子で毛布かぶって作業してますが、その話はまた今度。

Mac を Windos からリモートで操作

 いきなり本丸ですが、今時の Mac にはこのための機能が最初から入ってるので超簡単。
 「mac vnc」 でググればたくさんでてきますが、こちらのページが分かりやすいかな。  これだけでビックリするくらい快適に Windows 上から Mac が操作できてしまうのですが、しばらく触ってると何かおかしい事に気付きます。
  • なぜか 「=」 と 「’」 が打てません。
  • 「Option」 ボタンがどこにも見当たりません。
  • ちなみに、Macキーボード上の 「Control」 には 「Ctrl」 が、「Command」 には 「Alt」 と 「田」 が対応します(RealVNCの場合)。
 「’」 と 「Option」 はまだ我慢できますが、さすがに 「=」 なしでプログラミングは苦行過ぎるので、さて困ったぞと調べてみたら、神が居られました。  「Option」 キーは相変わらずダメみたいですが、 「’」 と 「=」 が打てればほぼ困らんのでまあいいや。ソースも公開されてるし、ものすごく暇になったら自分で調べますか。

 あと、個人的には Control と Command を入れ替えたいなぁ。MacBook 本体のキーボードは入れ替えて使ってますが、RealVNC 経由では入れ替わりません。コピペする時に無意識に小指で Ctrl を押してしまうので、どうしても慣れない。

Mac 上のファイルを Windows 上から編集

 これも今時の Mac なら簡単。
 「システム環境設定」 -> 「共有」 を開き、まず 「ファイル共有」 をチェック。そのあと 「オプション」 の 「SMB(Windows)を使用してファイルやフォルダを共有」 をチェックすれば、Windows からエクスプローラー等で普通にアクセスできるようになりました。
20120126b.jpg
 これで Windows 上のエディタで Mac 上のソースを直接編集できるようになったので、今となっては Xcode はビルドボタンを押すだけのツールに成り下がりました。うちでは VisualStudio もそんな扱いですよ。
 何の自慢にもなりませんが、僕は昔から IDE の多機能エディタが嫌いなのです。勝手にいろいろされると気が散る。困った大人だナァ。

MacBook を遠隔起動

 ここまで来ると、もはや MacBook は開く必要ないのですが、困った事に MacBook の電源ボタンはフタ開けないと押せません。
 スイッチ押すためだけにいちいち引っ張り出すのはアホすぎるので、電源ボタン以外でスリープを解除する手段がないかと探したところ、これは用意されていました。

 「システム環境設定」 -> 「省エネルギー」 の 「電源アダプタ」 にて、 「ネットワークアクセスによってスリープを解除」 をチェックすると、他のコンピュータからのアクセスに反応してスリープが解除されるようになります。
20120126c.jpg
 ただ、アクセスすれば何でもいいという訳でもなくて、WakeOnLan マジックパケットという専用の信号を送らないといけません。ググれば送信するためのツールがたくさん出てきますが、僕は一番単純なこの子で。  wakeup.exe のショートカットを作り、ショートカットのプロパティのリンク先に起動したい MacBook のMACアドレスを書き足せば、その Mac 起動専用のショートカットになります。
 例えばMACアドレスが 「0A:0B:0C:0D:0E:0F」 なら、 「wakeup.exe 0A0B0C0D0E0F」 ですね。

MacBook 寝かせないよ?

 やったよ!。これでもう2度とフタを開けずに生きていけるよ!
 ‥‥と喜びたいところなのですが、ここで今は亡きジョブズの魂が蘇ります。良きパートナーである MacBook 様は、フタを閉めたら今日の仕事はもう終わりと判断して、意地でもスリープめされます。そしてこれを拒否する手段はありません。ええ、声を大にして言いますとも。
 だからこういうとこが嫌いなんだよ Apple!
 いや正確には、USBキーボードとマウスとモニターと電源コードを全部刺しとけば、良きパートナーである MacBook 様は 「OK!、フタしまってるけど今は仕事するんだね!」 と気づいてくれますが、ひとつでも欠けたらダメです。いやそれ全然親切じゃないから。

 しかしながら、やはり神様は居るもので、 「フタを閉めてもスリープしない」 というしょうもないツールが結構作られてました。でもどれもあと一歩惜しかった。
  • macosx-nosleep-extension
    開けた状態から閉じてもスリープしなくなりますが、閉じた状態で起動すると即寝てしまいます。惜しい。
  • MacBookを閉じたまま運用するカーネル機能拡張
    こちらは閉じた状態から起動してもOK。素晴らしい。
    さらに、フタが開いてるのと全く同じ挙動になるので、一定時間でモニタを消したりスリープさせたりもでき、ちょこっとエコです。
    ただ、再起動時だけは一瞬のスキを突いて寝てしまうので、その時だけはフタを開けないとダメです。あと条件がよく分かりませんが、たまに起きてくれません。
    2012/02/12追記
    たまにスリープから復帰できないのはソフトの問題ではなく、スリープ中に MacBook の電源コードが一度でも抜けると、その後一切 WakeOnLan を受け付けないようです。うちでは寝る時は集中コンセントでPC周りの電源を全部落としてるので、そのせいですな。解決方法は‥‥常に電源供給するしかないでしょうなやっぱ。はぁ‥。

惜しかった

 という事で、非常に惜しいとこまで行ったのですが、結局たびたびフタを開けに行く羽目になるので、諦めてケシゴム挟んで半開きですよ。だらしないなぁ。ジョブズが見たら泣くぞ。そもそもあなたのせいだよ!

 でもまあ、普段と同じキーボードと広いモニター、そして慣れたエディターで開発できるのでとても効率は上がりました。
 それに、vnc 経由でも iOSエミュレータを使って許容できる速度でデバッグできるのはスゴイなと思います。さすがにアクションゲームはキツそうですが、その時は実機を使えばいいだけだし。

 結論。Mac とも、なんとかやっていけそうだ。ビルドボタンしか押さないけどな。字あまり。

posted by ひこざ at 21:33| Comment(4) | 開発 - iPhone
この記事へのコメント
[N] 「Mac OS X 10.7.3」リリース
http://netafull.net/macosx/039551.html

直ったかもよ。消しゴム問題解決?
Posted by tokinaka at 2012年02月03日 11:14
おお、情報どうもです。
でもうちのはまだ 10.6 なのでちょっと手間ですな。

あと、たまに起きないのは原因は分かったので、それはまた別の記事に書きます。
Posted by ひこざ at 2012年02月03日 20:37
Objective-Cだと"¥n"で改行文字にならないので、option+'¥'でバックスラッシュ出せないと困るように思いますが、大丈夫ですか?
Posted by はらだ (C3 OB) at 2012年03月31日 18:02
コメントありがとうございます。

今まで全然意識してませんでしたが、vnc経由で¥を押すとなぜか普通にバックスラッシュが出ます。実機では¥が出るんですね。知りませんでした。
さらにWin用のキーボードなので、右下のアンダーバーキーを押してもこれまたバックスラッシュが出ます。

逆に、どうやっても¥が打てないのですが、IMEで変換すれば一応出てくるので、大して困らなそうです。

そもそも、ソースはsmbで共有してWin側のエディタで打つので、Mac側でコードを打つ事はほとんどないんですけどね。
Posted by ひこざ at 2012年03月31日 19:33
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。