見出し画像

はじめてのMacアプリ審査に挑んだ「2020年 夏の思い出」(前編)

はじめに

夏の思い出_02

映像編集しか知らないポスプロオペレーターの端くれが、プログラミングの真似事をし、小さなアプリケーションを作りました。はれてApp StoreでリリースすることができたProjectVerDownProjectVerCheck(Premiereプロジェクトのバージョンを下げるアプリとPremiereプロジェクトのバージョンをチェックするアプリです)
そのリリースへの道のりを記します。


私はとくにプログラミングを学んだことはありません。インターネットの検索が自分の全てです。世界に広がる様々な人が公開した情報に感謝し、私も素人なりの目線で、Macアプリ審査の一端をさらけ出せればと思います。いつかどこかで誰かの参考になれば幸いです。

アプリ開発のきっかけ

映像ポストプロダクションにおいて、Premiereを使った編集作業でまず壁となったのがバージョン間の問題でした。社内でプロジェクトを共有するぶんには問題ありませんが、お客さんがオフラインしてくるのは最新のバージョンが多いです。
(参考:洗いざらいさらけ出す!ProjectVerCheckからはじめるPremiere編集
このことをネットで検索すれば、解決方法はすぐに見つかりました。プロジェクトをダウングレードする便利なサイトも存在します。

しかしポストプロダクションとしては、ようやくリニア編集からノンリニア編集に移行する大事なとき。編集オペレーターに余計な負担をかけたくはない。今後も安定して運用できるように、誰もがすぐに使えるようにアプリケーション化するのがベストだと考えました。

最初はAppleScriptでコードを書き、アプリ化しました。しかしこの場合、アプリ起動時にアクセス許可のダイアログが毎回出てしまい、時にはこのアプリが起動できなくなることもありました。Mojave以降のmacで起きる現象のようです。

夏の思い出_03

Xcodeで作る

Macでアプリを作るなら。。。Xcodeにチャレンジすることにしました。Xcodeはアプリのサイズが10GBもある巨獣です。こんな相手と戦えるのかなぁ。

夏の思い出_04


一度はAppleScriptで輪郭は作ったので、それをXcode(Swift)に書き換えればよい。その暁には、アプリケーションという誰もが使ってくれるものができる。
プログラミングを始める上で目的をもつことはとても大事です。いくらプログラミング言語を覚えても、普段の仕事や日常のレベルに落とし込むことができなければ、やがて挫折します。形のある目的を持ち、そこへ向かうこと。XcodeはMacのアプリケーションが自分で作れる夢のようなツールです。

Mac用のアプリをXcode(Swift)で作る方法をインターネットで検索します。AppleのSwiftに関する公式サイトは素人にとってなかなか理解できません。一般ユーザーの情報にはiOSのものがほとんど。macOSに関するものってなかなかないですよね。情報も古かったりします。ですが中にはヒントとなるものが隠されています。パズルのピースをかき集め、自分のXcodeでトライ&エラーの繰り返し。何日も前に進めない日が続きました。
しかし、ふとした時に解決方法を思いつき、その方法をまた検索します。

「あった!」「できた!」
この瞬間。今までの世界が一変するような体験を何度もしました。

小さなピースを探し集め、組み合わせ、これを繰り返しているうちにいつのまにかものすごい絵が完成している。プログラミングの醍醐味ってこれではないか。小さな一歩が成功体験となり、確実に前に進むことができる。

アプリ完成

シンプルなアプリケーションができました。不具合もなく、無事運用できるようになりました。

さて。ようやく本題。「App Storeに出してみる?」

YouTubeやTwitterなど、個人が自分の成果や作品を公開できる時代。アプリケーションという作品もその一つです。しかもApp Storeですから、世界に広がっています。

正直、自分のものはアプリケーションと呼べるほどのものではありません。単純なものだし、画期的でもない。しかし、App Storeに出すチャレンジは確実に大きな一歩になる。まだまだ恐れを知らない初心者なりの勢いに身をまかせ、最後までやり遂げようと心に決めました。

アプリ審査へ

まずApp Storeにアプリケーションを出すためには、「Apple Developer」に登録しなくてはいけません。費用は年間99ドル。消費税を合わせて、12,980円。

夏の思い出_05

2020年7月6日 アプリ提出

諸々、アプリ申請のための準備を整えました。
そして、いざアプリ審査へ。

するとその日にApp Storeからメールが届きました。

夏の思い出_06

Google翻訳
(レビューのためにPremiereVerDownを送信していただきありがとうございます。 あなたがあなたのアプリを開発するために一生懸命働いたことを私たちは知っています、そして私たちはそれをレビューすることに興奮しています。

平均して、アプリの50%は24時間でレビューされ、90%以上は48時間でレビューされます。 レビューが完了すると、アプリのステータスが更新され、通知が届きます。
・・・・・・)

Appleからのメールって、定型だろうけど、ちょいちょい気持ちが上がること言ってくれるんだよな。“we're excited to review it.” だって。



そして、

夏の思い出_07

Google翻訳(アプリのステータスが[レビュー待ち]に変わりました。)

ワクワク。



数時間後。

夏の思い出_08

Google翻訳(アプリのステータスが[レビュー中]に変更されました。)

ドキドキ。



しかし、、、

夏の思い出_09

Google翻訳(変更が必要です。)


Changes needed. 「Sandboxという仕組み」

自分のアプリは見事にリジェクト(却下)されました。その理由の一つは「Sandbox」という、セキュリティを確保する仕組みのためです。

Guideline 2.4.5(i) - Performance: Hardware Compatibility (macOS)
Your app uses one or more entitlements which do not have matching functionality within the app. Apps should have only the minimum set of entitlements necessary for the app to function properly. Please remove all entitlements that are not needed by your app and submit an updated binary for review.
Next Steps
For links to essential video and documentation to learn how to sandbox your application, please see App Sandboxing.
Should you need code-level assistance implementing sandboxing, contact Apple Developer Technical Support.

Google翻訳
(アプリは、アプリ内で一致する機能を持たない1つ以上の資格を使用します。 アプリには、アプリが正しく機能するために必要な最小限の資格セットのみが必要です。 アプリに必要のないすべての資格を削除し、レビューのために更新されたバイナリを送信してください。
次のステップ
アプリケーションをサンドボックス化する方法を学ぶための重要なビデオとドキュメントへのリンクについては、アプリのサンドボックス化を参照してください。
サンドボックスを実装するコードレベルの支援が必要な場合は、アップルデベロッパテクニカルサポートにお問い合わせください。)

当初自分のアプリは、ユーザーが選択したファイルを変換し、それを勝手にデスクトップに保存するようにしていました。このようにしておいても、Xcodeでアプリを作ることは可能です。しかし、App Storeに出せるアプリは「Sandbox」の仕組みを守らなければいけません。
つまり、アプリケーションが勝手にユーザーの領域にファイルを作ることが許されていません。悪意があろうとなかろうと、ユーザーの領域を脅かすアプリを前もって封じ込める為の仕組みです。

はじめはこのことが理解できず、解決方法がわからず、その後2度ほど申請とリジェクト(却下)を繰り返しました。結局、ファイルを変換した後、「どこに保存しますか?」という保存ダイアログパネルをはさむことで解決しました。よくよく考えれば、普通アプリケーションって、何かを作ったら保存先を必ず聞かれますよね。保存先を選ぶという操作が一手間増えるようになりましたが、仕方ありません。

Changes needed. 「Copycats(コピーキャット)」

アプリがリジェクトされたもう一つの理由は、アプリケーションの名前でした。「ProjectVerDown」は、当初「PremiereVerDown」という名前でした。

Guideline 4.1 - Design - Copycats
Your metadata appears to contain third party content. Specifically, Name “PremiereVerDown” leverages Adobe Premiere.
The next submission of this app may require a longer review time,
and this app will not be eligible for an expedited review until this issue is resolved.
Google翻訳
(メタデータにサードパーティのコンテンツが含まれているようです。具体的には、名前「PremiereVerDown」はAdobePremiereを活用しています。
このアプリは、より長いレビュー時間が必要になる場合があり、この問題が解決されるまで、このアプリは迅速なレビューの対象にはなりません。)

このような審査却下の理由を「Copycats 」と言うようです。【真似をしている】ということらしいです。なぜネコなんでしょう??
可愛らしいですね。猫は大好きなんですが。。

夏の思い出_11


もちろん懸念はしていました。Premiereという有名な名前を使うことは、Appleとしても避けてほしかった事でしょう。
名前を「ProjectVerDown」に変更しました。

2020年7月11日 “Welcome to the App Store.”

最初の提出から5日後、ついにこの時が訪れました。

夏の思い出_10

Google翻訳
(おめでとう!アプリProjectVerDownがAppStoreで承認されたことをお知らせします。
・・・・・・
あなたは世界中の聴衆に到達する機会があります。開始するには、以下のリソースをチェックして、アプリを宣伝し、世界中でビジネスを成長させ、アプリを最新の状態に保ち、新機能を利用してユーザーの関心を維持する方法を学びましょう。
・・・・・・
私たちはあなたの素晴らしい仕事に感謝し、あなたの将来の革新を楽しみにしています。
・・・・・・)

アプリが審査に合格したことを知らせるメールが届きました。
まさか!自分のアプリが世界でリリースできる!

アプリが審査に合格した後、すぐにApp Storeでリリースするか、自分のタイミングでリリースを始めるか、どちらか選択することができます。
アプリ自体の仕組みを変えることはなかったのですが、アイコンのデザインをちょっと変更したいと思っていたので、ひとまず自分のタイミングでリリースすることにしました。
アイコンを変えただけでも、再度アプリ申請は必要になりますが、一度合格をしているものです。ちゃんと納得のいくように準備が整ったら、申請してリリースすればいいと軽い気持ちでいました。

しかし、ここからAppleの沼にハマることになります。

(続く。)

もしもサポートいただけたら、そのお金は私の愛猫のエサ代となります。猫の笑顔が見たいです。