2016年10月29日

[開発者向け] 俺とMacの泥仕合 Autumn 2016

 さてと、Chronus の移植のために iOS の勉強をはじめて、もう2ヶ月近く経つわけですが、まあ予想以上に難航してますなぁ。つーても別にたぶん、iOS アプリの難易度が特に高いって訳でもなくて、単に Mac と Xcode に触るのが嫌でイヤで机に長時間向かってられない ってのが最大の原因ですけど。あーいや別に宗教戦争する気はないすよ。僕には合わないってだけですから放っといてください。正確には、使いにくいと思っても、大抵どうにもならないとこがキライ

 でもだからといって、アプリ作りでしかメシ食ってけない人が iPhone は作れませぇん!とかいう訳にもいかんので、極力イライラメーターを上げずに Mac と Xcode の相手をするための無駄な努力からまとめていく事にしましょう。
 今までも何度か悪あがいてましたが、それの2016年版という感じですね。まあ結局、足掻いたところで大抵どうにもならないんですけどね。Macならね。

リモートだけじゃダメでした 1:Interface Builder 編
 まあ基本方針として、慣れてる Windows のほうが調べ物とか細かい作業をしやすいし、机にキーボードとかを2セット置いたりイチイチ切り替えたりもしたくないので、できれば Mac の操作は全て Windows 側からリモートでやりたい訳ですよ。
 で、それ自体は以前からやってて、今までも簡単な実験や、Unity の iOS 版のビルドとかする分には不自由なかったのですが、今回ちゃんと iPhone らしいアプリを作ろうと思ったとたん、予想を上回るデコスケ だという事が発覚しました。

 勝手知ったる自社OSで作ってるくせに、どんな組み方をしたらこうなるのか意味が分かりませんが、Xcode の UI 作成ツール、Interface Builder を使おうとすると、なんでかリモート経由では一部の操作ができません。具体的には、
  • storyboard 上に置いた ViewController をドラッグで移動できません
  • さらに ViewController 上に配置する 各種UIパーツまでも Xcode8 から移動できなくなりました。Xcode7 では動かせてたのにまさかの悪化w。
  • iOS 開発の入門とかで、何も知らない人がまず最初にやらされる 「各種UIパーツからソースコードへ Ctrl を押しながら線をひっぱる」 って操作ができません。まあこれは右クリックメニューでほぼ代替できるのだけど、ビギナーを挫折させるには十分な仕打ち
 うん、まるで使い物になんねッすね。で、調べてみても、そもそもリモートのみで Xcode を使おうとする人なんてほぼ居ないのか、ロクな情報も見つかりませんでした。かろうじて分かったのは、「その問題はAppleはずっと把握してるはずだけど、直す気ないんじゃね?」 という事くらい。
 あとね、これはリモート関係ないんだけど、Interface Builder を初めて使うと、まず画面を自由にスクロールできない事にイラっと来るんですが、マウスホイールでしかスクロールできないんすよねコレ。で、横スクロール機能がないマウスはどうするかというと、Shift+ホイール だそうで。ハァ。そすか。  せめて Photoshop とかみたく 「○○キー押しながらドラッグ」 くらい用意してて欲しいんだけど、もしかしてタッチパッドなら2本指でスクロールできたりするんすかね?。Mac使いなら全員持ってると思ってんだろうなぁ奴ら。もうこんな事でイライラすんのヤだし、諦めて買うかと調べてみたら、
Magic Trackpad 2 ¥12800

死    ね!
 いくら殿様商売でも 7800円 くらいやろと思ってたら甘かったよ。
 まあ結局このあと、自分なりのアプリの組み方を試行錯誤した結果(別記事の予定)、たぶん storyboard は1つの画面のレイアウトにしか使わないという結論に達したので、そんなら画面スクロールする必要もほぼないし、もうホイールでいいやという事になりました。
リモートだけじゃダメでした 2:キーボード編
 さあ、リモートでの問題点はまだ続きますよ!
 リモート接続しようとして、まずは使い勝手のいい Chrome リモートデスクトップから試す訳ですが、なんでか問答無用で US キーボード扱いになって記号がマトモに打てないんで、まあプログラミングは無理すな。応答速度は素晴らしいんだけどね。もったいない。

 で、キーボードの問題については、以前悪あがいた時に見つけた素晴らしいvncクライアント のおかげでほぼ解決するのですが、今度は画面の反応が悪すぎて使い物にならないので、結果、リモートで操作はするけど Mac に繋いだモニターを見る という変態的な使い方になりました。リモートの意味ほぼねぇ!
20161029a.png

 あとですね、もひとつ問題があって、オイラは Ctrl キー(Mac だと Command キー)はキーボードの左下隅にないと暴れそうになる人 なので、Mac を使う時はまず最初に Command を左下に入れ替えるんですが、リモートだとこの入れ替えが効かないんですよね。
 おかげでカット&ペーストとかするたび暴れゲージが溜まっていくので、結局、腰を据えてコードを書く時はキーボードを切り替えざるを得ないという。もはやリモートですらねぇ!

 ちなみに、以前ちょっとだけ iOS アプリを作ってた時は、Mac 上のプロジェクトを丸ごとファイル共有して、コードは全て Windows のエディタで書く という悪魔的な事をしてましたが、当時は OpenGL の全画面アプリで API もほとんど触らなかったので問題なかったけど、ちゃんと API を使い始めたら入力補完がないとキツイですね。
 Apple の API は無駄に文章的すぎて覚えにくいんですよ。-ing とか -ed とか to とか for とかどうでもいいっての。そして Swift3 お前だよお前!。メソッド名を今風に一新してみましたじゃねえよバカ死ね!。ネットでサンプルコード見つけてもメソッド名がいちいち変わっててホント腹立つ。
 という事で、残念ながら、UI をデザインするにも、コードを書くにも、リモートだけでは無理 という事が分かりましたので、結局上の図のように、基本的にはリモートで使いつつ、UIやコードを作りこむ時はキーボードを切り替える、という感じに落ち着きました。
 つーても、今後もう少し Swift と API に慣れたら、入力補完に頼らずコードは Windews 側で書くようにしたいですけどね。そもそも Xcode の入力補完は全然気が利かんくて腹立つし。
俺のビヘイビア 2016
 Xcode は1つのウインドウで全ての作業をさせたがるし、そのくせカスタマイズはほぼできんしで、初期設定のままだと画面が不要な情報だらけになって非合理極まりないのですが、状況ごとに表示すべきウインドウを取捨選択する 「ビヘイビア」 の設定するとかなりマシになります。
 その辺については 以前の悪あがきの時にだいぶ改善させた のですが、当時は Xcode のエディタを使う気が一切なくて、あまりに極端な設定だったので、今回はちゃんとエディタも使う前提で再考してみました。主な要求としては、
  1. コーディングするための画面とデバッグするための画面(=タブ)を完全に分けて、それぞれの作業に必要ない情報は隠す。
    20161029b.png
    20161029c.png
  2. ビルドエラー一覧 (Issue navigator) が横に狭いと肝心な部分が読めなくてイラっと来るので、エラー一覧を読みやすくする。
    20161029d.png
  3. メイン以外のエディタウインドウにログとかデバッガとか割り込んでこないようにする。アレどこにでも沸いてくるのホント邪魔。おまけに消すのめんどいし。
の3点で。そのためにビヘイビア設定 (メニューから Xcode > Preferences > Behaviors ) で設定すべき項目は以下のとおり。
Build : Fails (ビルドエラー発生時)
  • Show tab named Error in active window
  • Show navigator Issue navigator
  • Hide debugger
  • Hide utilities
※エラー修正用の 「Error」 タブに切り替える。右側のプロパティ領域は隠して、そのぶんエラー一覧を広く表示する。
Running : Starts (デバッグ開始時)
  • Show tab named Debug in active window
  • Show navigator Debug navigator
  • Show debugger with Console View
  • Hide utilities
※デバッグ作業用の 「Debug」 タブに切り替える。右側のプロパティ領域は要らんので隠して、コンソール表示領域を広くする。
Running : Pauses (デバッガブレーク時)
  • Show tab named Debug in active window
  • Show navigator Debug navigator
  • Show debugger with Variables & Console View
※「Debug」 タブを再表示する事で、常にメインウインドウにデバッガが出る。
Running : Generates output (ログ出力時)
  • Show tab named Debug in active window
  • Show debugger with Console View
※「Debug」 タブを再表示する事で、常にメインウインドウにログが出る。
Running : Completes (デバッガ停止時)
  • Show tab named Edit in active window
  • Show navigator Project navigator
  • Hide debugger
※コーディング作業などを行う 「Edit」 タブに切り替える。
posted by ひこざ at 23:58| Comment(0) | 開発 - iPhone
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

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


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