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 なモジュールについては、バージョンを指定してあげるとなおよいです(古いバージョンにバグがあることが多々ありますので)