この問題は新しいGemini Keyboard(おそらくはバージョン1.0.21以上)をGoogle Playから導入すれば解決します。
Gemini PDA日本語かな入力ガイドもご覧ください。
一年前に申し込んだPlanet ComputersのGemini PDAがようやく到着しました。ハードウェアの出来はすこぶる良いです。写真の通り日本語かなキーボードを選択しました。PCにおいては英語キーボードで「かな入力」を行う私としては、このサイズのデバイスで「かな入力」が出来ることは夢のような話でした。かってNokiaのQWERTYデバイス向けに日本語入力ソフトを作っていた時も本当はローマ字入力ではなく「かな入力」を実現したかったのですが、如何せんキートップの数が少なすぎて不可能でした。Gemini PDAではかって一世を風靡したPSION 5のキーボードを踏襲することによりそれが可能となりました。これは試さずにはいられません。
前置きが長くなりました。一年を経てやっと手にしたGemini PDA日本語キーボード版。さっそく使ってみてがっかりしました。一時間もたたないうちに明らかな「かな入力」の不具合が見つかってしまいました。それも致命的なものです。細かいことは置いといて入力方法がわかりづらいものを一つと明らかな不具合を二つ紹介しておきます。
使用しているIMEはATOKとGoogle日本語入力です。物理キーボードでGemini Keyboard Japaneseを割り当てています。
[ 分かりにくかったキーアサイン ]
– 小さい”ぁぅぇぉゃゅょ”の入力はAltキーを使用する。”っ”や”ぃ”はShiftキー併用だったので、しばらく悩みました。
[ 不具合 ]
1) “め”が入力出来ない。Alt+Mが”め”のはずですが何故か”ぬ”が入力されてしまいます。これはどうにもならない致命的なエラーです。字形が似ているので間違ったのでしょうね。
2) 濁点、半濁点を伴う文字列の変換が上手く行かない。ATOKとGoogle日本語入力では挙動が異なるが、どうも濁点と半濁点が単独の文字として扱われているように見える。
[ 解析 ]
結論としてはどちらもKey Character Mapの修正で回避出来ました。一つ目は単純に”め”と”ぬ”を取り違えているだけです。Gemini KeyboardのAPKを取り出してkeyboard_layout_japanese_gemini.kcmファイルの中身を見てみます。
key M {
label: '\u3082'
base: '\u3082'
shift, capslock: '\u30FB'
fn: '\u306C'
}
Mキーはこのように定義されています。\u306cというのは”ぬ”のユニコードです。ここを”め”にするためには\u3081にするだけで大丈夫そうです。
もう一つの問題、濁点と半濁点の扱いは、単純な話では無い気がしました。挙動から濁点、半濁点が単独の文字になっていることは想像出来ました。確認のために”ぱ”という一文字を入力したファイルを作成してバイナリーで表示してみるとe3 81 af e3 82 9a
となっていました。これは”は”と合成用の半濁点という二つの文字です。エディターなどは正しく”ぱ”と表示されます。合成用の半濁点なので当然ですし、なんら問題はないように思えます。ただし、実際の挙動を見るとATOKもGoogle日本語入力も一つの文字コードとしての”ぱ”UTF-8の場合e3 81 b1
を期待しているように思えます。ユニコードの定義をまじめに解釈した場合IMEに責任があるように思えます。
かなりやっかいな問題に思えましたがネットをさまよってみるとAndroidデバイスに外部キーボードを接続して「かな入力」を行っている例がちらほら見当たります。「日本語106/109 かな入力対応キーボードレイアウト」というアプリケーションで実現できるようです。試してみると確かに動きます。Google Play上にあるアプリケーションの説明にある”余談”によるとATOKが濁点、半濁点の文字合成をしてくれていると書かれています。ということで、このアプリケーションのkcmファイルを調べてみたところ濁点には ‘\u309b’、半濁点には ‘\u309c’が使われていました。これは単独文字としての濁点、半濁点です。Gemini Keyboardでは、それぞれ合成用の濁点’\u3099’と半濁点’\u309A’になっています。
ユニコードの仕様としてはGemini Keyboardに使われているコードが正しい気もしますがATOKが動いてくれるのであれば、そちらに変更するしかありません。
key O {
label: '\u3089'
base: '\u3089'
shift, capslock: '\u300c'
fn: '\u3099'
}
key P {
label: '\u305b'
base: '\u305b'
shift, capslock: '\u300d'
fn: '\u309A'
}
これがオリジナルです。これを以下のように変更しました。
key O {
label: '\u3089'
base: '\u3089'
shift, capslock: '\u300c'
fn: '\u309b'
}
key P {
label: '\u305b'
base: '\u305b'
shift, capslock: '\u300d'
fn: '\u309c'
}
ということで、3か所の変更をkeyboard_layout_japanese_gemini.kcmに行いAPKを作り直して実機でテストしてみたところうまく動いてくれました。ただし濁点、半濁点の合成はATOKだけで行われますのでGoogle日本語入力では依然として問題は残っています。 ATOKでは、ほぼ思った通りに機能しました。Google日本語入力では何故かChromeやAndroid web browserのアドレスバーでは濁点、半濁点の合成が行われません。他の入力域では大丈夫でした。 若干その他の問題もありますので、今のところATOKがベストチョイスです。
キー数の制限から「かな入力」には色々なシフトを駆使しなければなりません。「かな入力」のメリットはローマ字に比べて打鍵数が少なくて済むので速いことですが、ややこしいシフトのためGemini PDAでの「かな入力」はあまり速くないです。普通に考えるとローマ字入力を使用しておくべきだと思います。
わたし個人としては問題は解決しましたが、正規に直してもらうためにまずはPlanet Computers Developer Forumにてレポートしました。果たして何かしらのアクションに結び付くのかどうか不明です。こういう問題の正式な報告先はどこなんでしょうね。<- 某この界隈で有名な人を介して中の人からコンタクトがありました。詳細ははっきりしてから報告しますが、仕事が速そうですし、良い方向に動きそうです。
#GeminiPDA