SEの生産性を改善するためのSKK入門

Posted: December 20, 2018

この記事は武蔵野アドベントカレンダーの21日目の記事です。

(内容的にあんまりプログラミングっぽくないので個人ブログに書いた)


SE(Software Engineer)にとって、コーディングやドキュメンテーションはもはや呼吸と等しい日常作業といっても過言ではない。

両方ともキーボードを打つことで何かを生産する作業である。つまり、キーボードを使って文字を打つ速度と正確性は生産性に直結している。

しかし、こと日本のSEは「キーボードを打って何かを生産すること」について欧米のSEに大きなハンデを負っている。それは、英字と和字を打ち分けるためにIMEという余計なレイヤを1つ挟んでいることだ。

半角/全角キーだとか、変換/無変換キーだとか、そういうガラパゴスなキーを使用することを前提に設計されたIMEの存在により、我々はモード切り替えの度にホームポジションから指を離し、さらには記号を入力するたびにキーを叩いてモードを切り替えることを強いられている。

また、効率的な日本語入力を志すならばコーディングには向かないJIS配列の使用を強制されることとなる。仕事の半分は英字を打ってるのに、たかが日本語を打つために無駄なキーが多く記号の配置に妥当性のないキーボードを使わざるを得ないストレスたるや。

日本語中心のドキュメンテーションであれば話は別...と思われるだろうが、最近のSEはMarkdownなりreSTなりでドキュメントを書く機会が増えており(観測範囲)、#+,*なんかの記号を半角入力するためになにかしらの変換手順を挟む必要があることから、ストレスに苛まれているのだ。

いっそのことドキュメントも全部英語で統一する、みたいなパワー解決ができれば苦労はしないが、そんなことをすると周囲から顰蹙を買う環境に身を置いているSEが大多数だろう。

そんなあなたにSKK。SKKで日本語を打てばストレスの85%は解消される。

日本語入力にSKKを使うという選択肢

SKK(Simple Kana to Kanji conversion program)とは、1987年に佐藤雅彦氏によって開発された日本語入力プログラムである。

https://ja.wikipedia.org/wiki/SKK

元々Emacs上で動作する日本語入力拡張として開発されたが、独特の操作感によってファンが増え、様々なプラットフォームに移植されている。

現在市中で公開されているSKK実装のほとんどは、

という特徴を持っており、冒頭に書いたようなストレス要因を解消することが可能。

さあ、今からSKKを使おう。この記事はあなたにSKKを使わせるために書いている。最後まで読んだら速攻使おう。

SKKの基本動作

上で紹介した特徴がどのようなインターフェースで実現されているのかを書いていく。

モード切り替え

他の日本語入力環境と同じく、SKKにも英字モードと和字モードがある。

基本的には、

と入力することによって切り替わる。

C-jはとりあえず押しやすい。lも押しやすいし、日本語入力時には使わないキーだからModキーを省略するという思い切りがめっちゃクール。

変換動作

C-jで和字モードにしてなにか文字を入力してみると、一般的なIMEのように変換待ちに入ることなく、確定入力される。何も知らない人はひらがなしか打てないだろう。※1

変換を行なうには、変換したい単語の先頭の文字を大文字で入力し、単語の最後の文字を打ったあとにSpaceを押す必要がある。

つまり、文字を打つたびに常について回るあのうざったい変換モードをマニュアルで起動することができるということ。便利。

逆に、「1文を最後まで打ったあとSpaceを押して一括変換する」ような使い方はSKKでは基本的にできない。※2 SKKは形態素解析や係り受け解析などの機能を一切持っていない。

どこを漢字で書くか、どこをひらがなのままにするかを把握し、単語単位で漢字に変換するような操作を求められる。

難しく聞こえるかもしれないが、そもそも頭の中の文章をキーボードにぶつける段階でどこを漢字にしてどこをひらがなにするかは既に分かっているはず。やってみたらすぐ慣れる。

変換候補は1キーで選ぶことができる。候補ページはSpaceで切り替わり、前の候補ページに戻る場合はxを押す。

確定動作はC-j。Enterでも確定できる製品が多いが、実装によっては確定+改行動作になるため注意。

カタカナ変換

変換モード中にqを押すことで、変換中の単語をカタカナに変換することができる。

製品によっては、C-qを押すことで半角カタカナへの変換も可能。

F11やらF10やら、クソ遠いキーを押さなくてもよくなるので、効率的。

記号入力

@とか #とか、一体どこの誰が全角文字として使うんだみたいな文字は大抵のSKK製品では半角で入力してくれる。

変換モードに入らない限り確定入力されるので、Markdownで見出しをつけるときとか超便利。

SandS

SKKは変換モードに入るときに大文字入力をしなければいけない都合上、Shiftキーを多用する。律儀にShiftを入力していたら小指が折れてしまうので、SandSを併用することを勧める。

SandSとはShift and Spaceの略で、「Spaceキーと文字キーの同時押しでShiftが入り、Spaceキー単体ではSpaceが入る」という機能である。One-shot modifierの一種。

SKK製品にはこのSandS機能を搭載しているものもあるし、各OS毎に実現方法がちゃんと存在しているので、次の章ではOS別におすすめのSKK製品と共に実現方法を記していく。

おすすめのSKK製品

Windows

Windows環境であればSKK日本語入力FEPが鉄板。僕もこれを使っている。

超軽量、高機能、(踏み込みすぎなければ)設定が簡単という神実装。SandSもこれのみで有効化できる。

また、この実装に至るまでの日記はよみごたえ抜群。是非「更新履歴」を頭から読んでみてほしい。

Mac

AquaSKKを使おう。ダウンロードはこちらから。

SandSを使いたい場合はKarabiner-Elementsを併用すること。

Linux

ibusやfcitxなど、色々な入力環境に対する拡張が公開されている。個人的にはibus-skkが好み。

SandSはxkeysnailで実現することができる。設定方法については、ぽよめもさんの記事が分かりやすかった。

おわりに

SKKを使おう。US配列のキーボードを使おう。SandSを使おう。

ただし、他の人が君のPCを触ると発狂したりキレ出す恐れがある。気をつけよう。


  1. 以前会社の先輩がオフライン環境で僕のPCに伝言を残していたのだが、日本語の変換の仕方が分からなかったのか全てひらがなでメモが書かれていたことがある。
  2. SKKの辞書サーバとしてGoogle日本語入力を用いる拡張が開発されているため、実現が不可能なわけではない。参考