結局Macから離れられない3つの理由
「強々自作マシーンを作る(1)」「強々自作マシーンを作る(2)」で5年以上使えるマシンというコンセプトで自作したわけですが、残念ながら未だメインマシンとしてバリバリ活躍しているとは言えず、なんで作ったんだっけ?という状態でございます。
Windowsでないとできない作業以外はWindowsを起動すらしていないという酷い有様に。
うーん、どうしてこうなった?
で、結局何を使ってるの?といったら目下MacBookProです。やっぱりMacかよという状態。
いや、別に決してApple信者ではないと思ってるのですが、気がついたらiPad Pro(Apple Pencil付き)も持ってるし、なぜか自動ビルド用にMac mini 2014まで導入されている始末。
ということで、なぜWindowsへの作業環境の移行が進まないのか。
その理由を客観的に捉えるためにもちょっと整理してみようと思います。
Apple謹製のメモ帳アプリが便利過ぎる件
最初に疑ったのは、Apple謹製のメモ帳アプリです。
こいつは、iPhone/iPad/Macには必ず入っていて、Windowsでいうメモ帳みたいなやつなんですが、Apple製品間でiCloud経由で同期してくれます。
以前はEvernoteを使っていたんですが、こいつを使うようになってからはすっかり使うことがなくなりました。
さらにiPadで使えば手書きで書いた物もノートで残すこともできるし、ちょっとしたチェックリストだって作れちゃいます。Windowsで作業しているときに、ふとメモ帳をみたくなる時があります。さらにその内容をコピペしたい時も。
そんな時、結局Macに戻って内容をコピーした物をメールとかクラウドストレージとかで送るのがこの上なく億劫になってしまうのです。
つまり、あれですね。
Apple謹製のメモ帳に記録したメモが多すぎて逃げられない。
そして、今更Evernoteとか別のアプリを使う気もない。
そういうことです!
UnityでiOSのプロジェクトを調整するのに必要
UnityはもちろんWindowsでも使えます。
というより、Macに使えてWindowsで使えないアプリって今ではほとんどありません。
(FinalCutとかLogicとかApple製の物を除いては)
当初はWindowsでサクサク開発をして、いよいよビルドという時にMacでやればいい!そう考えていました。
ところが、ビルドをする前にiOSのプロジェクトを調整する場合があるわけです。例えばサードパーティ製のSDKやフレームワークを入れたりする時とかにね!
iOS対応のSDKやフレームワークは突っ込んでビルドボタンを押せばUnityが全てよしなにやってくれるわけではありません。そう。Unityはマルチプラットフォーム開発環境と言えど、Unityは魔法の箱ではないのです!(重要!)
UnityのプロジェクトをiOS用に吐き出すためには、まずUnityからXcodeというMacでしかビルドできないビルドツール用のアプリのプロジェクトとして出力する必要があります。
そして、サードパーティ製のSDKやらなんやらを使っていると、このXcodeのプロジェクトの吐き出しに失敗することが多々あるのです。この作業は常にやっているならいいのですが、プロジェクトの終盤になってようやくアプリをiOS用に吐き出すか!とやったりすると、このトラップにハマり何が原因なのか調査する必要が出てきます。
しかも、使ってるサードパーティ製のSDKやらなんやらが1つならまだいいのですが、SDKやらなんやらが複数ある場合はさらに厄介で、一体その中の誰が悪さしているのか探し出すのに下手すると数日かかったりします。
そんなこんなで調査や検証のためにMacで作業しているとふと気づくことがあります。
あれ?Macしか触ってないぞ?・・・と。
そういうことです!
Xcodeでビルドチェックしないといけない
あなたはUnityからXcodeのプロジェクトを無事吐き出せたとしましょう。
おめでとうございます。これで晴れてiOS用にビルドしてテストできます!
・・・とは残念ながら行きません。
とは言え、なんとか頑張って血反吐を吐きながらもあなたは、
ようやくUnityからXcodeのプロジェクトを吐き出すことができたとしましょう。
はい。これで終わりではありませんよ。
次はXcodeプロジェクトそのものをビルドしないと行けないのです。ここでも場合によってはビルドエラーと闘うことになるでしょう。
初めてビルドする場合は、すんなりビルドが通るなんて夢のまた夢なのです!
そんなこんなであなたは、今回もなんとかXcodeのビルドも通すことに成功しました!
さあ次は、ビルドしたバイナリをApp Storeに送信しないといけません。
もうお気づきかと思いますが、この送信によって、場合によってはリジェクトされることがあります。例えば非推奨のAPIを使っていたりする時などです。(以前、「Google SignIn Unityを使うとiOSでリジェクト」のようなケースに遭遇することも)
そんな作業を続けていると、こう感じるのです。
ふー、今日もMacしか触らなかったなあ・・・・と。
そういうことです!
結論
いろいろ御託を並べてみましたが、つまるところiOS/Androidアプリの開発をメインに据えている以上、macに依存する作業工程が多いことに気付きます。
Xcodeなんてのはその最たる物で、巨大なベンダーロックインなわけです。Macを使わないとiOSアプリは作れないわけですからね!
これは面倒くさいけどもお上が決めたルールなので従わなければいけません。郷に入っては郷に従えですね。
従って、Windowsへ移行が進まない主な理由は間違いなくXcode絡みです。
これはAppleがXcodeをWindowsやLinuxなど別のOS用に出してくれない以上はどうしようもありませんし、そんなことはAppleは絶対にやらないでしょう。
ということなので、モバイルアプリを開発する以上は素直に諦めてMacをガッツリ使う方が幸せになれます。
そして使うなら、メインMacとサブMac(自動ビルド環境用)と言う構成が一番いいのかなあと思っています。
現時点で僕が考える理想は、
・iMac(腰を据えて開発する普段使い用のメインマシン)
・Macbook Pro (移動中や空き時間に開発する用の持ち運び用マシン)
・Mac mini (gitでプッシュしたプロジェクトを自動的にビルドしてアップロードする用のマシン)
と言う3台構成がベストなのでは?と思ってますが、iMacとMacbookproに関しては一台フルスペックのMacbookProがあれば代用もできてしまうので悩みどころですね。
でもまあ、あれです。
Macは沢山あってもいいかなと思っている自分がいます。
これって、僕はMacが好きってことなんだろうか。
とまだ自分の気持ちの正体が何なのか知らないBoys&Girlsみたいな気持ちを抱いています。
以上、たみラボでした。