Home > Latest topics

Latest topics 近況報告

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

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

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

宣伝2。Firefox Hacks Rebooted発売中。本書の1/3を使って、再起動不要なアドオンの作り方のテクニックや非同期処理の効率のいい書き方などを解説しています。既刊のFirefox 3 Hacks拡張機能開発チュートリアルと併せてどうぞ。

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック
浅井 智也 池田 譲治 小山田 昌史 五味渕 大賀 下田 洋志 寺田 真 松澤 太郎
オライリージャパン

Page 3/239: « 1 2 3 4 5 6 7 8 9 »

Firefox 3 Hacks校正おわり - Jul 22, 2008

昨日は丸一日、朝から晩までFirefox 3 Hacksの校正を著者全員(+オライリーのM氏)でやっていました。僕は自分の担当部分だけでイッパイイッパイだったので他の方の担当章までは全然見れてないですが。

8月発売予定です。

Firefox 3 Hacks - Jul 17, 2008

萌えキャラをという話もありましたが、年齢層の高い複数関係者の反対でボツになりましたというのを見て「ま た P i r o か」とあらぬ疑いをかける人がいそうなので先に言っておきますが、僕は関係者の中では一番最初に反対を表明しましたよ。

あと江村さんに倣って自分も担当章の見出しを晒してみます。

  • 3章 Firefox 3向けの拡張機能開発テクニック
  • #19. 拡張機能開発の基礎
  • #20. 標準ライブラリ「FUEL」を活用する
  • #21. MozStorageでSQLiteデータベースを操作する
  • #22. 履歴とブックマークのデータベース「Places」の正体を知る
  • #23. APIを通じて履歴とブックマークを操作する
  • #24. Placesデータベースへの問い合わせ命令
  • #25. Placesデータベースへの問い合わせ結果を利用する
  • #26. JavaScriptコードモジュール
  • #27. Firefoxに含まれているJavaScriptコードモジュールを使う
  • #28. JavaScript製XPCOMコンポーネントで特殊な処理を実現する
  • #29. 拡張機能を安全に自動更新できるようにする

見出しの数だけ見ると大したことないんですが、ゲラ刷りの目次によると、この章だけで100ページ超えてるみたいです。この見出しの下に大量の小見出しがあるので読みにくさ抜群ですね。校正したくないよう……

UxUの自己テスト - Jul 17, 2008

UxU自己テストを(現実逃避に)ようやく書き始めてみている。今まで無かったのかよって怒られそうだけど……

アサーションのモジュールのテストとかテストケースのテストとか、書いてて頭がこんがらがってくる。

Selenium、Selenium IDE - Jul 16, 2008

試してみた。

SeleniumはWebアプリケーション用のクロスブラウザな自動テストツールで、独自の書式または好みの開発言語でテストケースを書いて、Webアプリケーションの機能テストを行える。Selenium IDEを使うとFirefox上での操作を記録して(何もないところでクリックするという風な操作も記録される)、Selenium用のテストケース(の雛形)まで生成してくれる。

あーこれはいいわー。Webアプリ開発やるなら絶対お勧めだと思う。FirefoxでSelenium IDE使ってテストケース作って、それをエクスポートして他のブラウザでも自動テスト、ということもできるようだし。

ちゃんとドキュメント見てないからよく分かってないけど、ユニットテスト(単体テスト)より機能テスト(結合テスト)に特化してるような気がした。単体テストには別のツールを組み合わせることになるんだろうか。あと当然だけどFirefoxのアドオンの自動テストには使えない。

iMacros - Jul 16, 2008

iMacrosも試してみた。

リンクをクリックしたとかフォームに文字列を入力したとかの操作を記録して再生できるんだけど、これは完全にWebサービスの操作を記録・再生するためだけのものっぽい。アサーションもないようだから自動テスト用には使えないなあ。サーバ側のテストには使えるかもだけど。

MochiKitのテスト機能 - Jul 15, 2008

MochiKit見てみた。

これも基本はやっぱりユニットテストに特化した感じかなあ。少なくともGUIのテストは意識してないか……

仕事でFirefoxの拡張機能をやるという事になったときに最初に須藤さんに「拡張機能のテスト用フレームワークってあるの?」みたいな事を聞かれて、それでMozUnitに辿り着いたんだけど、その時の僕にはまだ自動テストとかテスト駆動開発という物がどういうものかよく分かってなかった(今もまだよく分かってないかもだけど)。今思うと、その時僕が思ってた「自動テストって、こういう事をしなきゃいけないのかな?」というのは、開発者世界の常識的には相当ワガママな要求をイメージしていたようで、普通は「自動テスト」「ユニットテスト」というともっと低レベルの、あくまで部品単位の品質を高める物という認識でよかったみたいだ。それを知らずに僕はSeleniumのGUIアプリ用版みたいなのをイメージしてたから、「そんなの無理ッスよ……」と勝手に諦めムードになってた。とはいえ、その勘違いが無ければここまで意地になってUxUに手を入れまくる事もなかっただろうしなあ。

JsUnit - Jul 15, 2008

JsUnit見てみた。

オンラインの例はFirefox 3で普通に動いたんだけど、ダウンロードしたやつは何故か動かなかった……パスに日本語が含まれてるとダメとかそういうやつ?

見た感じではWebページ用のJavaScript一般のユニットテスト用という感じで、Chrome特権であれこれするやつを、しかもGUI上の動作をテストするという前提では……ないよねえ、やっぱり。

script.aculo.usのユニットテスト機能 - Jul 15, 2008

script.aculo.usのユニットテスト機能を見てみた。

昔、Firefox上でprototype.jsを試してみたことがあるけど、少なくとも当時のバージョンではprototype.jsはObjectのプロトタイプとかにプロパティを追加する仕様だったような気がする。なんか全般的にfor-inループを多用してる部分で影響が出すぎてて、Firefoxの動作自体がぶっ壊れてしまって使い物にならなかった記憶がある。少なくとも今のscript.aculo.usが使ってるバージョンについてはObjectのプロトタイプは触らないようになってるみたいだけど、FunctionやRegExpなどのプロトタイプには変更を加えてるみたいで、ちょっと怖い……気にしすぎだろうか。

肝心のユニットテスト機能について。

  • アサーションが色々ある。アニメーション効果を扱うライブラリってことで、要素が見える状態かどうかとかのためのアサーションもある。
  • ベンチマークを取る機能がある。これパクろうかな。
  • BDD風の記述もできるみたい。
  • 処理待ちについては、setTimeoutを使って一定時間後に渡した関数に処理を移すという機能がある。

Firefox上でも問題なく動くと仮定しても、これを使って拡張機能のテストをやろうとすると結局は「どうやってテストを走らせるのか」「テストの結果をどうやって見るのか」といったあたりは自分で解決しなきゃいけないか……粒度を高めて本当にユニットテストのために使うぶんには十分使えそうなんだけど、いわゆる結合テスト的な所になってくると面倒さが跳ね上がりそう。XULに特化した便利なユーティリティを沢山用意しておくだけでもそれなりにUxU意義はあるのかな。

自分自身が基本的にGUIアプリしか使えない人間なので、script.aculo.usのテスト機能のように「これ使ったらテストができるよ」って機能群をぽんと渡されても、「え? え?」って感じで戸惑ってしまう。何かしら型にはめて「あなたはここだけやればいいですよ」って感じでやるべき事を絞り込んで貰えないと、どうしていいか分からなくなってしまう。そのあたりが、UxUでMozRepl由来の部分を全然使わずにMozUnitの部分ばかり拡張し続けている最大の理由なんだな。

MozLab - Jul 15, 2008

19日のShibuya.js in KyotoでUxUの事を話そうと思ってとりあえずその前に他のツールの現状を調べとこうと思ってUxUの元になったMozLabを見てみたら、ライセンスがMPL/GPL/LGPLのトリプルライセンスになってた。フォーク前のMozLabはGPLだけだったのでUxUもGPLなんだけど、こういう場合ってUxUもトリプルライセンスにできたりするんだろうか、それともあくまでフォーク時点でのライセンスに従う事になるんだろうか。

とりあえず中身見てみたけど、スタックトレースをマトモに辿れないっぽいとことかその辺はあまり変わってなかった。先方はMozReplの開発の方に注力してるってことみたいだなあ。対するUxUはサーバソケットの方はほとんど放置(僕が触れないので)でGUIのテストランナーの方に注力してる。まだ返信できてないけどこないだ会社の代表アドレス宛にMozLab作者の人から「英語版ドキュメント無いの?」的メールが届いてたので、このあたりの事を話してマージの方向を目指してみるべきだろうか?

書き捨てたコードの品質や書き捨てるという姿勢について - Jul 09, 2008

Jintrick氏の書かれた新しいエントリを受けて。

そういう事であれば確かにおっしゃる事はごもっともです。適用対象がすべてのWebページとなっていたのは、僕の記憶する限りでは改変元の物がそうなっていたのを手を加えずにいたからだと思いますが、そこをそのままにしておくのは確かに思慮不足でした。基本的に自分は「とりあえず自分がイメージしていた所まで辿り着いたらすぐ公開」をポリシーにしていますし、少なくとも趣味レベルや実験レベルでやっている事については、自分が気付いていない・当初の想定になかった問題は突き詰めると人に指摘されてから直せばよいと考えていますので、思慮不足である場合も少なくないです。ある時点(特に修正のサイクルが動き出す前のような時点)を切り取って「バカかおめーは」と言われれば、「その時点での自分は確かにバカでしたごめんなさい」と謝って修正するしかないです。

Jintrick氏がやり玉に挙げているスクリプトを僕が何故修正もせずに放置しているのかというと、本家配布元が変更を取り込んで開発を継続されたため、自分の作った物の役割は終わった、自分がこれをメンテナンスし続ける必要はない、後の事は先方が責任を持ってくれることだ、と考えたからです。「もう古いから本家の新しい物を使うように」という誘導が無くてこれが最新最終版ととられかねないような状態で置いておくのがよくない、と言われたら、それについても「誘導忘れてました放置してましたごめんなさい」と謝るしかないわけですけれども。

とはいえ件のコードの品質の低さや、品質が低いまま放置している事というのは、以下に詳しく述べますが自分としては一応理由があっての事で、僕のコードがいついかなる場合でも低品質で僕の姿勢が総じて宜しくないという風に思われるのは心外だとも思っています。

自分はGreasemonkeyスクリプトやuserChrome.js用のコードなどについては、品質が低いまま公開してもさほど問題ないと考えています。こういった、コードがむき出しで、インストールされたスクリプトの自動更新機能も持たない、スクリプト作者が後々のサポートができないタイプの拡張機能は、自助努力で問題を解決できる人、あるいはどんなトラブルが起こっても自己責任と納得できる人だけが使うべきだというのが自分の考えです。僕はやっつけ仕事で自分の必要最小限の物だけ書いたから、使いたい人は使ってくれて構わないけど、後はどうなっても知らんよ、というのがGreasemonkeyスクリプトに対する自分のスタンスです。ましてや、僕の加えた変更が本家に完全にマージされて、派生版が派生版としての存在意義を失い、本家の開発がきちんと継続されているのだから、役目を終えた古い派生版に文句を言われても、僕としては「知らんがな。開発を継続してる本家に言うてくれ。」というのが正直な感想です。

しかし、普通の拡張機能については、それとは違う態度で自分は取り組んでいるつもりです。Firefoxの拡張機能は自動アップデートが可能で、インストールもアンインストールも簡単という、純粋なエンドユーザに「さあ使ってくれ」とでも言わんばかりの仕様で、必要ない部分はとことん隠蔽されていますから、その様式に則って物を作るならそれ相応の覚悟が必要だというのが自分の認識です。

例えばXUL/Migemoを派生版としてメンテナンスする中で、ネットワークを通じての辞書の自動インストール機能やユーザ辞書機能といった風な「上級ユーザ向けには明らかにどうでもいい機能」を積極的に加えていったのも、そういう考えがあったからです。件のコードのようにFirefoxをフリーズさせかねないような機能、最近のスマートロケーションバーでの検索への対応でも、のりさんやdrryさんにまで協力してもらって何度も検証を行った上で、常用で問題が起きない程度の速度が出るようにできた時点でやっと一般向けにリリースしました。またその上で、AMOに頼らず自動アップデートのための環境を自前でも整えて、修正をエンドユーザに迅速に提供できるようにも努めているつもりです。(修正が追いつかずに後回しになっている事も多々ありますが、最初から修正する気がないのとは違うと自分では考えています。まあ、それを指して、結果的に不幸を垂れ流してるからダメだと言わたら、「そうですね」としか言えませんが。)

こういう、相手によって力の振り分け加減を変える姿勢を、不誠実だと言われてしまえば返す言葉はありませんが、自分は現時点では、これを「今自分ができる中で一番マシな形」と考えています。

まーとりあえず言える事は、Piroは自己弁護に必死だなと。

Page 3/239: « 1 2 3 4 5 6 7 8 9 »

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のつぶやき

オススメ

Mozilla Firefox ブラウザ無料ダウンロード