tokuhirom's Blog

Perl 5.18 時代における Core module についての捉え方について

Perl 5.20 で、CPANPLUS とその依存モジュールたちが core distribution から分離されます。 また、5.22 では CGI.pm と Module::Build が分離されそうです。

ここにいたり、Perl 5 の core distribution にはいっている、ということの意味が徐々にかわってきつつあります。

では、現在の状況はなぜおきているのかを考えてみましょう。

configure_requires の普及

Perl 5.8.5 あたりの時代では、Module::Build などは core distribution にはいっていないと、つらかったわけですが、configure_requires が普及したことにより、インストーラを CPAN shell で自動的にインストールすることができるようになりました。

これにより Module::Build はもはやコアにいれる理由がなくなりました。

extlib/ をつくることが容易になった。

cpanm により、CPAN モジュールをプロジェクト配下にインストールすることが非常に容易になりました。これにより、system にあらかじめインストールされているかどうか、ということをあまり気にしなくてよくなっています。

(追記: carton で依存モジュールの管理ができるようになったことも大きいですね!!)

dual-lived なモジュールの増加

5.12(だったかな?)のあたりから、dual lived なモジュールが増えました。これにより、おもだった標準添付モジュールは CPAN からもいれることができるようになっています。

Lancaster 合意による --pureperl-only オプション

--pureperl-only オプションが合意されたことにより、pure perl でモジュールバンドルをおこなうことが容易になりつつあります(現状だと EU::MM がまだなので微妙ですが。。)。

fatpack の普及

App::FatPacker がだいぶつかえるようになってきているので、pure perl のモジュールであれば、fatpack して deploy することが容易です。

CGI 型のレンタルサーバーの衰退

CGI 型のレンタルサーバーは衰退し、VPS やクラウドが全盛です。現状、あらたにレンタルサーバーを契約する理由はほぼ無いでしょう。

VPS やクラウドでは root 権限が付与されるので、標準添付モジュールについて考える必要性はあまりなくなっています。

OS vendor によるディストリビューションの分離

近年、OS vendor は、プログラミング言語の標準ディストリビューションにふくまれているライブラリなどを、そのままインストールさせず、こまかくわけてパッケージングすることがふえており、標準添付ライブラリであっても、それがインストールされていることが期待できなくなっています。

これもまた、標準添付であることの意味がうすれる要因のひとつです。

まとめ

標準添付のものであっても、dual lived なものについては、cpanfile に記述しましょう。そうすることにより、将来的に問題がおきづらくなります。 このあたりは、拙作のscan_prereqs_cpanfileをつかうと、dual lived なものも含めてリストアップしてくれるので便利。

なお、dual lived なモジュールについては、バージョンを指定してあげるとなおよいです(古いバージョンにバグがあることが多々ありますので)