Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iOSアプリのリジェクトリスクを早期に発見するための取り組み

Kenta Kase
September 06, 2019

 iOSアプリのリジェクトリスクを早期に発見するための取り組み

iOSDC Japan 2019
https://fortee.jp/iosdc-japan-2019/proposal/d51e7062-2eb1-4a86-bf5f-4928fa3b04c8

iOSアプリ開発は年々複雑化しています。次々と追加される新デバイスや新しいAPIへの対応など技術的な要因はいくつかありますが、それ以外にも更新され続けているApp Store Reviewガイドラインやその他のApp Storeに提出できるアプリの要件を遵守する必要があるのもその要因の1つです。

ガイドラインや提出できるアプリの要件は日々修正、追加されているため常に最新情報を把握することは難しいです。ですがこれを怠ってしまうと、いざリリースという段階になってリジェクトされてしまい、思わぬ対応コストとスケジュールの変更を余儀なくされる可能性があります。

この問題を解決するため、ビルドされたアプリに対してガイドラインやApp Storeに提出できるアプリの要件を遵守できているか機械的にチェックするツールを作成しました。このツールはFastlaneプラグインとして提供され、Fastlaneによるビルドパイプラインに簡単に組み込むことが可能です。ツールによるチェック結果はコンソールログ以外にHTMLレポートとして出力が可能で、検証を担当されているQAチームと連携してリリース前の段階でアプリに問題が無いことを確認しています。

本発表では以下の内容をお話しします

- このツールを開発した経緯
- 実際にどのような項目をチェックしているのか
- チェック機能の実装方法
- QAチームとの連携
- ガイドラインを追い続けるための情報源

iOS開発においてApp Store ReviewガイドラインとApp Storeに提出できるアプリの要件を満たすために気をつけるべき注意点と、今回紹介するチェックツールと同様のものを自作するために必要な知識を持ち帰ってもらいたいと思います。

Kenta Kase

September 06, 2019
Tweet

More Decks by Kenta Kase

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ • ॴଐɿDeNAͷSWETάϧʔϓ
 (SoftWare Engineer in Test) • Twitterɿ@Kesin11 •

    GitHubɿKesin11 • ͓࢓ࣄɿCI/CD׆༻αϙʔτɺؔ࿈ٕज़ͳͲͷݕূ • ൒೥લ·Ͱ͸QAνʔϜͷࣗಈԽαϙʔτ
  2. લճApp Store ReviewΨΠυ ϥΠϯ͕ߋ৽͞Εͨͷ͸͍ͭʁ • ਖ਼ղ: ᶄ 4-6݄ʢ۩ମతʹ͸6/3ʣ • ࢠڙ޲͚ΞϓϦͰͷ3rd޿ࠂ΍σʔλऩूͷ੍ݶ

    • MDM͕ڐ͞ΕΔέʔεʹϖΞϨϯλϧίϯτ ϩʔϧΛ௥Ճ • ҰํͰऩूͨ͠σʔλͷऔΓѻ੍͍ݶΛ໌ه
  3. ܯࠂϨϕϧ • error • App StoreʹΞοϓϩʔυ࣌ʹΤϥʔʹͳΔɺ
 ͋Δ͍͸৹ࠪ࣌ʹϦδΣΫτͷϦεΫ͕ߴ͍ • warn •

    error΄Ͳ໰୊ʹͳΒͳ͍͜ͱ΋͋Δ͕मਖ਼͕๬·͍͠ • info • ৚݅࣍ୈͰwarnఔ౓ͷϦεΫ͕͋Δ΋ͷ • QAଆͰ༻్Λ೺Ѳ͓͖͍߲ͯͨ͠໨
  4. νΣοΫ͍ͯ͠Δ߲໨ - error • iOS SDKόʔδϣϯ͕ݹ͗͢ͳ͍͔ • Xcodeόʔδϣϯ͕ݹ͗͢ͳ͍͔ • ΞΠίϯαΠζ͕ἧ͍ͬͯΔ͔

    • PrivateFrameworkΛϦϯΫ͍ͯ͠ͳ͍͔ • ඇެ։url schemeΛ࢖͍ͬͯͳ͍͔ • ϓϥΠόγʔʹؔ͢Δػೳͷઆ໌จ͕ۭͰͳ͍͔ • 64bitରԠ
  5. νΣοΫ͍ͯ͠Δ߲໨ - error • iOS SDKόʔδϣϯ͕ݹ͗͢ͳ͍͔ • Xcodeόʔδϣϯ͕ݹ͗͢ͳ͍͔ • ΞΠίϯαΠζ͕ἧ͍ͬͯΔ͔

    • PrivateFrameworkΛϦϯΫ͍ͯ͠ͳ͍͔ • ඇެ։url schemeΛ࢖͍ͬͯͳ͍͔ • ϓϥΠόγʔʹؔ͢Δػೳͷઆ໌จ͕ۭͰͳ͍͔ • 64bitରԠ
  6. ΞΠίϯͷαΠζ • iPhone, iPadຖʹඞཁͳαΠζ͕଍Γ͍ͯͳ͍ ͱΞοϓϩʔυͰ͖ͳ͍ • Human Interface Guidelinesͷicons and

    ImagesΛࢀর • https://developer.apple.com/design/human-interface- guidelines/ios/icons-and-images/app-icon/
  7. ΞΠίϯͷαΠζ • xcrun --sdk iphoneos assetutil --info {ASSETS_CAR_PATH} • ipa಺ͷAssets.carΛࢦఆ͢Δͱ

    ΞΠίϯΛؚΉΞηοτͷϝλ σʔλ͕jsonͰऔಘͰ͖Δ • jsonΛύʔεͯ͠ඞཁͳαΠζ ͷఆٛͱൺֱͯ͠ෆ଍͍ͯ͠ ͳ͍͔νΣοΫ
  8. ϓϥΠόγʔσʔλʹΞΫηε͢Δ Framework • App Store ReviewΨΠυϥΠϯΛࢀর • 5.1.2 σʔλͷ࢖༻ͱڞ༗ʢviʣ •

    5.1.3 ݈߁͓Αͼ݈߁ʹؔ͢Δௐࠪʢiʣ • ϚʔέςΟϯά΍޿ࠂ໨తͳͲʹ࢖༻ͯ͠͸͍͚ͳ͍ɺͳͲ͕ ఆΊΒΕ͍ͯΔ • ର৅ͱͳΔAPIͳͲ΋໌ه͞Ε͍ͯΔ • ϔϧεέΞ΍ࣸਅͳͲ