最近、わたしも使用しているインタープリターのPerlの利用率が落ちています。それに比例するようにPerl関係の書籍の発売もほとんど無くなったのですが、先日、久しぶりにわたしが読みたいと思うPerlを取り上げた書籍が発売されました。タイトルは「モダンPerl」。当日は、その著者の方の話を聞くことが出来ました。
モダンPerlを書く上で一番時間がかけたのがテストの話だったそうです。
モダンPerl入門
基本的なテストの充実が一番CPが高い。
- マネジャーは
- テスト!=追加作業と考えがち
- 上のレベルから無理難題を振りかけられないために、エンジニアがまともなコードを書くためにテストが必要。
- テスト
- デバッグ > 対処療法。
- 予防させる方法としてテストが必要。
- 行程を減らす意味でもテストが必要、コストの削減。
- 現実的な落としどころ
- 80%を最大限、テストする。
- テストの内容
-
- 手動テストのデメリット
- 手順をExcelに書くのではなく、再現性を行うこと。
- 前提として人は間違うもの。手動テストは良くない。テストのクオリティの維持。テストの作業者によって左右されないことが必要。
- テストのノウハウが口伝になっていて蓄積されないのが現状で、これは問題がある。
- 作業をする人の時間を食う、工数の増加。
- 新しいテスト
- 自動テスト
- 一度自動化すればコストはかからない。コマンドを実行した時点でテストを実行してしまう。
- バグを見つけたら蓄積する。同じバグは起こさない。
- テストの準備
- JUnit
- xUnit
- などのフレームワークがある。
- フレームワークがあるとローカルルールに縛られてしまう。フレームワークを現実にあわせるのは面倒くさい。
テストは潜在、機能することに最大の意義がある。状況に対して柔軟な対応ができること。
Perlはどうでしょう?と提案。「Perl=CGI」と言えたのはは5.5の時代まで(1998)の話し、今のPerlは大きく進化しています。
- テスト言語としてのPerl
- テストフレームワークが言語として含まれている。
- makle testコマンド
- proveコマンド
- Perlのコミュニティは異常なほどテストが好き
いろんなプラットフォームでテストをしているデータがCPANにあがっている。
土壌がある。様々な環境で動作テスト済み。
- 外部コマンドとの連携
- テスト
my $out = qx/
- CPAN
世界中のPerlの技術者の集合体
CPANから引いてきて、手早く様々なものをテストできる。
- テストファイル
- シンプルで有れば有るほどよい。便利だけど難しい、となると人は利用しなくなる。
- TAP
- 2つのTAPで行える。
- Apache::test
- CPANからてにはいる。
- すべて面倒を見てくれる。
- 複数の開発者がいてもコンフリクトすることが防げる。
- サーバーが自在に立ち上げられるのが便利。
- mod_perlアプリもOK。
- PHPもOK。TAPの出力さえ有れば、何でもOK。
まとめ
請負の仕事は「理想は理想」
さまざまな環境が混じり合って製品(アプリケーション)が作られる。
現実的な落としどころとしてPerlは使える言語。
コミットがあるごとにテストを行う。
バージョンコントロールされているのでどこでエラーが起きたかがわかる。
テストの重要性
簡単にできる。>テストが苦にならない。>空いた時間を別に使える。
Japan Perl Association
ジャパン パール アソシエーション
大人のModern Perl
大手企業も参加する。
4月から開始
YAPC
会員募集中だそうです。
Developers Summit 2009の備忘録として、出席をしたセミナーを記録にとどめておきます。セミナーの写真撮影が禁止でしたので文字だけの備忘録となっています。
mizunuma 2月 21st, 2009
Posted In: Developers Summit 2009