新・日々の暮らしに疲れてない?

一人バンド、火頭工房

Type Helper Beta 公開一歩手前。

以前作成したショートカット機能あるいはオートコンプリート機能的なChrome拡張機能について。

 

前回のエントリーでは、これ以上あたらしいデータベース機能を学ぶのが嫌で、(拡張機能にはChrome Storageという独自の機能があります)作業終了!としたのですが...いやいや面倒くさがってはいかん、どうせヒマなんだしゆっくりやれば良いんだ、とガンバってみることに。

 

結果 → やっぱり超面倒だった。

 

まず、今回の拡張機能の動作について。

・辞書機能よろしく、フレーズを登録し、アルファベットをヒモづける
・シフトキーを押した状態で、そのアルファベットを0.8秒以内に2度押すと、登録したフレーズがウェブサイト内のフォームに入力される


以上。たとえばgのキーにgmailのアドレスを登録しておいて、タイピングの手間を省く的な使い方をします。

 

今までは私専用の機能だったので、JavaScriptに出力したいフレーズとヒモづけアルファベットを全てベタうちしていたのですが、ユーザーが使うためにはHTMLでポップアップを作り、データベース機能を使って、キーワードの登録・更新・削除などを行わなければならない、ということ。

 

まず、適当にHTMLのテーブルやらタブやらを引っ張って来て見た目を整え、JavaScriptでキーイベントや文字列取得の機能を付け足す。

 

次に例のクロームのデータベース機能を触る。
マニフェストファイルにパーミッションを書き、読み込めることを確認した後、まずは登録機能を試してみる。

 

このChrome Storage、データを{key : value}という形式で登録するらしい、Web Storage式ですね。valueには変数を渡して中身を保存できるのですが、なんとkeyには変数が格納できない!変数を文字列として認識しよる!

 

これどうするのよ。
keyにアルファベット、valueに出力したい文字列、を格納した変数を渡すつもりだったのですが、詰まりました。 

 

ググった結果、オブジェクトを {hiatama} こうやって単品で渡すのは可能らしい。そこでこの単品のオブジェクトの中にプロパティを持たせる形にしました。

 

var hiatama = {
  myKey : myValue
};

 

こんな感じ。登録自体は通ったのですが、こういう無茶をすることでデータベースの処理に問題が出ました。


例えばデータベースから全てのデータを取り出す時、普通ならkey : valueを沢山受け取ることになるのですが、このデータベースに入っているのは hiatama というオブジェクトのみということになります、その中にkey valueが入っている、と。

 

プロパティを取り出し、配列に格納し...など無駄な作業が増えました。

 

削除も同様で、このデータベース操作で消すことが出来るのは、hiatamaオブジェクトだけで、その中のプロパティを選んで消すことが出来ません。


「あああああああああああああああ!!データベースの意味ないやろがああああ!」

となりながらも処理を足していきます。

 

なんやかんや格闘し、大幅に路線変更したりしましたが、どうにか動作しました。

 

命名「Type Helper Beta」

 

永遠のベータ版でございます。

 

それでェ、ストアに公開しようと思ったのですが。
チョ、マテヨ。そういやこれMacで動作するのか? 動作の要のキー番号とかどうなってんだ? ってなったわけです。


遠くにいるマッカーの友人に協力してもらったところ、動作が不安定らしい。シフト+2回タイプの操作に成功する時としない時がある、だそうな。どういうことやねん。


おそらくシフトキーを押しっぱにした時の挙動がWindowsと違うんだろーな。でもお手上げ。ったくマック置いてる施設がどこにもないなんてどうかしてるぜ、キンコーズにあるのは知ってるけど、さすがにデバッグさせてくれないだろーし。

 

まぁいいやfor Windowsってことで出しちまおう。

何々、公開には5ドルかかります?

 

 

わたくし10円玉貯金を始めました。貯まったら公開します。