Android版のAPKpureについて

#■はじめに
これは、[NTTテクノクロスアドベンドカレンダー2020](https://qiita.com/advent-calendar/2020/ntt-tx) の16日の記事です。
こんにちは。NTTテクノクロスの竹村(@TACK_TX)です。
普段は[MagicConnect](https://www.magicconnect.net)の製品開発を中心に、Android技術者として働いております。

AndroidアプリはGooglePlayで公開するのが一般的ではありますが、
顧客端末がGooglePlay非対応端末等でGooglePlayを利用できない場合や、GooglePlayに公開できない事情がある場合に、野良アプリとして公開したいケースがあります。
今回は数ある野良アプリストアの中の一つであるAPKpureについてユーザ目線と開発者目線で解説していきたいと思います。
 
#■APKpureとは
[APKpure](https://apkpure.com/jp/)は様々なアプリのapkファイルを公開している野良アプリストアです。
GooglePlayのようにAndroidにapkファイルをダウンロードすることで、端末にインストールすることが出来ます。（端末側で不明なアプリのインストールを許可する必要あり）

APKpureはGooglePlayの公開されているアプリと同期しているようで、GooglePlay側で更新をかけると、APKpure側でも自動で反映されています。そのため、APKpureから落とした場合でも自動アップデートに対応しています。
（ユーザレビューは反映されないです）

【参考】GooglePlayと同じバージョンと情報が公開されているMagicConnect
・GooglePlay
https://play.google.com/store/apps/details?id=net.magicconnect&hl=ja&gl=US
・APKpure
https://apkpure.com/jp/magicconnect-viewer/net.magicconnect

また一部のアプリで古いバージョンをインストールすることが可能です。

【参考】過去のバージョンも公開されているAPKpure版のMagicConnect
https://apkpure.com/jp/magicconnect-viewer/net.magicconnect/versions

ただし公開されているのは無料アプリのみです。有料のアプリはHP上では公開されているように見えますが、実際はGooglePlayのリンク先に飛ばされて、APKpureからのダウンロードは出来ません。（APKpureに課金の仕組みがない事が原因と思われます）

#■ユーザとしてのメリット
##● GooglePlayに対応していない端末にもダウンロードが出来る 
　一部端末にはデフォルトで入っていました。
 
##● 自分の国ではインストールできないアプリをインストールすることが出来る
　日本ではGooglaPlay配信されていないアプリを利用することが出来ます。
個人的には凄く嬉しいです。

##●古いバージョンがインストールできる
　UIの改悪やOS追従や公開停止で使えなくなった場合でも、戻すことが出来ます。

#■ユーザとしてのデメリット
##●ダウンロードしたAPKファイルの安全性が100％は保障されない
　私が調べた範囲ではGooglePlayの公開しているAPKと署名なども同じでしたので、基本的には安全です。
　ただし、GooglePlayに公開されているアプリが全て安全とは言えない点と、GooglePlayから削除されたAPKが残っていたりするので、ある程度自衛は必要になります。

#■開発者としてのメリット
##●GooglePlayに公開すればAPKpureに同期される
GooglePlayに対応していない端末用に個別に配信しなくても良い。
「お使いの端末はサポート外です」が前提になるとは思いますが、万が一の場合は案内することもできます 。
 
##●GooglePlayに公開したくない場合にAPKpureのみに公開できる（はず）
　念のため、公式に問い合わせてみたのですが返答がありませんでした。
　[APKpureの案内](https://apkpure.com/jp/submit-apk)を読むと、問い合わせフォームからできると思います。

　要ユーザ登録ですが、Developerページには[ストアリストガイドライン](https://developer.apkpure.com/console/store-listing-guidelines)もありました。
　無料で公開できるようなので、GooglePlayの登録料（$25 USD）を払いたくない場合とか重宝するかもしれません。
　
【参考】GooglePlay公開時の登録料等
https://support.google.com/googleplay/android-developer/answer/6112435?hl=ja

#■開発者としてのデメリット
##●ユーザに古いバージョンを意図的に使われる
　OS追随やセキュリティアップデートなどの大事な更新を適用されなくなります。
　どうしても使われたくない場合は、起動やサーバログイン時にバージョンチェックして古いバージョンを弾くなどの対策をする必要があります。
 
【参考】アプリのバージョニングについて
https://developer.android.com/studio/publish/versioning?hl=ja
 
##●アプリ本体をPCにダウンロードされるので、リバースエンジニアリングやクラッキングされるハードルがより下がる
　そもそも端末がROOT化されたら好き放題されるので、対策しておくべきです。
　最低でも難読化はしておきましょう。

【参考】アプリの圧縮、難読化、最適化について
https://developer.android.com/studio/build/shrink-code?hl=ja

#■不明点
下記は問い合わせしてみたのですが、返信が無く不明となってます。
（情報をお持ちの方は教えて頂けると助かります）
 
自分が調べられた範囲で記載しておきます。
 
##●APKpureでプロモーションは打てるのか
　無理そうです
　ストアガイド見てもそういう項目は見つかりませんでした
 
##●APKpureで公開停止にしたい場合は問い合わせれば個別に可能か
　APKpureで公開したものは可能だと思われます。
　ただし自動でGooglePlayと同期されているアプリは難しそうです。（異議申し立て機能はありましたが、機能してるのかは不明）
　コレジャナイ解決策ではありますが、有料アプリにすればリンク先がGooglePlayになって実質公開停止になります。
　
##●APKpure内でのアプリのアナリティクス（DL数やアクティブユーザ）は見れるのか
　DeveloperCosoleに統計・開発者プロフィール・メッセージの項目があり、統計の項目で見れるはずです。
　ただ、アプリのIDの申請などが必要だったので、何が見れるのか等の詳細な情報は取得できていません。

#■終わりに
　業務上で野良アプリで公開したいという問い合わせがあったときに興味がわき、個人的に調べてみた話を公開させていただきました。
　サンプルアプリ等を作ってAPKpureで実際に公開して…という部分まで出来なかったのは心残りではありますが、Qitaの投稿もMarkdown記法も初心者のため、非常に良い経験となりました。

　[NTTテクノクロスアドベンドカレンダー2020](https://qiita.com/advent-calendar/2020/ntt-tx) 、明日は@PoodleMasterさんです。お楽しみに！