Jul 09, 2008

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

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

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

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

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

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

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

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

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

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

エントリを編集します。

wikieditish message: Ready to edit this entry.











拡張機能