All Your Bugs Are Belong To Ass

なぜモジュールをgithub止まりにするのか

『tl;dr』

http://d.hatena.ne.jp/charsbar/20080606/1212704287

『tl;dr』は甘え

ここまで読んで意味がわかった方には、このポエムを読む必要などありません。読むだけ時間の無駄ですので、より創造的な活動に貴重な時間を費やしていただきたい。

え?どういうことw

はい、此処から先は、上記の意味が解らなかった方向けにお届けする、自戒風個人的見解というジャンルのポエムです。

CPANにモジュールをリリースするということ

思うに、少なくとも以下のような意味があるはずです。

  1. あなたの作ったモジュールが、cpanm一発でインストールできるようになる。

    これはそのままで、単にcpanm Your::Moduleなどのようにすることでインストールできるようになることを指しています。

    あなたの業務で当該モジュールを利用していた場合、確かにこれは如何にも便利だと思います。

  2. あなたの作ったモジュールが、世界中のperlプログラマから「選択」される可能性が発生する。

    同時に、あなた以外の(あなたが全く知らない)perlプログラマが、あなたのモジュールをcpanm Your::Moduleとしてインストールし、利用する可能性も発生します。

モジュールがどのように評されようとも、それはリリースした人間の責任である

例えば、webサービスへのリクエストを発行する機能がある場合。

anon. > webサービスのラッパーモジュールがテストで実際にAPI叩くの渋すぎるな

このような評価をされてしまう可能性があります。

また、

anon. > 依存漏れがあるっぽい(けどほっとこう

というケースもあるでしょう。

全部自分でやる必要もないのですが、やはり自らリリースしたモジュールについては、相応の責任をもつことが重要でしょう。

後続のperlプログラマがcpanを探索した時に与える影響を少し考えてみる

あるいは、もっと別の観点から考えると、

anon. > CPANは慎み深い文化だからなー
anon. > さすがに劣化コピーが蔓延してしまうのは得がない

このような指摘が出てくるというものです。

何故か。それは、「検索性」というキーワードで説明がつきます。同じような機能を持ったモジュールをリリースしたとあれば、まだCPANに慣れていない「利用者」からすると、どれを選べば良いのかわからなくなるというものです。

もしあなたの作ったモジュールを「本気」で「選択」してほしいと思うのであれば、競合しているモジュールが完全に霞んでしまうほどの利点が必要だと思います。

「CPANでのモジュール公開」は手段であるべき

上述のような特性から、CPANへのアップロードは手段であるべきで、曲がり間違えても「目的」などになってはいけないわけです。

この点については、僕自信も相当に自戒すべき点があるのですが、であればこそ、同じ過ちが起こることを食い止めたいと思い、このポエムを書いたわけです。

だからモジュールをgithub止まりにする

とはいえ、「じゃあ一体どういうものを上げればいいのよ?」という向きの言い分も解らないでもないです。

完全に個人的な目安でしかないのですが、僕は最近、以下のような観点で2個以上該当するかどうかで、CPANへのアップロード可否を判断しています。

  1. 機能面において、競合するモジュールが全く存在しない

  2. 機能面において競合するモジュールがあるが、比較して、依存が少なく、性能も遥かに凌駕しており、コード量が圧倒的に少なく、見通しが良い。

  3. 既に自分と自分以外の誰かが利用していて、評判もそこそこ以上であり、利用者からのフィードバックやPull Requestなどの助力が受けられる見込みがある。

  4. github上でのスターが20個以上である

ちなみに項番4は未だに該当したことがありません。

まとめ

「tl;dr」で済ませてはいけないものが世の中にはあるんですよ!

Created at
by
ytnobody
Last modified at
2014-09-17 13:12
by
ytnobody