Ccmmutty logo
Commutty IT
10 min read

物書きなのにGoogle日本語入力なんて使ってるんですか?SKKを使おうSKKを! Part 1.

https://cdn.magicode.io/media/notebox/5d2a8739-8239-48db-ac47-5f7f14063467.jpeg

はじめに

色々書きますけど、結局ここ見てくださいここ!
みなさん、日本語を入力するときにどうやってやってます?まさか
「ことしからかいがいにすみはじめました」
って打って、
「今年から貝が胃に棲みました」
なんて打ってる事なんてないでしょうね?まさかね。。。
でも、実際にタイピングをしていて、あれ?ってなるような変換にであってしまた人は多くいるのではないでしょうか。
これは何故なのかというと、ことえり、google IMEを始めとした日本語入力システムがユーザーに視点で受動的なIME(以下受動的iME)だからです。 天下のグーグル様の作ったアルゴリズムがサジェストする変換候補を与えられるまま、離乳食を食べはじめた赤ちゃんのように、 口を開けて涎を誑しながら、リターンキーを押しながら変換しているからです。
で、ちょっと難しかったり変則的な熟語がでてくると「辞書」を知らない赤ん坊のように「ママー助けて」といいながらひらがなでググってで出て来た単語をコピペするか、 例えば「鳥兎」と打ちたいけれども、変換してもでてこないので
tori[space][return]usagi[space][return]
なんてやって、結局googleiMEは「鳥兎」の読みが「うと」だと覚えずじまいで、次い鳥兎と打つ時も同じように3文字(uto[return][space])をうつために8回も余分なキーストロークをしないといけなくなります。
こんな事が許されていいのか!?
それでいいのか人類!もっと能動的に変換しようぜ!
プログラマーならキーストロークの回数にこだわれよ!なんでこんな欠陥使い辛いIME使ってるんだよ!なんで世の中に受動的IMEしかないと思ってるんだ!日本語が打ち辛くなるじゃらUSキーボードは使わない?甘ったれるな!!!(何様だこいつ)!
能動的IMEなら存在しているんだ! SKK という能動的IMEが! SKK を使おう!!!そして受動的日本語入力の呪縛から開放されよう!

(受動的)IMEとは?

IMEというのはIntelligent Method Editor、つまり文字を入力するためのエディタ、 つまり、キーボードで"a"キーをうって受けとった電気信号を"a"と解釈するのか"あ"と解釈するのかを決める親分的存在です。 英字になっていれば"a"が出力され、受動的IMEでは"あ"と共に次にspaceを打った時に変換対象だという事をしめすアンダーバーが表示されます。
ここまでのプロセスにはなんの問題もないです。英語だって日本語だってこの部分は同じで全く問題ないです。問題はここからです。 日本語を入力している時はこのままだらだら打ってると、returnキーを押すとひらがなで確定されて、ひらがなだらけの文になってしまいます。 そこで、受動的IMEは形態素解析(けいたいそかいせき)を被変換部にかけているのです(受動態IMEユーザーが変換できようにルビを振っておきました笑)。
形態素解析っていうのは、ひらがなの文字列を解析してどこが名詞でどこが動詞で、などと品詞分解する事です。 が、これが難しい。5秒くらい考えて汎用的な形態素解析アルゴリズムをぱっと思いつく人が世の中に何人いるでしょうか(いや、いるはずがない)? そうなんですね、コンピュータ黎明期で日本語の変換がダメダメだったのはこれが原因なんです。文字列を与えられて、品詞分解をするアルゴリズムは複雑になりがちです。 何故なら言語は例外だらけで、しかも常に変化するからです。 「激おこスティックファイナリアリティぷんぷんドリーム」なんてフレーズを30年前のプログラマーが予見してアルゴリズムを組むなんて不可能です。
なので、受動的IMEは開発者による形態素解析アルゴリズムの更新が常に必要です。つまりメンテナンスコストが高い、バグも発生しやすい、エンジニア泣かせな実装なんです。 変換の必要のないしかも高度なアルゴリズムによる実装が必要になるため、リソースがさかれる事になります。神が二物を与えた人間がIMEのメンテナンスをしている社会、ディストピアですね。 東芝のJW-10から40年以上がたった今でも、日本語IMEは完成していません(しません)。英語やその他のIMEはパソコンが出た瞬間に完成していたのに。。。キーボード配列にいたっては150年近くほぼそのままなのに...

受動的IMEと人工知能

閑話休題
バズワードをいれたら収益が上がると聞いたもんで(笑)
1970年代ごろに研究が盛んで、その後いっきにすたれた人口無能知能の研究開発、2015年くらいのブーム再燃まで、ほそぼそと研究されていた国がありました、 そうそれが、日本、そうです応用は数あれど、日本の優秀な頭脳はニュラルネットワークを発明するのではなく人工知能を用いた日本語入力の精度向上のための形態素解析につかわれていたのです。
もちろん、後にニューラルネットワークに応用される基礎研究をしていた日本人研究者の方もたくさんいますが、問題はそれらを理解できるが、その道へ進まなかった多くの頭脳が、米国のOSが日本市場を開拓するために作った100%利益オンリーが目的の日本語入力IME開発部門へ流出してしまったという事です。まったく由々しき自体です。あぁ、嘆かわしい嘆かわしい。

日本語で文章を「書く」という事

ここまで、開発者目線でみてきましたが、タイピングしているユーザーだって受動的IMEはマイナスな部分が多いです。 まず、アルゴリズムが複雑な分、ユーザーはそれを意識しながらタイピングしないといけません。 たとえば、こんなに長く変換確定せずにうってたら、変換されなくなるから区切らなきゃ、や、あ、ここ英数字だから一旦IMEを変更して(カチカチ)など (例が貧弱でごめなさい、最後に受動的IMEを弄ったのは実家のパソコンなんで)、 つまり文章を書いていう途中にいらん事をいろいろ考えないといけません。いらん事を考えながら書く文章なんてまともなもになるわけがありません。 推敲に時間や人的なリソースを多分に割く必要がでてきます。なんと嘆かわしいんだ。 受動的IMEで文章書いて仕事にしてる人の気が知れません。
また、受動的IMEでは「変換対象から変換を確定させていく」という作業のせいで、文章を遡っていく必要があります。 普通、鉛筆で文字を書く時、そんな事はしません。 平仮名で全部書いて後から辞書をひきながら該当する部分を消しゴムで消して漢字を置換していくなんて、紙で物を書く時にやっていたらそれこそ狂気の沙汰です。 それを強制するのが受動的IMEです。 また、この動作は文章を書く流れを止めます。せっかくアイディアがあってさらさらと書いているのに、フレーズ単位で遡って、変換を確定していかないといけません。つまり、同じ文章を最低二回読む事を強制させられるのです。 これはマジで理不尽というか頭おかしいと思いません?効率悪すぎるし、なによりも、刹那刹那の衝動が大事な想像力が必要な作業で、その瞬間を殺すような動作をさせられるのは知的活動を著しく阻害します。あらゆる現場で紙とペンのノートが廃れないわけです(何年ぶりかに帰国してメモ帳の種類の多さにびっくりしました) (唐突な日本di)。 英語のような厳密な文法規則が存在しない日本語で、このような作業を強制される事自体おかしいのですよ。あかりますかね僕お抱えるこのフラストレーション。

SKKを使おう!

まぁ色々つらつら受動的IMEをdisってきたんですが、ここでSKKに登場してもらいましょう。 SKKというのは東北大学教授の佐藤雅彦万能神、仏陀の生れ変わり、菩薩、によって開発された 形態素解析などを一切必要としない完成された能動的な日本語入力システムです。
より詳しく知りたい人はSKK日本語入力FEPを読んでください!
SKKでは変換は変換が必要な時にしか行いません。例えば
今年から海外に住み始めました
と打ちたい時は、まず
[shift]kotoshi
と打ちます、すると「ことし」にアンダーバーが着いた状態で表示されるので、スペースキーを押して「今年」を探し、リターンキーを押して確定します。 つまり、シフトがここから変換対象だよ、スペースがここまでが変換対象だよ、というマーカーになっているのです。 なので変換を確定した後karaとうっても、からとされるだけで、変換対象にはなりません。あとはわかりますよね
[shift]kotoshi[space][return]kara
[shift]kaigai[space][return]ni
[shift]su[shift]mi[[space]return]
haji[shift]me[space][return]masita
とこのようにタイプしていけば、「今年から海外に住み始めました」と変換されます。簡単でしょ! 「住み」のように、送り仮名がある場合は[shift]suと打った後にさらにシフトを押す事によって、ここからは送り仮名だよと、教えてあげられます。
かたかなは変換対象をシフトで指定した後q (半角片仮名だとCtrl-qを押すと変換されます。例えば、
インベーダーゲームで遊んだ
[shift]innbe-da-ge-muq
de
[shift]aso[shift]nn (送り仮名がんの場合は自動的に変換モードへ移行する)
da
と打てば変換されてしまいます。ナチュラルでしょ。ユーザーは、紙で文章を書く時に漢字を書く時、ここから漢字にするぞと思い、漢字を書くために平仮名にない揮毫をするように SKKでも、あ、ここから漢字(カタカナ)で書こうという決意表明をシフトキーで行うわけです。
また、SKKでは辞書登録も簡単です。もしスペースを何回か押してでなかった場合、辞書登録モードに移ります。 そこで、正しい漢字と送り仮名を入力する事によって、未来永劫[Ctrl-x]で解除しない限りローカルの辞書に登録されます。 受動的IME特有のカチカチIMEカチカチカチ辞書登録カチカチカチ動詞カチカチカチじゃなかった名詞だったカチカチカチいや、形容動詞?この単語の品詞ってなんだカチカチカチみたいな動作が存在しません。人間が太古の昔から文字を書いて来たように文章を書く事ができます。
以下に「昨日、光宙くんと仲良くなった。ピカチュウとまぎらわしい。」とうった時のキーボードと画面の様子を移したgifをおいときます。 (screenkeySimpleScreenRecorderを使用、タイピングがゆっくりなのはわかりやすくするためなんだからね!)
SKKではこのように、どこまでが変換対象でどこまでがひらがななのかをユーザーが能動的にコンピュータに指示します。 受動的IMEに比べて鉛筆で文章を書くように自然で、よりプログラミングライクですよね! なにせ、読みと送り仮名の一致から一致する物を出すだけで、形態素解析や機械学習なんてものが必要なく、完成された変換メソッドなのです!
どうでしょう?skkでは、同じ文章を変換の確定のためにもう一度読む、文章を一々遡る、 変換範囲の決定のためにわざわざ遠い矢印キーまで指をのばす、などという文章を書く上で敵以外なに物でもない動作を一切なくして、文章を書く事ができるのです! 執筆に適したパソコンやらキーボードなんてググってないで、IMEを変えろ、IMEを。思考を変えろ、思考を。
にしては誤字脱字がおおいじゃんーかって、当方海外での生活が長いもんで、ご容赦下さい…

SKKの現状...

ただSKKは大きな問題を抱えています。それが、ユーザー数の少さによるメンテンナンスやコントリビューターの不足なんですね。 SKKは完成されているとはいえ、日々うつりかわるOSやアプリのインターフェースに適応していかないといけません。 GoogleChromeで変換がしずらくなるなどというissueがではじめていたりします。
私も、facebookやtwitterで撥音便の送り仮名の入力がおかしくなるなどという事を経験してたりします(firefoxではなりません)。 私が使っているibus-skkはは、上野氏という現人神によってメンテナンスされていますが、ソースコードは5年以上更新されていません。 アルゴリズム敵にはSKKは既に完成された変換方法なので、5年がたった今も普通に使えるのですが、撥音関係で、まだバグがあったりします(まぁ、それもささいな事なのですが).
私はソースコードをいじれるほどコミットできる時間や知識がないので、issueを上げるだけに留めているのですが、 ユーザーやコントリビューターが増えればこの現状もどんどん良くなる事でしょう。

おわりに。

ここまで読んださってありがとうございました。SKKのすばらしさ、伝わったでしょうか?なにを隠そうこの文章もSKKで書いています。 SKKを使って何日かすれば、きっと自然に日本語の文章を書く事のすばらしさに目からうろこが落ちると思います。ゆる言語学(コンピュータだったかも)ラジオさん(唐突)が、受動的IMEは優しすぎるなんていってましたが、SKKこそいい距離感でつきあってくれるIMEではないでしょうか。
えっ、さんざん受動的IME disっといてSKKだって使い物になってねーじゃん!?って? 違います、使い物にはなっているけど、ユーザー数が少なくてメンテナンスがちゃんとなされてないのが現状でそのせいでますますユーザー数が減っているジリ貧状態なのが現状って事だけです。 でも、使ってみたいと思ったでしょ? 使ってみてください。「日本語で文章を書く」という事について考え方を変えるきっかけになるかもしれません。
そして、もしも必要な技術をお持ちでしたら、ibus-SKKなどのオープンソースプロジェクトにコントリビュートしてみてください。 既に書いたように、ibus-skkは5年以上更新されていないけれども、未だに使えてますが (形態素解析などが必要ない分、IMEとして既に「完成」しているのです、すごくないですか!?)、 OSの仕様変更やソフトウェアの仕様変更のために正しく変換されないソフトやウェブサイトがあったりするのも現状です。
結局ここまでグダグダ書いて、何がいいたかったのかというと、皆さん、SKKを広めましょう。 日本語で特に文章を書くコミュニティに広げていきましょう。こんな変換方法があって、便利なんだよって! そして、SKKの開発に携わっている有志の方々に感謝をしましょう。もしもできる事がないよっていう人は、あなたの使っているSKKの次のバージョンが出るまで、 夜寝る前に感謝の正拳突きをしましょう。
私も博士論文を書き終えたらibus-skknなどのプロジェクト更新に時間を費やしたいと思います。 あと、気が向いたら、ibus SKKのインストール方法や詳しい使い方について記事を書きます。
私もSKKインストールして使ってみたよって方えーぜひコメントください。あと、余力があれば是非記事を書いてSKKを広めてください!
えっ、ブログなんて書いてないで博論をかけって、そういうツッコミはなしですよもぅ。。。(1円でもお金が欲しいいんですよぉ。。。)

出展

SKKSKK日本語入力FEP http://coexe.web.fc2.com/skkfep.htm SKK https://dic.nicovideo.jp/a/skk (2022/6/13日閲覧) 人工知能 https://ja.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD#%E6%AD%B4%E5%8F%B2 (2022/6/13日閲覧) その日本語はAIに聞いてくれ https://pc.watch.impress.co.jp/docs/column/config/1157149.html (2022/6/13日閲覧) 学術論文じゃないのでwikiや個人ブログがソースだったりするけど許してください

Discussion

コメントにはログインが必要です。