2009年10月24日土曜日

メダチェアとWindows 7を購入 はてなブックマーク

午前はオークションで購入したメダチェアとWindows7の受け取り。

以前の椅子で腰痛に悩まされていたので、アーロン、バロン、メダといったあたりを検討した結果、メダチェアを購入。すわり心地はまあまあかな。定価20万ということで少し過剰に期待しすぎたかも。

でも、長時間座っても腰が痛くならないようなのでよかった。これで椅子に座ってPCが使える。

Windows7はVAIOのアップグレードサービスで3,150円。Vistaと比べれば全然よい。動作も速くなった。

2009年10月21日水曜日

Vimlike Smoozieeのデモ動画 はてなブックマーク

Vimlike Smoozieeがかなり機能を絞って実装しているのは、時間的、能力的な制約も大きいのですが、あまり複雑にしないことで、なるべくヘビーユーザーでない人にも使ってもらえるようにと考えているところもあります。

Vimperatorは強力にカスタマイズできてとても便利です。ただ、インストールするといきなりアドレスバーが消えてコマンド入力になるなど、ヘビーユーザーでないとなかなか近寄りがたいところがあると思います。そういったとっつきにくさから、一般ユーザーがこの便利さを享受できないのは大変もったいないので、Vimperatorの便利さを一般ユーザーにもと思うわけです。

ということで、Vimlike Smoozieeのデモ動画を作ってみました。

ちなみに、このデモでは、キーボードの入力したキーを表示するGreasemonkeyスクリプト、FLASH KEYを少し変更してExtensionとしてインストールして使っています。FLASH KEYは動作がかなり素敵です。キーボード操作を画面に表示したいときにおすすめです。



現在のバージョンは0.0.9で、fキーで呼び出すクイックヒントと呼ばれる機能も実装しはじめています。
クイックヒントについては、もう少しできてから詳しく書こうと思っていますが、ChromeのJavascriptが早いからか、ヒントの表示がすごく速いです。
Firefoxだと、どうしてもわずかに間が空いてしまいますが、ヒントを出すときには頭の中にはもう遷移先に気持ちがあるので、そのわずかの間がじれったく感じてしまいます。なので、このスピードはとてもありがたいです。

Chromeにはもう少しシェアをとってもらって、FirefoxやIEなど他のブラウザに、動作スピード面でのプレッシャーをガンガン与えてほしいですね。

2009年10月9日金曜日

ChromeをVim風に操作する拡張 「Vimlike Smooziee」 が動かなくなっていたので修正 はてなブックマーク

最新のGoogle Chrome dev版(4.0.221.6)でVimlike Smoozieeが動かなくなっていたので、修正しました。
以下からインストールできます。
Vimlike Smooziee

バージョンは0.0.6です。

前回設定したupdate_urlの自動更新にも問題があったので、あわせて修正しています。もし前のバージョンを入れてもらっていた人がいましたら、もう一度インストールしてください。

変更


  • window.addEventListenerが効かなくなっていたので、document.addEventListenerに変更
  • update_urlを変更
  • ズームコマンドを不完全ながら導入

update_urlで指定するxmlファイルは、もともと他のファイルと同様にGoogle Codeにアップしていたのですが、Google Codeは同名で更新ができないようなので、別のところに変更しました。

ズームコマンドについては、以下のとおりです。
  • zi: 拡大 (zoom in)
  • zo: 縮小 (zoom out)
  • zm: たくさん拡大 (zoom more)
  • zr: たくさん縮小 (zoom reduce)
  • zz: 元の倍率に戻す

本当はドメインごとに記憶したいのですが、できていないので開くたびに通常倍率に戻ってしまいます。

※zrがちゃんと動いてないようです。zoも少しおかしい様子。近々直します。

2009年10月5日月曜日

ChromeをVim風にキーボード操作する拡張をGoogle Codeにアップ はてなブックマーク

Google Codeにアップしました


前回前々回と書いてきたChromeをVim風(またはFirefoxのVimperator風)に操作する拡張を、Google Codeにアップしました。

Vimlike Smooziee
http://code.google.com/p/vimlike-smooziee/
そのうちVimperatorの作者あたりがChrome向けにも作ってくれるんじゃないかなどと思いつつも、またいくつか改善しています。
とても便利になっていると思いますので、ぜひ使ってみてもらえればと思います。
現在のバージョンは0.0.3です。

※現在開発版のChrome4でしか動作確認していません。

追加、変更したこと


  1. j、kのスクロールにバグがあったので修正
  2. h、l(エル)キーでも左右にスムーズスクロール
  3. 0(ゼロ)で一番左へスクロール、$で一番右へスクロール
  4. ページの読み込み開始時に動作するように変更
  5. uで閉じたタブを開く(問題あり。後述)
  6. テキスト入力時にC-dでカーソルの後の1文字を削除、C-hで前の1文字を削除
  7. 自動アップデート


j、kキーのスクロールのバグについては、前エントリーのコメントで教えていただきました。ありがとうございます!
同時にh、lキーのスクロールも教えていただいたので、こちらもありがたく採用させていただきます。

4.については、今まではデフォルト設定でページの読み込みが完了してから動作するようになっていたため、少し操作するまで待たされるようになっていました。
今回の変更で読み込み開始時に動作するようになったので、より快適に使えるようになっています。

自動アップデートも設定しました。
chrome://extensions/ から更新ボタン("Update extensions now")をクリックすることで、今後更新がある場合には最新のバージョンにアップデートされます。(現状では有無を言わせずアップデートするようなので注意)

今回の変更分も合わせて、操作方法をまとめておきます。


操作方法まとめ


スクロール
  • j、kで上下にスムーズスクロール
  • h、l(エル)で左右にスムーズスクロール
  • ggでページトップへスクロール、Gでページ終わりへスクロール
  • 0(ゼロ)でページの一番左へスクロール、$でページの一番右へスクロール

履歴
  • H、Lでそれぞれ「戻る」「進む}

テキスト入力
  • giで最初のテキストボックスにフォーカス、Escでフォーカスを解除
  • テキストボックス内で、C-a、C-e でそれぞれ カーソルを先頭、末尾へ移動
  • テキストボックス内で、C-f、C-b でそれぞれ カーソルを1つ前へ、1つ後ろへ
  • テキストボックス内で、C-d、C-h でそれぞれ カーソルの1つ前を削除、1つ後ろを削除
  • テキストボックス内でカーソルが先頭にあるとき、C-aで全選択

タブ
  • rでリロード
  • dでタブを閉じる
  • uで閉じたタブを復元(タブ内の閲覧履歴は復元できず)

※ C-aは「Ctrl + a」、Gは「Shift + g」です。

※ uでは、そのタブ内での閲覧履歴は復元できません。履歴も復元したいときは本来のショートカットキーである「Ctrl+Shift+t」を使ってください。


今後ほしい機能

  • f、Fでクイックヒント
  • zi、zoでフォントの拡大、縮小

これができればとりあえず満足です。

前回も書いた、

C-pで前の(左の)タブに移動、C-nで次の(右の)タブに移動


については、一度実装してみたのですが、泣く泣くコメントアウトしました。
「新しいタブ」やchrome:// のページなどで動作が効かず、そこだけ元々のショートカットである印刷や新しいウィンドウの立ち上げが行われてしまい、煩わしいためです。

ただ、今後専用のAPIを用意するという投稿がGoogleグループにありましたので(リンク)、それができるのを待って実装する予定です。

ちなみにこのグループには、マウスやキーボードのイベントを扱う、より公式なAPIも用意するつもりだとの投稿もあるので、そちらも期待したいところ。

スクロール幅などをユーザーがカスタマイズできるようにしたいところですが、
先取り! Google Chrome Extensions 第4回 Chrome Extensionsのこれから
を見ると、どうもできるようになるようです。もう少しAPIが安定したら実装しようと思います。


実装についてのメモ


自動アップデートは、ここにあるように設定すれば、簡単に動きました。

ページの読み込み開始時に拡張が動作するようには、manifest.jsonのcontent_scriptsの項目で、
"run_at": "document_start"
と定義します。(ドキュメント

uで実装したタブを復活させるようなタブ操作は、Backgroud pageなどhtml側で行うようです。従ってContent scriptからBackgroud pageを呼び出す必要が出てきます。

そういうときは、Content script側でPortオブジェクトのportMessage()を使ってメッセージを送り、Backgroud page側ではそれを受けて連携するみたいです。(ドキュメント

uのタブ復元は、ソースを見てもらえればわかると思いますが、かなり無理をしている感じです。今後のAPI充実に期待です。