PR

【Mac無し】WindowsでiOSアプリ開発することにした話

eye-catch-dev-ios-without-macos プログラミング
記事内に広告が含まれています。
スポンサーリンク

今回は、WindowsでiOSアプリを開発するためにはどうすればいいかについて紹介します。

この記事はこんな方におすすめ
  • iPhoneのアプリを開発してみたい
  • 手元にはWindows PCしかない
  • 開発のためだけにAppleのPCを買うのは避けたい

 私は最近iOSアプリを開発したいと思い、手元にWindowsマシンしかない状態でどのように開発すればよいか調べたので、分かったことをシェアします。

Apple製ではないPC上でMac OSを動作させてはいけない

 私はAndroidとWindowsを長年愛用したきたのですが、3年ほど前からiPhoneに乗り換えました。

iPhoneに乗り換える前はAndroidアプリをAndroid StudioやUnityを使って開発してみたことがあります。

この時、Xamarin(ザマリン)を使えばiPhone用に同じアプリを開発できるくらいの理解でいました。

しかし、最近自分で使えるようにiPhone用アプリを開発したいと思い立って、
調べてみたところ大きな問題があることが分かりました。

この問題とは、

iOSアプリのビルドをするにはApple製ハードで動くMac OSが必要

ということです。

開発自体はやはりXamarinなどのクロスプラットフォーム技術を活用して行えるようです。
しかし、iOSのビルドに制約があり、Mac OS上でのビルドが必要です。

Mac OSは何かしら仮想化の技術を使って手元のハードウェアで動かせばいいと思っていたのですが、それをやってはいけないということです。

色々な情報をサーチしてみたのですが、Appleが製造していないハード上でMac OSを動作させることはライセンス違反だそうです。

1次情報

こちらhttps://www.apple.com/legal/slaにApple公式情報として各OSのソフトウェア利用許諾書が記載されています。

例えば、macOSSequoia.pdfには

”2.B. Mac App Store License”にAppleブランドのコンピュータ上でのみmacOSをインストール、使用、実行することを許可する旨が記載されています。

つまり、手元にMac bookのようなApple製のPCを購入して用意するか、Amazon EC2のようなクラウドサービスを利用しないとiOSアプリはビルドできません。

Copilotによると「Macを用意するのが圧倒的におすすめ」

 最近、個人的に生成AIの活用を積極的に行っています。

 せっかくなので、Copilotに
「iOSアプリを初めて開発する場合、WindowsではなくMacのPCを用意した方がいいですか?」
と尋ねてみました。

すると、「基本的に、iOSアプリ開発を始めるならMacを用意するのが圧倒的におすすめです。その理由は以下の通りです。」

という回答と共に非常に詳細な理由を添えてくれました。

簡単に言えば、MacのPCがあればXcodeというApple公式のIDEが使用でき、デバッグもスムーズにできるのでおススメということです。

おそらくWindows推しであろうCopilotが言うなら間違いなさそうです。

XcodeというiOSアプリ開発のためのIDEもMac OSでしか動作しません。

 なので、Apple製のPCを既に持っている方や、PC買い替えのタイミングなどで購入することに対して金銭的なデメリットが少ない方はPCを購入するのが手っ取り早いとは思います。

Apple製のPCならなんでもよい訳ではなく、Xcodeを使う場合はサポートバージョンの確認が必要です。

 私は、妻がMacbook Airを持っていたので借りて、Xcodeをインストールしようとしたのですが、できませんでした。。

 理由はMacbookが古いからです。

 中古のPCを購入して安く済ませる場合にもこの点は注意する必要があります。

私の決断

 上記のような内容を踏まえて、iOS向けにアプリ開発するなら手っ取り早くPCを購入し、腹をくくってiOSアプリ開発にのめり込むのも手ではあります。

 とはいっても私は、金銭的な問題はどうしても無視できませんでした。

 私はWindowsで開発することにしました。

決断する上で考慮したこと

 私が決断する上で考慮したことは次の点になります。

WindowsでiOSアプリを開発する上で考慮したこと
  1. 金銭的投資を減らしたい
  2. 有名又は多くの開発実績があること
  3. ターゲットを拡げられる
  4. よりオープンな方向に進む気がする(今後、制約がなくなりそう)

金銭的投資を減らしたい

なにか、新しいことを始める際には極力金銭的な投資額は抑えておきたいです。

理由は、失敗した時のダメージを小さくしたいということもありますが、心理的に失敗する可能性を低くしたいからです。

4,5年前に原著で読んだ「スタンフォードの自分を変える教室」

この中の内容について、最近読んだ本で言及されていた内容が

「先に自分にご褒美をあげない」

ということです。

「形から入るタイプ」なんて言葉がありますが、良い道具を先に豪華に揃えてしまうと脳が目標を達成する前に成功したと勘違いし、やる気を失ってしまいます

 私は既に15万円以上した高性能なWindowsノートPCと10万円以上した4Kモニターが手元にある状況なので、手元のリソースを活用しないと単なる浪費家になってしまいます。。

有名又は多くの開発実績があること

 もし、Macbookを買わないと全く開発できないなら、買うしかないです。

 しかし、WebでサーチしてみるとMacを使わないケースで多くの開発実績があることが分かりました。

 開発ツールとしてはMeta社が開発したReact Nativeを使うか、Googleが開発したFlutterを使うかに選択肢が絞られると感じました。

https://reactnative.dev/にあるReact Nativeの公式ページによるとFacebookやTeams等の著名なアプリはReact Nativeで開発されているようです。

React NativeはJavaScriptで開発できます。

なので、Web開発エンジニアに親和性が高そうです。

一方で、Flutterは開発にDartという独自のプログラミング言語を使用します。

Flutterの方が、AOTコンパイルをサポートしていてパフォーマンスの高いアプリが実現できそうですが、まだ成長中という印象があります。

AOTとはAhead Of Timeの略。アプリ実行前に事前にソースコードや中間コードを機械語へ変換しておくことによって性能低下を防ぐ。
機械語になるとCPUやOSに依存することになる点がデメリット。
対して、JIT(Just In Time)はアプリ実行時にコンパイルする方式。

私はJavaScriptはほぼ使ったことがないのですが、ユーザが多そうなのでReact Nativeを使ってみようと思います。

また、ビルドできない問題は、CI/CD環境としてCodemagic, Expo等のサービスがあるようなので、そういったサービスを使うことにします。

CodemagicもExpoも個人利用であれば制限はあるものの無料で使えるようです。

ターゲットを拡げられる

 iOSアプリだけ開発してもApple製品のユーザにしか届けられませんが、同じアプリをAndroidユーザにも展開できるとアプリを届けられるユーザ層が拡がります。

 ただ、メンテナンスコストが高そうなので、ここはオマケ程度に捉えています。

特にAndroidは複数のメーカーが色々なタイプのデバイスを製造していることからApple製品に比べてデバイス固有のバグなどが多そうです。

よりオープンな方向に進む気がする(今後、制約がなくなりそう)

最近のニュースで次のようなものがありました。

私はまだiOSアプリ開発については素人なので、正しい理解ではないかもしれませんが、

Swift Buildの実行環境をMacOSだけでなくWindowsやLinuxにも拡げるとのことのようです。

なので、今ある「AppleのPCがないと開発できない」というような制約はそのうちなくなるのではないかという気が少ししています。

オープンソース化の動きは加速している中での動きだと私は捉えています。

かつてのMicrosoftのCEOがオープンソースのLinuxはガンだと発言していますが、その後サティア・ナデラ氏がCEOに就任してから方針が変わり、”Microsoft Loves Linux”と言うようになっています。

まとめ

今回は、WindowsでiOSアプリを開発する際に私が調べて分かったことをまとめました。

WindowsマシンでiOSアプリを開発しようとしている方の参考になれば幸いです。

私は、これからReact Native で実際に開発を進めてみます。

もし、うまく行かなかったらまた別の方法を試すつもりでまずは”React Native オワコン”という検索候補が出たことは、あまり気にせずに実践を重視します。

また、開発にトライしてみて気づいたことがあればシェアします。

以上、最後までお読み頂き、ありがとうございました。

コメント

タイトルとURLをコピーしました