Dropbox

KKJConvには秘密がある。「しんせん」で深圳と変換したり、人柱隊の田路さんの苗字が変換出来るように辞書を弄ってある。しかし、それだけではない。

漢字変換画面に「しねしね」とだけ入力しコピペ画面に移行する。一度KKJConvを終了し再度立ち上げると、なんと恐ろしいことにKKJConvが「死ね死ね団」モードになってしまう。しかも、いちど設定すると戻す方法は無い。

古いモバイラーの方は、この画面を見てピンとくるであろう。Windows Mobileの神様、いや将軍様であるアスカルさんの大陸諜報活動新聞をリスペクトしたテーマなのである。

KKJConv Secret Theme

漢字変換が出来る最初のバージョンKKJConv v0.6は7月2日に公開しました。

ローマ字変換が出来るバージョンを公開すると同時にかな漢字変換のための辞書オブジェクトを書き始めました。最初のバージョンは単純なもので一つの辞書ファイルを頭から順次検索して入力された「かな」にヒットする漢字文字列を順次返すだけの物で直ぐに完成しました。むしろインライン変換の動作をKKJConv本体に作り込むのに随分と手間取ったことを覚えています。それでも今振り返ってみるとv0.5からv0.6の公開までに一週間しかかかっていないのは、やはりバイタリティに溢れていたのだと思います。

この後、漢字変換にキャッシュを搭載したり、大きな辞書を搭載するために辞書の分割を行ったり、あるいは細かい機種別対応を重ねて行きました。2006年末のv1.0に至るまで二十数回のバージョンアップを行いました。平日に少しずつ更新。金曜日一日寝かせて毎週土曜日に新しいバージョンの公開というペースが出来上がっていました。常に使ってくださっている方々からのフィードバックがあるので、とても楽しい時間を過ごすことが出来ました。

最初からソースコードを公開していましたが、だんだんと見通しが悪くなってしまい。ちょっとばかり恥ずかしいものになりました。本職のプログラマーでは無いことを言い訳にしておきたいです。Javaを知ってはいたものの、まとまった量のコードを書くのは初めてで、またオブジェクト指向なブログラムの勘所も良くは分かっていませんでした。そのため関数型プログラミング的なコードになっています。とくにキーコードから動作を決めるための部分がとても長い条件分岐の羅列になっています。まるで昔のGUIブログラムみたいです。今、この部分を書き直すとしたら少なくとも理想的なキーボードを持った仮想ハードウェアで動くKKJConvと機種別動作を吸収するオブジェクトに分割することと思います。

ひとまず、これにてKKJConv開発秘話は完了とします。

キーコード表示プログラムの表示機能が調子良いので、それを元にローマ字変換が出来るようにしたKKJConv v0.5を公開したのが6月25日でした。アルファベットを表示してローマ字として確定すると、その場で平仮名に置き換わるという動作でインライン変換への手応えも確かめました。FEPでは無いのでアプリケーションに直接入力は出来ません。コピペ画面を経由して文字列をクリップボード経由でアプリケーションに渡す方法もここで確立しました。E61を入手して10日目のことでした。今の体力、気力ではとても考えられないスピード感です。

実は画面の表示速度についてはグラフィックス画面を使用していることもあり、実際に試すまで実用的な速度が出るのかどうか心配していました。最初の計画では高速化を狙って画面の中で更新が必要な部分だけを書き換えていく予定でしたが、結局のところ一文字入力する、シフトを押す、あるいはカーソルを移動するなど画面に何かしら変化が生じる度に画面全部を書き換えるという方法だけで最後まで済ませてしまいました。

この漢字変換の出来ないKKJConvを使って、かなだけでブログを書いてくれた人なども居て感激したことを覚えています。

またKKJConv v0.5公開の翌日にはピードラさんがソニエリのM600、山根さんがBluetoothキーボードで基本動作が可能であることを確認されました。KKJConvは漢字変換出来るようになる前から多機種対応が宿命となったのでした。

今回からは、やや開発者よりの内容になります。

C++で本格的なFEPを作るのはプログラミング技術もさることながら、それ以外の問題が大きすぎてすぐに諦めました。後にM-FEPでそれを乗り越えた、ま〜さんはすっごく偉いです。

ということで、多少なりとも経験のあるJava MIDPでのテストを開始しました。調査のために作成したキーコード表示プログラムをひとつの成果として公開したのが6月21日でした。一番の目的はキーを押した時にどんなキーコードがMIDPに認識されるかを調べるものですが、実はもうひとつ画面の表示についてもテストをしていました。

UIQで実現されていたKanaKanjiClipは、何とか使えるものの今一つ使い勝手が良く有りませんでした。デバイスの反応速度にも問題がありましたが、出来合いのGUI部品を使用していたため変換中の文字列と変換結果が別の場所にあり結果がうまく同期しない、あるいは視点が移動するのが最大の問題でした。

何と言っても日本語入力を実現するにあたって使い勝手を考えるとインライン入力が欠かせません。それを実現するためにグラフィックス画面に文字を配置していくことにしました。その文字配置の基本的な動作や反応速度もこのプログラムで確認出来ました。

キーコードの確認は、もともと矢印キーや緑の通話キーがどんなキーコードを返すがが知りたかったのですが、思いがけずE61のキーボードがかなり変態であることも、この段階で知ることが出来たのは良かったです。

またこの時点ではあまり意識はしてませんでしたが、後にKKJConvを多機種に対応するにあたってキーコード表示プログラムが役立ちました。

また宣伝したわけではないのですが、このプログラムを公開した直後にmaitomoさんとピードラさんがブログにコメントを付けてくださっています。しかも日本語入力ソフトを作る前提でコメントを書かれているようで、とても不思議です。なぜなんだろう?

2005年1月から中国に長期出張というかたちで滞在を開始し、初めて海外の携帯電話に触れました。もともと小さなデバイスが好きで有ったこともあり、スマートフォン黎明期のSymbianやWindows Mobile登載の携帯電話に魅了されてしまいました。

2006年5月くらいにノキアからE61というQWERTYキーボードを登載しつつコンパクトなSymbian S60 3rd登載の携帯電話が出るというニュースを見かけてからは、それが欲しくてたまりませんでした。

もともと小型でインテリジェントなデバイスを使いこなすひとつの手段として自作のプログラムが組むことを目的というか楽しみにしていたのでE61でのプログラミング環境の調査、整備をしながら入手する日を楽しみにしていました。実は前年から使用しているSonyErricsonのP910cではQWERTYキーボードを使用したKanaKanjiClipという日本語入力アプリケーションを使用していましたので、新しい端末ならばそれなりに快適な日本語入力を実現できると見込んでいて、最初の開発ターゲットは日本語入力のテストと決めていました。

どんなやりとりが有ったかは忘れましたが、上海のモバイラー友達である、うめさん経由で香港のreveilさんにE61を代理購入してもらう話がいつの間にか出来上がっていました。それを広州に出張したおりに受け取ったのが6月15日のことです。何故か、その時には、うめさんもreveilさんも私が何かしら日本語入力に関するプログラミングの計画を持っている事が分かっていて(自分で言ったに違いないですけど)、何も出来ていないうちから、随分と期待されて少々焦ってしまいました。

reveil師匠作のKKJConvアニメーション

KKJConvの最初のバージョンを公開したのは2006年6月25日です。もう10年もたちました。KKJConvはNokia E61を入手して作り始めた日本語入力アプリケーションですが、これを公開したおかげで、色々な人との繋がりが出来ました。Facebook友達の多くはKKJConvの公開を通じて知り合った人たちです。東京、香港、タイ(リアルでお会いしたことはありませんが)、そして中国での生活に豊かさと幅を与えて下さった、元・現上海および北京在住の方々とは今でも仲良くして頂いています(現中国在住者は激減してしまい、寂しい限りです)。

KKJConvにも若干のマネタイズの機会や試みもありましたが実際のお金には結びついてはいません。しかしながら、この多くの人との繋がりが何事にも代えがたいものになり、それだけで十分に元がとれたどころか、大きな利益になりました。

そんなこんなで想い出深いKKJConvの誕生秘話(ちょっと大げさ)をいくつかブログに書いてみたいと思います。6月に数回に分けて書く予定ですが、大した内容にはなりませんので軽く流して頂きたいと思います。

以前、「上海地下鉄に無料Wi-Fi電波が飛んでいる」という記事を書きました。その中でAndroidで使用する時は専用アプリケーションの導入が必要と書きましたが、コメントにてユーザーエージェントでiPhoneに見せかければ大丈夫だと教えて頂きました。これは名案です。早速試して見ました。

[ 準備 ]

ユーザーエージェントを変更出来るブラウザーだけです。
– 小米 Xiaomi Mi5 + Global ROM(7.2.8.0 MAAMIDC)の場合は標準ブラウザーが使えました。設定->高度な設定/User agent stringでiPhoneを選択すれば準備完了です。
Nexus6 + AndroidNにはFirefoxを使用しました。FirefoxにPhonyというAdd-onを導入すると簡単にユーザーエージェントをiPhoneに変更出来ます。

[ 使用してみる ]

端末によって挙動がやや異なりますが、SSID “花生地铁WiFi”に接続してAndroid用のアプリケーションをダウンロードを即す画面(下のような画面)が出たところでiPhoneに見せかけたブラウザーから適当なwebサイトにアクセスするとiPhoneの時と同じく携帯電話番号にSMSでアクセス番号を送る画面を出すことが出来ました。これで無事にAndroidからもアプリケーションを使用することなく地下鉄のフリーWiFiにアクセス出来ました。

Screenshot_2016-03-04-16-54-07

ちなみに、私のMi5では上の画面の代わりに真っ白なページが表示されます。そのためAndroidアプリケーションすらダウンロード出来ませんが、iPhoneのふりをしたブラウザーでアクセスすることにより無事にWiFiが使えました。

2回目のアクセスも上と同じ手順を行いますが、電話番号の入力などは不要で、ワンクリックでWiFiにアクセスすることが出来ます。

1more
アスキーの記事で1MOREのイヤフォンを見かけて、さっそく試してみることにしました。記事中で紹介されている一番安いモデル(1M301)は中国の小米サイトでも取り扱いがあります。ということで、何時もの小米サイトで朝9時にオーダーしたら午後3時には宅配ロッカーに入りました。小米は在庫があると、何時もこんな感じで当日、もしくは翌日に配達されるので気持ちが良いです。

ということで、到着した129元(約2170円)の1MOREのイヤフォン、美しいケースに入っています。とても格安イヤフォンとは思えません。付属品は各サイズのイヤーパッドと金属製のクリップ、それとソフトケースです。

[ ケーブルの擦れ音、風切り音 ]

小米携帯電話の純正イヤフォンと同様でミニジャックから分岐部分までは布っぽい織り上げのシールドがかかっているしなやかさのあるケーブルです。分岐部分からイヤフォンまでは柔軟性は高いですが普通のビニール被覆のケーブルです。静かな環境で耳に装着して、このビニール被覆のケーブルを触るとかなり耳障りな音がします。シュアがけをしたいところですが、リモコンが耳の後ろに回ってしまいます。分岐部分の長さは十分なのでリモコンの位置を気にしなければ大丈夫とも言えます。普通に装着することにして付属のクリップを使って胸元でケーブルを固定すると擦れ音の発生はかなり抑えられます。実際の環境で使ってみると、これでほとんど擦れ音を気にすること無く使用できました。
1MoreClip
[ 鳴らしてみる ]

iPod touchに繋いで色々な音楽を鳴らしてみました。鳴らした瞬間に、これは良いと思いました。次から次へと色々なジャンルの音楽を鳴らしてみたくなります。音質に関して語るだけの技量はないので、どんな感じかは先のアスキーの記事やAV Watchの記事を御覧ください。AV Watchの記事に1MOREの理念として「優れたヘッドフォンやイヤフォンを驚くほど手頃な価格でお客様に届ける」と書かれています。まさに、それを実現していると思います。中国メーカー侮りがたし。

[ リモコン ]

携帯電話での仕様を想定してマイク付きのリモコンが付いています。このリモコンがiPhoneでもAndroidでも同様に使用できるのがとても便利です。

格安モデルで感動したのでハイレゾ対応を謳う高級機も試してみたい。公式ページによると中国各地に体験出来る店舗があります。残念なことに上海は一店舗だけ、それも松江にあるようです。家から松江まで地下鉄で一時間強、ほぼ行く用事の無い場所なので、よほど時間のある時にしか行けそうもありません。

小米 Xiaomi Mi5はUSB Type-Cコネクターを持っています。以前からOTG対応のUSBハブを持っていたので、USB Type-CとマイクロUSBの変換コネクターを介して接続してみましたが動きませんでした。

Mi5_USBHub

MacBook用に用意したUSBハブは当然USB-Cコネクターが付いています。試しにMi5に接続してみると見事にUSBメモリーを認識することが出来ました。

ただし最近のアンドロイドではアプリケーションから直接USBメモリーをアクセスすることは出来ないため、あくまでデータ交換専用になります。以前ですと、動画ファイルを沢山入れたUSBメモリーを接続してアンドロイド本体にコピーすることなく再生出来ましたが、今では不可能になりました。

キーボード(やマウス)も認識しますが、まず使うことは無いでしょう。(実際に試したのはキーボードだけです)

常用することは無いと思いますが、何かの時のデータ交換用に使える事が確認できたのは良かったです。

ノートパソコンを新調することになり、さきごろマイナーチェンジのあったMacBookを購入しました。新色のローズは流石に遠慮して無難にゴールドにしておきました。実は値段的にはあまり変わらないMacBook proと迷いましたが軽量さに惹かれてMacBookに決定しました。

すでに様々なレビューがなされていますので、大体のところは事前に予測した通りです。わたしなりの簡単な印象などを書いておきます。

– 電源を含めてUSB-Cコネクターひとつしか無いのはやはり不便。いくら無線LANやブルートゥースがあるとは言え、普通のUSB機器がつながらないと設定時から困ることは目に見えていますので、あらかじめUSB-Cに接続するHUBを準備しておきました。イーサネットとUSB3.0が2つ付いたもので本体に給電しながら使用できるものです。薄いケースも同時に購入しました。

MB_acc

– キーボードは問題なし。レビュー記事によっては慣れが必要と書かれていましたが、わたし的には全く問題なしです。MacBook Airを初めて使った時には、こんなに薄いのにキーストロークが感じられると驚きました。こんどのMacBookではキーストロークが殆ど無いのにタイプできるものだと驚きました。

– 小さい筐体ながら、スピーカーから出る音が良いと思います。本格的に音楽を聞くのは外部ピーカーが良いでしょうが、仕事をしながらAmazon Prime Musicを鳴らして見ようと思うくらいには鳴ってくれます。

– パフォーマンスは今のところ問題ありません。決して速くはないです。前に使っていたのはMacBook Air Mid 2011でi7搭載のものでしたので、おそらくプロセッサーの速度だけみれば(多分グラフィクスも)少し劣ると思います。メモリーアクセスやSSDは比べ物にならないくらい新しいMacBookの方が速いのでプロセッサーの速度を補ってあまる部分もあります。また古いMBAはUSB2.0でしたので、周辺機器アクセスは圧倒的に新しいMacBookの方が速いです。

– Retinaディスプレーは綺麗ではありますが、非Retianなディスプレーでもあまり困ってはいませんでしたので良さはまだ分かっていません。唯一、iPhoneエミュレータを起動した時くらいしかRetianを実感していません。