Skip to content
uupaa edited this page Nov 11, 2015 · 67 revisions

We will say Goodbye Android Browser!

ChromeTrigger.js は、Android Browser(AOSP Stock browser) で開いているページを Chrome for Android や ユーザの開発したアプリで開き直すソリューションを提供します。

ChromeTrigger.js を活用すると、Android Browser では動作しないページを Chrome や App で開き直す事が可能になり、WebApp, WebGame のユーザ体験ならびに、開発/メンテナンスに関わるコストを大幅に引き下げられます。

導入例

以下のサービスに導入され稼働実績があります。

  • Mirrativ
  • 某ソーシャルゲームの某期間限定イベント x 3
  • などなど

以下のサービスでも活用される予定です。

  • 某新規サービス(世界展開を前提としたサービス)

Overview

ChromeTrigger.js は、WebApp や WebGame のブートシーケンスに埋め込んで使用するタイプの JavaScript ライブラリです。

  1. ChromeTrigger.js を組み込んだページを Android Browser で開くと、Android OS の Intent 画面によく似たダイアログを表示します
  1. ユーザが Chrome や App を選択し、常時(Always) または 1回のみ(Just once) を選択すると、指定された URL を Chrome か App で開き直します

    • Chrome が未インストールなら Google Play の Chrome ダウンロード画面を表示します
    • Chrome が無効化されている場合は Chrome を有効化する画面を表示します
      • Google Play 上で 有効にする開く を選択すると URL を Chrome で開きます
  2. Chrome や App を選択し 常時(Always) を選択した場合は、次回から自動的に Chrome または App にリダイレクトします

  3. Android Browser を選択した場合は、リダイレクトせずにダイアログを閉じます

画面遷移の途中で ブラウザバック(Backボタンの押下)が行われても問題ありません。適切に動作します。

ChromeTrigger.js 前の世界

一度デバイスが発売されたら、ほぼ更新されることのない Android Browser の存在は、コンテンツの企画/作成段階において、

  • 「この機能は Android Browser だと未実装だから…」
  • 「特定機種の Android Browser だと不具合がでるから」

といった悩みを産んでいました。

コンテンツの運用段階においても、

  • 「新しいデバイスがリリースされる度に購入し、描画の不具合を確認するQAを社内で走らせる」
  • 「一旦問題が発覚すれば、現在のやりかけの作業を完全にストップし、ブラウザの不具合を回避する方法を手探りで発明し、無理な場合は関係者に事情を説明し調整する」
  • 「どうやってもブラウザのバグを回避できない場合は、『どうしようも無いです、すみません』と謝らなくてはならない」

といった、いつ終わるともわからない後ろ向きの運用体制が求められていました。

本来は新規開発に投入すべき開発リソースが、Android Browser の非互換性問題の解決に浪費されており、 開発/運用コストがある一定のラインから下がることはなく、かといって、誰にも、どうにもできない状態が長く続いています。

残念ながら、Android Browser は WebApp, WebGame の開発を減速させるだけの存在になっています。

ChromeTrigger.js 後の世界

新規開発案件では

  • ChromeTrigger.js を取り入れる
  • Android Browser 対応はしない。気にしない。
  • Android 4.1 以下は切り捨てる

これらを実施することで、開発/運用サイクルを大幅に改善できます。

開発段階では以下のメリットがあります。

  • 最新の機能を活用できます
  • Mobile Safari と Chrome に開発リソースを集中できます
    • 対応しなければならないブラウザの絶対数を削減できます
    • 社内におけるテスト用デバイスの取り合いや、テスト日程の調整といったサンク・コストが不要になります
    • フロントエンド部分の開発時間を最大で 30% ほど削減できるでしょう
  • Polyfill ライブラリを多用せずに済みます
    • 生のAPIをそのまま使うことで、ライブラリの特定バージョンへの依存やブラックボックスを減らすことができます

運用段階においても以下のメリットがあります。

  • 報告される不具合の半数以上は、Android Browser で発生しています
  • 専任のフロントエンドエンジニアを置く必要がなくなるかもしれません

ChromeTrigger.js を導入すると

サービスのコア部分に集中し、開発を精力的に進められます。