2009-10-31

違和感

やったこともない場所のトラブル(違う言い方すればバグなんだけど) をアサインされて、どうにかせい!って言われて、数GBを平気で超えるソースコード見ながら理解して、一日でRoot Cause+Workaroundについて顧客にミーティングで説明したり、その合間に修正コード作ったりしてた自分にとっては(もちろんそれは仕事での話)、オープンソースカンファレンスのLTでOpenOffice.orgのコミュニティの人の話は全然ダメ。自分を高めたいんだったら、OSSじゃなくて、レベルの高い人たちのいる一流企業(MicrosoftとかGoogleとかAppleのHQ)で働いた方が、自分を高められると思うよ。マジで。

OSSには自分の方が良いコードを書いたとしても、それを納得させる努力ってのが結構必要で、それは企業でコードを書くよりもより重要なんだ。コードを書くだけじゃなくて、妥協点を考えることをより考えされられる。もちろん、そういう交渉ごとに対して、自分を高めているということであれば、別にいいけど。

OSSに携わる理由ってそういうことじゃないと思うんだよね。自分自身は開発者だから違うのかもしれないけど。

自分は欲しい機能があったり、使えないと思うバグが合ったから修正コードを投げつけたところから始まったんだけど、誰かがコードの読み方を教えてくれた訳でもないんだよね。デバッガで動きを理解すれば別に大体の動きは把握できるから。

そもそも、このソフトウェアいいんだけど、こういう機能がないから使えねーとか、何だよこのショボイバグとか思ったときに、直してやるかと思うかどうかだと思うんだけどね、開発者の本質っていうか、オープンソース的なものって。そこからコアの部分のコードを再実装したりしていくようになっていくと。レベルの高い人たちとやることが目的じゃなくて、ただ単にこのソフト使ってて、納得いかないから直している・実装するのがOSSだろ。こういう考えの自分だから、彼らのプレゼンが残念。すごい違和感のある内容だった。

OpenOffice.orgがやらないといけないことは、コミュニティを増やすということとかじゃなくて、まずOpenOffice.orgがMicrosoft Officeに勝っている部分を増やすこと。フリーとか無料とかじゃないとついて来ないようじゃ、一生勝てないし資金も集まらない。(前の会社で社長に「OSSで失敗するものは、劣化版コピーもの」っていう話をしたっけ。OSSでより使われるものは、シェアが勝る(or プロプラ)ものに比べても、劣化版コピーじゃないしね)。

最後に、日本語翻訳系プロジェクトが分散するのはいいけど、どのソフトウェアも語彙とかのために合同ミーティングとかカンファレンスした方がよくね?(って先週だれかに話した記憶が。。。)

2009-10-22

ThudnerbirdのGlobal full-text searchの実装の補足

ThunderbirdのGlobal full-text searchの実装において、補足しておく。

U+2000以下の文字についてはそのままなので、U+0100移行の文字はスペースがワードブレーカーになっている作りになっている。だから、検索で問題となるのはタイ語のみ(CJKと同じでワードブレーカーがスペースではないはずだったような。3.1までにちょっとタイ語勉強してくる)で、それ以外は網羅できてるはずです。ただ、U+0100未満の文字については、porterによる正規化ができているので、検索精度が高くなっている作りです。ここらはテストを細かくできてないというのが実情なので、問題があれば、バグをファイルしてもらえると助かります。

で、bi-gramを使っているけど、1文字で検索しても、検索結果が引っかかるようにしています。コードを見れば分かるけど、1文字の場合はワイルドカードを使うように強制変更してます。

ちなみに、データベースのスキーマを変更したら、データベース自体のバージョンをあげるようにしているため、beta 4のユーザーがnightlyやRC1にアップグレードすれば、何も作業なしに日本語の全文検索ができるようになります(データベースの再作成が行われるため)。僕の作ったtry server buildを使っている場合はデータベースを削除してもらったほうがいいです。

Mozilla Japanへ遊びに行ったら、瀧田さんに「どうにかならないの?」とか、dynamisさんに、「やってよ!」って言われたとか、とどめに、Mozilla Fluxでいろいろ書かれたからというのが、今回の実装をやり始めた理由なので、感謝は私にいうより、煽った人たちに言ってください。

OSSの開発プロセス上、開発者が興味のあるところが開発が進むことが多いので、ユーザー側が声を大にして言ってくれたほうが、本当の問題点が見つかりやすいとは思う。だから、これからも何かやって欲しいことがあれば、いろいろ言ってください。よろしく

2009-10-21

Thunderbirdの日本語検索が入りました

Global full-text search周りやっているAndrewがアナウンスしてるけど、一応チェックインされました。たぶん、明日くらいのNightly Buildから使えるはずです。

フィードバックを聞いているものはもうすでに直してありますが、何かバグを見つけたら、報告してください。bugzilla.mozilla.orgがベストですが、Twitterで@makoto_katoに文句垂れるなり、直接メールくれてもいいです。

ゆらぎとかはサポートしてないので、それは許してください。今後どうするか考えます。というか、辞書持つのってのはちょっとなぁと思うけど、ゆらぎを正規化するライブラリを書いた方がいいかもね。

2009-10-18

Firefoxのプラグインブラックリストがちゃんと動き始めたようだが

Mozilla、Microsoft製Firefoxアドオンを無効化

個人的にはやっとという感じだなぁと。ブラウザでネイティブコードが動く以上、ホワイトリストとブラックリストってのは、実装されるべきだから。

他のブラウザでも、Internet Explorerだって、KillBitというのがあって、セキュリティ問題のあったActiveXコントロールは、このKillBitで無効化される(他社製であっても)。各ActiveXコントロールがCLSIDを持っているので、そのCLSIDをブラックリスト(KillBit)に追加するというだけのこと。たまにWindows Updateで配信されているのは、そのリストを追加するだけのもの。

で、問題を修正した場合、そのActiveXコントロールが新しいCLSIDを使えば、それはKillBitに入ってないので問題なく動作する。また、アプリケーション側は直にCLSIDを使わずにProgIDという別名を使っておけば、アプリケーションを再コンパイルすることもないし。

そもそも、プラグインの実行する場所にサンドボックスがあったとしても、それが逆にプラグインの動作に対して制限を加えることになるし、セキュアなプラグイン環境を作るためには、別のバイトコードで実装する方向にいくんだろうな。。。return of the javaじゃないけど、JavaScriptで実装できるとか。

2009-10-16

Thunderbird 3の添付ファイル忘れ防止用の機能

Glodaの日本語対応はレビューパスしてないけど、それはおいておいて、Thunderbird 3では添付ファイル忘れ防止用の機能が入ってたんだということを最近知った。詳細は、http://level.s69.xrea.com/mozilla/index.cgi?id=20090802_Tb3_attachmentに譲るとして、Beta4での日本語通らないから直してといわれたので、見てみた。

簡単に原因を説明すると、\bの正規表現がどう動くかというところがポイントで、日本語の文字列だと\bが思ったように動作しないので、日本語通らなかっただけだった。ので簡単に修正コード書いてもうCheck-inしたので正式版までに直るはず。

まあ、KanjiをKanajiと書き間違えたり、unit testがないとか言わないで。というか、Attachment Checker自体にTestコードが一切ないんですが。つめるんだったら、そっちだろうって。

Firefox Developer Conference 2009で話します

発表者のトコロについた肩書きが最近できたのだけど(なんだ、テクニカル・アドバイザって)、Firefox Developer Conference 2009でGecko 1.9.2 (Firefox 3.6) で使えるjs-ctypesの話をします。懇親会でタダメシ食えるから来てというわけでないですが、興味があればどうぞ。

Azaはここ以外にもK...にも出るけど、Blizzardが日本で話すのは初めてじゃなかったかなあ。彼は元RedHatでMozillaをやってた人で今はMoCoでエバンジェリストやってる人なんで、いろいろ聞けると思います。

2009-10-15

Qt 4.6 beta 1

このペースでいって、Avkon(S60のUIフレームワーク)を捨てられるクオリティまで持って行くことができるのだろうかという点が、Symbianの生きる道だろうな

AndoridにXULRunnerが移植できるのかどうか

最近Mozillaでコソコソ技術的な検証が行われてて、技術的な調査が行われている。ちょっと昔にAndroidのブラウザを調べた時にある程度技術的な見解を持っているので、覚えている範囲で書いてみる。

グラフィックエンジン自体は、OpenGL直叩きまたは、Skia経由での描画でいけるので、これはC/C++のインターフェイスを持っているから、楽勝。というか、VladがSkia<->Cairoのバックエンド書いてたから、そんなに心配することない。gfxはまだ楽なわけだ。

問題は、ウィジェットコード。結局C/C++だけでの実装は無理というのが結論。WebKitのコードを見てたところ、JNIを使って、ActivityなどのDalvikのクラスを呼びだして、OSのWidgetにアクセスしてる。で、アプリケーションのラウンチャーもJavaで書かないといけないので、ラッパー用のアプリを書いて、それから、JNIで実装したクラスを呼び出す感じじゃないといけない。だから、面倒くさいんだよね。OSのサービスが基本的にDalvikに閉じてしまうので、そこをどうにかしないといけなくて。。。

っていうか、Vladさすが。正解。

2009-10-13

Maemo 5のWebブラウザ

N900に入っているWebブラウザは、Geckoベースなのだけど、NokiaのデモがYouTubeに残ってる。これ見てると欲しくなるなぁ、N900。プロセッサはOMAP3 with PowerVRだったから、SnapDragonよりも若干劣るけど、NetWalkerに採用されているi.MX51とはほぼ同等くらいの速度でこれ。

Maemo 6からは、Qtベースになるとアナウンスがあったんだけど、Webブラウザどうするのだろうね?

2009-10-12

自分のBio

とある場所でBioを書いてって言われたので、整理がてらに自分のPCの経歴を適当に書いてみる。 まともに書いたものはどこかに使われるかも。

小学生の時、PC-6601(しゃべる&歌うヤツ)を買って貰って、BASICをちょっとやってたんだけど、すぐ飽きてZ80のアセンブラに手を出す。ハンドアセンブルやるのがウザかったので、自作アセンブラ書いてた。その後、そのパソコン取り上げられたので、パソコンから離れる。PC-6601は大人になってからヤフオクでゲットし直した。しかもPC-6001シリーズ全部コンプし直す荒技。

某S大学在学中にLinux 1.2.8をさわり出す。当然1.3.xツリーを試そうということになるんだけど、もうトラブルだらけなんで、コードを触り出す。

一方その頃、Netscape Navigator 1.xが世の中で動いてて、Solaris 2.x(だったはず)でインターネットを体験。しかし、学校のネットワーク回線は昼間は遅すぎ。そのおかげで、夕方しか学校(研究室)に現れず(昼間・夜間はバイトとか飲みしまくり)。夜はソースコードダウンロードしまくってた。

その後、Javaがリリース。Javaのコード動かして遊ぶ遊ぶ。ついでに、Netscape Navigator 2.0が出てきて、もうウキウキ状態。なんか、世の中で革命が起きているってのはあの頃感じたよね!

大学卒業して、とあるSI企業(現在は買収されて跡形もない)に就職。その頃Netscapeのコードが公開される。とりあえずビルドしてみて、動かしてみたけど、これ、ビミョーじゃね?と思う一方、自分の環境用のウィンドウマネージャにAfterStepを使ってて、これがバグバグなので、直しまくる&パッチを送りつける。そうこうしてたらメンテナーになってた。それ以外にもLinuxとかいろいろOSSに手を出しまくり&パッチ投げつけ。やること見境なし。いろんなところのchangelogに名前残ってたり。まぁ、仕事には一切関係ないことだったけど。

また学生自体にバイトしてたころよりも収入減+車(田舎だったんで、ないと死ぬ)の借金で金がなかったので、Webアプリ書きのバイトをほそぼそとやる。そこで、いろんな言語で覚える。この話は経歴書には書かないけど。

一方、MozillaもNetscape Navigator 5のコードが捨てられ、Geckoベースになったんだけど、良い感じにバグバグすぎるので、しょうがないのでパッチを書き始めた。その頃コード書いてた日本人は、ボランティアで自分一人、あとはNetscapeの堀田さんとSunの田島さん(後から片貝さん)で、堀田さんと台湾人(だったよね)のFrankでと私でいろんなI18Nバグを直してた。いろいろとあって、みんなMozilla/AOLを離れた後は、GoogleとかYahoo!行ったみたいだけど

一方日本でOracleのセミナールームでMozilla Party.jp 1.0やるからプレゼンやってと言われたので、簡単なアーキテクチャのプレゼンやる。その頃にNetscpaeのI18Nメンバからいい加減にコミットの権限取ってって言われたので、Netscapeへ書類を送ってCVSの権限取得。バグを見つけて、自分で直しての繰り返し状態。

金稼いで来ても全く評価されない会社に見限って、知り合いのツテで某社に転職。そのおかげで徐々にOSSから離れる(超プロプラなところね)。ただ、気づいたら(いろんな事情があって)、そこの会社でもブラウザやることに。ブラウザも片手間のはずが、もろ100%その仕事だけになってしまう。日本で自分一人だけだったからなぁ、ちゃんとコード直してた人の数。いろんなトラブルで徹夜でデバッグ&修正コード書いたっけ。

そういう状態だから、LinuxのツリーとかMozillaとかに行方不明と載る(すごく後でそういうことになっているというのを知った)。それはそれで面白い状態。

いろいろと考えることがあって、その会社を退職して(最後のロールが、まさか一回り歳が上のエクセレントなエンジニアたちをマネージする管理職の立場になるとは入社するときには思いもしなかった <- それが直接の辞める理由じゃないんだけど)、数ヶ月遊んだあげく、とある企業に入社。(詳しくは絶対書かないけど)安易に会社を選んで後悔するはめに。

なので、Mozillaにもちゃんと戻ってくる。CVSのパーミッション残ったままだった。でも、昔々に自分でバグをファイルしたものが残ってるのが多数発掘されるので、ちびちびバグつぶしとか。表舞台には出てこないので、Mozilla関係者にも面識が割れてない状態だから、イベント行っても、誰も気づかない面白い状態。ウケる。

いろいろとあって、そこも退職。最後に2階級特進させるから残ってと言われたけど、それ殉職しろって言ってる?

それでまさかの再度プー。ほそぼそと転職先を探してたんだけど、エージェントの持っているものは面白さがかけるんで、個人事業主で、某所でパートタイムで働き始める。

それが今現在。見境ないなぁ

2009-10-06

日本語文書の読みやすさって

テストでGoogle Chromeを使ったときに、ページを見てて違和感があったので、そのメモ。

まずは、Google Chrome 3でのスクリーンショット(サンプルはこれを抜き出している)

なんか、ごちゃごちゃした感じになって、文字が読みづらい感じなんだよね。ってのが感想。

で、次にFirefox 3.5。

そうか、行間か!。CSSで指定してない場合の行間の高さの考えが違うんだと。

Chromeのときに1ドットだったので、WebKitの行間の考え方がおかしい?ってことなのかと思い、Safari 4での行間。

Safariだと読みやすい形で行間が空いている。Chromeの問題か。Googleの中の人たちももう少し日本語を考えてほしいなと。

ほかのブラウザだとどうなのよってことで、Internet Explorer 8ではどうよ。

さすが。日本語のノウハウ持ってるMicrosoftとAppleはちゃんとしてくるよね。

最後にOpera。

予想通りっていうか、そうだろうな。。。

2009-10-02

ThunderbirdのTry Server

GlodaBarの検索対応のパッチを書いていてるため、ThunderbirdのTry Serverのアクセス権をもらった。

基本的には、ここに書いているやり方で問題ない。
https://wiki.mozilla.org/Thunderbird/Infrastructure/TryServer

Mozilla-centralのTry ServerのようにWeb or Mercurial Queueということではなくて、クライアント証明書での認証を使ったWebインターフェイスのみ。

Thunderbirdについてはこれしか3.0で間に合わないけど、3.1で直してほしいものや作ってほしいものがある人は、直接メール (m_kato at ga2.so-net.ne.jp) してくれるか、Twitter (@makoto_kato) でつぶやいてもらうか、Bugzilla に私のメールアカウントをCCに突っ込んでおいてください。よろしく