2015年5月31日日曜日

"App Indexing for iOS" 全訳

2015・09・29のアップデート以降は下記の方法は非推奨になりました。
後ほど新しいほうの訳を出す予定。



ちょい前に発表されたiOSアプリ用App Indexingの実装手順。
意外とお酒がはかどったので全訳完了。

全部で4段階。
いろいろ手順があるけど、一つでもスキップすると最後の申し込みフォームが送れないのでコツコツ行きましょう。
各項目のタイトルから詳細記事の翻訳にとびます。

① アプリを設定しよう
  スキーム定義するのと、「検索画面に戻る」バーの追加。

② サイト・サーバーを設定しよう
  ページかサイトマップにアノテーションつけて、あとはクロール許可とクローキングダメ絶対。

③ テストしよう
  ディープリンクちゃんと機能してる?+First Click Freeできてる?

④ 申し込み
  ①~③完了して、フォーム書いたらあとはGoogle神頼み。
 


ポイントは
・iOSの場合、Androidと違ってSchema.orgでのマークアップできない
・First Click Free大事
・申し込みフォームで存在を無視されてるさちこせつない。


検索での優遇策もろもろ+Google Now on Tapでの表示機会増加といろいろ追い風のあるApp Indexing。
全部のサイトがどうこうするものではないですが、しっかり作りこんだアプリ(特に情報提供系)があったり、再訪率の高いサイトだけどアプリがなかったり、なんて場合には対応してみるといいことあるかも。

"App Indexing for iOS" Part 4: Express Interest in App Indexing for iOS

2015・09・29のアップデート以降は下記の方法は非推奨になりました。
後ほど新しいほうの訳を出す予定。

iOSアプリのApp Indexing設定その④
最後はぐぐる先生にお願い。
お願いしてもどうなるかは先生のお心しだい。祈りましょう
あとさちこ普及してないよさちこ。
当然この記事内のフォーム書いても意味ないので、オリジナルのほうで書いてね。
出典は「Express Interest in App Indexing for iOS
============

iOS用App Indexingに関心があることを通知

iOS用App Indexingは現在限定的にリリースされています。以下のフォームに記入し、本機能の限定的リリース対象になることに関心があると通知してください。
注意: 申し込んでも必ずApp Indexingの対象になるわけではない点ご了承ください。

iOS用App Indexing申し込みフォーム
以下の「iOSアプリ」および「ウェブサイト・サーバー」の全チェック項目に該当する場合のみお申し込みください。Google検索にアプリ内への直接リンクが、適切な場合に表示される可能性があります。(申し込んでも表示されない可能性がある点ご了承ください。)
詳しくは当社の案内資料をご覧ください。
申し込み内容はGoogleのプライバシーポリシー・利用規約に拘束されます。申し込みに対して、Googleが対応する義務はないことに同意します。

チェック項目
iOSアプリ

iOS app

  • アプリがカスタムスキームをサポートしている。
  • アプリがgsd-で始まるスキームをサポートしている
  • アプリがバックボタンSDKを実装している
  • アプリのディープリンク・バックボタンの実装状況をテストした。
  • 「First Click Free」である(ディープリンクを開いた後、余計なアクションなしに適切なコンテンツを表示している)
  • アプリがホーム画面を開くディープリンクをサポートしている。
ウェブサイト・サーバー

    名前 
    タイトル 


    企業名 
    Eメールアドレス 

    ウェブマスターツール(原文ママ。たぶんサーチコンソール)のログインIDがある場合、そのアドレスを利用して下さい。

    アプリ・サイトの対象国。限定しない場合"all"と記入。 

    ウェブサイトのURL 
    アプリに対応するサイトのURL
    アプリのiTunes URL 

    ============

"App Indexing for iOS" Part 3: Test your implementation

2015・09・29のアップデート以降は下記の方法は非推奨になりました。
後ほど新しいほうの訳を出す予定。

iOSアプリのApp Indexing設定その③
実装内容をテスト。
First Click Freeに気をつけてね。
テストが終わったらお申し込みへ。
出典は「 Test your implementation
==========



実装内容をテストする

ディープリンクを確認する時には、アプリのインストール直後の状態でテストしてください。

何をテストするの?

コンテンツへのリンクが思ったとおりの挙動をすることと、設定したディープリンクがGoogleの要求仕様を満たすこと。
  • アプリは必ず "First Click Free"にしてください。
    アプリを利用するのが始めてのユーザーでも、プロンプトやログイン画面のようなインタースティシャルに邪魔されずに、適切なコンテンツに遷移できるようにします。ユーザーに特定の行動を促す行為は、最初のクリック後にしてください。アプリの起動歴・ログイン状況を問わずに“ First Click Free であるようにしてください。e

どうやってテストするの?

以下のツールを適宜ご利用ください。

■xcrun tool

xcrun toolで検索画面からアプリへのディープリンクを開いた時の挙動をシミュレートします。
xcrun simctl openurl YOUR-DEVICE-UUID gsd-gizmos://123456/?google-deep-link=gizmos%3A%2F%2Fabcd&google-callback-url=googleapp%3A%2F%2F&google-min-sdk-version=1.0.0

■HTML pages

適切なフォーマットでのgsd-{scheme}リンクを入れたHTMLページを作成し、ブラウザでテストします。
 href="gsd-gizmos://123456/?google-deep-link=gizmos%3A%2F%2Fabcd&google-callback-url=googleapp%3A%2F%2F&google-min-sdk-version=1.0.0">
gizmos://abcd
QRコードジェネレータを使い、ios-app://URIのフォーマット・挙動が正しいことを確認します。ディープリンクのURIを以下のテキストボックスに入力すると、iOS用スキャナアプリに対応したQRコードを生成します。スキャンするとリンク一つを含んだページがブラウザで表示され、リンクをクリックするとテキストボックス内に入力したディープリンクを開きます。(訳注:テキストボックスはオリジナルでどうぞ)
=========================
これで実作業は終わり。あとはGoogle先生にお願いしよう。

"App Indexing for iOS" Part 2: Set Up Your Website with iOS Deep Links

2015・09・29のアップデート以降は下記の方法は非推奨になりました。
後ほど新しいほうの訳を出す予定。

iOSアプリのApp Indexing設定その②
ウェブサイトにiOSのディープリンクを設定。
出典は「 set up your website
=============

ウェブサイトにiOSのディープリンクを設定







アプリに対応するウェブページに、アプリ内の対応するコンテンツへのiOSディープリンクを記載します。これによって、GoogleアプリやGoogle ChromeからGoogle検索するモバイルユーザーに対して、Google検索が適切なコンテンツを提供できるようになります。
二つの方法で関係性を示すことができます。
 ① ウェブページの部分で要素を使用
 ② サイトマップ内の当該ページに対応する要素内で、要素を使用
これらの詳細については「App Indexingがサポートするディープリンク形式」をご覧ください。

アプリのURIを定義・テストする
先ほどの方法で指定したディープリンクは、ウェブページからアプリ内コンテンツを開くための代替URIを確定します。ページとアプリの対応関係を収集・定義しやすくするためには、以下のような正しいフォーマットのアプリURIを利用してください:
ios-app://{itunes_id}/{scheme}/{host_path}
各項目の定義:
  • itunes_id: iOS App StoreでのアプリのID
  • scheme: アプリに渡すスキーム。カスタムスキームであること。t
  • host_path: アプリ内の各コンテンツのパス
たとえばexample.comアプリのiTunes IDが123456の場合、カスタムスキームによるアプリ内の各URIは以下のようになります。
ソースのURL対象iOSアプリのURL
example://gizmos?1234ios-app://123456/example/gizmos?1234
example://gizmos/1234ios-app://123456/example/gizmos/1234
example://gizmos/toys/1234ios-app://123456/example/gizmos/toys/1234
ios-app://URIのフォーマットをテストする際には、Googleの「ディープリンクテストツール」をご活用ください。.

Googlebotのアクセスを許可する

Googleがアプリのコンテンツをインデックスするためには、アプリが通常行うような全てのHTTPリクエストを行う必要があります。しかし、これらのリクエストはサーバーにはGooglebotからのリクエストして到達します。robots.txtによるクロール制限を行っていなければGooglebotはコンテンツをクロールできます。しかし、robots.txtを利用されている場合は、Googleからのアクセスを許可するように設定してください。
■例
  User-Agent: Googlebot
  Allow: /
サーバーがGooglebotを検知した場合に、アプリの挙動を変更させてはいけません。Googlebotによるアプリからの呼び出しは、実際のユーザーからのものとおなじだと考えてください。






次に、 実装内容をテストする方法を学びましょう。

"App Indexing for iOS" Part 1: Set Up Your iOS App for App Indexing

2015・09・29のアップデート以降は下記の方法は非推奨になりました。
後ほど新しいほうの訳を出す予定。
iOSアプリのApp Indexing設定その①
アプリ側設定。
出典は「 Set Up Your iOS App for App Indexing」 
=============




iOSアプリのApp Indexing設定






iOSアプリをApp Indexingに対応させるためには、アプリに以下の設定を行ってください。
  1. カスタムURLスキームのサポートを宣言
  2. カスタムスキームを利用したURLの処理
  3. 検索からのディープリンクにバックバーのサポートを追加

1.カスタムURLスキームのサポートを宣言

Info.plistを変更して、一つ以上のカスタムURLスキームをサポートしていることを宣言します。また、App IndexingをサポートするカスタムURLスキームも一つ宣言します。以下の画像は、gizmos スキームとApp Indexing 用スキームのサポートを宣言するInfo.plistです。
gizmos ・gsd-gizmosの二つのURLスキームを宣言しています。
実際に設定する時にはgizmosをアプリが実際に利用している、ウェブサイト上で設定したものと同じURLスキームと置き換えてください。
クリーム色の部分でApp Indexing用のスキームであるgsd-gizmos. のサポートを宣言しています。実際に設定する時にはgsd-gizmos gsd-{scheme}( {scheme} には上記gizmosで宣言したのと同じURLスキームを代入)と置き換えてください。

2.カスタムスキームを利用したURLの処理

Info.plistでアプリが利用するカスタムスキームを宣言したら、AppDelegateが「スキームを利用したURLを処理するための正しいメソッド」を実装していることを確認します。詳しくはAppleの「handling inter-app communication」をご覧ください。
ここまでの手順を終えると、Googleからアプリを訪問するのに使われるgsd-{scheme}形式でのディープリンクに対して、Google SDKでサポートを追加できます。Google SDKではたった一行のコードでバックバー(検索画面に戻るバー)を追加できます。iOS向けApp Indexingの利用には、これを実装することが必須です。
  1. CocoaPodsをインストールします (すでにインストールしていれば省略可) 
  2. Podfileに以下の一行を記載し、GoogleAppIndexing Podを dependencyとして追加します。
    pod 'GoogleAppIndexing', '~> 1.0.0' 
  3. $ pod installを利用し、GoogleAppIndexing Pod をXcodeプロジェクトに追加します。 詳しくは「 Using Cocoapods」をご覧ください
  4. コードを更新すると、SDKの利用とディープリンクによる訪問を処理するのに適切なAPIコールが行われるようになります。
    #import 
    ...
    - (BOOL)application:(UIApplication *)application
                openURL:(NSURL *)url
      sourceApplication:(NSString *)sourceApplication
             annotation:(id)annotation {
      NSURL *sanitizedURL = [GSDDeepLink handleDeepLink:url];
      // Navigate into the appropriate view in the app using sanitizedURL
      ...
    
      return YES;
    }

どういう仕組み?

① APIコールが頭にgsd-がついているURL(=Googleから訪問しているURL)をパースし、スキームを確認します。
② SDKが画面最上部にバックバーを追加し、ユーザーがGoogle検索結果画面に戻れるようにします。アプリにはApp Indexing用のパラメータを省いたURLを渡します。上記の例だとgsd-が省略され、アプリはgizmos://以下のURLを受け取ります。Google以外から訪問したURLに対しては、APIコールは何の効果も引き起こしません。
アプリが上記メソッドを最初に呼び出し、その後の処理・ビューへの誘導にはAPIが返したURLを利用する必要があります。
バックバーは「ユーザーが一定時間バックバーを利用しない」あるいは「ユーザーがホーム画面や他アプリに移動」した場合に消えます。
ios-appフォーマットでのiOSアプリ用URIの場合、APIでのディープリンクは以下のようになります。
  • iOS App URI:ios-app://{itunes_id}/{scheme}/{host_path}
  • GSD Deep Link:
    gsd-{scheme}://{itunes_id}/?google-deep-link=url-encode({scheme}://{host_path})&google-callback-url=url-encode(callback-url)&google-min-sdk-version=version
URLフォーマットの詳細については次ページの「ウェブサイトにiOSのディープリンクを設定」をご確認ください。
ディープリンクとコールバックURIはURLエンコードしてください; +[GSDDeepLink handleDeepLink:] がデコードします。
次はウェブサイトにiOSのディープリンクを設定」を確認し、アプリ内で設定したディープリンクをGoogleに通知します。

2015年5月26日火曜日

アプリ用Fetch as Googleにインデックスさせる効果はないです(現在)

小ネタ。
タイトルで言いたいことは言ってるんでこの後は読まなくても大丈夫。

先日リリースされたさちこにアプリ用のFetch as Googleアルファ版が搭載されてます。
Mariyaさんにうかがったら、こちらはウェブ用と違ってインデックスさせる効果はないそうで。
もっとも機能候補には入ってるとのことなので、今後のアップデートが楽しみです。

以上、生存報告程度の更新でした。