読者です 読者をやめる 読者になる 読者になる

bitcodeとは?

tvOS iOS

Apple TVについて、非iOSエンジニアの同僚と話していた際にbitcodeについて聞かれたので、調べ直し。

bitcodeとは?

bitcodeとは、アプリの中間表現のことです。
これをiTunes Connectへアップロードするバイナリへ含めることで様々な恩恵に浴することができます。

中間表現とは?

Xcodeがアプリをコンパイルする際、2回の変換を経て機械語からなるアプリの形に変換されますが、1回目の変換を経た形のことを中間表現(IR)と呼びます。
具体的には、以下のようなフローで処理が行われます。
1. Clangがソースコードを中間表現に変換
2. LLVMが中間表現を機械語に変換

bitcodeのメリット

App ThinningBitcodeの項に記載があるように、bitcodeを含めたバイナリをアップロードしておくと、コンパイラが新しくなった場合にもAppleが自動で最適化を行ってくれるため、ユーザーに常に最適化された環境を提供できるというメリットがあります。

bitcode対応するために必要なこと

アプリをbitcode対応するためには、アプリそのものだけでなくアプリで使用している全てのライブラリがbitcode対応している必要があります。
以前の記事でも取り上げましたが、メジャーなSDKOSSは多くが対応済となっています。

Carthageの場合

Apple Developer ForumsAppleの社員が言及していますが、 BitcodeはArchiveビルドでのみ生成されるらしく、Carthageを使う場合、Bitcode対応することができませんでした。
しかし、Carthage側、ライブラリ側の対応によりCarthageを使う場合でもBitcode対応できるケースが増えてきているようです。
こちらのブログがその点に詳しいです。

まとめ

bitcode対応はiOSでは必須ではありませんが、行っておくとAppleが自動で最適化を行ってくれるという恩恵に浴することができ、 tvOSへの移植するも容易になります。
発表からある程度時間がたち、ライブラリやSDKの対応状況も進んできた状況ですので、bitcode対応しても良いかもしれません。

参考