Home > Latest topics

Latest topics 近況報告

たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。

萌えるふぉくす子さんだば子本制作プロジェクトの動向はもえじら組ブログで。

宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

Page 86/248: « 82 83 84 85 86 87 88 89 90 »

ロケーションバーでXUL/Migemoを使う計画がわりと現実的になってきたっぽい - Jul 02, 2008

places.sqliteが数十MBを超えているのりさんやdrryさんの環境では分単位で固まってしまって使い物にならん、ということだったので、お二人に協力してもらって各段階での処理の所要時間を調べてみた。

そしたらどうも、Placesデータベースから文字列をぶっこ抜いて正規表現でマッチングしてるところがものすごく重いらしいということが判明した。ログによると500万文字ある文字列に対してマッチングをかけようとしてたんだから、そりゃあ固まるわ、と。

固まる問題だけでもとりあえず何とかしよう、ということで数千件単位で文字列を取り出し→マッチング→取り出し→マッチング……という風に分割処理するようにしてみたところ、とりあえず固まる問題は何とかなったんだけど、でも検索結果が出るまで延々待ち続けないといけないのは相変わらずで。

と、そこでやっと気づいたんだけど、べつに正規表現でのマッチングとポップアップの内容の更新とを完全に分けて実行する必要はないんですよね。ちょっとずつマッチングしてちょっとずつ検索結果を取得してちょっとずつ結果のリストを更新していけば、全体ではものすごく時間がかかるようであっても、とりあえず最初の方の結果だけは見えるからストレスにはならない。必要な数だけ結果を取り出せたらそこで処理を打ち切ってしまえばいいんだし。

というわけであちこち書き直してみた結果、最初の実装に比べるとびっくりするほど快適に動くようになった。スレッド使ってなくてもそんなに重くない。のりさんにも「これなら常用できそう」と言ってもらえたし。

最終的にやってることは同じなんだけど、やり方を変えるだけでこんなにも体感速度に違いが出るものなんだなあ、ということをこれ以上ないほど実感した日でした。

それはそうと、途中の段階で分割処理を行うようにしたときのログを見てて気がついたんだけど、SQLite(というか RDBMS)ってすごいね。テストしてもらったのりさんの環境の場合、スマートロケーションバーの検索対象になる物だけでも46000件近く、そうじゃない物も含めればきっともっと大量のレコードがあるのに、「並べ替え後の順番で任意の箇所を取り出す」のに1秒もかからないというのには驚いた。今までちゃんとしたデータベースを触ったことがなかったから、こんなの未知の世界だ。世界規模のデータベースと世界規模の処理環境に憧れてグーグルを目指す人の気持ちが、少しは分かったような気がする。

ロケーションバーでXUL/Migemo - Jul 01, 2008

こないだから少しずつ取り組んでる。

当初は皆目見当も付かなかったけど、Firefox 3 Hacksを書くために調べた知識が早速役に立って、Places APIを使ってる「履歴とブックマークの管理」と「ブックマーク」「履歴」の各サイドバーについてはワリとあっさり実装できた。

ロケーションバーについては残念ながら普通のAPIを使っておらず、オートコンプリートの実装の中でガチガチに書かれてて、まともにやっても手出しできない。OR検索さえできればMigemoが使えるのに。ということで、まず最初は、オートコンプリートのコントローラに複数の単語を順番に渡して結果のリストを生成させてそれを最後にまとめる、という事をやってみた。これは結構イイ線いったんじゃないかと思ったんだけど、履歴の件数が増えたりヒットした単語数が増えたりするとえらい事になってしまって、実用的な速度は出なかった。

そこで諦めて腹をくくって、無い知恵絞ってSQL文書いて、なるべく効率よく処理するようにしてみた。これで速度はだいぶ上がって、3文字以上入力した先あたりならかなりサクサク動くようにはなったんだけど、1文字2文字程度しか入力していないとやっぱりズシッと重い感じがある。

XPCOMのスレッドを作る機能を使ってみた所、Firefoxが落ちたし。

Firefox 3 Hacks - Jun 24, 2008

組長が書いている本に僕も書いてます、っていうかやっと今日書き上がりました。ここのところ全然寝れてなかったけど、これでやっとゆっくり寝れる。

僕の担当パートは例によってアドオンがらみで、FUELとPlacesとJavaScriptコードモジュールとMcCoyあたりについて出せる物をすべて出し尽くしました。というか出せる物以上を書かないといけなかったのでFirefox 3のコードを追いかけて調べながら書きました。ATOK X3買ったのもこれのため。最終的に書いた物はサンプルのソースコードも含めてテキストファイルで360KBくらい? UTF-8だから何文字とかちょっとわかんない……

書いた内容はどれもまあソースコードを順番に読んでいけば分かる事っちゃ分かる事ばかりなんですが、まとめのようなものという事でどうか許してください。オライリーから8月発売予定です。

Linuxで快適な日本語入力環境を手に入れたい! - Jun 22, 2008

のっぴきならない事情があってUbuntu(8.04LTS)でたくさん文章を書かなきゃいけなくなったんだけど、SCIM+Anthyでの変換効率が悪すぎてお話にならないので、カッとなってATOK X3 for Linuxをその場でダウンロード購入した。AAA優待版(他のプラットフォームでATOKを使ってる人向けの割引)で4252円。

ていうか仕事で一応メイン環境としてずっとLinux使ってきてたのに、我ながらよく今までずっと我慢してたなあ。いかにロクに仕事をしていないかがバレバレ……じゃなくて、だいたいLinuxだけで仕事することは少なくて特に文章を書く必要があるときは無意識のうちにいつも横にあるWindowsマシン(当然ATOK入り)で作業をしてたから、いざそれが使えない状況になって初めてそのありがたみを実感したわけですよ。

ご丁寧にもUbuntu 8.04LTSでのインストール手順がFAQとして公開されてたので、この通りに操作してサクッとインストールできた。

  • ウィンドウ左下に張り付くツールチップみたいなインジケータはiiim-propertiesというユーティリティで設定したら消えた。システム→設定→入力方式 で起動できる。項目が表示されてない場合は bin/deb/IIIMF/iiimf-properties_trunk_r3104-js1_i386.deb をインストールする。
  • 自分は今までずっと「変換」キー(スペースの右隣)をIMEのON/OFFに割り当ててきていたけれど、これもiiimf-propertiesで普通に設定できた。というかiiimf-propertiesをインストールした後に起動したら「変換」キーが登録済みになってて、代わりに「半角/全角」キーが日本語入力のON/OFF用キーから外れてたんだけど、これはどういうことだろう。
  • 他の日本語入力システムに切り替えたい場合は、ターミナルを開いて sudo update-alternatives --config xinput-ja_JP で。scim-bridgeを選択すれば今までのSCIM+Anthyに戻せる。(参照した資料
  • どういう訳か、ATOK X3自体が自動的に起動してくれない。いざ日本語入力をしようと思ってON/OFF切り替えにあたりそうなキーを片っ端から押してみてもウンともスンとも言わなくて焦った。手動で /opt/atokx3/bin/atokx3start.sh を起動してやればATOKパレットが表示されて動き出すんだけど……(参照した資料
  • Windows版ATOK 2007と全く同じ機能が使えるというわけではないのですね……省入力候補が一つまでしか表示されなくてつらい。Windows版では2007から省入力候補をPrimeやケータイの予測変換みたいにずらっと一覧表示できて、これが無いのが非常に残念だ。
  • F10キーでの半角英数字変換が使えない場合がある(GNOME標準のショートカットで、メニューバーへのフォーカスに割り当てられているせい)ので困った。geditで文章書いてるから大変不便。→GNOME設定エディタで /desktop/gnome/interface/menubar_accel を何か適当な他のキーに変更すれば、この問題は回避できた。(参照した資料

何で今まで入れなかったんだろうってくらい快適だ……もうAnthyには戻れない。

拡張機能で独自プロトコルを実装しようとしてFirefox 2とFirefox 3での動作の違いに躓いた - Jun 19, 2008

ソース表示タブを更新して「やったー」と思ってたらFirefox 3では動くけどFirefox 2では動かないという状態になっていて焦った。0.2.*からFirefoxのブラウザのUIによりシームレスに統合するべく、「view-source-tab:(元のURI)」という独自プロトコルでソース表示するようにして、Chrome URLをユーザの目には見えないようにしてみたんだけど、この際に使ったリダイレクトの方法だとFirefox 3では動くのにFirefox 2では動かないという現象が起こってしまっていた。基本的には過去に訳した記事の通りにやったんだけど、思わぬ所で嵌ってしまった。

この情報、元々はURNサポートの実装を改善するために調べたんだけど、その時は、訳した記事の指示の通りにやるとブラウザ上で表示されるURIがリダイレクト前のURNのままになるのは望んでいなくて、結局nsIContentPolicyを使うようにしていた

しかし今回はむしろその逆で、about:configみたいにユーザには実体のChrome URLを見せないまま機能させたいというのが目標だ。というわけで元記事のやり方ほぼそのままでnewChannel()で生成するURIだけChrome URLにしてみた所、Firefox 3でのテストでは問題なく動いたのでそのままリリースしたんだけど、これがFirefox 2では動かなかったという次第で。

viewSource.xul等を「リダイレクト先」にした場合、ブラウザ上に表示されるURIとしてはあくまでリダイレクト前の「view-source-tab:(URI)」という物になって、Firefoxからもあくまでそのリダイレクト前のリソースであるという風に見えるようになる。userChrome.cssでabout:configの表示をいじりたかったら 実体のChrome URLの方ではなく@-moz-document url(about:config) { ... }と書かないと機能しない、ということからもそれが分かる。そのため、viewSource.xulにクロスパッケージオーバーレイで機能を追加していた場合、viewSource.xulにリダイレクトするとその表示結果のURIのもとではクロスパッケージオーバーレイは適用されず、タブの中でうまく動かすためのパッチを当てられないことになる。

しかしこの場合でも<?xul-overlay href="..."?>で書かれていたオーバーレイは適用される。なので、ソース表示タブで用意したXULドキュメントからオーバーレイでviewSource.xulを読み込んでやれば問題なく動くようになる。というのがFirefox 3上でテストした時の結果だった。

Firefox 2では、クロスパッケージオーバーレイが効かないのはもちろんのこと、上記のように直接ヘッダ部分に書いて指定したオーバーレイも全然読み込まれないということが、リリース後に試してみてやっと分かった。ソース表示タブで用意したXULドキュメントを読ませても何もオーバーレイが適用されないので、画面は真っ白のまま……という状態になっていた。なんてこった。

ちょっと試した限りでは上手くやる方法が見つかりそうにないと思ったので、もう諦めて、Firefox 2の時はドキュメントのURIがリダイレクト先の物に完全に切り替わるnsIContentPolicyを使った方法を使うようにした。今のソース表示タブは、Firefox 3で「view-source-tab:http://...」などと入力するとそのURIのままでソースを表示するけど、Firefox 2の場合は「chrome://viewsourceintab/content/viewer.xul?http://...」という風にChrome URLが丸見えになる。その代わりちゃんと動く。という状態。

Firefox 3のロケーションバーにフォーカスを移したときに必ず日本語入力を無効にする方法 - Jun 18, 2008

既出だと思うけど。userChrome.cssに以下の内容を書けば、ロケーションバーにフォーカスしてURIを入力しようとして日本語入力になっててムキー!!!となる事態を防げる。

#urlbar *|input {
  ime-mode: inactive !important;
}

ただし副作用として(というか当たり前だけど)毎回必ず日本語入力をONにしないといけなくなる。スマートロケーションバーでポップアップされた候補を上下キーで選び始めてから「やっぱり別の入力で」と思ってロケーションバーにフォーカスを戻してもう一度入力をやり直す、という場合でも日本語が勝手にOFFになる。これを解決しようと思ったらスクリプト(userChrome.jsかアドオン)で動的に上記のスタイル指定を与えたり外したりしないといけない。

ちなみに、XUL/Migemoは直接入力でローマ字入力を行わないとまともに動かないので、最近のバージョンでは検索バーのテキストボックスに対してそういう処理(スクリプトで一時的にIMEを無効化する)をしている。

19日追記。というわけで作ってみた(Auto Disable IME 0.1.2008061901)。動的にIMEのON/OFFを切り替えるので、上のスタイル指定と違い、スマートロケーションバーで候補を表示した後にフォーカスを戻した時などはそのままIME ONの状態が維持される。たったそれだけのアドオンです。WindowsとMac OS XのFirefox 3以降専用で、Linuxでは動かない。

公開してから気付いたけど、IME and DiMENSiONにも同じ機能があったのね……まあFx3以降のネイティブ機能によるミニマム実装ということでどうかひとつ。

Firefox 3 Download Day - Jun 18, 2008

正式リリースされたということでオフィシャルのダウンロード数に貢献したあと入れてみた。まあすでに3プラットフォームともRC3(リリース版と同じバイナリ)でさんざんテスト済みなんですけどね!! 切り替えのタイミングはあくまで気分の問題。

Firefox 2の頃からのプロファイルからパスワードやCookieやアドオン類をコピーして起動してみたら、自宅環境ではなぜだか急にCPU使用率が100%になって固まりまくるという現象が発生してげんなりした。とりあえず怪しげなアドオンを外した状態でテストしてみるも、あまり状況に変化が無くて、まだはっきりとした原因の特定には至っていない。思い当たる節が多すぎる。

それに比べると会社の環境の方はわりかしすんなり移行できた。

履歴とか余計なファイルがプロファイル内にあったのがまずかったんだろうか。

リリース直後くらいにともしびを見てみたら東京に一人だけでワロタ。すぐに他のとこにも人が増え始めたけど。ものすごい勢いでダウンロード数が伸びていって日本中がぺかぺか光ってる様子は綺麗だった。話に聞く限りはこのともしびはしばらく公開され続けてるらしいので、たまに見てみるとおもしろいかもしれない。

追記。Firefox 3も正式にリリースされたことだし、と思ってUbuntuを7.10から8.04にアップグレードした(Ubuntu 8.04LTSではFirefoxは3がデフォなので)ら、ここでも固まる問題が起こってしまった。ああでもないこうでもないといじくり回してみたところ、どうもGreasemonkeyスクリプトのどれかが悪さしてるみたいだという結論に達した。後でちゃんと調べてみないと。

いやーしかしFx3いいわ。FirefoxはUIまで全てJavaScriptで動いてるから、JSエンジンの改善があらゆるところに渡って効いてる。自作アドオンを大量に入れてたFirefox 2ではもっさりなんてもんじゃなかった(機能>速度 な人なのでそれはそれで構わないんだけど)のが、未対応のアドオン2~3個を除くとほぼ同じ環境ではっきり違いが分かるくらいに軽くなった。今までテスト用にちょっとだけ動かしてみることはあったけど、なるべくクリーンな環境でテストする必要があるから、ここまでアドオンいれて動かしたことなかったんだよね。

UxUの使い方の簡単な解説を書きました - Jun 13, 2008

会社のサイトのコンテンツが一新され、コンテンツにブログが加わりました。何をやってる会社なのか(何ができるのか)分からんと言われがちなようなので、みんながちまちまやってる内容をここに書いていって、「当社ではこういうことができます」的な宣伝材料にする、というのが一応の目的のようです。

で、自分もアドオン開発者向けの自動テストツールであるUxUの使い方の解説なんかを書いてみました。ツールの使い方というよりは、「はじめての自動テスト」みたいな感じになってしまってますが。自分自身がまだ自動テストのことをよく分かってなくて須藤さんとかにしょっちゅう「何考えてんだ(全然分かってねえな)……」的な指摘を受けてばかりなので、自分の理解レベルに合わせるとこんな感じになってしまいました。技術力とか実績とかのアピールの場のはずなのに、こんな低レベルな記事を載せてしまうと却って会社の印象に泥を塗ってしまうんじゃなかろうか、ということをamachangのエントリとか見て思いもしましたが、もう後の祭りです。

UxUのマニュアルのつもりで、またそのうちXUL/Migemoのテストでの利用例の解説の続きを書くかもしれません。

あと、サービスMozillaサポート 実績紹介Thunderbird用アドオンと辿ったページでThunderbird用の地味なパッチもいくつか公開しています。中にはもしかしたら同種のアドオンがすでに世の中にある車輪の再発明な物もあるのかもしれませんが、探すより作った方が早かったんで……

秋葉原通り魔殺人 - Jun 10, 2008

日曜に起こった秋葉原の通り魔殺人事件(というかもはや単独でのテロだよなあ)について、マスコミが例によってヲタ趣味をとりあげてあること無いこと言ってるらしい、という話を見て憂鬱な気分になる。宮崎勤の時にはコミケ会場前までわざわざやってきて皆さん、ここに10万人の宮崎勤がいます!と報じたそうだけれども、今年の夏はもしかして「ここに20万人の加藤智大がいます!」とか言われるのだろうか(会場はフジテレビのすぐ近くだしね)と思うと、本当に気が滅入る。

きっとさースレ(何処)とかにも書かれるんだぜー「殺人鬼予備軍の作ってる物勧めんなよpgr」とかさー。煽りと分かっていてもガックリくる。そういう打たれ弱さ、いつまで経ってもなくならない。

過剰反応しすぎって言われるかも知れない。過剰反応するくらいに今でも僕は「他人からどう評価されるか」ということをいつも気にしているということの顕れなんだろうな。

Mac版Firefox 3正式版に、日本人ユーザにとって結構致命的な問題が残ってしまいそうな件について - Jun 10, 2008

norahさんやkozawaさんはあくまで、「Firefox 3正式版」と銘打ってリリースされる記念すべき&世間の注目度も非常に高い&日本でのシェア拡大を考える際に重要な意味合いを持つと考えられるバージョンにおいて、一般のライトユーザ(特にMacではSafariで問題が起こるサイトがあるからFirefoxを使っているという人すらいる状況(つまり「Firefoxの方がマシ」という評価がある)であることに注意)が「あ、こりゃ使い物にならんわ」と判断を下してそれ以後も評価の対象にすらしなくなる、そんな事態になりかねないような致命的なバグを抱えたままリリースすることの、マーケティング上の問題の重大さを考えて、こう発言しているということは分かる。そもそもnorahさん自身はMac使ってないはずだし(kozawaさんはどうか知らない)。

「Netscape 6正式版」が公開されたことが皮肉にもNetscapeブランドの死を決定付けた、という過去をこの界隈の人なら憶えていないはずはないだろう。その同じ轍を踏むことを恐れているのだと思う。であるならば、僕もそこは全く同じ気持ちだ。

個人的には、ライバルのOperaもSafariも対応してる状況で:nth-child()等の疑似クラスtext-shadowが間に合わなくて(まぁ過去の状況とかを見るに、今物凄いスピードで進展していて、年末リリース予定といわれているFirefox 3.1にはまあ多分入るだろう、という風な所にまでこぎ着けていることが驚きなんだけど)、CSSのサポートでカタログスペック上は一歩も二歩も取り残されてしまっている(でも実装の堅実さではGeckoは優れてると思う。Safariはこのページをまともにレンダリングできないんですぜ?)という事も残念だなあと思う。というのは余談なのでさておき。

今回問題になっている件は、RC1でやっと問題が修正されたものの、その修正によって逆に新たな深刻な問題が発生してしまったために修正取り消しとなって、RC1までは問題なかった(修正済になってた)のにRC2の段階でその修正が取り消されてしまってタイミング的に正式リリースまでの再修正が絶望的になってしまったという、非常に間の悪い事故という感じのケースなので、これについては誰を責めてもしょうがないなあと僕は思う。

それでも敢えて犯人捜しをするのであれば、件の修正がバックアウトされてしまう原因になった問題がもっと早くに発覚していれば再修正も間に合ったかもしれなくて、リリース直前になるまでその問題が見つからなかった(報告日は5月20日)事が問題なわけで、件の修正自体ももっと早くに行われていればここまでタイミングの悪いことにはならなかったかもしれないわけで、Mac環境でのテストが不十分だったことやコードを書く人が少なかったことが問題なわけで、それはつまりMacユーザからのフィードバックやコードを書ける人の協力が今の今まで無かったからということであって、口をあんぐり開けて待ってさえいれば品質のいいソフトウェアがお上から降って来るものと思ってボサーッとしてたMacの(特にIMEを使用する言語圏の)Firefoxユーザ自身のせいということであって、そこらへんは中野さんの言う通りであって、自業自得なんだと思う。

norahさんやkozawaさんではなく、norahさんのエントリに日本人に対する嫌がらせが酷いですねというコメントを残してるような人、こういうのがよくないなあと思う。「お客様気分」っていうのかなあ。この辺のことはkozawaさんのエントリにあるzzz氏のコメントに書いてあることにただただ頷くばかりだ。

という風に煽り気味に書いてみたけれども、まあ、Macに限らずFirefoxユーザにそういう姿勢の人が多くなるというのは、しょーがないのかなとも思う。単純にエンドユーザが増えればその分、開発に協力するような人の割合は減ってくるし。今までだったら「ボランティアで運営してる? 労力が不足してる? しょうがねえなあ、ほっとけねえから俺も手伝ってやるよ」という感じで手伝う人が現れてくれてた所、メジャー感が出てくると「ああ、Mozillaって金持ちなんでしょ? じゃ人手も沢山雇えるだろうし、オフィシャルの人に任せときゃ大丈夫だよね」という感じで手伝う人が減ってくる、そういう所もあるんだろう。

Mozillaの中の人(中野さんとかの技術畑の人じゃなくて、組織の運営やお金の工面を考えるような分野の人)には、そういう所の諸々の問題も解決する方向で色々頑張ってもらいたいものだなあ、と、無責任に希望だけ書き捨てておく僕も前述の類の人と同じ穴の狢か。

追記。今回話題に上っている問題で具体的に誰がどーいう不便を被るのよ? という例としては、ニコニコ動画でコメントを付けるとかUSTREAMのチャットで発言する時とかに、直接日本語を入力できなくて、必ず他のアプリケーションかネイティブな入力欄に日本語を入力してからそれをコピペしないといけない、という感じです。ニコ動はまあFirefoxの今のメインのユーザ層はあんまり使ってないかもだけど、USTREAMを活用してる層とFirefoxのアーリーアダプター層って結構かぶってる気がするので、組長あたりはご愁傷様ということになりますなあ。ということでこれらのサービスをよく使うマカーな人はRC1を使うか3.0.1を待つかこのバグがFixされたことが確認されているナイトリービルドを使うか、といった感じになるかと思います。

追記。言及された先にコメントとして書いた内容をこっちにも転載しておく。自分としては、この件はあくまで様々な関係者に少しずつ責任があると考えていて、Macユーザ「だけ」が悪いとは思っていないけれども、Macユーザの責任がゼロだとも思っていない。ただ、その事を以ってMacユーザ全員を敵に回して「お前らもっとコミットしやがれ」と居丈高にギャーギャー叫びたいわけでもない。「あなたが使いたい物がどこにもないのなら、あなたが自分で作るしかない。使いたい物があっても作る気が無いのなら、誰にも文句は言えない。作る気がなくても使いたいのなら、賃金なり労力なりのコストを負担するのが当然。あなたのためにタダで働いてくれる都合のいい奴隷は、そうそういない。いまあなたがタダで利益を得られているとしたら、他の人がその人自身のためにやったことのおすそ分けを貰っているからにすぎない。おすそ分けが少ないぞと文句を言う権利はあなたにはあるけれども、それに応じる義務は誰にも無い。なんでおすそ分けをもっとよこさないんだ、と不満を述べる姿はただ滑稽なだけだ。」ということを、今無邪気に要求の声を上げていて自覚していない人には自覚してもらいたい、ということをここでは言いたかった。

Page 86/248: « 82 83 84 85 86 87 88 89 90 »

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のコメント

最近のつぶやき