Re: Firefoxアドオンの開発を通じて考えるようになったインタラクションデザイン

Latest topics > Firefoxアドオンの開発を通じて考えるようになったインタラクションデザイン - outsider reflex


Piroさんの記事に書いてあることほとんどに賛成。
それを見ながら「VimmerがなぜVimにこだわるのか、何を見て/考えているのか」をぽつぽつ書き始めたらこんな分量になってしまった。
どれも最近のunite.vimとかと絡めた話にしか思えなかったからです(っていう割にはunite.vimのことは書いてない。書こうとすれば書けるけど、力尽きたし他の人が書くかなと思って)。っていうかVimに言及してるし。


ここに書いてあることは「だからVimmerは変態なんだよね」と自分自身常々思ってることで、
言われてることで、多分Piroさんがこれ見たらただの与太話にしか見えないはず。というかそう思ってくれて構わない。
Piroさんの記事をセンテンスごとに自分の考えを整理していったらこうなった、というだけ。
自分自分もここまで違うのに驚いてるくらいで。


まぁでもこの記事の注訳も含めて見てもらうとわかるかもしれないけど、
Vimもなんとなーーくviの頃から比べれば現代的なインターフェースにも歩みよってるのですよ。
それでもなぜVimがまだこういう時代遅れとも言われるような操作*1にこだわってるのかと言えば、見ているものが違うから。
それをちょっと書いてみようと思う。


セコンドサーチ vs. operator&text-object

セコンドサーチとoperator&text-objectはまったく正反対の操作だと思う。
前者は対象(text-object)→操作(operator)だけど、
後者は操作(operator)→対象(text-object)の順になっている。


でもVimでも一応「対象(text-object)→操作(operator)」な操作もあって、ヴィジュアルモードがそれ*2
知らない人はメモ帳なんかで選択した時の挙動を思い浮かべてもらえればいいと思う*3


だけどなぜtext-objectが便利かって言ったら、速いから。
いろんなところでそう感じるけども、Vimは分かりやすさを犠牲にして、とにかく効率性を重視したエディタなんですよね。
まぁなんで、言ったらあれだけど、UIは最悪かもしれない。
でもぶっちゃけ、そもそもVim慣れた人は画面見ないで、「自分がタイプしたキーシーケンスを見てる」。
極端な言い方に感じるかもしれないけど、Vimmerなら納得してもらえるんじゃないだろうか。


モード

納得せざるを得ないのは、Vimは「(文字を)打ったら戻る、ノーマルモードへ」*4的な習慣が身についてないと辛いと思う。


作業が中断することはあるし、ふとした時でも「今何打ったっけ...」*5って時はある。
そういう時にVimmerはEscキーを無意識にタイプしてしまう癖を持ってると思う。
Escキーを打つことでモードをニュートラル(ノーマルモード)に戻してから打つ。自然にそういう癖がついてしまう。


自分はそういった、無意識にEscキーを打ってしまうようなVim上級者のためにプラグインを作ってるといっても過言ではないと思う。
ここは元記事でも言ってる「100人の中の1人」の話と同じ気持ち。
自分がいるコミュニティの、それも中級者以上の人たち向けにプラグインを作っている。
AndroidiOSにUIガイドラインがあるように、VimというUIにそれなりに慣れた人たちに「なんでこここうなってねーの?」って言われないようなものを作ってるつもり。*6


でも最近思うのは、モードっていうのはどこにでもあって、
Vimみたいにモードごとに全部のキー入力の意味が変わるというのは極端だけれども、
モードがないUIっていうのは、はっきり言って考えられない。
Vimだってどのモードにいても、マウスでメニュー操作するのはできるし、
Emacsがモード『レス』エディタである」とかいう言葉には最近、少々違和感を感じる。


まぁでも「なるべくモードレスにする」というのは自分も賛成。
プログラミングの「なるべく副作用をなくす」的なノリで。
モーダルなUIというのはPiroさんの言う通り状態遷移図が頭に入ってる/染み付いてればいいのだけど、
やっぱ慣れるまで時間がかかるというのがある。慣れたら速いけどね。
でもモーダルダイアログなんかは自分でもイライラしながら毎回エンター押してる。
コマンドラインにエラーメッセージ吐けよとか思う。
まぁ自分も最近eclipseなんかぼちぼち使い始めて、
Vimの操作をなるべくモードレスにしたらどんな感じになるかななどと考えているので、いろいろ思索中。



:'<,'>Quote

以下ぽつぽつとPiroさんの記事から引用しながら考えたことを書く。

余談ですが、Microsoftは製品を開発する時に、ユーザの言葉を聞くんじゃなくて、ユーザがその製品をどう使おうとしたかという様子を観察して製品にフィードバックするという事をやっている、という話を以前にどこかで読みました。ユーザ自身が自分の要望や不満を100%正しく言語化できるわけではない、ユーザ自身が気付いていない問題や視点があるのかも知れない、恥ずかしくて嘘をついているかも知れない、だから行動を見る......という話だったと思います。

Microsoftと同じ事をやるにはお金も手間もかかるのでそのままマネするのは難しいですが、そういう考え方は持っておいていいと思います。

そうなんですよ。だから他人の開発のシーンて見たくなるんですよね。Vimを快適にするために。え?

「Now Loading...」系の物なんかは、その代表例ですよね。プログラムを作る側としては、必要なデータが全部揃うまで待ってから最後に一気に処理した方が、コードとしてはシンプルに書けます。しかし、これではエンドユーザは待たされている間何もできません。今では考えられない事でしょうが、昔のブラウザもまさにそういう設計でした。ページの内容を全部インターネット経由でダウンロードしてくるまで、ページの描画をしてくれなかったのです。

今のブラウザはそんなことは無いですよね。読み込みが少しずつ進行するに従って、ダイナミックに表示を更新して、現在までに読み込みが完了した部分から順次表示してくれます。多少作るのが面倒であっても、こういう風な設計を心がける事はとても大事だと思います。

rubikitchさんがユーザーはリアクションを求めるんだよ(うろ覚え)みたいなことをつぶやいてたのを思い出しました。
自分は5jよりもjjjjjと押してしまいます。vimgolfでもない限りは。とか言ってvimgolfやったことないけど(ぇ

実際、僕は上述したアドオン「Fox Splitter」の旧バージョンをXBLを多用して開発してきましたが、XBLのせいで全体として見通しが悪くなってしまっていたり、開発時の構成に強く依存したコードがJavaScriptとXBLに散らばっていたせいで調べなければいけないコードの範囲が無駄に広がってしまったりしていたせいで、ドツボにハマってもはや自力ではメンテナンスできなくなってしまい、1年半もの間完全に放置することになってしまいました。

filetype書くより.vimrcに書いた方が楽ですよね。

そういう最初のアクションを無意識レベルで起こした結果、機能がサジェストされたり視覚的なフィードバックがあったりして、そこからさらに「そういえば自分はこういうことをしたいんだった」と次の行動が喚起される。(もっと言うと、その時の既定の挙動が一番利用頻度の高い物になっている。)という風な誘導がウザくないレベルで働くようなUIが、僕にとっての「良いUI」なんでしょうね。

補完プラグイン&unite.vim書いてるShougoさんが食いつきそう。
Vimのデフォルト見るとわかる通り、Vimにはこういうインタラクティブな機能は本当に欠けてるんですよね。
やっぱり前述した通りVim慣れるほどUIじゃなく脳内にあるキーシーケンスを見るようになる傾向が強いと思うので、Vimmerに欠けていた思想なのかな。
こう考えるとVimのUIひでーって言われるのもやっぱ納得がいく。

普通のユーザにとって、ブラウザとかUIとかってそんな努力を費やす対象ではないです。勉強しないとまともに使えない斬新な文房具とか包丁とか、使いたくなりますか? なりませんよね。普通の人にとってのブラウザって、そういうレベルの物でしかない。

「システムにデフォルトでインストールされてるエディタ」としてのVim
「自分のカスタマイズされたエディタ環境」としてのVim
でいつも揺らいでます。バイト先ではプラグインも.vimrcも用意せず使ってます。
けっこう混乱します。
混乱しない、って人は目をつぶってるだけだと思う(偏見)。
自分もつい最近までは目をつぶってました(ぇ


おわり

いろいろ言いいたのですがVimmerに石を投げられるので長くなるのでもう言いません。
しかし自分の知っている変態Vimmerはむしろ石を投げるよりも
neocomplcacheやunite.vimなどインタラクティブプラグインを入れればいいと思うよ!」と言うはずです。
Sh○ug○さんはあらゆる点で自分の道を言っていると思う。
従来のVimmerに欠けたあらゆる視点を持っている。


そもそもブラウザは自分がエディタの構想を練る時によく参考にしているソフトウェアの1つです。
あとアドオン開発者というのも似てますし、やはり通じるものがあるんですね...とか言ったら怒られますね。すみません。
あとTreeStyleTab.vimとか作ろうとしてたし、なんとなくPiroさんの後を追っているような...すみませんもう何も言いまs


元記事はPiroさんがこれまで開発の際に考えてきた
いろんな側面が盛り込まれてて、とても全部に言及するのは無理だけど、
とりあえずUIとVimmerが「あのUI」で何を考えてるかってところは言えたかなぁ、と。

*1:UIには別にこだわってないかな...少なくとも自分の周りの人

*2:viにはなかった

*3:正確に言えばメモ帳の選択みたいなものはセレクトモードって呼ばれてるけど、それはさておき

*4:古い...

*5:set showcmd で現在打ってるキーは見れるけど、遅くなるし(:help 'showcmd' にも書いてある)、慣れたら必要ないし自分はオフにしてる。Vimはデフォルトでオン。vi compatibleに振る舞う時(:help 'compatible')はオフ

*6:驚き最小の原則 - Wikipedia