@kyanny's blog

商品にならぬ技術は役に立たない - トーマス・エジソン

CGI::Application::Dispatch::BuildURI モジュールをリリースしました

21:16 追記
0.01には重大なバグがありました。move_uriを使うと無限ループに陥ります。「リクエストが多すぎて処理できません」のようなエラーになって画面が表示されません。fixedな0.02をアップしなおしましたので、そちらをどうぞ。明日にはインデックスされるはず。。。いやはやひどい凡ミスだ。。。

CGI::Application::Dispatchを使っているときに、テンプレートの相対パスがずれる問題を解決するための CGI::Application::Dispatch::BuildURI というモジュールをリリースしました。関係ありそうな以前のエントリはこちら

詳細はドキュメントなりソースなりtarballに付属のテストなりをご覧ください。

下手な英語よりも日本語でモジュールの解説をしなおしたほうがいいかと思っていろいろ書いたのですが、どうも下手なのは英語だけではなかったようなので、そんなものは消して「How to become a CPAN authoer - 金子の場合 -」でも書こうかと思います。

規模に対して時間がかかりすぎ

こんなちいさいものでも、大元のアイデアを思いついてからリリースするまでに一ヶ月以上もかかっていました。C::A::Dispatchでテンプレートに相対パスを書くときに問題が起きるのに気づいて日記にエントリを起こしたのが9月16日。C::A::Plugin::Redirectの作者あてに提案のメールを書くも、二週間くらい放置してしまって送ったのが10月8日。翌日返事がきて、そこから改めてつくりはじめ、10月21日にほぼ完成、メーリングリストに告知して意見をもらいました。それと同時にCPANへアップロードする準備のためにPAUSEのアカウントを取得。そこから数日の間で意見をもらい、ちょっとした修正をしたりドキュメントを書いたりして、26日の晩にようやくリリース、インデックスされてsearch.cpan.orgにならびました。放置期間がなければもっと早くやれたでしょう。

PAUSEのアカウントを取るのもおっかなびっくり

いったいどこで何をどうすればCPANにモジュールをアップロードできるのかさっぱりわからなかったので、www.cpan.orgのFAQなどを読んでPAUSEの存在を知り、アカウントを登録しました。登録されるまでにちょっとタイムラグがあって(6時間くらい)何かまずいことをしてしまって蹴られたんじゃないかとかヒヤヒヤしました。のちにPAUSEの説明を読みすすめてみると、人間が手作業で行うものに関しては最大3週間*1のタイムラグまでは見込んでほしいなんて書かれていたので、焦らず気長に待つ必要がありそうです。いざというときに待つのが嫌だと思ったら、先にアカウントだけ申請してしまうのもアリかも。

そんなに身構えなくても大丈夫・・・っぽい

意見をもらうために、cgiapp mailing listとshibuya-pm mailing listに投稿したのですが、どちらでいただいた意見も、「気楽にやろうぜ」というニュアンスが感じられるものでした。「名前空間を占有して迷惑をかけないか」「付属のテストが不十分ではないか」というあたりが心配事だったのですが、どちらにしても「そう問題はないし、あったとしても今後改善していけばいい」という意見をいただきました。完璧なものができるまで作りこむよりも、不完全でもいいからどんどん公開していって改良していけばいい、という考え方は、Perlコミュニティ全体に共通しているものなのかもしれません。

英語は「1に度胸、2にexcite翻訳、3、4がなくて5に英辞郎(と英和辞典)」

cgiapp mailing listへの投稿や、モジュールのドキュメントなどは当然英語で書くことになります。やはり英語の壁はそう低くはないので、なかなか苦労しました。ただ、モジュールのコーディングに比べると英語の文章のほうはそこまで厳密さ、正しさを要求されないので、逆に開き直って「俺がカタコトで読み書きする英文ならネイティブが読めないはずがないだろう」くらいに考えて、とにかく単語を並べて、どうしてもよくわからない言い回しはexcite翻訳を参考にしました。日本語の文章を丸ごと翻訳にかけるのは避けました。つたなくて、語彙が乏しくても、自分で英文を考えて組み立てられるようにトレーニングしたほうが良いと思ったし、やっていくうちに英文を書くことじたいが面白くなってきたからです。

関連のあるモジュールのソースコードを読むのはとても大事

build_uri()の引数が省略されたときに望んだ動作をさせるため、その仕事をするコードを書いたのですが、関連するC::A::Dispatchモジュールをはじめとするモジュールのソースコードは大いに参考になりました。単に「同じことをしているコードが見つかる」というだけでなく、コードを読むことで、使っているだけでは隠されていて見えてこない実際の内部的な動作も理解し、それを想像しながら目に見える動作をより正しく把握できるので、勉強・研究のためにも、より楽しむためにも大切なことだと思いました。そして、自分でモジュールを書くことで、読むための強い動機付けができたというメリットもあります。

憧れのCPAN authorになって

「初めてのPerl 第二版」を初めて利用するアマゾンで買って、「ちゃんと」仕事なり趣味なりでPerlに触れるようになってから、だいたい三年たちますが、ここ一年くらいでCPANモジュールをちょくちょく利用するようになり、その便利さ、素晴らしさを知るにつれて、自分も貢献したい、憧れの人たちと同じようにあそこに名前を連ねたい、と常々思っていました。正直いって、自分は知識も経験も浅いし、アイデアにも乏しいので、夢のまま終わってしまうんだろうなと諦めていたのですが、思わぬチャンスをつかむことができて、夢をひとつかなえることができました。量や質のことをいいはじめれば、今の自分は到底及びませんが、それでも「俺だって、CPAN authorなんだ」という自負は自信につながります。実際に誰が使うかはわからないけど、ともかく寄付し、貢献したのだ、というのは、とてもうれしいことです。

ということで、ええとまあ何が言いたいかというと、

  • アカウントは取っておけ
  • 英語はオンライン辞書でなんとかなる
  • アイデアは早めに形にする
  • スゴイモジュールのソース読むと勉強になるよ
  • CPANもー超サイコー!ありがとー!!

ということで、もっかいいうよ「CPANもー超サイコー!ありがとー!!」

*1:最大でそのくらいの期間、休暇を取る可能性があるかららしい