愛と勇気と缶ビール

ふしぎとぼくらはなにをしたらよいか

初めて真面目にChrome extension作ったのでチラ裏メモ

まだ公開してないけどね。

  • デスクトップ自体のアイドル(ユーザ操作がない)状態やロック状態はchrome.idleで取れる。ユーザ操作がないと判断するまでのtimeoutも自分で決められる。最短15sec。
  • Chrome自体からフォーカスが離れたかどうかはchrome.windows使って判定すればオーケー (chrome.app.windowではない)
  • 参考: Detect browser focus/out-of-focus via Google Chrome Extension - Stack Overflow (厳密に言うとonFocusChangedのコールバックに渡ってくるのはwindowではなくwindowIdなのでこのコードは間違っている)
  • chrome.sendMessageとかmessagePort系とかの機能はchrome.storage.onChangedで代用できないこともないが、storageを使うのは永続化したいデータのみに留めておいた方が無難だろう
  • chrome.browserAction.setPopupで右上ボタンにポップアップを設定するとchrome.browserAction.onClickedが効かなくなるが、そこはpopup内のjsからbackground pageに対してchrome.runtime.connectし、chrome.runtime.onConnectedをシグナルにして処理すれば問題ない
  • もちろんchrome.runtime.onConnectedはclick eventの代替ではないが、どうせpopupとbackground pageの間でメッセージングするんでしょうと。
  • popupのhtmlの中にanchorがあるとChromeが勝手にfocusしてうざい場合はanchor elementにtabindex="-1"を指定する。ってもうちょっとマシな方法ないんかい。(http://stackoverflow.com/questions/16701082/chrome-extension-first-link-is-auto-focused-in-popup)
  • Chrome extensionの中でgapi (いわゆるGoogle系APIのJSライブラリ)をOAuth2の認可通した上で使いたい場合は chrome.identity.getAuthTokenしてのち得られたtokenを gapi.auth.setToken({ access_token: token }); すればよい
  • 読み込み方はこんな感じで (http://stackoverflow.com/questions/18681803/loading-google-api-javascript-client-library-into-chrome-extension)
  • chrome.i18nは普通に使える、それ以上でも以下でもない

総じて、extension開発は、クロスブラウザとか気にせずバリバリ色んな機能を使えるので気持ちがいい。情弱なのでdialog elementとか初めて使った。こういうのがちゃんと使えると、ダイロアグ的なものを出すためだけにUI系のライブラリを入れる必要がなくなるのでうれしい。

あとVue.js割と使いやすかった。小規模なコードだから足りない部分が気にならないだけなのかもだけど。

ChromeのInspect Devicesのページを開くのがダルい時は単にbookmarkしとけばいいって話

最近WebViewとかUIWebViewとかを組みこんだアプリの開発も便利になったもので、4.4以上のAndroidであればAndroid Chromeだけでなくアプリに組み込まれているWebViewすらWeb Inspectorでデバッグできる時代になりました。

Remote Debugging on Android with Chrome - Google Chrome

今更解説を書く気にもならないほどコモディティ化した技術ですが、このremote debug用の画面って開くのが面倒くさいんですよね。Chromeの右上のボタンクリック→その他のツール→デバイスを検証 っていう3ステップあるのが超絶めんどい!下手したらこの動きを一日に20回とか繰り返してる時あるわ!これはあきませんな、これでは消費税も上がりますわ奥さん!

ということで、何とかならないかなー、拡張機能で何とかしてみるか、とか思っていたのですが、よく考えたらChromeではこれ系の機能には普通にchrome://なURLが振られているので、

chrome://inspect/#devices

をbookmarkしておけばよかっただけでした。ちゃんちゃん。

すげーどうでもいい記事。

GoogleもしっかりCanvas Fingerprintingをつこてる風

ちょっと前に、次世代のユーザトラッキング法として有名になったCanvas Fingerprintingですが、かのGoogle社も一部のサービスで利用している様子です。

f:id:zentoo:20141022083747p:plain

Google Playのアカウントについては、「一回アカウントをTerminateされたヤツについては、新しいDeveloperアカウント作ろうとしてもクレカ番号とかIPアドレスとかUAとか色々考慮した上で同一個人と判断できたらブロックするけんね」みたいなことを言っているGoogleなので、これもその一環なのでしょう。

ちなみに画像はTor Browserでアクセスした時のものですが、特にやましいことをしようとしていたわけではありません。おーこわ。おーこわ。(ガリガリガリクソン風)

WEB+DB press Vol.83に寄稿しました

WEB+DB PRESS Vol.83

WEB+DB PRESS Vol.83

  • 作者: 原田騎郎,吉羽龍太郎,山口陽平,青木雅弥,松下誠太,三宅英明,高橋征義,南川毅文,伊藤直也,海野弘成,高安洋輝,佐藤歩,泉水翔吾,佐藤太一,横江直輔,舘野祐一,橋本翔,渡邊恵太,中島聡,はまちや2,小沢邦雄,長沢智治,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2014/10/24
  • メディア: 大型本
  • この商品を含むブログを見る

straceの話をPerl Hackers Hubに書かせて頂きました。

「あー、献本が来た、じゃあもうちょっと後に発売されるんだな」とか思ってたら既に発売されていました。びっくりした。ちゃんとスケジュール把握しろと。

元々この記事の内容からYAPCの発表内容を作ろうかな、と思っていたのですが、当然ながら文章で説明するのと発表は全然違うので、テーマは同じだけどコンテンツは結構違う感じになりました。

日本経済の振興のためにも買ってもらえると幸いです。アベノミクス!

最近便利だったもの(割とめんどくさがりな人向け)

エンジニアという職業をやっていると、「これ便利だよ」という情報が毎週のように流れてくるのでそれを追って実践していくだけで生産性が数倍になったりチョー捗ったり、その割には個人としては特に成長しなかったりとかそういうことが多々あるわけですが、この文章は単なる枕なのでそれほど深い意味はありません。

最近ではあまりの意識の低さゆえに、ツールの設定とか書くだけでもダルいし、若年性健忘症が進行してショートカットコマンドを覚えることすら出来ないので、「インストールするだけでおk」みたいなものしか導入できない状態になっております。

そうした生活の中で、以下の二つはギリギリ使うことが出来て便利なものでした。

vim-gitgutter

はてなブログの機能によってスター・ウォーズにでも登場しそうなアンチャンの画像が展開されていますが、これはインストールするだけでgit的な意味での差分が表示されるようになるので便利です。何も覚えなくていいのが最高です。

Pushbullet

これはスマホとしてAndroid、PCのブラウザとしてChromeを使っていると便利です。何をしてくれるかというと、

  1. AndroidへのPush通知をChromeにミラーリング
  2. Push通知を経由した、Android <=> Chrome間でのテキストとかリンクの受け渡し

なのですが、1の恩恵を受けるだけならほぼ何もしなくていいです。ミラーされてうざい通知を到着ベースでオフればいいだけ。

昨今では通話の着信、アラートメールの受信、ゲームのスタミナの回復などなど、様々な通知がAndroidの通知領域に届くわけですが、スマートフォンを手に持ってなくてもPC側で気づけるので色々快適です。