C Magazine 2005年10月号(2005/09/17発売)の特集2「Firefoxのすべて」のPart1, Part3の執筆を担当しました。
きっかけ
最初はたしか6月にMozilla Japan兼もじら組のkambeさんと飲んでた時、C Magazineから依頼があるんだけどどうよ?って話が来ました。 その時は仕事が忙しく、またC/C++の知識が足りないだろう(さすがにポインタが理解できてないのはまずいでしょ)と思って執筆自体は無理だと返事をしました。 ちなみに、その段階でXUL自体の解説はあまり念頭に入れていなかったらしく、さらに推薦できる人がなかなか居ないねって話になりました。
それから数週間後、Mozilla Japan理事の瀧田さんから僕とゆきちさん宛てに誰か推薦できる人いませんか?とメールが来ました。 僕ら二人はXULの解説記事を含めるならPiroさんを推薦するとしましたが、ソース自体の解説する人がまだ居ませんでした。 これはまずい。せっかくのチャンスなのに。 その時ひらめきました。 今から勉強すりゃいいじゃん。 そんなわけで自薦の意思を伝えてから文字通りがんばりました。 ...そんな記事なんでちょっと危険かも(汗
はじめてのライター経験
Part1の方は現在ある自分の知識+αぐらいでほぼ中身を埋める事ができました。 まぁ、参考文献が絶版物だったりするのは気にしないでください。
Part3の方はものすごく苦労しました。 もともとMozillaのソースを読む事は学生時代にちょっとだけやってたんですが、 そもそもそんなのちゃんと覚えているわけもなく、ほとんど仕切り直しという感じでした。 ただ、インターフェイスの使い方、XPCOMの実装の仕方が頭の中に少し残ってて助かりました。 ディレクトリ配置なんかもばっちり覚えていたし、まぁ、長年使っていたから勘もかなり働いていましたし。 しかし、昔monyoさんに言われた「若いうちにコード読んでおかないとだめだよ」って言葉が今となってずーんと響いてきます。しくしく。
コードリーディング中はGNU GLOBALにとにかく頼り切りでした。 ソースツリーを静的なHTMLとして出力してくれるので、ひたすらコードを読むのが楽になります。 エディタと違って、読みたい関数をどんどんタブで開いていって、ある程度まとまったらタブを一式保存して名前を付ける。 そんな感じでグループ化していくと一つの流れの単位ができてすごく便利。 また、作業のほとんどがオフラインだったので、とにかく静的である事が個人的に重要でした。 とにかく惚れ込んで、導入の方法をコラムに書いてしまうほど(元々書く気だったけどね)。 ちなみにGNU GLOBAL自体は動的なHTMLもサポートしているようです。
全体的につらかったのはとにかく時間が取れない事。 いや、現実逃避の時間は除いてね。それが無かったら確実に何かを失ってるから(何) 執筆はほとんど会社の往復のバスの中で行いました。 ソースの検証のためビルドしたりとかするんですが、 それも寝る前にビルドかけて、帰宅後に検証していじってという感じでした。 また、土日が仕事でつぶれて記事が書けない週とかもありましたし、 本気で落とすかとがくがくぶるぶるしてました。 ふたを開けたら20ページ以上書いてて自分でびっくりしましたががが。
唯一の救いは、自分がMozillaに関われるという事に対する幸福感でしょうか。 ここ一年ほど仕事でMozillaの事をほっぽりすぎていて、 自分が組長である事の自信を失いかけていたんです。 今回の記事がきっかけで失いかけていたものを取り戻した気がしますし、 ひさびさにワクワク感を感じたり、 そのモチベーションがちょっと仕事にも影響がでてたりと、 まー、端的に言えば若返ったような感じ(ぉ ほんと良い体験をさせていただきました。
記事紹介
今回の記事は以下の構成になっております。
- Part1. Firefoxを理解する
- Part2. Firefoxのユーザインターフェイス
- Part3. ソースからみるFirefox
今回は自分が担当した部分を軽く紹介します。
Part1. Firefoxを理解する
Part1. ではMozilla Firefoxの簡単な説明、Mosaicからの歴史的な話、Firefox 1.5の紹介、XULの仕組みの簡単な紹介を行っています。 コラムには子(とネトランのふぉくす子)を紹介したりと、かなり暴走した感があります。 ちなみに、p 37のFirefox子の絵は、inugamixさんに書き下ろしていただいたC Magazineオリジナル絵だったりします。 ええ、ちゃんと依頼しました。 打ち合わせの段階で編集者の方と入れられるといいかもーみたいな話をしていたのですが、 実際に入ってしまうと... なんか、C Magazineの硬派なイメージががらがらと崩れているような気がしますw ってか、組長の暴走とかひどいなぁ。 共謀ですよ(ここ重要
Firefox 1.5の説明では、一つすでに情報が古くなっているものがあります。 サニタイズ機能は名前が変更になり、 Clear Private Data(個人情報消去)機能となりました。 Firefox 1.5のリリース予定は11月なので、8月の情報を元に書いているため他にも古くなる情報があるかもしれません。
XULの簡単な説明は Part.2とかぶるのを覚悟で書きました。 (Piroさんが僕の原稿見てからPart2書いたみたいなので、違和感はほとんど無かったです。ほっとしました) 友達から説明がすくねーとか言われたのですが、それはPart.2を見て勘弁してください(逃
Part.3 ソースからみたFirefox
Part.3 では一気に内容が濃くなります。 予備知識として、C/C++の構文ぐらいは把握してください。
Windowsでのビルド方法、インターフェイスとかのMozillaで使われている一般的な知識と入っていき、後はコードの説明。 コードの説明と言っても、起動時のコード、クロスプラットフォームの実現方法、インターフェイスの国際化関係と、あまりつっこんだ内容にはなっていません。 まぁ、つっこんだ内容なんて書けないですけどねw スタンスとしては、一般的なユーザがこれどうなってるの?って思うところを意識したのですが、はたして自分が一般的なユーザなのかが疑問です。 まぁ、忙しすぎて拡張も入れず、毎日見てるサイトは/.jpぐらいなんで、 一般ユーザ以下かもしれません(汗 とまぁ、なんか説明になってないですが、そんな内容です。 飾り文句とか苦手ですから(てへ
個人的に感じてほしいのは、起動時ですらJavascriptが主役級になるという事。 たぶん、C Magazineの読者層から、Javascriptという言語に対して、結構嫌悪感とかが強いと思う。 所詮Web用の言語でしょ?とか。 でも、Mozilla Firefoxではちゃんと主役になるっていう事、Javascript無くしてMozilla Firefoxを解読しようなんて100年早い(何)とか言いたい訳ですよ。 そういう意味でいい刺激になればなーと思います。
誤記、修正など
いちおう、このブログで誤記、修正などのサポートを行うつもりです。 ある程度溜まったらエントリーを作ろうかと思います。 今のところわかってるのは以下の部分です。
- 表紙 - FireFoxと表記されていますが、Firefoxの間違いです。これ、日向さんにつっこまれて気づきました(汗
- p 37 - IE が E になっています。IEには愛が足りないんですよ、きっと
- p 39 - サニタイズ機能は現在Clear Private Data機能となっております
他ありましたら、教えていただくと助かります。
感想とか
宣伝しまくって結構いろんな人に見てもらいました。 中でも元上司でTlug元サブプレジデントのばびーには「Firefox使ってる人なら当然わかるでしょうみたいなくだり、全然わからんぞー」とおしかりをうけました。 たしかに、こういう書き方まずいですね。以後気をつけます。
あと、出版後にちょうど実家に帰ったので、両親や姉妹に見せたのですが、 母親から強烈な感想をいただきました。 「(最後の一文を読んで)ちゃんと社交辞令書けるようになったんだ」 母親は自分の息子をなんだと思ってるのでしょうかorz
そんなわけで何かご感想がありましたら、コメント等ください。