本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはOSS(Open Source Software)開発を活発にされている水音ぴねさんで、テーマは「CPANモジュールの品質を支えるCI技術」です。
本稿のサンプルコードは、WEB+DB PRESS Vol.103のサポートサイトから入手できます。
CPAN Testers── コミュニティによる品質維持
PerlにはCPANという中央リポジトリがあり、さまざまなモジュールがOSSとして利用できます。CPANは、CPAN Testersというしくみによって品質が維持されています。はじめに、そのしくみを解説します。
CPAN Testersとは
CPAN Testersは、CPANのモジュールを有志がテストし、その結果を集計してまとめているWebサービスです。手もとの環境だけでなく、さまざまな環境でのテスト結果を気軽に閲覧できます。CPAN Testersへは、metaCPANの各モジュールのページから移動できます(図1)。metaCPANはCPANをより使いやすくしたWebサービスです。
CPAN Testersでは、macOS、Windows、Linux、FreeBSDなど、さまざまなOSでテストされています。それぞれのOS上で複数のPerlバージョンでテストされるため、テストされる環境の組み合わせは膨大です。こういった環境を自前で用意し、リリースごとにテストを行うとしたら大変な作業です。このようなエコシステムが整っているのは、Perlの良いところです。
CPAN Testersの読み方
CPAN Testersでは、どの組み合わせでテストが成功したかという情報だけではなく、テスト時の環境の情報やログを閲覧できます。CPAN Testersにアクセスしたら、テスト結果を見たい組み合わせをクリックし、見たいレポートを選びます(図2)。
図3は拙作のHash::Util::Pickのテスト結果です。これはPerlをC言語で拡張したXSモジュールであるため、テストの際にC言語のコンパイルが必要です。レポートからはどのバージョンのgccが使われたか、コンパイルオプションは何かを見ることができます。
CPAN Testersはテスト時の環境や実行ログがかなり詳細にレポートされるしくみなため、特定の環境だけでテストに失敗したときも修正が比較的容易です。
<続きの(2)はこちら。>
- 特集1
イミュータブルデータモデルで始める
実践データモデリング
業務の複雑さをシンプルに表現!
- 特集2
いまはじめるFlutter
iOS/Android両対応アプリを開発してみよう
- 特集3
作って学ぶWeb3
ブロックチェーン、スマートコントラクト、NFT