CPAN Authorになるまでの軌跡
Summary
結論。CPAN Authorになれました\(^o^)/。http://search.cpan.org/~shoheik/
多くの方がウェブ上に情報を公開してくださっているのであまり迷いませんでした。
私も簡単にですが,ログを残したいと思います。
1. 下調べ
まずは何をすればいいのかをリサーチ。しっかりドキュメントを残してくれてる方々にいつも感謝です。尊敬します。
- http://blog.livedoor.jp/sasata299/archives/51284970.html - (゚∀゚)o彡 sasata299's blog
- http://d.hatena.ne.jp/shiba_yu36/20100724/1279959839 - Dive into the Tech World!
- http://www.kawa.net/works/perl/tips/cpan.html - Kawa.netxp [Perl] 作成したモジュールをCPANで公開する手順
- http://itpro.nikkeibp.co.jp/article/COLUMN/20071011/284280/?P=1&ST=develop - Part1 正しいPerl/CGIの書き方
ふむふむ。CPANにアップ予定のコードは完全じゃないけど、テスト中に修正していくことにします。
まずは、
2. 雛形の作成
最初はModule::Starter::PBP で雛形の作成を行う。
$ cpanm Module::Starter::PBP .. $ perl -MModule::Starter::PBP=setup .. Please enter your full name: # 実名を入れてみる Please enter an email address: # よく使っているメアドを入れてみる $ cd $HOME/dev # 開発用Directoryに移動 $ module-starter --module=Graph::Similarity $ ls Graph-Similarity/ Build.PL Changes ignore.txt lib Makefile.PL MANIFEST README t
その次はテストを行いビルド用の必要モジュールをインストールするみたい。
$ cd Graph-Similarity $ perl Build.PL $ perl Build $ perl Build test # failed due to missing Test::Perl::Critic $ cpanm Test::Perl::Critic $ perl Build test # failed. Changed $VERSION to "our $VERSION" $ perl Build test # now it's ok
Makefile.PLの変更
> cp Makefile.PL Makefile.PL.org > vi Makefile.PL # replace with the below use lib qw(lib); use Module::Build::Compat; Module::Build::Compat->run_build_pl(args => \@ARGV); Module::Build::Compat->write_makefile(build_class => 'Module::Build');
MANIFEST.SKIP を作成
\bRCS\b \bCVS\b ^MANIFEST\. ^Makefile$ ^Build$ ^Build.bat$ ^_build/ \.(bak|tdy|old|tmp)$ ~$ ^blib/ ^pm_to_blib \.cvsignore \.gz$
参考:
- http://d.hatena.ne.jp/unyaunya7/20080323/1206248628 - 色々メモにっき/Module::Starter使ってみる
モジュールの追加を可能にする
Graph::Similarityはメソッドを切り分けるようなクラスにしようと考えているので装用モジュールの追加を行う。
$ cpanm Module::Starter::Smart # モジュール追加するために入れる $ vi $HOME/.module-starter/config # add Module::Starter::Smart in the plugins line .. plugins: Module::Starter::PBP Module::Starter::Smart .. $ module-starter --module=Graph::Similarity::SimRank --distro=Graph-Similarity $ module-starter --module=Graph::Similarity::SimilarityFlooding --distro=Graph-Similarity $ module-starter --module=Graph::Similarity::CoupledNodeEdgeScoring --distro=Graph-Similarity
3. TDDでLibraryを書く
TDDで書くので途中出力できると助かる。
Module::Buildではverbose=1をつければprint Dumper %hogeなども表示してくれる。
proveで"-I"でライブラリをしてもOK.
$ perl Build test verbose=1 # or if you want to use prove, $ prove -I lib t/01***.t
デザインパターンFactory Methodを使って見通しを良くしてみる。
- http://dann.g.hatena.ne.jp/dann/20080531/p3 - Mooseでデザパタ - Factory Methodパターン/dann's blog
Unit Testについての理解が足りないことに気づく。Mockオブジェクトを使い依存をなくして単体テストをするみたい。
今回は比較的モジュール間の依存関係はない。技術者としてこれは通勤時間に勉強していこう。
もともとコードはあったので梨ファクタリングしながらコーディングしました。
4. PAUSEに登録
https://pause.perl.org/pause/query?ACTION=request_id からIDの申請をする。
アカウントは1時間以内に発行されました。
5. POD, perldocを書く
POD仕様とにらめっこしながらひたすら書く。まだ足りないけど,後でアップしよう。。
PAUSE モジュールのアップロード
$ perl Build.PL $ perl Build $ perl Build test $ perl Build dist $ perl Build disttest
でtar.gzをアップロードする。私の場合は数分でアップロード完了。
バージョンしっかりみているので上げていかないとアップロードに失敗します。
6. Name Spaceの登録
Graph::Similarityを申請しましたが,これは必要だったのかよくわかりません。
7. Cpan testers reportsのFailを直す
http://www.cpantesters.org/author/S/SHOHEIK.html
の結果がメールに送られてきます。Failureを地道に直します。
8. Authorの写真をアップロード
http://blog.clouder.jp/archives/000992.html
以上です。色々学びました。一度やっておくと次は楽ですね。