編集部注: 本稿は、2012年5月18日にAndorid情報のWeb専門誌「AndroWire」に掲載した記事を再構成したものです。

旧アンドロイドマーケットである現在のグーグル・プレイ(以下Play)には、アプリケーションを地域限定で公開する仕組みがある。アプリケーションを公開するときに利用するデベロッパーコンソールでは、グーグルのサービスが通常行われている国を個別にオンオフ指定可能なほか、それ以外の国に対しては、個別に公開の可否を設定できる(写真01)。

開発者は、アプリを登録するときに、公開する国、公開しない国を個別に指定できる

これとは、別にアプリケーションが対応する画面サイズや必要な機能(たとえばタッチパネルの有無など)を記述した「マニフェスト」があり、これに従い利用可能なアンドロイド端末が決まる。

このうち、マニフェストによる端末条件の指定は、アプリケーション自体の動作条件であり、たとえ、アプリケーションをインストールできたとしても動かない可能性がある。

公開地域の指定は、Playの検索機能を制御しており、許可された地域以外では、検索結果にアプリケーションが表示されないようになっている(写真02)。こちらは、あくまでもPlay上の機能であり、アプリケーション自体は動作する可能性がある。また、制御されているのは、グーグルらしく検索結果のみであり、アプリのダウンロードを直接制限しているわけではなさそうだ。

アンドロイドデバイスが配布対象外などと判定されると、同じキーワードを入れても、検索結果が異なる

ただし、アプリケーション自体にも、存在場所などを検出する機能が入っていることがあり、インストールできたからといって動作する保証はない。

米国でサービスが行われているGoogle Play musicは、アプリケーション自体には、存在国などを検出して動作する仕組みはなく、グーグルアカウントに対して、サービスが利用可能になっていれば、どこの国でも利用できる。

逆に米国でサービスが行われているインターネットラジオPANDORAは、アプリをインストールできても、米国外では、アプリはサービスに接続せずにすぐに終了してしまう。おそらくIPアドレスなどを見て、地域を判断しているのだと考えられる。

Playはどうやって端末の「場所」を把握しているのか?

アプリケーションに、公開地域が指定されていた場合、Playはどのようにアンドロイドデバイスの地域を判定するのだろうか? それには2つの条件がある。スマートフォンなどモバイルネットワークに接続可能な機器の場合、SIMカードや内部の構成情報などからそのデバイスが接続している「事業者」を調べ、事業者の存在国が、デバイスの存在国となる。

つまり、米国の事業者のSIMが入っていて、SIMロックなどで拒否されていなければ、そのデバイスは、米国の端末として認識される。日本の事業者たとえばドコモのSIMが入っているデバイスは、「日本」のデバイスとして認識される。

しかし、タブレットなど、Wi-Fiのみしか通信機能のないアンドロイドデバイスも存在する。そのような場合には、Playに接続しているときの端末のIPアドレスで判定を行うようだ。端末にプライベートアドレスが割り当てられているような場合には、その手前のインターネットアクセスのためのゲートウェイ(ルーター)のIPアドレスなどで判定が行われるようだ。

このようなルールになっているため、米国の事業者のデバイスを日本国内でローミングで動作させても、Playからは、米国のデバイスとして認識され、米国内と同じアプリケーションを見ることができる。

これに対して、日本のデバイスを米国に持ち込んでも、検索機能で米国で配布が行われているアプリを見つけることはできない。もちろん、SIMフリーのデバイスで、米国の事業者のSIMで動作することができるなら、米国のデバイスとして認識される。ただし、そのためには、SIMが有効で、ネットワークに接続できなければならないようだ。

つまり、モバイルネットワークでデータ通信が可能な状態とし、この時点でグーグル側と接続して、初めて端末は、特定の事業者と紐付けされる。これを行わないと、スマートフォンで、正しいSIMが入っていたとしても、事業者が不明の状態になる。

PlayのWebサイトではすべてのアプリが見える

インターネット上のPlayのWebサイトでは、こうした検索に対する条件はなく、すべてのアプリケーションを見ることができる。ここに自分のグーグルアカウントでログインすると、所有する端末(ただし、一度は端末からPlayにアクセスしたもののみ)を指定してインストールを行わせることができる(写真03)。このとき、端末がインストール先として有効になかどうかは、前述のマニフェストによる端末の機能条件とアプリの配布対象国の設定で決まる。

インターネット上のPlayサイトでは、すべてのアプリケーションを見ることはできるが、インストール先の指定では、配布制限などがかかるようになる

Play側が自分の所有するアンドロイドデバイスをどのように認識しているのかは、PlayのWebサイトで見ることができる。PlayのWebサイトのトップページ、右上にある歯車のアイコンをクリックして「ご注文と端末」をクリックする。開いた「マイアカウント」ページで、「端末」タブをクリックすれば、自分のアカウントと紐付けられた端末をすべて見ることができる。ここで「事業者」となっている項目は、Playに最後にアクセスしたときに、デバイスが接続していた事業者を表す。

Playでは、アプリの配布制限を検索を制御することで行っており、アプリケーションそのものの配布制御を行っているわけではなさそうだ。ローミング中に無線LANでアクセスする可能性なともあり、デバイス側のIPアドレスのみでは、単純に制御がかけられないし、携帯電話は常にモバイルネットワークと接続しているわけでもないからだ。

このため、パッケージ名などを使ってアプリケーションのインストールページを直接開くことが可能だ。ただし、前述したようにインストールできたからといって、アプリケーション側の制限などもあるため、必ずしも動作するとは限らない。

検索できないアプリをPlayで開く

すべてのアンドロイドのアプリケーションには、他のアプリと重複しないパッケージ名が付けられている。これを指定することでほとんどの場合、アプリのページを開くことが可能だ。

たとえば、グーグルのマップアプリのPlay上でのページURLは、

https://play.google.com/store/apps/details?id=com.google.android.apps.maps&feature=search_result#?t=W251(以下略)

となっている。このうち「id=」から「&」までの部分「com.google.android.apps.maps」がマップのパッケージ名になる。

個々のアプリのページは、このパッケージ名を含むURLでアクセスが可能にしてある。実際にPlayで表示させたときのURLは非常に長いものだが、以下のようにパッケージ名まで指定しておけば、後半部分はなくてもかまわないようだ。

https://play.google.com/store/apps/details?id=com.google.android.apps.maps

こうしたURLをアンドロイドデバイス上で開くと、アンドロイドは、ブラウザで開くか、Playで開くのかの判断をユーザーに求めてくる。おそらく内部的には、PlayアプリもURLを使ってページを管理しているのだと考えられる。

もし、グーグルアカウントでGoogle Play Musicが利用できるなら、以下のURLを使うことで、アンドロイドデバイスから、Google Play Musicアプリのページを開きインストールが可能になる。

https://play.google.com/store/apps/details?id=com.google.android.music

Webサイトで探して、これをアンドロイドデバイス側に転送するのは面倒だが、たとえばEvernoteのようなアプリを使い、PC側でURLを貼り付けたページを、アンドロイド側で開いてタップすることで、PlayまたはWebブラウザで開くための選択画面が表示されるようになる。これでPlayの該当ページを開くことができる(写真04)。

エバーノート経由でPC側で調べたアプリのURLをアンドロイド側で開くと、Playストアアプリまたはブラウザのどちらで開くのかを聞いてくる。ここではPlayストアを選ぶ

Playストアアプリで、該当のアプリのページが開く。ここでインストールが可能