最近40%サイズのキーボードでプログラミングしたときにとても煩わしさを感じました。記号が全然スムーズに入力できないのです。ブログを書くときにはそれほど苦労しなかったので、あらためて入力言語によって最適なキー配列が異なることを認識しました。その点についてこの記事で少し触れてみます。
まえがき
キーボードにこだわる人の多くは入力をスムーズに行いたいという欲求があると思います。
自作キーボードでキー割り当てを変更できることを知ると、
入力頻度の多いアルファベット・記号をタイプしやすい位置に配置したくなります。
しかし、考えはじめるとどのような配置がベストなのか、最適解を見つけるのは簡単ではありません。各キーの入力頻度が言語によって異なることが一因としてあります。
さらに掘り下げると、同じ言語でも入力している文章の種類や題材で入力頻度は異なります。またCAD操作やゲーム操作など、文章書き以外の作業もスムーズに行いたいと思う人も多いでしょう。
この記事では、どのような作業でどのようなキー入力が多いのかを整理して、最適なキー配列のためには何を考慮しないといけないのかを考えてみます。ここでは私個人の場合を書きますが、これを読んだ人が自分の場合はどうだろうかと考えるきっかけになればと思います。
入力言語と作業の種類
日本語はもちろん、仕事では英語、プログラミング言語も扱ったりします。
日本語入力は主に以下のようなものがあります (頻度順のつもりですが頻度を測定したわけではなく感覚的なものです)。
- メール、チャットツール
- 報告書などの仕事の(堅い、真面目な)文章
- 仕事・プライベートの自分用メモ
- この記事のようなブログ
最初の2項目は英語でも共通ですが、英語でプライベートなメモやブログを書くことはありません。
しかしメールやチャットツールがもっとも頻度が高いのもなんだかなぁと思います。メールやミーティングの数の多さにウンザリしている人もたくさんいるのではないでしょうか?これだけ技術が発達しているのに、人間同士のコミュニケーションにかかる部分はちっとも効率化できていないなぁと最近感じています(誰か解決して〜)。
さて、話題を戻すと、上に加えて仕事や趣味でプログラミングすることがあります。プログラミング自体が趣味ではなく、趣味の課題解決のためにプログラムを書くという感じです。文章書きに比べると頻度はだいぶ少ないですが、最近では以下の言語を使うことが多いと思います。
付随してMarkdownやhtmlなどを扱うこともあります。
上のようなことを考えはじめると、文章などの入力言語だけなく、そのためのツールであるOSやエディタなど、ソフトウェアも重要な要素であることに気づきます。わたしは以下のOSやエディタを使うことが多いです。
- OS
- エディタ
- Word
- Power Point (図が多い資料作成でよく使う)
- emacs (vimや統合開発環境は全然使わない)
- thunderbird
- slack
- Autodesk Fusion 360
- Excel/Googe spread sheet
Power PointとかFusion 360は通常エディタとは呼ばない気もしますが、まあ広義の意味ではエディタということで。
これらのソフトウェアを使うときもキーボード操作は重要です。Power Pointの操作では上付き・下付きを頻繁につかうのでキーボードで操作します。またFusion 360でも寸法や測定など、よく使う機能はキーボードショートカットを利用します。
究極のキーボード
自分にとっての究極のキーボードは、上に挙げた作業をもっともスムーズに行うことのできるものです。(他にも打鍵感・打鍵音などの要素もありますが、ここでは一旦忘れます。)
入力がスムーズにできることは非常に重要であると考えます。入力に手間取ると創造性・生産性が下がるからです。先日40%キーボードでプログラミング作業をした際に実感しました。記号をどこに割り当てているかがわからないために入力することに認知負荷がかかり、コーディングの内容まで頭が回らないのです。キーボードに慣れていないとこんなにも負荷が高いのかという気づきがむしろ新鮮に感じました。若くなくなってくると慣れたことばかりを行いがちですが、慣れていないことをやることで新たな気づきがあるので重要だなと思います。
昔からキーボードの重要性を感じていた私のキーボード遍歴は、フルサイズキーボードからテンキーレスへの移行に始まり、徐々に不要なキーを除いてキー数を減らしていき、現在もっともよく用いるものは65%サイズのものです。更にキー数を減らすと60%や40%になります。
40%キーボードはコンパクトだし、見た目も好きなのでこのサイズの使い手になりたいのですが、上に挙げた作業をすべてスムーズに行うのは無理だなと最近は感じています。それは以下に挙げるいくつかの作業とそれに欠かせないキーの組み合わせがあるからです。
作業によって不可欠となるキー
矢印キー
文章の編集などをしているときにはカーソル位置を動かすために矢印キーを使用します。ただしこれはWordなどのWindows上のソフトウェアを操作している場合です。
Linuxで文章編集するときにはわたしはemacsを使用しますが、このときには矢印キーは使わず、たとえば右矢印、左矢印の代わりにCtrl+F、Ctrl+Bを使用します。不思議なのは、emacs(やLinux)を操作しているときには矢印キーをつかうことはほとんどありません。無意識に自分の頭が切り替わるようです。
通常右下に逆T字型に配置される矢印キーはホームポジションから大きく離れています。そのために煩わしく感じることも少なくありません。すべてのOSやソフトウェアでemacsと同じキーバインドにできれば、キーボードから矢印キーをのぞいてよりコンパクトで使いやすいキーボードにできる気がします。Ctrlキーの位置にModifierを配置し、レイヤー機能でModifier+Fを右キーに割り当てると共通の操作にできますが、そうするとWindowsアプリのCtrl+Fの操作ができなくなるというジレンマがあります。
40%サイズのキーボードではスペースを節約するために4つの矢印キーを横一列に配置したくなることがよくあります。しかし私はvi/vimを全く使わないこともあり、そのような配置をうまく扱えませんでした。vim使いの人は、vimとlinuxの操作でカーソル移動が異なるので、同じように煩わしさを感じるのでしょうか?
自作キーボードにロータリーエンコーダーをつけて、カーソル移動を割り当てている使用例をみかけます。これは矢印キーよりも素早くカーソル移動できそうなので気になっています。ただしこれに慣れてしまうと、市販されている普通のキーボードやノートPCを使うときにストレスが溜まってしまいそうで躊躇しています。
Delキー
多くのCADソフトでは削除がDelキーに割り当てられていると思います。これがデフォルトレイヤーにないととても煩わしく感じます。
これまで自作してきたキーボードでは、40%サイズなどのキー数が少ない場合にはDelキーをModifier+BSに割り当てて来ました。これは役割が似ているという自分の感覚をもとにして覚えやすくするためです。
CADを操作している時は右手のマウスによる操作が中心で、それと左手でのキーボード操作を組み合わせます。そうすると、削除するときは左手で一番遠いBSをModifierを押しながら入力するか、マウスから右手を離してそれを押下することになります。
これがかなりストレスフルなので、CADやエクセルの操作など、Delキーを多用する作業の場合には、Delキーがデフォルトレイヤーにあるキーボードを使用します。わたしが40%サイズキーボードを避ける原因の一つになってしまっています。ただしデフォルトレイヤーにキーの配置が右側にあると、左手で押下するのはやはり煩わしくなります。
この「左手でDelキー」は、分割キーボードにした場合はキー位置がさらに遠くなるので問題は悪化します。分割キーボードを自作した際、これを解消するために左手側の左上にDelキーを配置しました。しかし、一番左の一番上はEscであると体が覚えているようで、Escと思ってDelキーをミスタイプすることが多発しました。これはキー配列を考えるうえで避けるべきアンチパターンであるようです。
/(スラッシュ)キー
プログラミングはLinux環境で作業することが多いのですが、そうするとCUIでディレクトリ移動やファイル操作などを行います。このときかなり頻繁に使うのがディレクトリ階層の区切り記号になっているスラッシュです。
これが最近使っている40%キーボードでは困ったことになります。配列は以下の様になっています。

つまり、通常のキー配列に比べて、スラッシュキーがひとつ外側に移動しています。Linuxのコマンドを打つ際、スラッシュキーの打鍵は指が覚えているので無意識にUpキーを小指でミスタイプしてしまいます。自分はスラッシュキーの割り当て位置を動かしてはいけない、ということに最近気がつきました。
同じファイル操作でもWindowsではGUI操作になるので、ディレクトリ階層の区切り文字であるバックスラッシュ(\)の割り当て位置は全く気になりません。
作業ごとの記号の頻度
40%キーボードでは、除いてある数字行のキーをデフォルトでないレイヤーに押し込めるのが標準的だと思います。自分の場合、数字キーはテンキーのような割り当てにしていて、慣れれば十分実用になる感覚があります。上の図のキー配列では、左スペースをタップダンスでModifierに割り当てており、左スペース+kで5を入力したりします。
一方記号入力には困難を感じています。40%キーボードでプログラミングをしたときに強く感じました。例えばc++を書いているときには、行末に必ずセミコロン(;)を付ける必要があります。
上に示したキー配列では右小指のホームポジションに-を割り当てています。これは文章書きの際の長音記号の入力を意識した配列です。そのため通常この位置にあるセミコロンをレイヤーに押し込めることになります。
c++を書いているときにはデフォルトレイヤーにないセミコロンの入力を2キー同時押ししなくてはいけません。入力頻度はおそらくEnterキーとほとんど変わらないのにもかかわらずです。
慣れれば速く入力できるようになる気もします。ただ、Modifierとの同時押しにするとどうしてもタイピングリズムのつまづきのようなものを感じ、自分の究極のかたちではない気がしています。
おそらく本質的なのは、プログラミングでは文章入力に比べて記号の入力頻度が多いこと、また使用する記号の種類が多いことだと思います。記号によっては一部のアルファベットキーよりも入力頻度が高いものもあるかもしれません。
こんなことを考え始めると、どの作業でどの記号の入力頻度が高いのだろうか、という疑問が浮かびます。そこで各場面で使用頻度の多い記号と少ないものに分類してみます。 ここでは以下の記号を考えます。
!@#$%^&*()-_=+[]{}\ |;:'",.<>/?~`
まずは文章書きでの記号の使用頻度を分類してみます(あくまでも感覚的なものです)。
- よく使う記号
,.()?%/-+*="~! - 時々使う記号
$&:<>[]@ - ほとんど使わない記号
#^{};'\ |_`
[]は日本語の文章でカギ括弧(「」)入力で使用しますが、わたしが書く文章では頻度は多くありません。また英語の作文で使うことはほとんどありません。文章書きでも意外と記号を使っていると思います。四則演算は結構つかいます。例えば「XXXあたりYYY」は読みやすさのために意図的に「YYY/XXX」と書くことが多いです(理系の感覚かもしれない)。強調のために"を使ったり約を表すために~を使うことも多いです。
上の頻度分布は主にWindowsでメールなどの文書作成の場合ですが、texを使って文書作成する場合にはだいぶ変わります。\や{}は結構使うことになります。
一方プログラム書きで同じことを考えてみるとこうなります。
- よく使う記号
!#$&*()-_=+[]{}|;:'".,<>/ - 時々使う記号
%^\ - ほとんど使わない記号
@
^は正規表現とかで使ったりしますが、それ以外で使っていない気がします。@はコメント文かMakefileくらいでしょうか?この頻度分布は使用するプログラム言語によって変わると思います。
またプログラム書きはLinuxの操作と同時にやることが多いですが、Linux操作では異なる入力頻度になります。
- よく使う記号
.-_/|*>$ - 時々使う記号
!#()+=[]{}@\ - ほとんど使わない記号
%^&,?<;:"'
_はファイル名に結構使うことが多いからで、Windowsでも共通です。これはわたし特有の傾向かもしれません。
こうして考えてみると、すべての作業に対応するためにはほぼすべての記号を網羅する必要があります。記号でほとんど使うことがないのはバッククォート`くらいかもしれません。ただしMarkdownでインラインコードを書くには必要だったりします(この記事を書いているときに初めて知りました)。
プログラミングやLinuxを扱わない文章作成のみのひとは、ある程度使用頻度の高い記号を絞ることができることができるかもしれません。ただしそれも書いている文章の種類によるのではないかと想像します。例えば日本語の感嘆符!はカジュアルなメールやチャットツールの文面で使うことはあっても、堅い文章で登場することはないでしょう。小説を書くひとは[](「」)の入力が多いかもしれません。
何かの作業に特化して記号の配置を最適化するのは割とすんなりできそうな気がするのですが、すべての作業をストレスなくできるようにするにはまだまだ試行錯誤が必要そうです。(あるいは慣れの問題かもしれません)
あとがき
キーボードのキー配列と入力言語や作業について考えてみました。
ここでは特に記号について掘り下げてみましたが、自分の用途を考えてみると、ほぼすべての記号をスムーズに入力できるようにする必要がありそうです。
できるだけ少ないキー数にしたいという欲求はあるのですが、40%サイズのキーボードでは不十分かなと思いはじめています。
キーボードのコンパクトさよりも操作をスムーズにできることのほうが自分に取っては優先順位が高いので、そうすると40%にいくつかのキーを加えた50%くらい(?)のサイズがエンドゲームになるのかもしれません。
もちろん作業ごとにキーボードを変えるという考え方もあります。ただ複数のキーボードを置いておける無限に広いスペースはありません。すべての作業をスムーズに行える、自分にとって唯一無二の1台を手に入れたいところです。
この記事は自作したオリジナルキーボードpbkb48で書きました。