2016年12月11日日曜日

autokana.jsを改修する

実際問題、当初から「やまだした」問題には気がついていた。
自分は通常はFirefoxを使用しておりIEは滅多に使用しないのだが、autokana.jsのデモサイトを確認したのはIEでは無くFirefoxだった。

少しややこしいのだが、客先では持ち込みPCと客先貸与のPCの2台があり、客先貸与PCでも申請すればインターネット接続は可能なのだが、セキュリティな面から申請はしておらずブラウザもOS標準のIEのみがインストールされている状態である。
一方、持ち込みPCの方はイーモバイルを利用してインターネット接続も可能だし、ブラウザもFirefoxやChrome、Safariなど各種インストールしている。

顧客からautokana.jsを提案された際に確認したブラウザはFirefoxだった。
「jQueryプラグインだし、当然の事ながらマルチブラウザでの動作は保証されているよね」
と言う思い込みから「やまだだ」問題には気が付かなかった。
そしてautokana.jsを取得して貰い客先貸与PCで動作確認を行なった際に「やまだした」問題に気が付いて「このような問題がある」と報告したが、そのままautokana.jsの採用は決定された。(^_^;)

と言った経緯があったのに障害票を切られるのは、青天の霹靂くらいの勢いである。
とは言え、現実問題として要求仕様を全く満たして居ないのだから使い物にならないと言うのは当たり前の話なので改修に着手する。(^_^;)
「何があっても改修はしないですよ」と断っておいたハズなのだが。。。

autokana.jsの原理は、IMEがオンになっている場合、keydownイベントで得られるキーコードは常に229であり何が押されたのか解らない。
だが、IME入力中の文字列は、setTimeoutを使用するとテキストとして取得する事が出来るとの事で、これを利用して取得し、取得した文字列から平仮名以外の文字を削除する、と言うものである。

この時点では、まだ「やまだだ」問題には気が付いておらず、ひとまず住所入力の際の数字の救済を考えた。
これは許容する文字列に数字を追加しただけで解消したと記憶している。
そして英字なのだが、これは許容文字に入れてしまうと母音が確定する前の子音が、フリガナとなってしまう。
IMEの設定で英字の変換前も半角にすると設定してあれば問題無いのだが、デフォルトは全角になっているので、そんな設定をしている人は滅多に居ないだろうし設定を変えさせるのも無理だった。
そこで、IMEが平仮名モードの際に英字を入力するのはShiftキーを押下する事に目をつけて、keydown時にShiftキーが押下されている場合は英字入力と見做すようにした。
最後に記号だが、これも許容する文字列の中に入れる事で解消したように思う。(^_^;)

だが以前として「やまだした」問題があるのと、新たに指摘された最終文字に「ん」を入力する際に「nn」では無く「n」で変換した際にフリガナが「ん」では無く「n」になる問題だ。
例えば「はっしn」と入力して変換した場合、「発信」やら「発進」などに変換出来る。
WindowsアプリでIMEのAPIを叩いて取得すると「はっしん」となるため、これもバグだと指摘された。(^_^;)

正直な話『知らんがな』だ。
取りたいのは「ふりがな」だ。(汗)

そしてダメ押しで「やまだだ」問題が発覚した。
完全にお手上げである。orz
更に、この記事を書いてて気が付いたのだが、旧字の「ゐ」「ゑ」を入力すると「うぃゐ」「うぇゑ」となってしまう。
これはMacOS上でのsafariで確認。
気になったのでWindows上でIEで試してみたが「うぃ」と入力して「ゐ」に変換した場合は問題無いのだが変換候補をグルグル1周回してから「ゐ」に変換すると「うぃゐ」になるようだ。
尚、MacOS上のsafariで同じように変換候補をグルグル回していると「うぃうぃうぃうぃうぃ」と回した分だけフリガナが取れる模様。(^_^;)

こうしてみると元の発想はとても良いのだけど、テストが足りてない気がする。

取り敢えず、客先では社内システム向けと言う事が救いで、キッティングされたPCはWin8.1でIE11とブラウザは限定可能なので、ここでフルスクラッチに舵を切った。
これは「やまだだ」問題どーしよー、と思いながら淡々と泳いでいた時に決心した。

こうしてWebでフリガナを取る1日目は終わったのである。
とは言え、プールに行くので定時上がりだった訳ではあるのだが。(^_^;)

0 件のコメント:

コメントを投稿