読者です 読者をやめる 読者になる 読者になる

Debuginfo

思考とアウトプット

CPAN Authorになるまでの軌跡

Summary

結論。CPAN Authorになれました\(^o^)/。http://search.cpan.org/~shoheik/
多くの方がウェブ上に情報を公開してくださっているのであまり迷いませんでした。
私も簡単にですが,ログを残したいと思います。

1. 下調べ

まずは何をすればいいのかをリサーチ。しっかりドキュメントを残してくれてる方々にいつも感謝です。尊敬します。

ふむふむ。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$

参考:

モジュールの追加を可能にする

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を使って見通しを良くしてみる。


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


以上です。色々学びました。一度やっておくと次は楽ですね。