トップ «前の日記(2003-09-12(Fri)) 最新 次の日記(2003-09-14(Sun))» 編集

猿も叩けば日記


2003-09-13(Sat)

_ 1週間

ぶっ続けで泊まった。やっぱ疲れるな。

_ 「慣れ」と「使いやすさ」の違い

昨日の続き。
慣れとユーザビリティ(使いやすさ、覚えやすさ)はどう違うのか考えてみた。
思いついたのは日本語FEPの切り替えの例。俺のマシンでは CTRL+SPACE にキーバインドしてあるが、MS-Windows では日本語キーボードの場合 ALT+半角/全角 キーになってる。
MS-Windows を使い慣れている人がうちの Linux マシンをいじったとすると、たぶん CTRL+SPACE は「使いにくい」というだろう。でもこれは使いにくいんじゃなくて、慣れていないだけだ。
そういった慣れを抜きに CTRL+SPACE と ALT+半角/全角 のどちらがユーザビリティが優れていると言えるんだろうか。
電車の中でずっと考えた結果、FEP の切り替え時に押すキーの位置を考慮に入れると、どちらがユーザビリティが高いのかが分かった。(一般的な日本語キーボードでの話。ノーパソのキー配列とかはダメ)
CTRLキーは左下隅と右下隅にひとつづつある。隅っこにあるというのが非常に大きな利点で、他のキーと押し間違えることが少ない。というかまったくない。加えて、SPACE キーはおそらくキーボードの中でもっとも面積を占め、(確率的に)押し間違える可能性が非常に低いキーだ。
つまり、この二つの組み合わせというのは非常に押し間違えが少なく、ユーザビリティが高いと言える。
ALT+半角/全角 はそれと逆で、押し間違える可能性が(比較級で)高い。

_ じゃあ言語だとどうなのか?

前の例はあくまでもキーボードを例にとって、物理的観点から言えるユーザビリティの高さの話だ。

論理的なものであるプログラミング言語だとどうなるのかは難しい。言語の syntax に限っていえば、決まったルールがしっかりとあることが重要だと思う。

Perl の $ だの @ だの % だのといった変数に対する記号の取り扱いは、一見してソースを見にくくするような作用を持っている気がする。リファレンスを使い始めると $$ とか @$ とかでてくるし。

でも、理屈が分かれはこの記号の扱いは非常に分かりやすくソースの可読性をあげてくれるし、当然書きやすくもなる。

もちろん Perl を知らない人が Perl をやろうと思ったらこの記号のルールを勉強して覚えなければいけない。でも「覚えなきゃいけない」というのと「使いやすさ」ってのは無関係だと思う。だから Perl の記号ルールはユーザビリティを高くする要素でしかあり得ないと思う。

C なんかは記号を含めた変数名を使わないわけだが、それはユーザの自由度が高いことを意味している。言語としての自由度が高いことはユーザにとってありがたいけど、規則性を持ったルールを決めてくれた方がもっとありがたい。

_ で、結論は

結論は出ない。結論なんか最初からなくて、プログラミング言語のユーザビリティはどういった背景の上になりたつか、という考えをまとめてみたかっただけ。Ruby をもっと知っていたら Perl との比較でいろいろ言いたいけどなぁ。

つぅわけでツッコミよろしく>しゃぼ

本日のツッコミ(全3件) [ツッコミを入れる]
_ しゃぼ@仮免中 (2003-09-13(Sat) 23:15)

(長文注意)Rubyを使ったことは無いから比較は無理。
もっと大枠から考えるとすれば、プログラムの解釈/書き方/考え方は大きく分けて3つの見方からできると思う。
「処理の流れ」「データの流れ」「物のつながり」
Perl云々よりもUNIX文化は「処理の流れ」「データの流れ」を重点に考えて作られていると思う。
パイプ、リダイレクト等「データの流れ」を考慮すること。バッチ処理など「処理の流れ」を考慮すること。これが多いと思う。(続く)

_ しゃぼ@仮免中 (2003-09-13(Sat) 23:20)

たいしてWindows文化は「物のつながり」を重要視する傾向が強いと思う。
で、もっと大枠でとらえてしまえば、おそらくCUIとGUIの違いがこのUNIXとWindowsの文化の違いにつながるんじゃないかな?
WindowsでPerlがあまり使われない理由。Javaが使われる理由。UNIXではその逆の理由。

_ しゃぼ@仮免中 (2003-09-13(Sat) 23:21)

ほんとはもっと考えてから発言したかったけど、まだ合宿中なんだよ(笑


2003|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|05|06|07|08|09|10|11|12|
2008|01|