Tuesday, November 10, 2015

Intentの歴史を変えるApp LinkingとGoogle Digital Asset Links

前回のブログで書いたように、CDD 6.0では5.1に比べて色々と変更や追加があります。

特に気になるのは 3.2.3.2 節の "Intent Resolution" です。この節のタイトルは、CDD 5.1までは"Intent Override"でした。
IntentはAndroidというOSを特徴づける重要な基本機能ですが、そのIntentの基本部分をこの節で規定しています。なのに、節の名前を変えてしまっているのです。このような変更は、5.1以前のCDDでは一度もありませんでした。

実は、CDD 6.0(というか、Android 6.0 Marshmallow)ではPackageManagerの挙動に変更が加えられています。
その変更とは、App Linksへの対応です。
App LinksのAPIについては、次のGoogleの公式サイトに書かれていますので、ここでは詳しく書きません。
http://developer.android.com/intl/ja/training/app-links/index.html

Marshmallow における App Links 対応で目を引くのは

  • 特定のURIに対するIntent-filterを持つアプリをインストールするときに、そのURIに対してユーザの指示なしで自動的にデフォルト起動を指定できる

という点です。そして、特定のURIに対してデフォルト起動を自動設定するアプリが正当なものであることをチェックするためのインターフェースが用意されました。
それが、Google Digital Asset Linksです。

https://developers.google.com/digital-asset-links/

この仕組みを使うことにより、PackageManagerがアプリをインストールするときに、「そのアプリをデフォルト起動に設定してよいかどうか」を検証できるようになりました。

Intentというのは先に書いたように、Androidの根幹をなすAPIです。
いかなるアプリでも任意のIntent-filterを記述することができます。
ユーザは(プレインストールアプリなどの一部の例外を除いて)、特定のURIに対してIntentを受信するアプリの中から、自分の好みのものを選んで起動することができます。
また、ユーザはいつでもデフォルト起動するアプリを設定したり、デフォルトを解除することができます。

これらの特徴は、Androidが自由であることを象徴していました。この自由なIntentの便利さを享受したことがない開発者は、まずいないと思います。

しかし、Marshmallowからは、自分が開発したアプリを特定のWebサイトからのリンクに対して自動的にデフォルト起動するように設定できることになったのです。

ユーザから見れば、いちいちアプリをインストールする度に、ブラウジングするとアプリ選択画面が出てきてうっとうしいのを回避できるようになります。
一方で、「敢えてインストール済みの専用アプリを使わずに、ブラウザや別のアプリで特定のURLにアクセスしたい」というようなことができなくなる可能性を示唆しています。

それがいい事か悪い事かを判断するのは難しいですが、いわば「Intentの歴史を変える」ような大きな変更であることは間違いありません。

そして、CDD 6.0では、 App Links とGoogle Digital Asset Linksを利用して Intent-filter に定義された URI が妥当かどうかをチェックするための規定が追加されました。

この規定の詳細は、コミックマーケットC89で頒布する Techbooster の新刊に書く予定です。
https://techbooster.github.io/c89/

Monday, October 19, 2015

Android 5.1と6.0のCDDを比較する

2015/10/16にAndroid 6.0 MarshmallowのCDDが公開されました。
https://source.android.com/compatibility/downloads.html
https://static.googleusercontent.com/media/source.android.com/en//compatibility/android-cdd.pdf

Android 5.1からCDDがどのように変わったのか、ちょっと調べてみました。

Android 5.1のCDDは少なくとも2種類の版が存在していますが、比較対象としたのは2015/7/10の版です。版数の違いは、表紙の日付で区別できます。
ちなみに、Android 5.0と5.1のCDDについては、Android改善プログラミング で比較しています。ご興味のある方はぜひ読んでみて下さい。

記述量について

Android 5.1のCDDは62ページでしたが、6.0では74ページとなっています。
一方でファイルサイズは2/3近くにスリム化されています。無駄な画像のサイズなどを削ったのでしょうか。

表紙の変更点

Android 5.1のCDDの表紙は、赤を基調としたデザインでした。6.0では、ライトブルーの背景に白いマシュマロのデザインになっています。

目次の変更点

5.1では目次は2ページだったのに、6.0では3ページに増えました。それだけ内容が盛りだくさんになったということでしょうか。
目次で削られた項目はありません。増えた項目を列挙します。
  • 新しい項目として次のものが追加されました。
    • 5.9 Musical Instrument Digital Interface(MIDI)
    • 5.10 Professional Audio
    • 8.3 Power Saving Modes
    • 8.4 Power Consumption Accounting
    • 9.11 Keys And Credentials
    • 9.12 Data Deletion
  • 3.9 Device Administrationは、5.1では小項目がありませんでした。6.0で次の小項目が追加されました。
    • 3.9.1 Device Provisioning
      • 3.9.1.1 Device Owner Provisioning
      • 3.9.1.2 Managed Profiling Provisioning
    • 3.9.2 Managed Profile Support
  • 3.12 TV Input Frameworkは、5.1では小項目がありませんでした。6.0で次の小項目が追加されました。
    • 3.12.1 TV App
      • 3.12.1.1 Electronic Program Guide
      • 3.12.1.2 Navigation
      • 3.12.1.3 TV Input app linking
  • 7.6 Memory and Storageに次の小項目が追加されました。
    • 7.6.3 Adoptable Storage
また、変更になった項目は次のひとつだけです。
  • 3.2.3.2 Intent Overrides は6.0では Intent Resolution という名前に変わりました。

Friday, May 1, 2015

海外旅行中にMacBook Airが壊れたら何が起きるか

「海外旅行中にMacBook Airが壊れる」という事象が発生しました。
その時の記録です。
参考になる人がいるかもしれないし、いないかもしれません。

4/8(水)

  • DroidCon Montréalに参加するために羽田空港からトロント行きの飛行機に乗る。
  • 夕食のあと、座席でMBAを広げて作業をしていたところ、うっかりしてCAにもらったコカコーラをこぼしてしまう。量は多くなかったがMBAにもかかってしまった。幸いにして隣席の韓国人青年まで被害は及ばなかった。彼は親切にもコカコーラを拭き取るのを手伝ってくれた。
  • 飛行機を乗り継ぎ、モントリオールのホテルに着いてからMBAの電源を入れると普通に起動した。「問題なさそうだな」と思いディスプレイを一度閉じてからもう一度開くと、2度と起動しなくなった。
  • 私にはクレジットカード付帯の海外旅行保険(A社)があり、また勤務先の団体日常生活保険(B社)にも加入していて、どちらも携行品損害補償がある。これは出発前に確認済みで、「保険があるから何とかなるだろう」とこの時は思った。

4/9(木), 10(金)

  • DroidConはしょうがないのでPC無しで参加。聴講するだけなので、致命的なトラブルではなかったが、メモを取るのは大変だった。
  • 合間を見て保険会社A社に電話を入れる。確認したのはおよそ次の内容。
    • 現地で修理してもいいし、帰国後の修理でも可。
    • 保険対象のPCの写真を撮ることが必須。
    • 保険金請求には見積書か領収書のいずれかが必須。その他パスポートや航空券などの証明書類の写しも必要。
  • モントリオールのジーニアスバーは、滞在しているホテルからはやや離れていた。また滞在期間が短く、修理に費す時間が勿体ないので、修理などの処置は帰国後に行うことにした。

4/11(土)

  • 帰国のための飛行機に乗る。機中で日付変更線を越える。

4/12(日)

  • 帰国。帰宅する前に、近くのクイックガレージへ直行。次のような説明を受ける。
    • 今日はAppleのオンラインシステムが定期メンテナンスで停止しているため全世界で修理の処理はできない。明日の受付となる。
    • 水没の場合、修理はほぼ確実に高額になる。購入費用を上回ることもある。
    • 保証外修理をクイックガレージに依頼するとAppleに直接修理を依頼するよりも高額になる(手数料を上乗せするため)
    • 修理代はまず概算金額を電話で知らせる(ここまでは無料)。正確な金額は工場に送ってから確定するので1週間くらいかかる。見積書発行は有償になる。
  • まず概算金額を教えてもらうように依頼し、MBAを預けて帰宅。

4/13(月)

  • クイックガレージから電話があり、概算金額が86,400円と提示される。また見積書を発行する場合、概算修理代の10%に相当する見積書発行費用がかかるとのこと。つまり見積書発行だけで8,640円もかかる。
  • A社に電話し、昨日と今日のクイックガレージとのやりとりを伝える。
    • 86,400円は全額補償されるのか→補償の上限は10万円。また免責が3,000円ある。さらにA社の場合、減価償却を年率10%で計算する。私のMBAは2年前に約12万円で購入した(金額はうろ覚え)。つまり120,000×(1-0.1×2)-3,000=93,000円が(概算だが)補償の上限となる。仮に修理代が86,400円の場合、支払われる保険金は83,400円になる。結構ギリギリだ。
    • 見積書発行費用は補償されるのか→No.
  • 修理するか新しいMBAを買ってしまうか、一晩悩む。

4/14(火)

  • B社にも電話してみる。おおよそ次のような説明を受ける。
    • 補償の上限は50万円。免責は5,000円。
    • 減価償却率は6か月毎に5%。
    • A社とB社の両方に保険金を請求した場合、支払額は按分される。
    • A社だけ(またはB社だけ)に請求しても、A社とB社の両方で保険金を負担することになる(ので2社両方に請求する意味はあまりない)。
    • 見積書発行費用は補償されない。
  • 購入したのはちょうど2年前なので、減価償却率はA社もB社も20%で変わらない。他の条件も、ほぼ同一とわかった。それならば、免責金額が安いA社に請求する方がよい。

4/15(水)

  • 「8,640円もかかる見積書発行費用を安くできないか」と考えてAppleに電話してみる。シリアル番号やメールアドレスの確認などで少し手間取り、何回か電話するハメになったが、次のことがわかった。
    • 修理代は81,000円。
    • 書面の見積書は発行できない。
    • メールでの見積書発行は無料で可能。ただし発行に3〜5営業日かかる。
  • 最初にクイックガレージから説明を受けたように、修理代は少し安かった。しかし驚いたのは修理金額が電話の問い合わせだけで確定してしまったことである。おそらく社内マニュアル等で「水没は××円」のように決めうちされているのであろう。
  • 夕方、クイックガレージに行き修理をキャンセルして預けていたMBAを返してもらう。費用の点からクイックガレージを利用するのを諦めた訳だが、結果として1円も払っていないにもかかわらず、とても親切に対応してもらった。

4/16(木)

  • 来週中には修理が完了しない事はほぼ明らかになってきた。4/25にはDroidKaigiというイベントを控えていて、私は実行委員の一人だったため、色々と支障が出てくる可能性が高かった。そこで新しいMBAを買うことにした。円安などの影響もあり購入費用は約14万円となったが、Mid 2012からEarly 2015へとスペックが上がるので納得することにする。

4/18(土)

  • A社とB社の両方から保険金請求の書類が届く。先に書いたようにA社に請求した方が少し有利だが、請求書類を読むと「見積書・領収書はコピーではなく、必ず原本を添付すること」とある。メールの見積書は「原本」と言ってよいのだろうか。また「写真は破損箇所がわかるように撮影すること」と書かれている。水没しただけなので、見た目は全く破損していない。

4/19(日)

  • 新しいMBAが届く。早速、TimeMachineからリストアする。数時間かかったが、すぐに使えるようになった。最後のバックアップは出発前日に取っておいたので、失ったデータもほとんどない。

4/20(月)

  • Appleから見積書のメールが届く。事前に電話で聞いていたとおり、修理見積額は81,000円であった。
  • A社に電話し、添付書類について問い合わせる。
    • メールの見積書を添付して問題ないのか → 「書面の見積書が発行できなかった事情を、請求書類に記載して下さい」
    • 外見上の破損箇所はないが写真添付は必要か → 「現品を確認するために、破損していなくても必要です」
  • A社への請求書を投函。請求書以外に添付した書類は次のとおり。他に購入時の領収書が必要だが、見つからなかったので、特に何も添付せずにうろ覚えの金額をそのまま請求書に記入した。
    • パスポートのコピー
    • 航空券のeチケット控え(自動化ゲートを利用したためにパスポートに日本への入国印がなかったため。パスポートに入出国印がある場合は不要)
    • MBAの写真(念のため、色々な方向から数枚撮影した)
    • 修理見積書のメールを印刷したもの
  • A社への請求書に「同等の保険に加入している場合、その情報」を書く欄があったので、B社の保険証券番号などを記入しておいた。その代わり、B社の請求書は特に何もせずに放置。

4/25(土)

  • DroidKaigi当日。新しいMBAのおかげもあり、大きなトラブルもなく終了。

4/28(火)

  • A社から78,000円が振り込まれる。これにて保険金請求の手続きは完了。私の手元には、新しいMBAと電源が入らないMBAが残った。

Monday, February 23, 2015

DroidKaigiへの応募は2/25までです!

ご存じの方も多いかと思いますが、4/25(土)に、DroidKaigiというAndroidの開発者向けイベントが開かれます。

http://droidkaigi.github.io/

私は実行委員の一人としてDroidKaigiに参加しています。

これはあくまでも個人的な考えですが、DroidKaigiの特徴は、次の2つです。これは十分なメリットだと、私自身は思っています。


  • 一定以上の規模にもかかわらず、スポンサーに頼らず運営する(ただし会場提供のみサイバーエージェント様にご協力いただきました)。
  • CFPで講演者を公募し、講演者選定の公平性を可能な限り担保する。


DroidKaigiでは、講演者を募集しています。〆切は2/25です。
まだ講演に応募しようかどうか迷っている方がいれば、ぜひ応募して下さい!

DroidKaigi 2016 うらばなし

 2/18, 19の2日間で、DroidKaigi 2016の2日間が終わりました。  講演された皆様からも聴講された皆様からも大変にご好評だったようです。立ち上げから関わった者としては嬉しい限りです。  私はDroidKaigi 2016は準備を手伝っただけで、当日は参加...