<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ADEP &#8211; MICSS</title>
	<atom:link href="https://20230101.www.micss.biz/category/adep/feed/" rel="self" type="application/rss+xml" />
	<link>https://20230101.www.micss.biz</link>
	<description>“低コスト”で“スピーディ”なモバイル導入をご支援</description>
	<lastBuildDate>Fri, 06 Jan 2023 00:33:56 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.7.25</generator>
	<item>
		<title>OTA(Over The Air)とは何か</title>
		<link>https://20230101.www.micss.biz/2022/12/26/5748/</link>
		<pubDate>Sun, 25 Dec 2022 22:00:16 +0000</pubDate>
		<dc:creator><![CDATA[OishiYuichi]]></dc:creator>
				<category><![CDATA[ADEP]]></category>
		<category><![CDATA[AdHoc]]></category>
		<category><![CDATA[ADP]]></category>

		<guid isPermaLink="false">https://20230101.www.micss.biz/?p=5748</guid>
		<description><![CDATA[業務用iOSアプリを端末にインストールして貰う方法は色々とあります。 各端末でAppStoreからインストールして貰う方法以外に、MDMを使って遠隔から一斉にインストールする方法、Macを使ってApple Configu [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>業務用iOSアプリを端末にインストールして貰う方法は色々とあります。</p>
<p>各端末でAppStoreからインストールして貰う方法以外に、MDMを使って遠隔から一斉にインストールする方法、Macを使ってApple Configurator で有線USB転送で地道にインストールする方法等々です。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/12/20221226_app-distributions.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(アプリを端末まで届ける方法は様々)</span></p>
<p>本稿では、まだ本サイトで過去に紹介できていない、<strong>OTA(Over The Air)</strong>という方法について紹介します(上図赤枠)。OTAを使うと、InHouseやAdHocのアプリ(.ipaファイル)を社内のイントラネットに置いて、<strong>ユーザにSafari経由でアプリインストールする手段を提供する</strong>ことができます。</p>
<p>&nbsp;</p>
<h3>OTAが使えるアプリの種類</h3>
<p>OTAは、AppStore向けの申請用ビルドを除く InHouse / AdHoc / Development の方式で使うことができます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/12/20221226_xcode-distribution-type.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(Xcode の Organizer から Distribution を行うときの画面。上図はInHouseを選んでいるところ)</span></p>
<p>もちろんそれぞれの署名に最適な秘密鍵や Provisioning Profile がビルド環境にインストールされていなければなりませんが、署名して .ipa ファイルさえ生成できれば、OTAからのインストール用に使うことができます。</p>
<p>&nbsp;</p>
<h3>OTAの特徴と動き</h3>
<p>OTAは、<strong>オレオレAppStore</strong>を社内に構築できるようなものと考えると分かり易いでしょう。ipa ファイルを一定のルールで社内サーバに配置しさえすれば、ユーザは自分の端末で社内サーバにアクセスするけでアプリをインストールできるからです。</p>
<p>ユーザからは具体的にはこんな感じに見えます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/12/20221226_otapage.jpg" alt="" width="320" class="alignnone" />&nbsp;→&nbsp;<img src="https://20230101.www.micss.biz/wp-content/uploads/2022/12/20221226_otaconfirm.jpg" alt="" width="320" class="alignnone" /><br /><span class="caption">(インストール用のページで専用ボタンをタップするとインストールされる。成功するとHOME画面にアプリが現れる)</span></p>
<p>ユーザは指定のURLにSafariでアクセスしてボタン(リンク)タップするだけです。まさにオレオレAppStore、これを自社内サーバに好きなように構築できる技術がOTAというわけです。</p>
<p>注意しなければならないのは、<strong>OTAを使ったからと言ってどんなアプリも任意端末にインストールできるわけではない</strong>点です。OTAによるインストール可否は、サーバに設置する .ipa ファイルがどんな Provisioning Profile で署名されたかに依存します。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/12/20221226_otafailure.jpg" alt="" width="320" class="alignnone" /><br /><span class="caption">(AdHocの場合、OTAインストールを試みても端末側のUDIDが未登録なら失敗する。タップしても起動しない)</span></p>
<p>InHouse の Provisioning Profile ならその .ipa ファイルは無制限に任意の端末にインストールができる一方で、AdHoc の Provisioning Profile で署名された .ipa ファイルの場合はあらかじめ登録されたUDIDを持った端末にしかインストールできません。</p>
<p>&nbsp;</p>
<h3>OTAに必要なもの</h3>
<p>OTAは、任意のWebサーバに .ipaファイルを置いて、ユーザにSafari経由でアプリをインストールして貰う方法です。これを機能させるために必要なものが幾つかあります。</p>
<ul>
<li>(A) Webサーバ</li>
<li>(B) マニフェストファイル</li>
<li>(C) HTMLファイル + α</li>
</ul>
<p>これらが以下のような構成で機能するようになります。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/12/20221226_otaarchitecture.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(研修プログラムの資料から。サーバを用意し、署名生成した.ipaを含む必要なファイルをアップロードする)</span></p>
<p>順に見ていきましょう。</p>
<h4>(A) Webサーバ</h4>
<p>有効な証明書が設置された https 応答可能なWebサーバが必要となります。それ以外の条件はありません。Apache, NGiNX, IIS…どんなWebサーバでも構いませんし、AWS上か自社データセンター内か等インフラが何かは全く関係がありません。</p>
<ul>
<li>https (443/TCP) の応答</li>
<li>有効な証明書</li>
</ul>
<p>Webサーバ側に必要なのはこの2点です。オレオレ証明書で https 応答するようにした場合、OTAによるアプリインストールは失敗しますので注意が必要です。</p>
<h4>(B) マニフェストファイル</h4>
<p>アプリの情報が記載されたplist形式のXMLファイルです。昨今のXcodeでは、.ipaファイルの生成時に一緒に作ってくれる機能が備わっています。</p>
<p>OrganizerからDistributionする時に形式を選んだ後、下図のように「Include manifest for over-the-air installation」のチェックをONにして [Next] をクリックします。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/12/20221226_xcode-distribution-option.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(一番下のチェックボックス。デフォルトではOFFになっている)</span></p>
<p>次に、マニフェストファイルに必要な .ipa ファイルの設置予定場所を示すURLや、アプリを示す画像ファイルのURLを指定します。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/12/20221226_xcode-distribution-url.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(生成されるマニフェストは単なるXMLファイルなので、後から手動で編集する前提で適当な指定をしてもok)</span></p>
<p>[Next]をクリックし署名に成功すると、XcodeのOrganizerは以下のようなファイル一式を出力してくれます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/12/20221226_manifest.jpg" alt="" width="600" class="alignnone" /></p>
<p>この中の manifest.plist というファイルがマニフェストファイルです。左下の .ipa ファイルは言わずもがなiOSアプリですね。それ以外のファイルは署名時の情報が記載されたもので、OTAには不要です。</p>
<p>なおマニフェストファイル作成時に指定したURLのうち、Display Image URL と Full Size Image URL が示す画像ファイルはサーバ上に実在しなくても問題ありません。</p>
<h4>(C) HTMLファイル+α</h4>
<p>実際にユーザが Safari からアクセスすることになるhtmlファイルです。htmlの記述方法に特に制約はなく、OTAに関するルールは、</p>
<ul>
<li>アプリインストール用のボタンを &lt;a&gt; タグで作成</li>
<li>href属性に特別なURLスキーマでマニフェストに関する記述</li>
</ul>
<p>という点のみです。必要最低限のhtmlを記述すると以下のようになります。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/12/20221226_otahtml.jpg" alt="" width="600" class="alignnone" /></p>
<p>見慣れた https:// で始まる表記ではなく、itms-services:// という特殊表記(スキーマ)であることに注意が必要です。マニフェストURLの部分を、URLエンコードしたマニフェストへのURL文字列に置き換えます。</p>
<p>それ以外は自由です。上記のような最小構成のhtmlが1ファイルでもokですし、CSSやjsを駆使してリッチなページにしても良いでしょう。あるいは、PHPやDBを使って社内独自のOTAシステムを構築しても構いません。(弊社では独自OTAシステムを開発していました)</p>
<p>&nbsp;</p>
<h3>OTAでインストールされるまで</h3>
<p>ここまで紹介してきたことをふまえ、OTAでアプリがインストールされるまでの流れを整理します。OTA環境のWebサーバは構築されている前提です。</p>
<ul>
<li>(1) Xcode の Organizer からマニフェストファイル付きで .ipa を生成する</li>
<li>(2) OTA環境に、(B)のマニフェストファイルと .ipa ファイルをアップロードする</li>
<li>(3) OTA環境に、(C)のHTML+αをアップロードする</li>
<li>(4) (3)のHTMLを指し示すURLをユーザに伝える</li>
<li>(5) ユーザはSafariで(4)のURLを開きリンクタップでインストールする</li>
</ul>
<p>運用フェーズではこれをひたすら繰り返す格好になります。OTAでインストールされたアプリのアップデートは自動で行われませんので、この (1)〜(5) をアップデートの度に実施する必要があります。</p>
<p>&nbsp;</p>
<h3>OTA環境のWebサーバを作るのが難しい場合</h3>
<p>何らかの事情でOTA環境用のWebサーバを用意するのが難しい場合、OTA環境を提供してくれるSaaS型のサービスを契約することを検討しても良いでしょう。</p>
<p>国産であれば <a href="https://deploygate.com/" rel="noopener" target="_blank">deploygate</a> が有名です。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/12/20221226_deploygate.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(2012年にミクシィの新事業として同社内に誕生。2015年に事業部門ごとスピンアウトした)</span></p>
<p>海外製だと <a href="https://www.diawi.com/" rel="noopener" target="_blank">diawi</a> もよく知られています。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/12/20221226_diawi.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(手軽にipaファイルをアップロード・共有できる)</span></p>
<p>なお弊社は両サービス共に使用したことも提案した経験もありません。この他にもあるかも知れませんので「OTA」でググってみるのも良いでしょう。ただ、OTA用のWebサーバは上述の通り条件が非常に少ないため、可能であればやはり自社構築するか、既存のhttps対応済み社内サーバを間借りするのがお勧めです。</p>
<p>&nbsp;</p>
<p>以上、OTA(Over The Air)によるアプリのインストールについて紹介しました。更に細かな情報については<a href="https://support.apple.com/ja-jp/guide/deployment/depce7cefc4d/1/web/1.0" rel="noopener" target="_blank">Appleの公式情報</a>もありますので参考にして下さい。</p>
]]></content:encoded>
			</item>
		<item>
		<title>ADEPからADPに移行する時に知っておくと良い10個の豆知識</title>
		<link>https://20230101.www.micss.biz/2022/11/14/5649/</link>
		<pubDate>Mon, 14 Nov 2022 01:18:17 +0000</pubDate>
		<dc:creator><![CDATA[OishiYuichi]]></dc:creator>
				<category><![CDATA[ADEP]]></category>
		<category><![CDATA[カスタムApp]]></category>

		<guid isPermaLink="false">https://20230101.www.micss.biz/?p=5649</guid>
		<description><![CDATA[2022年はADEP更新ができなくなる可能性もありましたが、意外に更新できている例もあるようです。 ただやっぱりこの先は分からないということで、予め備えておきたいと考える企業様に、InHouseからカスタムAppへの移行 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>2022年は<a href="/2022/04/18/5188/">ADEP更新ができなくなる可能性もありました</a>が、<a href="/2022/09/19/5528/">意外に更新できている例もある</a>ようです。</p>
<p>ただやっぱりこの先は分からないということで、予め備えておきたいと考える企業様に、InHouseからカスタムAppへの移行について質問を頂くことが増えてきました。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/11/20221114_inhouse2customapp.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(InHouseからカスタムAppへの移行とはつまりADEPからADPへの移行を意味する)</span></p>
<p>開発会社視点で真っ先に気になるのはADEPに代わって使うことになるADPです。そこで本稿では、ADEPの理解がある方々向けにADPの豆知識を幾つかご紹介します。以下一覧です。</p>
<ol>
<li><a href="#1">App Store には公開領域と非公開領域がある</a></li>
<li><a href="#2">ADEP契約済み企業でもADPは新規契約が必要</a></li>
<li><a href="#3">ADEPとADPは排他的ではなく法人として両契約可能</a></li>
<li><a href="#4">作成できる配布用証明書の数がADEPより1つ多い</a></li>
<li><a href="#5">配布用証明書の有効期間は3年間で一緒</a></li>
<li><a href="#6">証明書の期限が切れたりrevokeしてもアプリは起動し続ける</a></li>
<li><a href="#7">ADPの契約が切れるとAppStoreからアプリが消える</a></li>
<li><a href="#8">ADPの更新には審査がない</a></li>
<li><a href="#9">カスタムAppの審査はそれほど難しくない</a></li>
<li><a href="#10">無審査でのアプリ配布が全くできなくなるわけではない</a></li>
</ol>
<p>1つ1つはちょっとしたことですが、あらかじめ知っておくと知識ゼロで始めるよりずっと良いカスタムApp移行を行うことができます。</p>
<div id="1">&nbsp;</div>
<h3>1. App Store には公開領域と非公開領域がある</h3>
<p><strong>カスタムAppとは実はAppStoreアプリ</strong>です。「え？AppStoreって公開されるのでは？」と思った方はこれを機会に是非、認識を改めて下さい。</p>
<p><strong>AppStoreには企業内用途の非公開アプリのために非公開領域が存在する</strong></p>
<p>のです。実は2010年頃からそうです。最近になって整備されたのではなく、昔からあったのです。ただADEPが便利すぎて単に使われていなかっただけに過ぎません。昔はCustomB2Bと呼ばれていました。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/11/20221114_customb2b.png" alt="" width="600" class="alignnone" /><br /><span class="caption">(2014年頃。iTunes Connect (現在の App Store Connect)にCustomB2Bで非公開アプリ申請しようとする様子)</span></p>
<p>InHouseアプリからカスタムApp化するとは、つまり<strong>AppStoreアプリにするということ</strong>であり、ゆえにADPの契約が必要になるとうわけです。</p>
<div id="2">&nbsp;</div>
<h3>2. ADEP契約済み企業でもADPは新規契約が必要</h3>
<p>ADPは<strong>新たに</strong>契約する必要があります。</p>
<p>ADEPの契約がADPの契約に切り替わるわけではない点に注意して下さい。また、いわゆるSaaSサービスの契約プランではないため、ADEPからADPにプランを落とすといった関係性のものでもありません。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/11/20221114_hexnode-price.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(あるMDMのプラン表。ADPとADEPはこのようなプラン的な考え方とは全く異なる)</span></p>
<p>ADEPとADPは名前は似てますが<strong>全く別物の扱い</strong>ですので、たとえADEP契約済みであってもADPは新規に契約することになります。</p>
<p>Appleが気を利かせてADP契約も手配してくれるとか、Appleの認定リセラー企業が契約代行してくれるといった事もありません。自社が主体となって新たに契約手続きを行います。</p>
<div id="3">&nbsp;</div>
<h3>3. ADEPとADPは排他的ではなく法人として両契約可能</h3>
<p>ADEPとADPはそれぞれ全く別の契約で、かつ<strong>独立</strong>しています。</p>
<p>従って、ADEP契約期間中でもADP契約が可能です。また、ADPを契約するとADEP契約が解除されてしまうといったこともありません。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/11/20221114_adepadp.jpg" alt="" width="300" class="alignnone" /><br /><span class="caption">(Apple Developer 画面でのアカウント切り替えの様子。ADEPには頭にEnterpriseの表記がある。併存可能なことが分かる)</span></p>
<div id="4">&nbsp;</div>
<h3>4. 作成できる配布用証明書の数がADEPより1つ多い</h3>
<p>ADEPでの配布用証明書(InHouseアプリの署名に必要な証明書)は、最大2つでした。2つ作成済みの状態で新規作成しようとすると以下のように選択できません。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/11/20221114_maximumcert.jpg" alt="" width="500" class="alignnone" /></p>
<p>一方、ADPでは配布用証明書(AppStore申請用アプリの署名に必要な証明書)は、<strong>最大3つ</strong>まで作成することができます。<a href="https://help.apple.com/xcode/mac/current/#/dev3a05256b8" rel="noopener" target="_blank">Appleの公式ドキュメント</a>にも記載がありますので確認してみて下さい。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/11/20221114_numofcert.jpg" alt="" width="600" class="alignnone" /></p>
<p>複数の秘密鍵や証明書に分けて管理してきた企業の場合、ADPでは運用の柔軟性が向上するでしょう。</p>
<div id="5">&nbsp;</div>
<h3>5. 配布用証明書の有効期間は3年間で一緒</h3>
<p>配布用証明書の<strong>有効期間は3年間</strong>で、ADEPでもADPでも一緒です。</p>
<p>Provisioning Profile の1年更新とセットにして毎年証明書も更新している企業をたまに見聞きしますが、ADPへの移行を機に更新手順を見直しましょう。配布用証明書の有効期間はADEPもADPも3年です。</p>
<div id="6">&nbsp;</div>
<h3>6. 証明書の期限が切れたりrevokeしてもアプリは起動し続ける</h3>
<p>InHouseアプリでは、証明書期限が切れたり証明書をrevokeするとアプリが起動しなくなりますが、ADPによるAppStoreアプリでは、証明書期限が切れてもrevokeされても起動し続けます。</p>
<p>AppStore申請用の証明書で署名し申請通過したアプリは、<strong>一度端末にインストールされたなら証明書の期限や有効性に関係なく起動し続けることができる</strong>のです。</p>
<p>審査通過後に証明書のことを気にしなくてよくなるのは、ADEPからADPに移行するメリットです。オペレーションミスでアプリが起動しなくなるといった惨劇も避けられます。(証明書の状態に関係なく起動可能な理由は解説すると長くなるので省略します)</p>
<div id="7">&nbsp;</div>
<h3>7. ADPの契約が切れるとAppStoreからアプリが消える</h3>
<p>ADPの契約更新を忘れると、ADP契約期間終了日以降、ユーザはアプリをダウンロードすることができなくなります。(起動できなくなるのではない)</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/11/20221114_adpexpired.png" alt="" width="400" class="alignnone" /><br /><span class="caption">(ADPの契約終了日からカスタムAppを端末にインストールできなくなる)</span></p>
<p>ABM で一括購入してMDM経由で配信される監理対象ライセンスでも、ABMから取得する引き換えコードでも同じです。アプリの存在がないものとみなされると考えて下さい。</p>
<p>しかし、ADP契約を更新すると再びダウンロードできる状態に戻すことができます(ただし1年以内)。カスタムAppに移行したらADP契約更新に細心の注意をはらいましょう。</p>
<p><strong>端末にインストール済みのアプリは、たとえADP契約が期間終了しても起動し続けることが可能</strong>です。詳しくは<a href="https://developer.apple.com/jp/support/renewal/" rel="noopener" target="_blank">公式情報</a>を確認して下さい。</p>
<div id="8">&nbsp;</div>
<h3>8. ADPの更新には審査がない</h3>
<p><a href="/2022/04/18/5188/">別の投稿</a>で紹介した通り、2022年春以降、大半の企業ではADEP更新にAppleの審査が必要となりました。一方、<strong>ADPの更新に審査は不要</strong>です。これは昔も今も変わりません。</p>
<div id="9">&nbsp;</div>
<h3>9. カスタムAppの審査はそれほど難しくない</h3>
<p>iOSアプリ黎明期、AppStore審査は厳しく理不尽なことがままありました。審査拒否された理由を共有する投稿サイトまであったぐらいです。(<a href="https://www.macotakara.jp/iphone/entry-2632.html" rel="noopener" target="_blank">参考</a>。約14年前の紹介記事)</p>
<p>その頃の「審査は厳しい」という噂情報のまま、今でもAppStoreの審査はとても難しいと誤解している方が多くおられます。未体験であれば仕方がないことです。分からないことは、普通怖いものですから。</p>
<p>ただ知れば怖くなくなります。審査基準を知るために <a href="https://developer.apple.com/jp/app-store/review/guidelines/" rel="noopener" target="_blank">App Store Review ガイドライン</a>を関係者全員で事前に一読しておくと良いでしょう。可能なら<a href="https://developer.apple.com/app-store/review/guidelines/" target="_blank">英語で</a>読むことが推奨されます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/11/20221114_appstorereviewguideline.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(ガイドラインは度々更新されるが、日本語版への反映は遅れることが多い)</span></p>
<p>審査基準はアプリ黎明期に比べるとかなり明瞭で、従っていさえすれば、理不尽なreject(審査で落ちること)を食らうことは余りありません。また、TestFlight の外部テストを使えば、事前に審査の感触を掴むことも可能です。</p>
<div id="10">&nbsp;</div>
<h3>10. 無審査でのアプリ配布が全くできなくなるわけではない</h3>
<p>無審査配布の一形態であるAdHocをADPでも使うことができます。ADEPでのAdHocと条件は同じで、</p>
<ul>
<li>事前登録済みUDIDの端末のみで起動可能</li>
<li>登録可能なUDIDの数はiPhone/iPad/AppleTV/AppleWatchで各100台</li>
</ul>
<p>となります。</p>
<p>これまで ADEPの InHouse アプリだけを使ってきたという場合、AdHocという配布手段を知らない方もおられるでしょう。実は、無審査配布には InHouse と AdHoc の2種類があります。前者はADEPでしか使えませんが、後者はADEP/ADPの両方で使えます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/11/20221114_adhoc.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(<a href="https://developer.apple.com/jp/programs/enterprise/" rel="noopener" target="_blank">ADEP公式ページ</a>でも AdHoc が非公開配布の選択肢であると述べている)</span></p>
<p>上記の条件が許容できるのなら、AdHoc配布も検討する価値があります。また、ADEPのInHouseアプリを社内テスト用の配布にしか使っていないのなら、TestFlightの内部テストに移行できます。ADPに移行したからといって、全てのアプリで常にAppleの審査が必要になるというわけではないのです。</p>
<p>&nbsp;</p>
<p>以上、ADEPからADPに移行する方に向けてADPの豆知識を紹介してみました。ADPへの移行の際に参考にして下さい。</p>
]]></content:encoded>
			</item>
		<item>
		<title>そろそろADEP契約更新ができなくなるかも知れない…その後(2)</title>
		<link>https://20230101.www.micss.biz/2022/10/03/5553/</link>
		<pubDate>Sun, 02 Oct 2022 22:00:19 +0000</pubDate>
		<dc:creator><![CDATA[OishiYuichi]]></dc:creator>
				<category><![CDATA[ADEP]]></category>

		<guid isPermaLink="false">https://20230101.www.micss.biz/?p=5553</guid>
		<description><![CDATA[前回の投稿で、ADEP契約更新の2022年後半の状況をシェアしました。 そろそろADEP契約更新ができなくなるかも知れない…その後(1) 本稿はその続き。ADEP契約更新ができなかった現場で見られた、InHouseアプリ [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>前回の投稿で、ADEP契約更新の2022年後半の状況をシェアしました。</p>
<ul>
<li><a href="/2022/09/19/5528/">そろそろADEP契約更新ができなくなるかも知れない…その後(1)</a></li>
</ul>
<p>本稿はその続き。ADEP契約更新ができなかった現場で見られた、InHouseアプリの興味深い現象についてシェアします。</p>
<p>&nbsp;</p>
<h3>ADEPの契約終了後91日目以降もInHouseアプリは起動する</h3>
<p>以前に<a href="/2022/03/21/5164/">ADEP契約を更新せず放置するとInHouseアプリはどうなるのか</a>という投稿で、契約終了日から90日間しか起動させられず、91日目以降は起動できなくなると書きました。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/10/20221003_adep_expired_timeline_org.jpg" alt="" width="600" class="alignnone" /></p>
<p>これはApple の公式ドキュメントである <a href="https://developer.apple.com/support/switching-to-the-apple-developer-program/" rel="noopener" target="_blank">Switching to the Apple Developer Program</a> にも</p>
<blockquote>
<p style="margin-bottom:0px;">Your software will continue to run for 90 days after expiration.</p>
</blockquote>
<p>と明記されている通りです。</p>
<p>しかしながら、実のところADEP更新を拒否されて<strong>期限日から91日目以降でも、InHouseアプリは動き続ける</strong>ようです。この現象は、弊社がInHouseからカスタムAppへの移行をご支援したケースで、複数台のiOS端末で確認ができました。具体的には、以下のような感じです。</p>
<table class="table">
<thead>
<tr>
<th>年月</th>
<th>動き</th>
</tr>
</thead>
<tbody>
<tr>
<th style="width:120px">2022年2月</th>
<td>ADEPが5月に期限切れるとのメールが届く</td>
</tr>
<tr>
<th>2022年3月</th>
<td>ADEP更新の申請し、拒否される</td>
</tr>
<tr>
<th>2022年5月</th>
<td>ADEPの期限到来。以後、ADEP の  Developer サイトは操作不能</td>
</tr>
<tr>
<th>2022年8月</th>
<td>期限切れから90日が経過</td>
</tr>
<tr>
<th>2022年9月〜</th>
<td>期限切れ以降もInHouseアプリが起動し続ける</td>
</tr>
</tbody>
</table>
<p>こいつ、動くぞ！…ではないですが、動かなくなる筈のものが動いている状況が観測されました。</p>
<p>&nbsp;</p>
<h3>その時、InHouseアプリの期限関連の状態は…</h3>
<p>技術的に考えると、InHouseアプリを起動できなくなる仕組みは2つあります。</p>
<ul>
<li>(A) Provisioning Profile の期限切れ</li>
<li>(B) InHouse用証明書が失効する</li>
</ul>
<p>前者(A)については以前に以下投稿で詳細を解説しました。</p>
<p><a href="/2022/09/05/5504/">ADEPのInHouseアプリは1年に1回必ずビルド・再署名しなければならないのは本当か？</a></p>
<p>弊社が体験したケースでは、InHouseアプリの署名時に使った Provisioning Profile の期限は2023年。ADEP期限切れから90日経過したとしても、Provisioning Profile のことだけを考えれば起動して当然です。</p>
<p>一方後者の(B)は、Apple公式ドキュメントにもある<a href="https://support.apple.com/ja-jp/guide/deployment/depce7cefc4d/web#dep024643fd1" rel="noopener" target="_blank">証明書検証</a>に絡むものです。InHouse用の証明書を誤ってrevokeすると一斉にアプリが起動しなくなるという、あの証明書失効状態になってしまう場合。ADEP終了日90日後にAppleが当該アカウントのInHouse用証明書を強制失効する可能性ですね。</p>
<p>弊社で遭遇した上記アプリの場合、当該InHouseアプリの署名時に使用していた証明書でOCSP(証明書有効性を確認するプロトコル)の手動問い合わせしたところ、<strong>Cert Status: good</strong> が返ってきてInHouse用証明書の失効は確認されませんでした。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/10/20221003_openssl_ocsp.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(InHouse用の証明書と中間証明書を使って openssl ocsp コマンドで調べた様子。証明書が有効であることが分かる)</span></p>
<p>ADEP契約終了から91日以上経過しても、AppleがInHouse用の証明書を強制失効していない可能性があるということです。</p>
<p>生成・配布済みInHouseアプリの署名時に使った Provisioning Profile の期限が切れておらず((A)は到来していない)、かつ、それに紐づく証明書の有効期限も切れていない((B)にもなっていない)なら、起動し続けて当然でしょう。</p>
<p>&nbsp;</p>
<h3>ADEP契約が拒否された場合の身構え方</h3>
<p>紹介した振る舞いを踏まえると、万が一ADEP契約が拒否された場合の身構え方が若干変わると考えます。あくまで弊社が経験した1ケースのみを根拠にしていますが、</p>
<ul>
<li>基本的にADEP契約終了日から90日以内にカスタムApp移行等の対応を完了させるべき</li>
<li>だが最悪、移行完了が間に合わなくても91日目以降も InHouse アプリは動き続ける<strong>かも知れない</strong></li>
<li>本当のデッドラインは Provisioning Profile の期限日<strong>かも知れない</strong></li>
</ul>
<p>と捉えておくのもアリかもしれないと感じました。</p>
<p>「かも知れない」を期待して(?)、最大限アプリ起動可能期間を確保すべく、<strong>ADEP契約終了直前にInHouse用の更新版Provisioning Profileを生成しておく</strong>のは良いことでしょう。ADEPの更新が拒否されて91日以上が経過しても、上記(B)をAppleが行わない限り Provisioning Profile さえあれば何とかなるからです。(と言っても最大約1年間の延命可能性を得られるに過ぎない)</p>
<p>Xcodeでビルドや再署名することなく Provisioning Profile を単体配布する方法については、<a href="https://20230101.www.micss.biz/2022/09/05/5504/">ADEPのInHouseアプリは1年に1回必ずビルド・再署名しなければならないのは本当か？</a>の投稿を参考にして下さい。Provisioning Profile の単体配信による「延命」はこうした時に役立ちます。</p>
<p>ただ、(B)が実施されるとInHouseアプリが動かなくなるのは変わらないため、結局91日目以降はビクビクしながら業務アプリを使い続けることになってしまいます。余り健全とは言えませんから、やはり拒否されたなら1日も早くInHouseから脱却することが望ましいです。</p>
<p>&nbsp;</p>
<p>本稿では、ADEP更新が拒否されたあと実際にInHouseアプリはどうなるのか、弊社が関係した事例を紹介しました。</p>
<p>本サイトでは、「かも知れない」をベースに執筆することは極力避けていますが、多くの感心が寄せられていることとそもそも情報が限られていることを踏まえ、あえて投稿しました。弊社体験1例のみと、サンプルが少ない情報である点は強調しておきたいと思います。</p>
]]></content:encoded>
			</item>
		<item>
		<title>そろそろADEP契約更新ができなくなるかも知れない…その後(1)</title>
		<link>https://20230101.www.micss.biz/2022/09/19/5528/</link>
		<pubDate>Sun, 18 Sep 2022 22:00:55 +0000</pubDate>
		<dc:creator><![CDATA[OishiYuichi]]></dc:creator>
				<category><![CDATA[ADEP]]></category>
		<category><![CDATA[カスタムApp]]></category>

		<guid isPermaLink="false">https://20230101.www.micss.biz/?p=5528</guid>
		<description><![CDATA[2022年4月に以下のような投稿をしました。 そろそろADEP契約更新ができなくなるかも知れない 投稿以後、ADEP契約更新が例年のように進められないという声が幾つも届いています。数ヶ月が経過してみて、契約更新可否につい [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>2022年4月に以下のような投稿をしました。</p>
<p><a href="/2022/04/18/5188/">そろそろADEP契約更新ができなくなるかも知れない</a></p>
<p>投稿以後、ADEP契約更新が例年のように進められないという声が幾つも届いています。数ヶ月が経過してみて、契約更新可否について興味深い傾向が見えてきたほか、拒否された後のInHouseアプリの振る舞いについて新たな情報を得ましたので、2回に分けてシェアしたいと思います。</p>
<p>&nbsp;</p>
<h3>ADEPの契約は意外に更新できている</h3>
<p>2022年4月の時点で、一律全ADEP契約が拒否されているのではないうえに基準が不明瞭…というなんとも気持ち悪い状況でした。</p>
<p>しかしAppleの InHouse アプリに対する態度硬化が加速してる流れから、拒否が基本で、更新可能なのは例外的ケースだろうと見ていました。それで<a href="/2022/04/18/5188/">以前の投稿</a>では、90日前のメールをトリガに動き出したほうが良いかも知れないと見解を記していた次第です。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/09/20220919_adep_expired_timeline.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(90日前から動き出せば対応期間を長く確保できる)</span></p>
<p>それから数ヶ月。</p>
<p>実際に見えてきたのは、<strong>ADEPは意外に更新できている</strong>という状況です。<a href="https://developer.apple.com/jp/programs/enterprise/" rel="noopener" target="_blank">ADEPの公式ページ</a>に記載されている条件を満たしていれば、おおよそADEPの更新に成功しているように見えます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/09/20220919_adep_recuirements.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(従業員が100人に満たない要件未達な組織や、従業員以外が使うアプリに使っている不正利用はやはり拒否される)</span></p>
<p>ただ、条件さえ満たせばすんなり更新できるかというとそうでもなく、以下のようなステップを踏むことが多いようです。</p>
<ol>
<li>ADEP契約終了90日前に更新とカスタムApp移行の案内メールが届く</li>
<li>更新申請に際し数十項目のフォーム入力を求められる (何に使っているか等)</li>
<li>審査にかけられ暫く放置される</li>
<li>ADEP契約終了日直前になってもAppleから連絡が来ない</li>
<li>突然ADEP契約終了日が延期されて審査中状態が続く</li>
<li>審査を通過しクレジットカード決済を経て更新完了する</li>
</ol>
<p>このようにADEP更新には心穏やかでない状態が待ち受けてます。しかもやっかいなのは、全ての企業がこの通りに進むわけではなく、企業によって若干異なっていること。</p>
<p>3,4 がなく審査を通過して6に行くパターンもあれば、3(審査待ち)に2週間や1ヶ月の期間を要したりと所要期間はバラバラ。一方拒否される場合は余り待つことがなく1週間程度で返ってくる傾向にあるようです。また、更新成功の変則的ケースとして 4→5→4→5 と回答待ち＆強制延期が2周するパターンも見受けられました。</p>
<p>要するにやってみないと分からないということですね。困ったものです。</p>
<p>&nbsp;</p>
<h3>これからどうすべきか</h3>
<p>上記状況をふまえた弊社見解は、</p>
<ul>
<li>明らかなADEP契約違反や条件未達でなければ過度に神経質になる必要はないかも</li>
<li>が、いずれ拒否されることを見据えてアプリの今後を考えておいたほうが安心かも</li>
</ul>
<p>です。</p>
<p>やはり InHouse アプリからの脱却は推奨と考えます。Appleが毎年少しずつ更新条件を厳しくしていくかも知れませんし、「1年の猶予は与えたよね？なぜ何もしなかったの？」と2023年に更新拒絶を強行する可能性もゼロではないでしょう。無論、今まで通り毎年更新し続けられる可能性も全否定はできません。</p>
<p>よくよく考えておきたいのは、Appleの気持ち次第というモヤモヤした状況を続けるのは、業務用ソフトウェアのあるべき姿なのかということです。毎年毎年ドキドキするぐらいであれば、早めに手を打つほうが健全でしょう。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/09/20220919_adep_summary.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(<a href="https://developer.apple.com/jp/programs/enterprise/" rel="noopener" target="_blank">ADEPの公式ページ</a>の選択範囲の文言に注意。十分に対応できるという判断はApple次第)</span></p>
<p>エンドユーザ企業においては、社内に開発部隊がいて内製しているなら、カスタムAppに移行しましょう。端末台数が少ないならAdHocです。もしWebアプリにガワをかぶせたに過ぎないならこの際アプリをやめ、WebClipのMDM配信に切り替える事も視野に入れましょう。以下を参考にして下さい。</p>
<ul>
<li><a href="https://www.micss.biz/2022/01/10/4968/" rel="noopener" target="_blank">業務用WebシステムのiOS用クライアントアプリ開発は本当に必要か？を考える (前編)</a></li>
<li><a href="https://www.micss.biz/2022/01/24/5011/" rel="noopener" target="_blank">業務用WebシステムのiOS用クライアントアプリ開発は本当に必要か？を考える (後編)</a></li>
</ul>
<p>テスト用途で配布が便利だからという理由だけでInHouseを使っているなら、面倒臭がらずに<a href="https://developer.apple.com/jp/testflight/" rel="noopener" target="_blank">TestFlight</a>を学習して移行しましょう。TestFlightに慣れると、InHouseビルドをテスト用配布することが逆に面倒になるぐらい便利です。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/09/20220919_testflight.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(TestFlightはもう10年の歴史がある洗練されたテストツール。使わない手はない)</span></p>
<p>また、受託開発会社においては、いつまでもカスタムAppの経験がない状態が続けば、いずれ業務用iOSアプリの受託が厳しくなる未来を迎えることになる可能性も考慮に入れて下さい。</p>
<p>新規はもちろん、ADEPからの移行組エンドユーザ企業の多くが目にすることになる<a href="https://support.apple.com/ja-jp/guide/apple-business-manager/welcome/web" rel="noopener" target="_blank">ABMユーザガイド</a>には、カスタムAppなるものの手はずをデベロッパーがしてくれると明記されています。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/09/20220919_abm_customapp.jpg" alt="" width="600" class="alignnone" /></p>
<p>エンドユーザ企業にして見れば、Appleが「デベロッパがやります」と書いているカスタムAppについて全く何も知らない開発会社に発注したいと思うでしょうか。業務用iOSアプリの受託開発事業を行う企業は、ADP/ABM/MDMを自社で一通り揃え、カスタムAppについて学習しておくことが推奨されます。本サイトの<a href="https://20230101.www.micss.biz/category/customapp/">カスタムAppに関する全投稿</a>を参考にして下さい。</p>
<p>&nbsp;</p>
<p>本稿ではADEPの更新可否が今どうなっているかについて書きました。次回投稿では、実際にADEPの契約を拒否されたケースで見られた興味深い現象について記そうと思います。</p>
]]></content:encoded>
			</item>
		<item>
		<title>ADEPのInHouseアプリは1年に1回必ずビルド・再署名しなければならないのは本当か？</title>
		<link>https://20230101.www.micss.biz/2022/09/05/5504/</link>
		<pubDate>Mon, 05 Sep 2022 00:00:41 +0000</pubDate>
		<dc:creator><![CDATA[OishiYuichi]]></dc:creator>
				<category><![CDATA[ADEP]]></category>

		<guid isPermaLink="false">https://20230101.www.micss.biz/?p=5504</guid>
		<description><![CDATA[InHouseアプリは毎年必ずリビルド・再署名・再配信する、という運用をしている開発会社やエンドユーザ企業が少なくないようです。 InHouseアプリは年に1回ビルドまたは再署名が必要だ と認識されているからなのですが、 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>InHouseアプリは毎年必ずリビルド・再署名・再配信する、という運用をしている開発会社やエンドユーザ企業が少なくないようです。</p>
<p><strong>InHouseアプリは年に1回ビルドまたは再署名が必要だ</strong></p>
<p>と認識されているからなのですが、実はこの理解は誤りです。一定の条件を満たせば、InHouseアプリは<strong>ビルドも再署名も不要</strong>であることは意外に知られていません。</p>
<p>誤った理解のまま本来不要な手間をかけているのは残念なことでしょう。本稿では、InHouseアプリの運用においてビルドも署名も不要とは一体どういうことなのか、解説したいと思います。</p>
<p>&nbsp;</p>
<h3>そもそも年に1回更新が必要なのはなぜか？</h3>
<p>なぜ、InHouseアプリは年1で更新が必要になるのでしょうか？</p>
<p>それは、ADEPの Apple Developer で作成する InHouse の Provisioining Profile 期限が作成日を起点に有効期限を1年としているからです。これはアプリ関係者なら誰もが知っていることでしょう。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/09/20220905_quicklook_expired_provisioningprofile.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(Provisioning Profile をFinderのQuickLookで見た様子。1年の期限が切れた直後のもの)</span></p>
<p>ただ、Provisioining Profile の更新が必要であることは、ipa ファイルの更新が必要であることと同義ではありません。新たな .ipa ファイルが絶対毎年必要というわけではなく、アプリのロジックやリソースに変化がないのなら(Xcodeでのビルドが不要なら)、<strong>Provisioning Profile 単体の更新のみでok</strong>なのです。</p>
<p>&nbsp;</p>
<h3>ipaファイルとProvisioning Profileの関係を知る</h3>
<p>Provisioning Profile 単体の更新だけで良い、この意味を理解するには ipa ファイルの中身を紐解く必要があります。</p>
<p>ipaファイルとは何でしょうか？</p>
<p>実は単なるzipファイルです。ipaファイルが、Windowsにおける.exeファイルに相当する実行バイナリだと誤解されていることが時々あるのですが、そうではありません。拡張子の .ipa を .zip に変更してからダブルクリックするとよく分かります。以下のように展開された中身を見ることができます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/09/20220905_internal_ipa.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(Windowsのexeに相当する実行ファイルは左下黒アイコン。Mach-Oというバイナリフォーマット)</span></p>
<p>PROVというアイコンで示される embedded.mobileprovision が Provisioning Profile そのものです。その他ファイルの詳細は解説しませんが、このような構造を持つzipアーカイブが、Xcodeの Organizer からエクスポートする時に作成されます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/09/20220905_signed.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(BundleID表示列の矢印アイコンをタップするとアーカイブ対象となったファイルの一覧が見れる)</span></p>
<p>つまり、署名時に、InHouse用の Provisioning Profile の名称は embedded.mobileprovision に変更され、コンパイルしたアプリ実行ファイルやその他ファイルと一緒にまとめてzip形式で固められ ipa ファイルとなります。これはInHouseに限らずAdHocでも同様です。</p>
<p>ipaファイルがiOS端末にインストールされると iOSは .ipa を展開し、中にある Provisioning Profile をファイルシステムの適切な位置に配置して検証します。また、アプリ起動の度にも参照されることとなります。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/09/20220905_provisioningprofile.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(Expiration Date という名称で期限が格納されている。security cms コマンド等で確認も可能)</span></p>
<p>Provisioning Profile 内にデータとして埋め込まれているこの有効期限が、アプリを起動しようとする時刻より前(つまり期限を過ぎている状態)だとアプリは起動に失敗します。上図の例は2023年8月16日が期限ですね。本稿執筆時は2022年ですから、期限は切れておらずアプリが起動し続けられることが分かります。</p>
<p>大切なのは、iOSは起動可能な有効期限チェックに際し、<strong>ipaファイルそのものを見ているのではなく Provisionig Profile を見ている</strong>という点です。ここは非常に重要ですので覚えておいて下さい。(厳密には Provisioning Profile 以外にOCSPサーバを使った証明書の有効性検証もされますが、ここでは解説しません→<a href="https://support.apple.com/ja-jp/guide/deployment/depce7cefc4d/web#dep024643fd1" target="_blank">参考</a>)</p>
<p>&nbsp;</p>
<h3>期限切れだけなら新しい Provisioning Profile のインストールのみで良い</h3>
<p>アプリの起動期限チェックに使われているのは Provisioining Profile なのですから、<strong>期限延伸のみが目的なら Provisioning Proifile だけを更新すれば良い</strong>ということになります。実際、MDMやApple Configuratorでは Provisioning Profile のみを単体でインストールする機能が備わっています。</p>
<p>Apple Configurator では、プロファイルの画面から Provisioning Profile も単体インストールができるようになっています。構成プロファイルだけではないのですね。もちろん、インストール済みの Provisionig Profile 一覧を見たり削除することも可能です。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/09/20220905_ac_profiles.jpg" alt="" width="600" class="alignnone" /></p>
<p>MDM でも同様に Provisionig Profile の単体配信に対応しています。以下は弊社でよく使う <a href="https://bizmobile.co.jp/" rel="noopener" target="_blank">BizMobile Go!</a> の画面ですが、構成プロファイルだけでなく Provisioning Profile も選択できることが分かります。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/09/20220905_mdm_newprofile.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(BizMobile Go! ではプロビジョンと表記される。他にも様々なプロファイルを登録できる)</span></p>
<p>ちなみに、下図はMDMから、ある端末にインストールされた、ある InHouse アプリ用の Provisioning Profile 一覧を示したものです。これを見れば、Provisioning Profile 単体配信の意味を理解頂けるでしょう。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/09/20220905_mdm_profiles.jpg" alt="" width="600" class="alignnone" /></p>
<p>1行目は .ipa ファイルと一緒にOSに取り込まれたもので、2022年4月9日に期限が切れています。このままではアプリは動かない筈ですが、次年度の Provisioning Profile を作成し、MDMから単体で配信しました。それが2行目。期限は2023年2月8日となっています。</p>
<p>この状態でアプリをタップすると、2つ目の Provisioning Profile の期限まで見てくれて起動成功します。ラーメンの追い麺ではありませんが、端末に対してInHouseアプリ毎に「追い Provisioining Profile」を投入できるわけですね。</p>
<p>なお、Provisioning Profile の追いインストールには、<strong>Apple Configurator か MDM を使う必要があります</strong>。構成プロファイル(.mobileconfig)であれば、メール添付やSafariを使ったインストールも可能ですが Provisioning Profile では同じ手法が使えません。同じプロファイルというくくりであっても、配信可能手段が異なりますので注意して下さい。</p>
<p>&nbsp;</p>
<h3>Provisioining Profile 単体インストールをうまく使う</h3>
<p>InHouse アプリの Provisioning Profile の期限が切れると、起動時に以下のようなエラーが表示されるようになります。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/09/20220905_cantuse.jpg" alt="" width="300" class="alignnone" /><br /><span class="caption">(寂寥感の漂う脱力メッセージ。もうちょっと良い表現は無かったのか…)</span></p>
<p>ここに、Apple Developer で作成＆ダウンロードしてきた Provisioning Profile をインストールすると起動するようになるわけです。.ipa ファイルを差し替える必要はありません。Xcode を立ち上げることすら不要なのです。</p>
<p>これは、エンドユーザ企業が開発会社の関与無く自社内でInHouseアプリの更新ができることを意味します。開発会社側からすると余計な労力を割く必要がなくなることを意味します。両者にとってハッピーですね。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/09/20220905_organizer_export.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(ロジックやリソースが変更されていないアプリの年次更新では、新たな.ipaファイルをエクスポートする必要はない)</span></p>
<p>運用している InHouse アプリの中に、長らく機能追加も不具合修正もせず Provisioning Profile の更新しかやっていないアプリがあるでしょうか？</p>
<p>もしそのようなアプリが存在していて毎年 .ipa ファイルを更新しているのなら、<strong>Provisioning Profile 単体の年次配信に切り替える</strong>ことを検討して下さい。.ipa ファイルをわざわざ毎年用意して配信するより Provisioning Profile のみを配信するほうが圧倒的に楽だからです。ビルド・署名が不要ですから、古いXcodeやMac環境を更新のためだけに温存しておく必要もなくなります。</p>
<p>なお、アプリの不具合修正があるとか、アプリ内で使うライブラリの更新が必要など、Xcodeによるビルド(いわゆるコンパイルとリンク)が必要な場合は当然 .ipa ファイルでの更新が必要となりますので注意して下さい。</p>
<p>&nbsp;</p>
<p>本稿では、InHouse アプリ運用労力の省力化テクニックとして Provisioning Profile の単体配信を紹介しました。運用が長期に及んでいるInHouseの業務用アプリほど、ビルド・署名が不要だったりします。ご利用のMDMサービスのMDMベンダーにも問い合わせるなどして一度検討してみると良いでしょう。</p>
]]></content:encoded>
			</item>
		<item>
		<title>InHouseアプリの利用で意識すべき3つの期限と期限切れで起きること</title>
		<link>https://20230101.www.micss.biz/2022/05/16/5276/</link>
		<pubDate>Sun, 15 May 2022 22:00:36 +0000</pubDate>
		<dc:creator><![CDATA[OishiYuichi]]></dc:creator>
				<category><![CDATA[ADEP]]></category>

		<guid isPermaLink="false">https://20230101.www.micss.biz/?p=5276</guid>
		<description><![CDATA[エンタープライズiOSで気をつけなければならないのは、各種の期限切れのタイミングを失念して更新を忘れてしまうことです。特にADEP契約下で配布する InHouse アプリを使っている場合、 Provisioning Pr [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>エンタープライズiOSで気をつけなければならないのは、各種の期限切れのタイミングを失念して更新を忘れてしまうことです。特にADEP契約下で配布する InHouse アプリを使っている場合、</p>
<ul>
<li>Provisioning Profile</li>
<li>証明書</li>
<li>ADEP (Apple Developer Enterprise Program)</li>
</ul>
<p>の3つの期限を正しく意識して、更新を忘れないようにする必要があります。本稿では、この3つの期限を過ぎて更新をし忘れた場合に何が起こるかを解説します。順番にみていきましょう。</p>
<p>&nbsp;</p>
<h3>Provisioning Profile の更新を忘れたらどうなるか</h3>
<p>最もよく知られている期限は、アプリのビルド・署名時に使う Provisioning Profile の期限です。更新をせずこの期限を過ぎると、当該の Provisioning Profile に紐づくアプリが<strong>起動できなくなります</strong>。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/05/20220516_expired_inhouseapp.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(InHouseアプリで Provisioning Profile の期限切れは最も避けるべき事態)</span></p>
<p>Provisioning Profile の期限が切れたからと言ってアプリが消えるわけではないため、HOME画面からはパッと見で分かりにくいのが難点です。アプリが起動直後に落ちるような挙動をしたり、上図のように「もう利用できません」という悲しいダイアログが表示されたりします。</p>
<p>現場の端末を前にこの状況に遭遇した従業員が「Provisioning Profile の期限が切れた」と分かれば良いですが、通常それは期待できません。現場の混乱、管理部門への問い合わせ殺到は必至です。ですので Provisioning Profile の期限は、情シスはもちろんアプリを納品する開発会社やSIerも必ず意識しておきたい期限です。</p>
<p>Provisioning Profile の期限は、ADEPの画面で作成した時に表示されます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/05/20220516_adep-console_profile-expiration.jpg" alt="" width="600" class="alignnone" /></p>
<p>また Provisioning Profile のファイルを macOS の Quicklook を使って見ることもできます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/05/20220516_provisioningprofile_quicklook.jpg" alt="" width="400" class="alignnone" /><br /><span class="caption">(拡張子 .mobileprovision ファイルを選択状態にしてスペースキー)</span></p>
<p>Provisioning Profile ファイルの受け渡しが複数社間で発生する場合は、全ての受け取り手が期限を意識するようにして、二重三重の更新忘れ対策をしておくことをお勧めします。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/05/20220516_provisioningprofile_expiration-reminder.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(SpreadSheetで期限を管理。期限が迫れば段階的にSlack等にメッセージが届くようにするのもアイディアの一つ)</span></p>
<p>Provisioning Profile の更新忘れが怖い場合は、思い切って InHouse アプリの利用をやめ、<a href="https://20230101.www.micss.biz/category/customapp/">カスタムApp</a>に切り替えるのも一つの方法です。カスタムAppならAppStore公開アプリと同様に、一度インストールすれば原則起動しなくなることはないため、Provisioning Profile の更新作業から開放されます。</p>
<p>&nbsp;</p>
<h3>証明書の更新を忘れたらどうなるか</h3>
<p>InHouseアプリのビルドや署名に必要な証明書にも期限があります。が、実は余り気にする必要はありません。証明書の有効期限は前述の Provisioning Profile の期限を超えることはないからです。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/05/20220516_adep-console_certificates-expiration.jpg" alt="" width="600" class="alignnone" /></p>
<p>Provisioning Profile の有効期限は、その作成時に紐づける<strong>証明書の有効期限か Provisioning Profile 作成日時の1年後のいずれか短い方</strong>にされるため、Provisioning Profile より証明書が早く期限切れすることは仕様上ありません。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/05/20220516_lastyear_provisioningprofile.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(Provisioning Profile の期限は証明書の期限を超えれない)</span></p>
<p>証明書にも一応期限はありますが、Provisioning Profile の期限を意識することが結果的に証明書期限を意識させることになりますので、Provisioinng Profile 期限をとにかく気にしておけば大丈夫です。</p>
<p>InHouseアプリ用の証明書については、<strong>有効期限が作成から3年</strong>であることのみ意識しておけば十分でしょう。</p>
<p>余談ですが、ときおり証明書とProvisioning Profileをセットで毎年作成しているSIerや開発会社の方がいますが、<strong>証明書の更新は3年に1度にすべき</strong>です。不要な証明書の作成は間違ったrevokeを誘発したり、外部ライブラリを使うアプリの再署名で正しくインストールできなくなる事態に陥るなど、トラブルの元ですので避けましょう。</p>
<p>&nbsp;</p>
<h3>ADEPの更新を忘れたらどうなるか</h3>
<p>前述のProvisionProfileや証明書を作成するために必要なのがADEPの契約です。この契約にも有効期限が定められており、新規契約時・更新時から<strong>1年間</strong>です。</p>
<p>毎年¥37,800を支払って契約更新する必要があります。更新しなければ、ADEPの管理画面にサインインできなくなり、Provisioning Profileや証明書の作成や更新もできなくなります。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/05/20220516_adep-expiration-warning.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(期限切れまで1ヶ月を切ると更新を迫るwarningが表示される)</span></p>
<p>ADEPの契約更新の期限が切れると、<strong>期限終了から90日間の猶予期間を経たあと91日目からInHouseアプリが起動しなくなります</strong>。たとえ、ADEPの期限より未来の期限を持った Provisioning Profile で InHouse アプリをビルド・署名していたとしても…です。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/05/20220516_launchable-after-adepexpired.jpg" alt="" width="400" class="alignnone" /></p>
<p>詳しくは、<a href="https://developer.apple.com/support/switching-to-the-apple-developer-program/">Appleの公式情報</a>や、<a href="/2022/03/21/5164/">ADEP契約を更新せず放置するとInHouseアプリはどうなるのか</a>をご覧下さい。</p>
<p>ADEPの更新忘れに気がついたら「90日間も猶予があるなら後にしよう」と考えず、すぐに更新手続きを進めましょう。<strong>ADEPの更新がAppleに拒否される事例が出始めている</strong>からです。詳しくは<a href="/2022/04/18/5188/">そろそろADEP契約更新ができなくなるかも知れない 〜カスタムAppへの移行を急ぐべき理由〜</a>の投稿をご覧下さい。</p>
<p>&nbsp;</p>
<p>以上、InHouseアプリに絡む3つの期限(Provisioning Profile, 証明書, ADEP契約)が切れた時の影響について解説してきました。期限切れを理由にInHouseアプリが起動できなくなるのは</p>
<ul>
<li>Provisioning Profile の期限が切れた時</li>
<li>ADEP の期限が切れて90日が過ぎた時</li>
</ul>
<p>の2つの事態に至った時ということになります。これさえ避ければ大丈夫なのですが、何ごとにおいても期限切れギリギリに動き出すのは悪手です。期限切れの影響やアプリの配布環境を考慮して、更新スケジュールを定めておくようにしましょう。</p>
]]></content:encoded>
			</item>
		<item>
		<title>そろそろADEP契約更新ができなくなるかも知れない 〜カスタムAppへの移行を急ぐべき理由〜</title>
		<link>https://20230101.www.micss.biz/2022/04/18/5188/</link>
		<pubDate>Sun, 17 Apr 2022 22:00:57 +0000</pubDate>
		<dc:creator><![CDATA[OishiYuichi]]></dc:creator>
				<category><![CDATA[ADEP]]></category>
		<category><![CDATA[カスタムApp]]></category>

		<guid isPermaLink="false">https://20230101.www.micss.biz/?p=5188</guid>
		<description><![CDATA[(最終更新日 : 2022/10/3) その時が迫っているのかも知れません。 上図はあるADEP契約企業の ADEPの契約更新が拒否され期限切を迎えてしまった様子です。あるInHouseアプリを業務で常用している企業で、 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>(最終更新日 : 2022/10/3)</p>
<p>その時が迫っているのかも知れません。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/04/20220418_adep_expired.jpg" alt="" width="600" class="alignnone" /></p>
<p>上図はあるADEP契約企業の <strong>ADEPの契約更新が拒否され</strong>期限切を迎えてしまった様子です。あるInHouseアプリを業務で常用している企業で、突然ADEP更新を拒否されこの状況になってしまいました。</p>
<blockquote>
<p style="margin-bottom:0px;">Software associated with this membership will continue to run for the next XX days.</p>
</blockquote>
<p>とあり、あとXX日で InHouse アプリが起動できなくなると警告されています。(XXには具体的な数字が入り毎日1ずつ減っていく)</p>
<p><a href="/2022/03/21/5164/">以前の投稿</a>でも紹介した通り、ADEP契約が切れると<strong>期限日から91日目以降はInHouseアプリが動かなくなります</strong>。企業によっては最悪の場合、業務が停止しかねない事態ですね。これを避けるには期限日から90日以内に原則カスタムAppに移行しなければなりません。</p>
<p>意図してADEP契約更新を止めて期限日を迎えているのなら良いのですが、例年通り更新しようと思って拒否されてしまった場合は困った事態になります。</p>
<p>そこで本稿では、そうした状況に備えられるようにするため、実際にADEPを拒否された事例とそうでない事例を紹介するとともにADEP更新契約の2022年における実態とその対策について解説します。</p>
<p>&nbsp;</p>
<h3>全ADEP契約企業が置かれている状況のおさらい</h3>
<p>審査もなく、配布端末数の制限もない。ADEPによるInHouseアプリは、業務用アプリとしてこれ以上ないほど使い勝手がよく都合の良い配布形式でした。</p>
<p>ただ、<a href="/2020/06/19/1774/">ADEPはもう取得することができないと諦めたほうが良い理由</a>の投稿で解説した通り、2020年頃から新規のADEP契約締結は事実上不可能となっていました。加えて、既存の契約済み企業もいつ契約更新不可となるか分からないという状況にあったのです。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/04/20220418_inhouse_deploymentdetail.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(ADEPでのBundleID詳細画面では、InHouseを使う理由を明記する必要があった)</span></p>
<p>新規契約は実質不可になっても、ADEP契約済み企業は更新はできていたわけです。まだまだ InHouse アプリは使い続けられる。そう思って多くの企業が更新し続けてきたのが2020年、2021年でした。</p>
<p>が、2022年1月末にAppleが動きます。<a href="https://developer.apple.com/jp/support/unlisted-app-distribution/" rel="noopener" target="_blank">非表示App(Unlisted App)</a> という新しい仕組みを発表したのです。詳細は<a href="https://20230101.www.micss.biz/2022/02/07/5041/">非表示App(Unlisted App)とは何か</a>の投稿で紹介した通りですが、この非表示App(Unlisted App)はある意味、Appleが自らADEPにとどめを刺す最後の一手でした。</p>
<p>詳細は別の投稿に譲りますが、非表示App(Unlisted App)の登場によって「ABMとMDMの契約は現実的ではない、だからADEPが必要なんだ」という、ADEPとInHouseを正当化する唯一の理屈が封じられたのです。Apple は「それならADPで非表示App(Unlisted App)にしなさい。ADEPはいらないよね」と言えるようになりました。</p>
<ul>
<li>原則、業務アプリもADPでAppStoreに申請</li>
<li>非公開にしたいならカスタムApp</li>
<li>MDMやABMの都合でカスタムAppが無理なら非表示App</li>
<li>テスト用ならAdHocかTestFligth</li>
</ul>
<p>これがAppleの結論です。非表示App の仕組みが発表された直後に、冒頭で紹介したようなADEP更新を拒否される事例が出てきたのは偶然ではないでしょう。</p>
<p>もう、Apple にADEPが必要だと言えなくなりました。2010年からエンタープライズiOSの世界にいる筆者も、ADEPを正当化する理屈を組み立てるのは完全に不可能であると断言できます。Apple は本気でADEPを潰そうとしていると感じます。(自分で作ったのに！)</p>
<p>&nbsp;</p>
<h3>ADEP契約更新が拒否される条件</h3>
<p>冒頭で紹介した例のように更新拒否される条件は不明です。Appleから公式な発表はありません。ただ、弊社が得ている事例情報では</p>
<ul>
<li>Appleに審査されると不都合な実装をしているアプリだが毎日業務で使っている</li>
<li>ADEPの契約から5年以上経過しており例年何の問題もなく更新してきた</li>
</ul>
<p>というInHouse利用常態化＆ミッションクリティカルなケースでさえ、明確な理由の提示なく契約拒否されてしまっています。<a href="https://developer.apple.com/jp/programs/enterprise/" rel="noopener" target="_blank">ADEP公式ページ</a>の対象条件を満たした企業であってもです。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/04/20220418_adep-update_rejected.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(更新を拒絶された直後。期限までは操作が可能だがADPに移行するよう促される)</span></p>
<p>ただ全てのADEP契約の更新が2022年から不可になったというわけではなく、</p>
<ul>
<li>iDEP(ADEPの前身)の契約条件が緩和された時期に契約できていたアプリ開発会社</li>
<li>業務用アプリというよりも単に社内のテスト用ビルドの配布手段として便利だから使用中</li>
</ul>
<p>といった緩い利用状況の企業が更新できたという例も情報として届いています。中には<a href="https://developer.apple.com/jp/programs/enterprise/" rel="noopener" target="_blank">ADEP公式ページ</a>の対象条件を満たしていない企業の例すらあります。</p>
<p>本来なら、前者が更新できて後者が不可であるべきでしょう。なぜそうなっていないのか理由は分かりません。ただハッキリしているのは、<strong>InHouseアプリが使えなくなれば業務停止しかねない企業であっても、問答無用にADEP更新を拒否される事例が現れて</strong>きているということです。</p>
<p>&nbsp;</p>
<h3>ADEP契約更新はどのように拒否されるのか</h3>
<p>通常、ADEPの契約期日の30日前には以下のようなメールが届きます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/04/20220418_notify_expiration.jpg" alt="" width="400" class="alignnone" /></p>
<p>そして <a href="http://developer.apple.com" rel="noopener" target="_blank">developer.apple.com</a> にADEPアカウントでサインインすると以下のように表示されます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/04/20220418_adep_renew_membership.jpg" alt="" width="600" class="alignnone" /></p>
<p>ここで Renew Membership ボタンをクリックするとクレジットカードによる決済に案内され、支払いができれば更新完了、例年ならただそれだけのことです。ADP(Apple Developer Program)を契約している方には、金額は違えど馴染みのあるフローでしょう。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/04/20220418_adep-update_order-confirm.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(ADEPの更新もただただ支払いをするだけだった)</span></p>
<p>しかし、ADEP契約更新時に以下のようなフォームが現れる場合が出始めました。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/04/20220418_adep_request_form.jpg" alt="" width="600" class="alignnone" /></p>
<p>なぜ InHouse が必要なのか、誰が管理してるのか、どのように配布しているのか、等々ですね。<a href="/2020/06/19/1774/">ADEPはもう取得することができないと諦めたほうが良い理由</a>の投稿でも紹介した、BundleID内の自己申告項目にも似ています。</p>
<p>必要事項を入力して submit した後、Apple からADEP更新審査の回答が来ます。拒否されれば、前述の通り以下のような画面となりADEP更新の道が完全に閉ざされます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/04/20220418_adep-update_rejected.jpg" alt="" width="600" class="alignnone" /></p>
<p>警告文の末尾には、</p>
<blockquote>
<p style="margin-bottom:0px;">Learn how to transition to the Apple Developer Program</p>
</blockquote>
<p>というリンクが貼られていて、以下の<a href="https://developer.apple.com/jp/support/switching-to-the-apple-developer-program/" target="_blank">ページ</a>に誘導されます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/04/20220418_swtich_to_adp.jpg" alt="" width="600" class="alignnone" /></p>
<p>InHouseいらないよね？カスタムAppに移りましょう…と、取りうる手段や必要なものを解説してくれます。</p>
<p>&nbsp;</p>
<h3>ADEP契約更新が拒否される兆候？</h3>
<p>ADEPの契約更新が認められる場合と拒否される場合とで、明らかな相違点があります。それはAppleからADEP更新に関して届くメール。</p>
<p>以下は、拒否された企業に宛てられた、<strong>契約期日の90日前</strong>のメールです。内容は先に紹介した<a href="https://developer.apple.com/jp/support/switching-to-the-apple-developer-program/" target="_blank">Apple Developer Programへの切り替え</a>の内容とほぼ同じです。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/04/20220418_adep-update_hunch_for_reject.jpg" alt="" width="400" class="alignnone" /></p>
<p>一方、更新が認められた企業には、例年通り<strong>契約期日の30日前</strong>に以下のようなメールが届いています。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/04/20220418_notify_expiration.jpg" alt="" width="400" class="alignnone" /></p>
<p>Renew Now と更新を促すリンク付き。例年はこの形式なのです。90日も前にメールが届くことはまず無かったことです。</p>
<p>このように例年とは違う内容で、且つ、かなり早いタイミング(90日前)でADEPの更新に関するメールがAppleから届いた場合、ADEPの更新可否がひょっとしたらひょっとするかも？と警戒しても良いかも知れません。</p>
<p>&nbsp;</p>
<h3>全ADEP契約企業にお勧めしたいこと</h3>
<p>ADEP契約更新は、余程の理由がない限りいずれ拒否される時がくると考えましょう。Appleのここ2,3年の動きを総括すると、ADEPをもはや過去のものにしようとしている、以外の結論は導けないからです。</p>
<p>全てのADEP契約企業におかれては、InHouse アプリが使えなくなる前提で開発体制や配布・運用体制を見直すことをお勧めします。もし諸事情ですぐに動けないのなら、最低でもADEPの契約期日を確認し、その90日前に上記で紹介したメールが Account Holder 宛に届いていないか確認するぐらいはしても良いでしょう。</p>
<p>もしメールが届けば、カスタムApp化に動く時かも知れません。メール受信からADEP期限到来までは90日。そして、更新拒否されればADEP期限切れ後から90日間のみInHouseアプリを起動可能です。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/04/20220418_adep_customeapp_timeline.jpg" alt="" width="500" class="alignnone" /></p>
<p>つまり、上記で紹介したメールが届いた直後にすぐ動けば、<strong>最大で180日間の準備期間を持てる</strong>ということです。</p>
<p>早いにこしたことはありません。</p>
<p>期限日直前にいざ申請してみたら拒否された…なんて展開を想像してみて下さい。90日強でカスタムApp化と配信とテスト、運用切替まで滞りなく進めるのは難しいでしょう。InHouseで業務アプリを開発・運用してきた多くの方にとって、ADPでアプリをAppStore申請することすら初めてだったりすることも多いからです。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/04/20220418_appstoreconnect.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(App Store Connect で申請する様子。InHouseアプリ運用とは勝手がかなり違う。経験がなければ戸惑うこと必至)</span></p>
<p>前述した通り更新が可能な時もありますが、その場合は先手を打てて良かったと解釈しましょう。いずれカスタムApp化はやらなくてはならないのですから。ADEPが廃止され InHouse アプリを使えなくなるのは時間の問題です。</p>
<p>&nbsp;</p>
<p>以上、ADEPの契約更新拒否について解説しました。個人的にはInHouseな業務アプリがあるなら、今すぐカスタムApp化することを強くお勧めします。</p>
<p><strong>(追記)</strong> その後、半年経過したADEP契約更新状況について以下にまとめました。</p>
<ul>
<li><a href="https://20230101.www.micss.biz/2022/09/19/5528/">そろそろADEP契約更新ができなくなるかも知れない…その後(1)</a></li>
<li><a href="https://20230101.www.micss.biz/2022/10/03/5553/">そろそろADEP契約更新ができなくなるかも知れない…その後(2)</a></li>
</ul>
<p>併せてご覧下さい。</p>
]]></content:encoded>
			</item>
		<item>
		<title>ADEP契約を更新せず放置するとInHouseアプリはどうなるのか</title>
		<link>https://20230101.www.micss.biz/2022/03/21/5164/</link>
		<pubDate>Sun, 20 Mar 2022 22:00:18 +0000</pubDate>
		<dc:creator><![CDATA[OishiYuichi]]></dc:creator>
				<category><![CDATA[ADEP]]></category>

		<guid isPermaLink="false">https://20230101.www.micss.biz/?p=5164</guid>
		<description><![CDATA[無制限に審査なくアプリを配布できるのがInHouseアプリ。これにはADEP(Apple Developer Enterprise Program)の契約が必要ですが、今はもうほぼほぼ契約できなくなってることは以前の投稿 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>無制限に審査なくアプリを配布できるのがInHouseアプリ。これには<a href="https://20230101.www.micss.biz/2019/11/28/980/">ADEP(Apple Developer Enterprise Program)</a>の契約が必要ですが、今はもうほぼほぼ契約できなくなってることは<a href="/2020/06/19/1774/">以前の投稿</a>で書いた通りです。</p>
<p>一方でADEPを契約できている企業は、約4万円でADEP契約を年間更新すればInHouse配布のメリットを享受し続けることができます。</p>
<p>ですが、以下のような場合に InHouse アプリがどうなるかご存知でしょうか？</p>
<ul>
<li>ADEPの更新を忘れていた</li>
<li>ADEPの更新をAppleから拒否された</li>
</ul>
<p>現在 InHouse で業務用アプリを配布している企業、また毎年InHouseアプリをビルドして配布している企業は、知っておく必要のある仕様です。本稿では、上記の場合にInHouseアプリがどう振る舞うのかについて解説します。</p>
<p>&nbsp;</p>
<h3>即座に動かなくなる訳ではないが&#8230;</h3>
<p>通常、ADEP契約期限が切れる30日前に Apple から以下のようなメールが届きます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/03/20220321_email_updateadep.jpg" alt="" width="600" class="alignnone" /></p>
<p>同じメールが15日前・5日前にも届きます。いずれのメールにも</p>
<blockquote>
<p style="margin-bottom:0px;">
Renew your membership to keep your existing apps functioning&#8230;
</p>
</blockquote>
<p>と、既存の配布済みアプリを使い続けたいなら更新するようにという記載があります。最初のメールから1ヶ月の猶予、直前まで合計3回も届きますので、更新せず契約期限を過ぎてしまうことは極めて稀です。</p>
<p>あるとすれば、担当者がすっかり忘れていたとか、社内間や業者間の連携ミスで遅れるとか、法人カード期限切れで再発行に時間がかかるとか&#8230;等の理由でしょう。</p>
<p>万が一、更新ができなかったらどうなるのでしょうか？</p>
<p>心配はいりません。ADEP契約期限日が到来してしまっても、<strong>即座にInHouseアプリが起動できなくなるわけではない</strong>からです。猶予期間があって<strong>90日間</strong>です。</p>
<p>ADEP契約期限が切れても、90日間はInHouseアプリを使い続けられます。言い換えると、<strong>ADEP契約期限を過ぎて91日目以降はInHouseアプリが一斉に起動しなくなる</strong>ということを意味します。</p>
<p>ここは誤解し易いポイントですが、ADEP契約を更新しない場合、Provisioning Profile の期限より90日制限のほうが優先される点に注意しましょう。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/03/20220321_launchable-after-adepexpired.jpg" alt="" width="400" class="alignnone" /></p>
<p>例えば、ADEP契約が2022年6月30日に切れてしまうとします。その1ヶ月前の2022年5月31日にProvisioning Profileを生成すると、期限は1年後の2023年5月31日である筈です。</p>
<p>しかしADEP契約を更新しない場合、期限は Provisioning Profile による2023年5月31日<strong>ではなく、ADEP契約終了日から90日後</strong>の2022年9月28日が期限になるということです。</p>
<p>Provisioning Profile の有効期限まで起動できるわけではありません。Appleの <a href="https://developer.apple.com/support/switching-to-the-apple-developer-program/" rel="noopener" target="_blank">公式ドキュメント</a>でもADEPの期限切れについて以下のように書いています。</p>
<blockquote>
<p style="margin-bottom:0px;">
Your software will continue to run for 90 days after expiration.
</p>
</blockquote>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/03/20220321_switchtoadp.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(ADEP→ADP移行を解説する公式資料に90daysと明記されている)</span></p>
<p>&nbsp;</p>
<p>以上、ADEP契約を更新せずに契約終了日を迎えた時のInHouseアプリの挙動を紹介しました。端的にまとめると、</p>
<p><strong>InHouseアプリは即座に起動しなくなるのではなくADEP契約終了日以降90日間は起動し続けられる</strong></p>
<p>ということです。万が一ADEP更新できずに契約終了日を過ぎてしまった場合は、必ず90日以内に手を打つようにしましょう。</p>
]]></content:encoded>
			</item>
		<item>
		<title>業務用アプリの配布方法 全7種類一覧</title>
		<link>https://20230101.www.micss.biz/2022/03/07/5113/</link>
		<pubDate>Sun, 06 Mar 2022 22:00:11 +0000</pubDate>
		<dc:creator><![CDATA[OishiYuichi]]></dc:creator>
				<category><![CDATA[ABM]]></category>
		<category><![CDATA[ADEP]]></category>
		<category><![CDATA[MDM]]></category>
		<category><![CDATA[Webクリップ]]></category>
		<category><![CDATA[カスタムApp]]></category>

		<guid isPermaLink="false">https://20230101.www.micss.biz/?p=5113</guid>
		<description><![CDATA[(最終更新日 : 2023/1/5) 業務用アプリを配布する方法は、全て列挙すると実に7種類もあります。どの配布方法を選ぶべきかはアプリの特性や各社の状況によりますので、一通り配布方法を知っておくのは良いことです。 (用 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>(最終更新日 : 2023/1/5)</p>
<p>業務用アプリを配布する方法は、全て列挙すると実に<strong>7種類</strong>もあります。どの配布方法を選ぶべきかはアプリの特性や各社の状況によりますので、一通り配布方法を知っておくのは良いことです。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/03/20220307_deployment-flow.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(用途やアプリに応じて様々な配布方法がある)</span></p>
<p>そこで本稿では全ての配布方法の概要を網羅的に紹介します。また、各方式について詳細を記している本サイトの別投稿へのリンクも紹介しますので、詳しく知りたい場合は各リンク先を参照して下さい。</p>
<p>本稿は、アプリの配布方法に迷った時の道標として使えるページです。是非、本稿をブックマークして頂き、アプリ配布方法に迷ったら参照するようにして下さい。</p>
<p>&nbsp;</p>
<h3>配布方法全7種</h3>
<p>以下に一覧を列挙します。</p>
<table class="table">
<thead>
<tr>
<th>種類</th>
<th>実装種別</th>
<th>用途</th>
<th>必要なもの</th>
</tr>
</thead>
<tbody>
<tr>
<th style="width:180px;vertical-align:middle;"><strong><a href="#1">AppStore公開アプリ</a></strong></th>
<td style="width:100px">ネイティブ</td>
<td>公開アプリとして申請して配布</td>
<td>MDM,ABM</td>
</tr>
<tr>
<th style="vertical-align:middle;"><strong><a href="#2">カスタムApp<br />(AppStore非公開アプリ)</a></strong></th>
<td>ネイティブ</td>
<td>非公開アプリとして申請して非公開に配布</td>
<td>MDM, ABM, ADP</td>
</tr>
<tr>
<th style="vertical-align:middle;"><strong><a href="#3">非表示App<br />(AppStore非表示アプリ)</a></strong></th>
<td>ネイティブ</td>
<td>公開アプリとして申請しURLを知る人だけに配布</td>
<td>ADP</td>
</tr>
<tr>
<th style="vertical-align:middle;"><strong><a href="#4">InHouseアプリ</a></strong></th>
<td>ネイティブ</td>
<td>開発したアプリをAppleに申請せず非公開配布</td>
<td>MDM, ADEP</td>
</tr>
<tr>
<th style="vertical-align:middle;"><strong><a href="#5">Webクリップ</a></strong></th>
<td>Web</td>
<td>Webをネイティブアプリのように見せかけて配布</td>
<td>MDM</td>
</tr>
<tr>
<th style="vertical-align:middle;"><a href="#6">TestFlight</a></th>
<td>ネイティブ</td>
<td>テスト用途のみ<br />関係者に申請前・本配信前のアプリを配布</td>
<td>ADP, TestFlight</td>
</tr>
<tr>
<th style="vertical-align:middle;"><a href="#7">AdHocアプリ</a></th>
<td>ネイティブ</td>
<td>開発したアプリをAppleに申請せず非公開配布<br />ただし予め端末IDを登録に対してのみ配布可</td>
<td>ADP</td>
</tr>
</tbody>
</table>
<p id="1">&nbsp;</p>
<h3>AppStore公開アプリ</h3>
<p>AppStore上に公開されている既存アプリは全てABM+MDM経由で配信することができます。例えば Box や DocuSign など既存アプリを業務でそのまま使う場合が該当します。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/03/20220307_boxemm.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(業務用バージョンを別アプリとしてAppStore公開しているものもある。上手はBoxの例)</span></p>
<p>ABMやMDMという言葉が初見という方は以下を参考にして下さい。</p>
<ul>
<li><a href="https://20230101.www.micss.biz/2020/01/27/1164/">MDMとは何か 〜今さら聞けないMDMの基礎〜</a></li>
<li><a href="https://20230101.www.micss.biz/2020/08/14/1927/">ABM(Apple Business Manager)とは何か</a></li>
<li><a href="https://20230101.www.micss.biz/2020/09/21/2343/">iOSDC 2020 Day1 でエンタープライズiOSについて講演しました（YouTubeで収録動画が公開されました）</a></li>
</ul>
<p>ABMでAppStoreのアプリを一括購入(VPPということもある)してMDMに同期して、MDMから配布します。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/03/20220307_abmvpp.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(ABMでAppStoreにあるGMailアプリを一括ライセンス購入する様子)</span></p>
<p>多くのMDMで、アップデート時の振る舞いをアプリごとに制御できます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/03/20220307_bizmobile_autoappupdate.jpg" alt="" width="400" class="alignnone" /><br /><span class="caption">(アプリ毎に自動更新するかどうかを決めることができる。上手はBizMobile Go!)</span></p>
<p>自動で更新させることもできれば、明示的な更新を強いることもできます。通常は自動更新としておくのが良いでしょう。</p>
<p id="2">&nbsp;</p>
<h3>カスタムApp</h3>
<p>現時点(2022年3月)で、<strong>特定企業用の非公開アプリを無制限に配信できる唯一の方法</strong>です。</p>
<p>AppStoreのインフラをそのまま使いますので、ADP(Apple Developer Program)の契約が必要で、アプリ毎にAppleの審査が必要です。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/03/20220307_adp_private.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(AppStoreに申請する際に、実は「非公開」を選択できる)</span></p>
<p>審査が通ればそれで完了&#8230;ではありません。ABMから当該カスタムAppを一括購入し、MDM経由か引き換えコードを使った配布をする必要があります。カスタムAppについては以下に記事をまとめていますので御覧下さい。</p>
<ul>
<li><a href="https://www.micss.biz/category/customapp/" rel="noopener" target="_blank">カスタムAppのカテゴリ全記事</a> (全記事11件の一覧)</li>
</ul>
<p id="3">&nbsp;</p>
<h3>非表示App</h3>
<p>2022年に新たに登場した配布形式です。</p>
<p>AppStore公開アプリではあるものの、AppStoreアプリでの検索に出てこなくなり、当該アプリのURLを知っている人だけがインストールできるという配布形式です。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/03/20220307_unlistedapp.jpg" alt="" width="600" class="alignnone" /></p>
<p>例えば「特定組織内で限定的に使うわけではないが第三者に見せる必要のないアプリ」で利用できます。</p>
<p>AppStoreへの通常のアプリ審査の他、非表示化を申請して受理される必要があります。申請時に合理的な理由(なぜカスタムAppではないのか)を説明することが求められます。詳しくは以下をご覧下さい。</p>
<ul>
<li><a href="https://www.micss.biz/2022/02/07/5041/" rel="noopener" target="_blank">非表示App(Unlisted App)とは何か</a></li>
</ul>
<p id="4">&nbsp;</p>
<h3>InHouseアプリ</h3>
<p>ADEP(Apple Developer Enterprise Program)の契約を締結できている組織だけが利用できます。現在その契約を持っていない組織ではこの配布方法は事実上<strong>採用不可</strong>です。</p>
<p>AppStoreインフラを使いませんので審査は不要です。配布台数制限もなく、MDMとABMの連携も不要で、最もシンプルで理解しやすい配布方法です。詳しくは以下の投稿をご覧下さい。</p>
<ul>
<li><a href="https://www.micss.biz/2019/11/28/980/" rel="noopener" target="_blank">ADEPとは</a></li>
<li><a href="https://www.micss.biz/2020/06/19/1774/" rel="noopener" target="_blank">ADEPはもう取得することができないと諦めたほうが良い理由</a></li>
</ul>
<p>なお、ADEPを契約済である企業であっても、<strong>ADEP契約が更新できなくなってきている</strong>点は注意して下さい。2022年に入ってから ADEP の更新を Apple に拒絶されたとの報告が幾例かあります。更新を拒否された場合、急いでカスタムAppを使った配布体制に切り替える必要があります。以下を御覧ください。</p>
<ul>
<li><a href="https://20230101.www.micss.biz/2022/03/21/5164/">ADEP契約を更新せず放置するとInHouseアプリはどうなるのか</a></li>
<li><a href="https://20230101.www.micss.biz/2022/04/18/5188/">そろそろADEP契約更新ができなくなるかも知れない 〜カスタムAppへの移行を急ぐべき理由〜</a></li>
</ul>
<p>ADEPを継続できている企業は、規約違反で契約取り消しとならないよう注意しましょう。以下で規約違反になるパターンをおさえておくことをお勧めします。</p>
<ul>
<li><a href="https://www.micss.biz/2019/12/06/1092/" rel="noopener" target="_blank">ADEPの契約ができないパターン集</a></li>
</ul>
<p id="5">&nbsp;</p>
<h3>Webクリップ</h3>
<p>WebサイトやWebシステムをアプリのように配布する形式です。MDMを使ってWebのショートカットを配布するようなイメージです。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/03/20220307_nativelike_abm.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(アプリのように見えるが実はWebサイトのショートカットという例)</span></p>
<p>ハードウェアの機能を使わない、オンライン前提にできる、通知はメールやチャットで十分、といった条件を満たせる環境なら、わざわざネイティブアプリを開発しなくても擬似的にアプリ配布が可能です。</p>
<p>面倒なAppleへのアプリ申請やABMの操作等が不要になります。MDMさえ用意できればアプリ配布ができますので、ネイティブアプリ開発に課題がある場合、積極的に活用を検討すべき配布方法です。アプリ開発の知見が余りないWebシステム会社にとっては、アプリ開発提案の「亜種」として採用できる可能性があります。詳細は以下にまとめていますのでご覧下さい。</p>
<ul>
<li><a href="https://www.micss.biz/category/webクリップ/" rel="noopener" target="_blank">Webクリップのカテゴリ全記事</a> (全7記事)</li>
</ul>
<p id="6">&nbsp;</p>
<h3>TestFlight</h3>
<p>アプリの申請前や、申請後の本配信前に、関係者限定のテスト用途で使用する配布方法です。</p>
<p>前述したAppStore公開アプリやカスタムAppを使って業務用アプリを配布する場合に、アプリの初回配布前のフェーズや、アプリのアップデート版の本配信前テストに使用します。</p>
<p>ADPの Apple Developer サイトでテストしたいバージョンを指定し、テスターをグループ単位や個人単位で紐付けます。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/03/20220307_testflight_adp.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(これまでInHouseでの配布経験しかない企業は TestFlight をよく理解することが求められる)</span></p>
<p>テスターは情シス担当者、社内評価担当者等が対象となります。テスターのiOS端末には <a href="https://apps.apple.com/jp/app/testflight/id899247664" rel="noopener" target="_blank">TestFlight</a> なるApple公式専用アプリを予めインストールしておく必要があります。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/03/20220307_testflight_appstore.jpg" alt="" width="240" class="alignnone" /></p>
<p>TestFlightアプリでインストールされたテスト用アプリには、有効期限が90日、旧バージョンにいつでも戻せる、などの特徴があります。なお、TsetFligth は原則、<strong>本番運用アプリで使ってはいけません</strong>。</p>
<p id="7">&nbsp;</p>
<h3>AdHocアプリ</h3>
<p>上限100台という台数制限があるものの、審査不要のアプリ配信が可能な方法です。動作対象端末のUDID(端末識別子)をあらかじめ収集しておく必要があって運用は少々面倒です。</p>
<p>UDIDを紐付けたAdHoc用の Provisioning Profile を使ってアプリを署名して生成した .ipa ファイルは、UDIDが一致する端末でのみインストール・起動できるようになるという仕組みです。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2022/03/20220307_uuid_adp.jpg" alt="" width="600" class="alignnone" /><br /><span class="caption">(UDIDを登録した権限ファイルを生成する様子。生成したファイルをビルド時にアプリに紐付ける)</span></p>
<p>インストールには有線・無線の両方が使えます。それぞれ以下を参照して下さい。(前者のタイトルはInHouseアプリだが、AdHocアプリでも使用できる)</p>
<ul>
<li><a href="/2020/05/11/1683/">Apple Configurator2 で InHouse アプリをインストール・アンインストールする方法と「信頼」について</a></li>
<li><a href="/2022/12/26/5748/">OTA(Over The Air)とは何か</a></li>
</ul>
<p>また、AdHocアプリの用途や配布先制限については以下を参照して下さい。</p>
<ul>
<li><a href="/2022/11/28/5695/">AdHoc配布はテスト用途以外に使用できるのか</a></li>
<li><a href="/2022/12/12/5731/">AdHocアプリを社外ユーザに配布できるのか</a></li>
</ul>
<p>&nbsp;</p>
<p>以上、業務用アプリの配布方法7種を解説しました。詳細についてはそれぞれ対応する投稿がありますので併せてご覧下さい。</p>
]]></content:encoded>
			</item>
		<item>
		<title>iOS15でInHouseアプリが突然動作しなくなった時の解決策 〜iOS15へのアプデート抑制ができなくなる前に〜</title>
		<link>https://20230101.www.micss.biz/2021/12/13/4882/</link>
		<pubDate>Sun, 12 Dec 2021 22:00:06 +0000</pubDate>
		<dc:creator><![CDATA[OishiYuichi]]></dc:creator>
				<category><![CDATA[ADEP]]></category>
		<category><![CDATA[エンタープライズiOS]]></category>

		<guid isPermaLink="false">https://20230101.www.micss.biz/?p=4882</guid>
		<description><![CDATA[配布方法によらず ADEP(IDEP) の InHouse で業務アプリを使用している場合、iOS15にアップデートした途端に以下のようなダイアログが表示されて、アプリが起動しなくなることがあります。 (iPod tou [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>配布方法によらず ADEP(IDEP) の InHouse で業務アプリを使用している場合、iOS15にアップデートした途端に以下のようなダイアログが表示されて、アプリが起動しなくなることがあります。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2021/12/20211213_update_required_ga.jpg" alt="" width="320" class="alignnone" /><br /><span class="caption">(iPod touch で動いていたInHouseアプリ。iOS15アップデート直後に突然起動できない状態に&#8230;)</span></p>
<p>ダイアログには「AppをこのバージョンのiOSで動作させるには、デベロッパによるアップデートが必要です。」とありますが一体何をすれば良いのでしょうか。</p>
<p>本稿では、このような現象に遭遇した方を対象に原因と解決策について解説します。</p>
<p>&nbsp;</p>
<h3>現象の原因</h3>
<p>よく知られているようにiOSアプリはビルド時に署名を行います。アプリの起動時には、iOSがその署名の妥当性を検証します。問題があればそのアプリは起動させて貰えません。例えば、provisioning profile の期限が切れて起動できなくなるのが分かり易い例ですね。</p>
<p><img src="https://20230101.www.micss.biz/wp-content/uploads/2021/12/20211213_upredte_required_mn.jpg" alt="" width="320" class="alignnone" /><br /><span class="caption">(冒頭のキャプチャとは別の iPad 専用アプリ。Provisioning Profile の期限が切れたわけではない)</span></p>
<p>今回問題にしているこの現象は、iOS15が<strong>よりセキュアな署名チェックを行うようになった</strong>ことの影響で、署名が妥当でないと判断されるようになってしまったことに起因します。条件が厳しくなって、今まで大丈夫だったのに急に怒られるようになったというわけです。</p>
<p>実は、macOS Mojave(10.14) の頃からアプリの署名が新しい形式となっていて、さらに特別な Entitlement (許可情報) が含まれるようになりました。iOS15がそれらを厳密にチェックするようになったため、</p>
<ul>
<li>新しい形式で署名されていない InHouse アプリ</li>
<li>新しい形式だが適切な Entitlement を含んだ署名になっていない InHouse アプリ</li>
</ul>
<p>である場合に本現象が発生します。</p>
<p>毎年新しい環境でInHouseビルドして配布している環境では問題ない筈ですが、古い InHouse アプリを Provisioning Profile の単体配信で延命利用していたり、ずっと古い macOS や Xcode を使ってビルドしているInHouseアプリなどが該当します。</p>
<p>&nbsp;</p>
<h3>対応策</h3>
<p>やるべきことは至って簡単で、</p>
<ol>
<li>macOS Big Sur 以降でビルド or 再署名する</li>
<li>生成した InHouse の ipa ファイルを配布する</li>
</ol>
<p>の2ステップで解決できます。</p>
<p>少し余談になりますが、こんな時に MDM が導入されていない現場では大変です。2.の配布を管理側のオペレーションで遠隔一発更新というわけにはいかないからですね。このようなケースでもスピーディな対応ができるように、やはりMDMは導入必須です。まだの企業は是非導入を検討して下さい。</p>
<p>&nbsp;</p>
<h3>iOS15アップデート前に確認する方法</h3>
<p>まだ iOS14 以下で InHouse アプリを使っている場合、事前に本現象が発生するのかしないのか確認しておくことをお勧めします。</p>
<p>iOS15のリリース(2021/9/21)から90日間はアップデートを抑制できますが、本記事執筆時点(2021/12/13)で期限は残り1週間しかありません。2021/12/21以降は、iOSアップデート抑制の設定を配信していても各端末でiOS15へアップデートできるようになります。(参考 : <a href="/2021/01/18/2797/">iOSのアップデートができないように抑制する方法 〜前編〜</a>)</p>
<p>現場が勝手に iOS15 にアップデートし始めてしまう前に、本現象に遭遇するのかを調べておきましょう。iOS15環境がなくても InHouse アプリの ipa ファイルさえあれば、以下の手順で確認することができます。</p>
<p style="margin-bottom:5px;"><strong>(1)</strong> まず InHouse の ipa ファイルを解凍します。 (.ipa は実質 zip 形式のアーカイブファイル)</p>
<pre>
% unzip myApp.ipa
Archive:  myApp.ipa
   creating: Payload/
   creating: Payload/myApp.app/
   creating: Payload/myApp.app/_CodeSignature/
  inflating: Payload/myApp.app/_CodeSignature/CodeResources
...(略)...
</pre>
<p style="margin-bottom:5px;"><strong>(2)</strong> Payload というディレクトリが生成され、中に [アプリ名].app というディレクトリが現れます。(Finder上ではファイルのように見える)</p>
<pre>
% ls -l Payload
total 0
drwxr-xr-x@ 43 oishi  staff  1376 12 11 19:16 myApp.app/
</pre>
<p style="margin-bottom:5px;"><strong>(3)</strong> このパスに対して codesign コマンドを以下のように実行します。</p>
<pre>
% codesign -dvvvvv Payload/myApp.app
Executable=/path/to/ipa/Payload/myApp.app/myApp
Identifier=jp.feedtailor.myApp.inhouse
Format=app bundle with Mach-O thin (arm64)
...(略)...
Executable Segment base=0
Executable Segment limit=688128
Executable Segment flags=0x1
Page size=4096
    -5=f79bb5d986cfbb60b019f8e4be46a537ae2dcdfc15c9ca56303a45e8ab8bba37
    -4=0000000000000000000000000000000000000000000000000000000000000000
    -3=17891e74b11e06c57310a39c05558d7a0fdeb5c1fc5bb82d8dd76f2d0b22994c
    -2=da7932525b77ccade37b4ac72b436eae3a06271b4e75ee7858527518b317440a
CDHash=fb91e7653ec272ead220a38713a09c95455d43fe
Signature size=4755
Authority=iPhone Distribution: feedtailor Inc.
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Signed Time=Dec 11, 2021 19:16:28
...(略)...
</pre>
<p>表示された署名情報の中で、-7 という項目が存在していなかったり(上の例。-2から-5までは存在する)、-7 が存在していても 0000〜 となっている場合は<strong>再署名が必要</strong>です。mac OS BigSur 環境での再署名が推奨されます。逆に以下のように -7 の項目が存在している場合は、再度署名が不要で本現象には遭遇しないと判断できます。</p>
<pre>
Page size=4096
    -7=6f44c7b43a6b0f20a8126100b905005e4a527bedeb321e598c56c443e394d667
    -6=0000000000000000000000000000000000000000000000000000000000000000
    -5=f79bb5d986cfbb60b019f8e4be46a537ae2dcdfc15c9ca56303a45e8ab8bba37
    -4=0000000000000000000000000000000000000000000000000000000000000000
    -3=17891e74b11e06c57310a39c05558d7a0fdeb5c1fc5bb82d8dd76f2d0b22994c
    -2=da7932525b77ccade37b4ac72b436eae3a06271b4e75ee7858527518b317440a
</pre>
<p>本件の詳細は Apple も公式ドキュメントで解説してくれています。<a href="https://developer.apple.com/documentation/xcode/using-the-latest-code-signature-format" rel="noopener" target="_blank">Using the Latest Code Signature Format</a> のページを併せてご覧下さい。</p>
<p>&nbsp;</p>
<p>ということで、InHouseアプリがiOS15で突然動作しなくなる現象の原因と対応策について紹介しました。</p>
<p>ちなみに <strong>AppStore アプリや TestFlight 配信されるアプリでは発生しません</strong>。AppStoreから各ユーザ端末に配信される前に Apple 側で適切に再署名されるからです。このことを考えてもやはり、ADEPによるInHouseアプリ運用から早く脱却し、AppStore公開アプリかカスタムAppの運用にした方が良いことが分かりますね。(参考 : <a href="/2020/06/19/1774/">ADEPはもう取得することができないと諦めたほうが良い理由</a>)</p>
]]></content:encoded>
			</item>
	</channel>
</rss>
