SlideShare a Scribd company logo
KeySnail
How to become a Real Programmer




id: mooz / @stillpedant
ーー1982年
“Real Programmers Don’t Use Pascal”

「本物のプログラマはPascalを使わない」

                       ーー Ed Post
ントは不要である。 コードは一目瞭然なのだ。本物の
プログラマは9時から5時まで働いたりしない。本物の
ログラマはネクタイをしない。本物のプログラマはLIS
など使わない。本物のプログラマはハイヒールを履かな
い。本物のプログラマは構造化プログラミングを共産主
義者の陰謀だと考えている。本物のプログラマはHaske
を使う。本物のプログラマはマウスを使わない。本物の
プログラマは昼食時間に合わせて出勤する。本物のプロ
グラマは妻の名を知らないかもしれない。しかし、ASC
コードテーブル(か EBCDIC)はしっかり憶えている。本
のプログラマは、GOTO を恐れずに使う。本物のプログ
ラマは、5ページにわたる長い DO ループを混乱せずに
書ける。本物のプログラマはOperaを使う。本物のプロ
グラマは料理の仕方を知らない。食料品店は午前3時
ントは不要である。 コードは一目瞭然なのだ。本物の
プログラマは9時から5時まで働いたりしない。本物の
ログラマはネクタイをしない。本物のプログラマはLIS
など使わない。本物のプログラマはハイヒールを履かな
い。本物のプログラマは構造化プログラミングを共産主
義者の陰謀だと考えている。本物のプログラマはHaske
を使う。本物のプログラマはマウスを使わない。本物の
プログラマは昼食時間に合わせて出勤する。本物のプロ
グラマは妻の名を知らないかもしれない。しかし、ASC
コードテーブル(か EBCDIC)はしっかり憶えている。本
のプログラマは、GOTO を恐れずに使う。本物のプログ
ラマは、5ページにわたる長い DO ループを混乱せずに
書ける。本物のプログラマはOperaを使う。本物のプロ
グラマは料理の仕方を知らない。食料品店は午前3時
“Real Programmers Don’t Use Mouse”

「本物のプログラマはマウスを使わない」
(c) http://www.nongnu.org/ratpoison/
「マウスを使わずにWebブラウジングがしたい?」
「そんな君にオススメのアプリがあるんだ」
KeySnail
How to become a Real Programmer




id: mooz / @stillpedant
自己紹介
id: mooz / @stillpedant
Add-ons for Firefox
  KeySnail
     Emacs 版 Vimperator.本日紹介.
  Clipple
     クリップボードマネージャ.
  gpum
     Gmail の未読メールを管理.

Others
  percol
     UNIX のパイプに新風を.コマンドラインで anything.el
  Rios::Proxy
     expect にさよなら.Ruby でコマンドラインにフック.
  zlc.el
     Emacs のミニバッフゔ補完を zsh ライクに.
  org.js
     JavaScript で書かれた org-mode 記法のパーサ.
KeySnail
Emacs 版 Vimperator
KeySnail と Vimperator の比較
KeySnail / Vimperator 両方が提供する機能
  •   独自の設定フゔイルによるカスタマイズ
  •   独自のプラグインシステム
  •   vim や zsh ライクなコマンド入力インタフェース
  •   anything.el / unite.vim ライクなインタフェース

KeySnail にしかない機能
  •   様々な組み込みキーバインド(Emacs, Vim, w3m)
  •   GUI によるカスタマイズ機能
  •   Emacs ユーザ向けの機能 (キルリング,前置引数)
  •   プラグインの管理 UI + 自動更新確認機能

Vimperator にしかない機能
  • 要素の文字列を元にした Hit a Hint
  • 豊富なプラグインの数々
  • その他,私の把握していない機能たくさん ;)
GUI による設定
様々な組み込みのキーバインド
簡単プラグインインストール
プラグインマネージャ
キーボードブラウジング入門には最適
演習問題

1. マウスを使わずにリンクを開く

2. マウスを使わずに画像を Tumblr へ投稿

3. マウスを使わずにテキストを選択し Tumblr へ投稿

4. マウスを使わずに SlideShare のスライドを閲覧

5. マウスを使わずに HTML の select を選択
マウスを使わずにリンクを開く
問題
  • 普通はマウスでリンクをクリックする
  • キーボードだけでこれを行うには?

解法1: Firefox のキャレットブラウズモードを使う
  • Firefox に組み込まれている機能
  • F7 キーで切り替えが可能
  • 手順
     1. F7 キーを押しコンテンツ内にキャレット(カーソル)を表示
     2. 十字キーを使ってリンクまでキャレットを移動
     3. Enter を押してリンクをたどる


解法2: KeySnail の Hit a Hint プラグインを使う
  • hok.ks.js
マウスを使わずに画像を Tumblr へ投稿
問題
  • Tombloo をインストールしていることが前提
  • 画像を右クリックして Reblog を選択する
  • キーボードだけで画像を選択するには?


解法: hok.ks.js と kungfloo.ks.js を使う
  • HoK はリンク以外の要素も選択できる
     • 選択対象を CSS のセレクタ形式で記述可能
  • kungfloo.ks.js は Tombloo のラッパー
     • HoK によって選択された要素を Tombloo 経由でリブログする
マウスを使わずにテキストを選択し Tumblr へ投稿
 問題
   • Tombloo をインストールしていることが前提
   • テキストを選択して Reblog を選択する
   • キーボードだけでテキストを選択するには?


 解法: hok.ks.js + kungfloo.ks.js + caret-hint.ks.js
   • caret-hint.ks.js は HoK によるキャレットの移動を可能に
   • キャレットを選択したいテキストの大体の位置に動かしたら
      • Ctrl + Space を押してマークを設定 (Emacs ユーザにおなじみ)
      • hjkl によりキャレットを移動し,テキストを選択し
      • kungfloo のリブログコマンドを実行
マウスを使わずにSlideShareのスライドを閲覧
問題
  • SlideShare のスライドは Flash / HTML5
     • Flash 版にはショートカットキーが用意されていない
     • HTML5 版では ← と → でスライド送りが可能
  • マウスでポチポチとクリックするのは面倒
  • キーボードだけで快適に閲覧するには?


解法: slidehsare.ks.js を使う
  • ページ送り / フルスクリーンの切り替えがキーボードで可能に
  • Flash 版でも問題なく動作
マウスを使わずに HTML の select を選択
問題
  • 都道府県の選択など,やたらと option の多い select 要素
  • マウスを使って選択するのは面倒
  • キーボードだけで高速に目当ての要素を選択するには?


解法: prompt.selector() を使う
  • http://d.hatena.ne.jp/mooz/20100206/p1
  • anything.el ライクなインタフェース
     • 様々な候補を受け取り,それをリスト形式で表示
     • ユーザが文字を打ち込むと,マッチする候補に絞り込まれる
     • ユーザが候補を選択すると,選択された要素がコールバック関数へ渡る
        – 複数のコールバック関数を指定することも可能(ゕクション)
     • シンプルなインタフェースだが,可能性は無限大!
ご清聴ありがとうございました

More Related Content

PDF
コンパイラ指向ReVIEW
Masahiro Wakame
 
PDF
2021 01-25 lt sho kato
katosho1
 
PDF
Closure Compiler Updates for ES6
Teppei Sato
 
ODP
Parascript
Shoichi Masuhara
 
PDF
Rubyでバルクインサート
Fujimura Munehiko
 
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
 
PDF
Introduction of mruby & Webruby script example
kishima7
 
PPTX
20151213 tokushimaapp
Kenichi Tatsuhama
 
コンパイラ指向ReVIEW
Masahiro Wakame
 
2021 01-25 lt sho kato
katosho1
 
Closure Compiler Updates for ES6
Teppei Sato
 
Parascript
Shoichi Masuhara
 
Rubyでバルクインサート
Fujimura Munehiko
 
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
 
Introduction of mruby & Webruby script example
kishima7
 
20151213 tokushimaapp
Kenichi Tatsuhama
 

What's hot (20)

PPTX
簡易デプロイツール(スクリプト)を作ってみた話
yokoda_toshiaki
 
PPTX
Typescriptの中のこと(浅め)
Kazuhide Maruyama
 
PDF
Goodby Hatena, hello Sphinx
Kouhei Maeda
 
PPTX
Ansibleハンズオン勉強会
Takahisa Iwamoto
 
PPTX
Robot Framework (のSelenium2Libraryのお話)
泰 増田
 
PDF
Webフレームワークを作ってる話 #osakapy
Masashi Shibata
 
PPTX
webアプリケーションフレームワークの話
Yoshihiro Ura
 
PDF
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
ericsagnes
 
PDF
emruby: ブラウザで動くRuby
mametter
 
PDF
Werkzeugを使ってみた #osakapy 2016/04
敦志 金谷
 
ODP
@nukokusa_botを支える技術
Joe_noh
 
PPTX
Web Workerで○○する話
ushiboy
 
PDF
Gulp De wordpress in WordBench
Kanako Kobayashi
 
PPTX
れれれのGitおぢさん - git rerere #w8lt
Junpei Matsuda
 
PDF
Webブラウザで使えるいろんな処理系
祐司 伊藤
 
PDF
Chefのはじめの一歩
Misa Kondo
 
PDF
Dockerプレゼン
よしだ あつし
 
PPT
Memcache Queue
Masaru Hoshino
 
PDF
八王子
Kazutake Hiramatsu
 
PDF
ちゃんとWeb会議スライド『Coffee script』
H2O Space. Co., Ltd.
 
簡易デプロイツール(スクリプト)を作ってみた話
yokoda_toshiaki
 
Typescriptの中のこと(浅め)
Kazuhide Maruyama
 
Goodby Hatena, hello Sphinx
Kouhei Maeda
 
Ansibleハンズオン勉強会
Takahisa Iwamoto
 
Robot Framework (のSelenium2Libraryのお話)
泰 増田
 
Webフレームワークを作ってる話 #osakapy
Masashi Shibata
 
webアプリケーションフレームワークの話
Yoshihiro Ura
 
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
ericsagnes
 
emruby: ブラウザで動くRuby
mametter
 
Werkzeugを使ってみた #osakapy 2016/04
敦志 金谷
 
@nukokusa_botを支える技術
Joe_noh
 
Web Workerで○○する話
ushiboy
 
Gulp De wordpress in WordBench
Kanako Kobayashi
 
れれれのGitおぢさん - git rerere #w8lt
Junpei Matsuda
 
Webブラウザで使えるいろんな処理系
祐司 伊藤
 
Chefのはじめの一歩
Misa Kondo
 
Dockerプレゼン
よしだ あつし
 
Memcache Queue
Masaru Hoshino
 
ちゃんとWeb会議スライド『Coffee script』
H2O Space. Co., Ltd.
 
Ad

Viewers also liked (9)

PDF
ES.next WeakMap
Masafumi Oyamada
 
PDF
Rios::Proxy - A framework for CLI
Masafumi Oyamada
 
PDF
Exploring the Performance Impact of Virtualization on an HPC Cloud
Ryousei Takano
 
PDF
『BrandSafe はてな』のアドベリフィケーションのしくみ
Lintaro Ina
 
PDF
クラウドの垣根を超えた高性能計算に向けて~AIST Super Green Cloudでの試み~
Ryousei Takano
 
PDF
OSvの概要と実装
Takuya ASADA
 
PDF
ネイティブ開発アンチパターン
Yuki Tamura
 
PDF
Ruby everywhere
yukihiro_matz
 
PDF
はてなブックマーク in Scala
Lintaro Ina
 
ES.next WeakMap
Masafumi Oyamada
 
Rios::Proxy - A framework for CLI
Masafumi Oyamada
 
Exploring the Performance Impact of Virtualization on an HPC Cloud
Ryousei Takano
 
『BrandSafe はてな』のアドベリフィケーションのしくみ
Lintaro Ina
 
クラウドの垣根を超えた高性能計算に向けて~AIST Super Green Cloudでの試み~
Ryousei Takano
 
OSvの概要と実装
Takuya ASADA
 
ネイティブ開発アンチパターン
Yuki Tamura
 
Ruby everywhere
yukihiro_matz
 
はてなブックマーク in Scala
Lintaro Ina
 
Ad

Similar to OSC 2011 KeySnail (7)

PDF
俺とMacとアダルトビデオ[社外版]
Mitsuki Ogasahara
 
PDF
ドザーに贈るMacのちょっと効率的な使い方
Takuya Fujimura
 
PDF
enchant.jsを使った子ども向けプログラミングワークショップ講義内容
Yuki Tanaka
 
PDF
rabbit - 第10回 岡山Ruby, Ruby on Rails勉強会
Masaya Konishi
 
PDF
Kyotopm発表資料20130330
Kiyo Tsunezumi
 
PDF
Pythonの開発環境を調べてみた
Kenji NAKAGAKI
 
PDF
Tcl/Tkクイック入門
nyaocat
 
俺とMacとアダルトビデオ[社外版]
Mitsuki Ogasahara
 
ドザーに贈るMacのちょっと効率的な使い方
Takuya Fujimura
 
enchant.jsを使った子ども向けプログラミングワークショップ講義内容
Yuki Tanaka
 
rabbit - 第10回 岡山Ruby, Ruby on Rails勉強会
Masaya Konishi
 
Kyotopm発表資料20130330
Kiyo Tsunezumi
 
Pythonの開発環境を調べてみた
Kenji NAKAGAKI
 
Tcl/Tkクイック入門
nyaocat
 

OSC 2011 KeySnail