2013-05-27

DevFest / Google I/O 2013 報告会に参加しました

2013-05-25 (土曜日) に、 DevFest (Google I/O 2013 報告会) に参加してきました。東京、六本木会場です。去年は、 Google I/O 自体に行けたこともあり、おうちで YouTube の Hangout on Air を観てましたが、今回は (I/O に行けなかったし) 会場参加です。

今回、スペシャルゲストとして、日本ではタミヤドロイド T シャツの人としても知られている(?) Chris Yerga が参加されていました。いやぁ、ちょっと前にイケベでくまモンとかリラックマとかキティちゃんのギターピック買ったよ、ってなポストを Google+ で見てはいたのですが、居らはるとは思いもしませんでした。

で、信州会場との謎ツーショット (スリーショット?) 写真

Chris からは、本邦というか全世界的に初公開的な Google I/O Keynote の舞台裏的な話をしていただきました。 Hangout on Air では公開されて、動画も YouTube に残ってますのでどうぞ (前半の最初の方)。懇親会にも参加されて集合写真にも入ってくれてます。写真は Google+ のイベントページで見れるはず。 Chris は Google Play Music All Access の発表等担当していたので、日本でのサービスは、とか聞こうかとも思ったのですが、時期不明か鋭意努力中かノーコメントか、なんにせよ有意な答はもらえなさそうなので聞かずじまいに。

報告会自体は、三日間のセッションのエッセンスを実質四時間にまとめてという事で、非常に濃いものになっています。この報告会のスライドを手掛かりに、 YouTube で公開されているセッションのビデオを観るのもオススメかも。気分、 Google+ 周りがあっさりしていたのがちょっと残念。

名古屋会場をはじめとして中継している各会場のテンションもちょっと変なくらいに高くて、まだお祭り気分かよってな感じでもあったりなかったりw。

来年は I/O 本体に参加できると良いなぁ

当日の様子は YouTube で公開されています。 (前半 後半)

2013-05-25

plusone.js あれこれ

Google I/O 2013 も (行けなかったけど) 終了して、早一週間。セッションのビデオも一通り公開されたのかな。字幕はまだ自動認識のものが多いようですが、そのうちすべて人の手による字幕が付くでしょう。セッション資料はまだ上がっていないようですが、こちらもそのうち公開されるはず。

三日目に行われた CodeLab は、ビデオは存在せず、また公式には資料も公開されません。しかし、一部の CodeLab の資料は入手可能になっています。 ⇒ Google I/O 2013 CodeLab materials summary #io13

資料が公開された CodeLab の一つに "From Zero to Hero: Integrating Google+ Sign-In on Android and Web in Less Than Three Hours" があります。この資料を見ていたところ以下のような記述を見つけました。

<script>
// Async load Google API scripts
(function() {
  var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
  po.src = 'https://apis.google.com/js/auth:plusone.js?onload=startApp';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
</script>

定番の記述ですが、 "auth:plusone.js" というのは見たことがない。 Google+ Platform の JavaScript API を見ても "pluson.js" と "client:plusone.js" というのはあるけど、 "auth:plusone.js" というのはない。先生にお伺いを立てても、 Google+ Platform の PhotoHunt sample app しか引っかからない。

というわけで、 Google+ で質問してみました。結果、 "client:plusone.js" は Google+ Platform の JavaScript API に加えてフルセットの Google APIs Client Library for JavaScript がロードされ、一方 "auth:plusone.js" は Google+ Platform の JavaScript API に加えて The standalone auth client のみがロードされるということだそうです。

まとめると、 "https://apis.google.com/js/" 以下に指定する js とロードされるものは以下の通り。

指定する JSロードされるもの
plusone.jsGoogle+ Platform JS API
client.jsGoogle APIs Client Library
auth.jsStandalone Auth Client
client:plusone.jsGoogle+ Platform JS API と Google APIs Client Library
auth:plusone.jsGoogle+ Platform JS API と Standalone Auth Client

また、 "plusone:client.js" は "client:plusone.js" と同じで、 "auth:plusone.js" は "plusone:auth.js" と同じです。つまり "foo:bar.js" の foo と bar の順序に意味はないということです。ついでに、 "client:auth.js" とか "client:auth:plusone.js" とかやってもエラーは出ませんが、 auth は client の subset なので特に意味はありません。

具体的には、 client を指定すると gapi.client 、 gapi.auth がロードされ、 auth を指定すると gapi.auth がロードされます。 plusone を指定すると gapi.signingapi.plusonegapi.plus 、はたまた gapi.savetodrive 等々がロードされます。そしてそれらを ":" で区切って (https://apis.google.com/js/client:plusone.js のように) 指定すると、指定したものに対応するものが併せてロードされることになります。

というわけなのですが、実のところ "plusone.js" だけの指定でも gapi.auth や gapi.client がロードされたりもします。たとえば、 Google+ Sign-In ボタンを使用すると (class="g-signin" の要素を作るとか gapi.signin.render() するとかした場合) 、 gapi.client および gapi.auth が自動的にロードされます。自分の場合、この振る舞いに惑わされて、 "client:plusone.js" 、 "auth:plusone.js" 、 "plusone.js" の差異がわからないでいました。わかってしまえば何ということもないことでした。

2013-05-18

Android Studio をインストールし、 color scheme を変更してみる

Google I/O 2013 で発表された Android の新しい開発環境 Android Studio を入れてみました。ということで、ちょっとだけメモ書き。

入手は Get the Android SDK に "Android Studio Early Access Preview" というのがあるので、そちらから。

JDK が見つからないとインストールできないらしい。というわけで、環境変数 JAVA_HOME を設定しておいた方が吉かと。

Android Studio は Android SDK Tools の rev. 22 を必要とします。ですが、現行開発環境 (Eclipse ADT とかの) SDK Tools を rev. 22 にあげると、まだいろいろと問題が有るようなので、そちらには手を付けずに置いた方が無難かもしれません。 Android Studio に Android SDK が同梱されているのでそちらを使っていれば良いかと。

Android Studio で Android SDK が設定されていない (あるいは rev. 21 の物が設定されている) 場合に、 "New Project..." しようとするとエラーが出ることがあります。

Your Android SDK is out of date or is missing templates. Please ensure you are using SDK version 22 or later.

その場合は、 Configure → Project Defaults → Project Structure → SDKs の Android SDK (無かったら + で追加) を、 Android Studio 同梱の物に設定してやれば okay です。 Windows の場合は "C:\Users\hoge\AppData\Local\Android\android-studio\sdk" とか "C:\Program Files (x86)\Android\android-studio\sdk" 辺りに居ます。

あと、自分は目があまり良くないので、見た目を少し変更してみました。

デフォルトのテーマは "IDEA (4.5 default)" というものになっていましたが、ちょっと文字が小さいかなと思い他のものに変更。テーマによっては、使われているフォントの関係で日本語が化けることがあります。その場合は、 "Override default fonts by:" で適当なフォントを設定します。

Android Studio は IntelliJ ベースなので、エディターのカラースキームに関しては Solarized Colors の IntelliJ に関するファイルが使えます。というわけで、さくっとインストールして設定。

この比較画像の左は Android Studio のデフォルトで、右は (IntelliJ だったりしますが) カラースキームやフォントを変更したものです。

2013-05-14

PuTTY をインストールし、 color scheme を変更してみる

SourceTree をインストールしてみたのですが、 PuTTY というか plink を入れたほうが良さそうな風 (根拠なし) だったので、 PuTTY をインストールしてみました。インストールしたのは PuTTY PRIVATE PATCHES です。

インストールしたものの、 PuTTY のデフォルトの color scheme がちょっと辛い。黒バックに青字など、見辛いことこの上なし。

というわけで、良さげな color scheme は無いかしらと探してみたところ、 @did2 さんの記事 (PuTTYの配色を見やすくした) を見つけました。

目に優しくて、良い感じかも。設定の *.reg ファイルが用意されていましたが、そこから自分用に色に関する部分だけを抜き出したものが、こちら

いろいろと探し回ってみたところ、 Solarized Colors にも PuTTY の color scheme が用意されていたので、そちらも試してみたり。

Solarized Dark (solarized\putty-colors-solarized\solarized_dark.reg)

Solarized Light (solarized\putty-colors-solarized\solarized_light.reg)

というわけで、いろいろと試し中です。

2013-05-09

VMware の Ubuntu に Virtual HDD を追加して Firefox OS のソースを拾ってくる

VMware の Ubuntu に Virtual HDD を追加しようとして、いつもやり方を忘れちゃうので、メモ。

  1. VMware の仮想マシン設定でハードディスクを新規作成する。
  2. VMware の Ubuntu で sudo fdisk -l して "ディスク /dev/hoge は正常なパーティションテーブルを含んでいません" といわれる device を見つける。普通最後の。
  3. sudo fdisk /dev/hoge してパーティションを作成する。
  4. sudo mkfs.ext4 /dev/hoge1 してファイルシステムを作成する。 ext4 じゃなくても良いけど。
  5. sudo blkid /dev/hoge1 して UUID を調べる。
  6. /etc/fstab に適当に追加する。
  7. sudo mount -a でおしまい。

で、なんで Virtual HDD を追加したかというと、 Firefox OS のソースを見てみたかったからだったりします。ソースを拾ってくる手順は、 https://github.com/mozilla-b2g/B2G の README に従えばよいだけで、特に難しくは無いかと。

要は、 git clone して ./config.sh [device name] してやればよいだけです。 config.sh が repo の manifest.xml を拾ってきて repo sync を実行してくれます。

せっかくだから Geeksphone PEAK 用の物をと ./config.sh peak してみたら、 manifest 無いよって怒られちゃいました。 config.sh が https://github.com/mozilla-b2g/b2g-manifest の v1-train branch を引っ張ってくるけど、その中に peak.xml が無いためらしい。

というわけで、とりあえず BRANCH=master ./config.sh peak するとか、 peak.xml を用意して ./config.sh peak path/to/peak.xml するとか。

2013-05-07

Battery Status API

先日、横山さんのポストを拝見し、 Battery Status API なるものがあることを初めて知った次第。というわけで、どんなものなのかちょっと見てみました。

w3c のドキュメントを見ると、とてもシンプルです。 NavigatorBattery と BatteryManager という interface が定義され、 window.navigator.battery が BatteryManager を implement しているということのようです。

ただ、この Battery Status API 、今のところ Firefox でしか使えないようです。 ⇒ Mozilla のドキュメント

Battery Status API では充電中かどうかや、バッテリーの残量を見ることができますから、バッテリーが心もとない時にはがんばらないとかできそうなのですが。他の環境でも使えるようになるのかなー。

BatteryManager は read only の attribute を四つ持っています。

charging: boolean
充電中なら true
chargingTime: double
充電完了までの時間 (単位は秒)
dischargingTime: double
バッテリーの残り時間 (単位は秒)
level: double
満充電を 1.0 とした割合

また、個々の attribute に対応した event handler もあります。

onchargingchange
event type は'chargingchange'
onchargingtimechange
event type は 'chargingtimechange'
ondischargingtimechange
event type は 'dischargingtimechange'
onlevelchange
event type は 'levelchange'

で、簡単なサンプル。 chargingTime と dischargingTime にそれなりの値が表示されるまでには、充電 (あるいは放電) 開始してから多少の時間が必要です。ただ、これを Geeksphone PEAK でみてみると、 chargingTime と dischargingTime が取れていないようなんです。

ちなみに、 Firefix OS Simulator だと値がとれています。 Geeksphone PEAK 以外の、例えば Xperia Z 上の Firefox for Android でも、値を取得できています。 KEON でも取れないのかしらん。

2013-05-04

Firefox OS Simulator など

Firefox OS Simulator は Firefox のアドオンです。先日 3.0 がリリースされました。 3.0 でハードウェアデバイスにも対応したのかな。すでに Github には 4.0 の pre 版があります。 3.0 をインストールするには、普通に Firefox の「アドオンを検索」で検索すれば okay 。

ドキュメントは、ここ (developer.mozilla.org) とかここ (marketplace.firefox.com) にあります。この二つは同じもののスタイル違いなのかな。

で、そのドキュメントから抜粋して勝手訳。


デバイスにアプリを push

Firefox OS デバイスを持っているなら、デバイスをシミュレーターに接続して、ダッシュボードからデバイスにアプリを push することができます。

デバイスを接続する

デバイスをシミュレーターに接続するには、 Android Debug Bridge (adb) をインストールする必要がありますが、 adb は Firefox OS Simulator アドオンに同梱されていますので、自分でインストールする必要はありません。とはいうもの、デバイスと PC の設定をする必要はあります。

  1. Firefox OS デバイスでは、 "Settings" アプリを起動して Deviceinformation > More Information > Developer の Developer メニューの "Remote debuggin" にチェックを入れます。
  2. デバイスを認識するようにデスクトップ OS の設定をします。手順は OS によって違います。詳細は、 Android デベロッパーサイトの "Setting up a Device for Development" の 3. Set up your system to detect your device にあります。ちなみに Geeksphone の vendor ID は 05c6 です。
デバイスにアプリを push する

デバイスとデスクトップ OS の設定をすませて PC にデバイスを USB 接続すると、 Firefox OS Simulator のダッシュボードの左に "Device connected" と表示され、アプリごとに "Push" というボタンが表示されます。

"Push" をクリックすれば、アプリはデバイスにインストールされます。


訳するまでも無かったか!?

2013-05-03

Geeksphone を adb 接続してみる

今日は Geeksphone を PC に繋げてみました。

まず、端末側で usb debug を活かしてやる必要があります。これには、 Settings → Device Information → More Information → Developer settings セクションの Developer ボタン → Debug セクションの Remote debugging (深い……)をオンにします。

その後 PC に繋ぐと、デバイスマネージャーには Android として現れます。

プロパティ→詳細→ハードウェア ID を見ると Vendor ID が 05C6 で Product ID が 8013 であることがわかります。

環境によっては Interface 番号 (MI) が付いているかも。うちの場合、 Win7 (iMac) と Win8 (VAIO Duo 11) では MI_00 付きで、 Win7 (VAIO Z) では MI 無しになっていました。

というわけで、 Google の Android USB Driver (Android SDK の extras で入るやつね) の android_winusb.inf に

;Geeksphone PEAK
%SingleAdbInterface%        = USB_Install, USB\VID_05C6&PID_8013
%CompositeAdbInterface%     = USB_Install, USB\VID_05C6&PID_8013&MI_00
と加えてあげれば宜しいかと。デバイスマネージャーのプロパティ→ドライバー→ドライバーの更新で、 Android USB Driver を入れてあげれば adb 接続できるようになります。 Win8 の場合は、ドライバーの署名チェックを一時無効化してやらないとインストールできないので注意。

adb 接続できるようになれば、後は adb shell とか adb logcat とか ddms とか Android と同様に使えます。

ただ、 ddms で screen capture を撮ると画像が崩れちゃいます。

端末では、電源ボタンとホームボタンの同時押しで screen capture が撮れます。

というわけで、今日のところは繋いだだけでおしまーい。

2013-05-02

Geeksphone PEAK (Firefox OS) を入手しました

Firefox OS の開発者向け端末 (Geeksphone) が発売されると聞きつけ、「やはり初物は手に入れるべきでしょう!」と注文していたのが昨日届きました。 Geeksphone という名前からは、 BeBox の GeekPort が思い出され、その運命に一抹の不安を覚えたりするのですが、気のせいという事で置いておきましょう;-p

ときに、 Geeksphone 自体は 10,000 作られて、 1,000 販売されたとかいう記事がありますが、本当なんですかね。 9,000 は Mozilla 内部と関係社に配られたとか。 1,000 しか販売されなかったなら、そりゃすぐに売り切れるかもだなぁ、と。

それはさておき、貴重な初物を愛でます。箱は質素な感じ。こうして絵で描かれると iPhone っぽいというか Galaxy っぽいというか。要は普通のスマホ形状ですね。

蓋をぱかっとあけるとこんな感じ。端末自体は、とってもプラスチッキーでチープな感じです。まぁ、開発端末ですから。ちなみに Engineered in Spain で Made in P.R.C. です。

起動すると早速 OS のアップデートが OTA で降ってきました。

アップデートを適用。

起動ロゴはこんな感じ。

アップデート完了。

インストールされている Firefox OS の build では、日本語の UI もキーボードも無しです。中国語 (繁体) の UI はありますが、中国語キーボードが無いので、中国語の入力もできません。このあたり、自分で build した OS を入れれば行けそうですが、試していません。 ⇒ 日本語入力を有効にする [Firefox OS]

動作に関しては、ハードウェアスペックがそんなに高くないという事もあってか、少々もっさりぎみです。 Nexus S に Firefox OS 突っ込んで使うよりは良いかも。 build が違うので単純には比べられないと思いますが。

とりあえず、しばらくいろいろといじってみましょう。明日あたり、ハングアウトで動きを流したりできるかな。そういえば、ハングアウトってまだまともにやったことないや。まずは机周りを掃除しないといけないか……。