宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。
以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
Aza Raskin飲み会行ってきた。
普段あまり顔を合わせることがないplus7さんが来られていた。plus7さんは最近タブレットPCを使われているそうなのだけれども、タブレットPCはキーボードが無い。そういう環境で便利に使えるUbiquity的なUIはどういうものか?という事についてのアイデアをAza氏に解説されてた。
それはどういうものかというと、逆ポーランド記法の計算が「演算対象のデータをスタックに溜め込」んでから「演算の種類を決定する」という形で行われるのと同じように、リンクやら文字列やらをドラッグ&ドロップでどんどん「スタック」に溜め込んでからコマンドを選択する、というものだ。溜め込まれるデータ自体が持つコンテキストであるとかメタデータであるとか(Microformatsもそう)をキーにすれば、その時提示される「コマンド一覧」について最も適切と思われるものをサジェストできるのではないか?とか、色々と夢が広がる。セカンドサーチで、ページ内の文字列を選択→検索窓にドラッグ→ポップアップが出てくるのを待つ→ポップアップから検索エンジンを選んでドロップ という風な操作をよくやってる僕としては、このUIが実現されれば結構使えるかも?と感じた。片手がふさがったままでも色々できるし。
組長に、現状のUbiquityにおける日本語対応用コードの内容というのを教えてもらった。曰く、「で」とか「に」とかの助詞をデリミタとして文を分割するという物だそうな。単純に作るとそうなるよなあと思うんだけど、実際の日本語の文章ではこれはまずマトモに動かないことが予想されるわけで……やはりきちんとした形態素解析の仕組みは欠かせないと思う。それか、ローマ字入力で分かち書き入力するという前提で、XUL/Migemoの応用によって、例えば「miru」という入力に対してマッチするコマンドをコマンド一覧から探し、「見る」と「診る」の両方をサジェストの候補として出す、という風にするとか。
ATOKダイレクトのAPIがオープンになっていること、PerlとRubyに対応していてSDKが公開されていることをAzaに伝えると、「Pythonは無いの?」とAza。そこから、何故Pythonが日本であまり流行らないのかという話になった。最初に出た訳本が微妙だったからじゃないかとか、名前の元になったモンティ・パイソンが日本であまり知られてないからじゃないかとか、PHPやPerlやRubyがすでにデファクトスタンダードとなってしまっているからじゃないかとか……
モンティ・パイソンの話から、コメディは文化に強く依存するのかもしれないという話にもなった。Azaが紹介してくれた「far side」というアメリカの漫画は、日本人に見せても「何が面白いのかよく分からない」と言われがちだという。モンティ・パイソンも組長曰く「ギーク受けするような内容」とのことで。でもサウスパークは日本人にもウケてる気がする。直接的なギャグ、は日本でも受け入れられるということなんだろうか?
日本語入力といえば、IME上でEnterで変換を確定するとUbiquityのコマンド実行として扱われてしまうという問題。これにはAza本人も参っているとか……誰かパッチを公開してたはずだ、という話をその場でもしてたけど、今調べたらFireMobileSimulatorの堀川さんだった。このあたりの、キー入力とIMEの組み合わせの問題を回避するノウハウは、Find As You TypeがC++からJavaScriptに移植された後に中野さんが頑張って直したFindToolbarの実装(今だったらfindbar.xml)に詰まっているので、Azaにもおすすめしておいた。
Azaは日本語がしゃべれるということで、みんな普通に日本語ベースでしゃべっていたけど、日本語ネイティブでないAzaにはちょっと辛いんじゃなかろうか? と、勝手に気を回してしまって僕はなるべく英語を使うようにしようとしてみたんだけど、基本的な語彙力がないからやっぱり日本語混じりの怪しい英語にしかならなくて、あの場では僕が一番アホな喋りになっていたんじゃないかという気がする。
その後、終電までの短い時間だったけどカラオケにも行った。Azaは「津軽海峡冬景色(石川さゆり)」「花火(AIKO)」「First Love(宇多田ヒカル)」を歌ってた……って、ちょ、どこで憶えるんだそんなラインナップ?!
そんな感じの会。いろんな人が色んな知識やアイデアを持ち寄って話すのも大事だなということを改めて思った。こういう機会を設ける提案をしてくれた組長に感謝せずにはいられない。組長はかなりの量のウィスキーにビールにワインに色々飲んでいてカラオケの時には呂律も回らなくなってヤバイ状態に見えたけど、無事会社まで辿り着けたんだろうか。心配だ。
ところで、帰ってきてから気付いたけど、ATOKダイレクト開発者ブログで前のエントリが紹介されてる。UbiquityにはATOKダイレクト開発者の方も以前から興味を持たれてたとのことで、みんな似たようなことを考えるものなんだなあと感慨を憶えた。……ATOK 2008(for Windows)買いそびれててすみませんすみません ATOK X4(?)での改良に期待してます。
昨日、IMEから変換候補を拾ってくるという話をしましたが、Googleのホームページのサジェストは、IMEが未確定状態でも検索候補を表示してくれます(WindowsXP+MSIMEでのみ確認)。ということはJavaScriptでIMEと何らかのやり取りをしているのでは?変換候補まで取ってこれるかまでは不明ですが。
少なくとも、XUL/Migemoに応用すれば、IMEがオンの状態でも未確定文字に対してインクリメンタル検索ができそうな気がします。どうでしょう?
Googleサジェストの場合は、未確定状態でもタイマーかキーイベントを拾うかして常にサーバと通信を行っていて、IMEがやっているのと同じような処理をサーバ側で行った結果を表示しています。なので、特にローカルのIMEと通信しているわけではないです。(ちなみに、Firefoxの検索バーで日本語を入力中に未確定文字列に対するサジェストが行われないのは、キーイベントの発生時しかサーバに対するリクエスト送信が行われないせいです。)
> 日本語入力といえば、IME上でEnterで変換を確定するとUbiquityのコマンド実行として扱われてしまうという問題。
未確定文字列がある時に、DOMのキーイベントがMacでは発生しちゃう、というものならbug-org 465461かも。
>キーイベントを拾うかして常にサーバと通信を行っていて、IMEがやっているのと同じような処理をサーバ側で行った結果を表示
わたしも最初そういうことかと思っていたのですが、以下の動作を見るとそうでもないようです。
例1:入力モードを「半角英数」にすると、aiと入力してもアルファベットのaiにマッチするサジェストが表示される。
例2:変換候補を切り替えると候補に応じてサジェストも変化する。(IMEの候補とサジェストの表示が重ならないようウィンドウの下のほうなどでやるとよい)
Live HTTP Headersなどで監視すると分かりますが、Googleのサジェストについては、入力や変換でテキストフィールド内の値が変化する度に
http://clients1.google.com/complete/search?hl=ja&gl=jp&q=nihon
http://clients1.google.com/complete/search?hl=ja&gl=jp&q=%E3%81%AB%E3%81%BB%E3%82%93
http://clients1.google.com/complete/search?hl=ja&gl=jp&q=%E4%BA%8C%E6%9C%AC
といったURIにGETリクエストが行われています。これらに実際にアクセスしてみると、かな漢字変換までサーバで行っていることを確認できます。
なんか話がかみ合っていないようです。
三つ目のURLのクエリには「二本」が含まれますが、これはIMEで入力中の変換候補の結果であって、まだ未確定ですよね?つまり、ブラウザからIMEで入力中の未確定文字を入手できるのでは?
これをXUL/Migemoに応用すれば?という案なのですが。
ああ、やっと言ってる意味が分かりました……
現状では
「キーボードからの入力(ユーザの操作によって発生するイベント)」
をトリガーにしてインクリメンタル検索が行われている所を、Googleサジェストのように
「入力フィールドの値の変化(ユーザの操作によって引き起こされたUI要素の状態変化によって発生するイベント)」
をトリガーにしてインクリメンタル検索を行えばよい、という話だったんですね。
ただ、これにも問題はあって、キー操作そのものではなくそれによって引き起こされた変化の方をトリガーにする場合、細かい操作の違いを捕捉できないんですよね。Firefoxの方で使いたいキーをIMEが食ってしまうこともあるし(F7キーでカタカナに変換しようとしてキャレットブラウズモードになってしまう、というケースの逆)。
また、例えば、「にほん」と入力(IME ON)→候補の中で「日本」にフォーカス(IME ON)→候補の中で「二本」にフォーカスを移動(IME ON)とした状態で「二本」にヒットする次候補を探したいという場合、変換を確定させてからでないと次候補検索に移れないことにもなるわけで。
の末尾に2020年11月30日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2008-11-21_aza.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。
writeback message: Ready to post a comment.