2013年のCPANモジュール作成事情
Upcoming SlideShare
Loading in...5
×
 

2013年のCPANモジュール作成事情

on

  • 1,551 views

talked at Fukuoka Perl Workshop on 18th CPAN birthday

talked at Fukuoka Perl Workshop on 18th CPAN birthday

Statistics

Views

Total Views
1,551
Views on SlideShare
1,091
Embed Views
460

Actions

Likes
2
Downloads
0
Comments
0

5 Embeds 460

http://d.hatena.ne.jp 417
http://cloud.feedly.com 31
https://twitter.com 10
http://silverreader.com 1
http://feedly.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

2013年のCPANモジュール作成事情 2013年のCPANモジュール作成事情 Presentation Transcript

  • 2013年のCPAN モジュール作成事情 Kenichi Ishigaki (@charsbar) Fukuoka Perl Workshop #24 Oct 26, 2013 (Happy CPAN birthday)
  • 例によってCPANTSネタです • 昨年こちらで話した分析の元ネタ • この一年で、いろんなことがありました • YAPC本編でもその一部について話してき ました • 今日はその続きとして、papixさんが話す はずだったネタについて話します
  • まずは軽く昨年の おさらいを
  • Top 10 (2012年版) 1 XAICRON 2 PAWAPAWA (new) (2011-) 3 BAYASHI 4 MORIYA 5 SATOH 6 MATTN (new) (2007-) 7 TOMITA 8 TYPESTER 9 CHIBA 10 YAMAMOTO (new) (2006-)
  • 日本人の新規作者数 (2012年版) 60 51 50 43 41 40 29 30 27 25 20 20 17 14 14 2003 2004 11 10 8 6 5 0 ~2000 2000 2001 2002 2005 2006 2007 2008 2009 2010 2011 2012
  • 日本人作者のリリース数 (2012年版) 2500 2116 2041 2000 1841 1558 1500 1147 1020 1020 1000 569 500 245 295 291 173 41 47 ~2000 2000 0 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012
  • それから1年
  • 採点基準の変化 • 春のQA Hackathon以降、採点基準が7増 12減しています(YAPC後に1増しました) • 実装の方もだいぶ修正しました • が、今日もまた例外的なディストリビュー ションの作者氏からバグレポートが… • 明日にでもまた1つ基準を増やそうと思っ ています
  • 日本人のデータに もかなりの脱落が… 0.130307 2013/03/07 - turned out to have long ignored authors whose emails are CENSORED; added nearly hundred people to the list.
  • 実はYAPC後にもいろいろ発覚 0.130930 2013/09/30 - applied more liberal detection rule and added twelve people (hideo55++) 0.131002 2013/10/02 - applied more liberal detection rule and added twelve people (again) (motemen++)
  • 最終的に今年のグラフは こんな感じになっています
  • 日本人の新規作者数 (2013年版) 70 62 60 54 53 50 47 45 43 40 40 36 33 30 20 14 14 2003 2004 11 10 8 6 5 0 ~2000 2000 2001 2002 2005 2006 2007 2008 2009 2010 2011 2012 2013
  • 日本人作者のリリース数 (2013年版) 3000 2811 2500 2221 2135 1943 2000 1849 1604 1500 1149 1023 1000 569 500 247 41 2000 291 173 47 ~2000 295 0 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
  • Top 10 (2013年10月版) 1 BAYASHI (2008-) 2 YAKEX (new) (2012-) 3 MOZNION (new) (2012-) 3 HIDEAKIO (new) (2011-) 5 SYOHEX (new) (2011-) 5 AKIYM (new) (2012-) 7 SYAGI (new) (2012-) 7 ZIGUZAGU (new) (2007-) 7 CHIBA (inactive) (2007-) 10 ANAZAWA (new) (2011-) 10 PAPIX (new) (2012-) 10 SOH (new) (2012-) 10 PAWAPAWA (2011-) 10 MORIYA (inactive) (2009-) 10 RINTARO (inactive) (2007-)
  • 若者の台頭、 すばらしいですね • でも、この急激な変化の理由は? • もちろん採点基準が変わった影響は あるでしょうが、それだけ?
  • リリース年とスコアの関係 98 97.52 97 96.65 96.32 96.07 96 96.22 95.43 95.01 95 95.26 94.97 94.58 94 93.26 93.84 国内 93 93.07 92.45 全世界 92.42 92 91.47 92.03 91.44 91 90 89.23 89 88.94 88 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
  • リリース年とリリース数の関係 25000 22155 22582 21822 20998 20575 20000 18441 14455 15000 12268 12702 国内 11191 全世界 10000 5000 173 570 1024 1148 1603 2133 2221 2762 1934 1847 0 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
  • ディストリビューションを作成する ツールの変化? • ひな形を作成するツールの分析はなかなか大変 • 生成されたドキュメントに痕跡が残っていることも ありますが… • インストールまわりのツールについてはCPAN Meta filesを見ればある程度分析可能
  • CPAN Meta files • META.yml/META.json • いちいちMakefile.PL/Build.PLを実 行しなくてもいいように • 本格的な普及は2005年くらいから • どんなツールで生成したかの情報が 記録されている
  • Stats on META Generator http://cpants.cpanauthors.org/stats/meta_generator
  • META generatorと平均スコア(全世界版) 100.00 98.00 96.00 94.00 92.00 90.00 88.00 2004 2005 2006 ExtUtils::MakeMaker 2007 Module::Build 2008 2009 Module::Install 2010 Dist::Zilla 2011 Milla Minilla 2012 2013
  • META generatorと平均スコア(国内版) 100.00 98.00 96.00 94.00 92.00 90.00 88.00 2004 2005 2006 ExtUtils::MakeMaker 2007 Module::Build 2008 2009 Module::Install 2010 Dist::Zilla 2011 Milla Minilla 2012 2013
  • META generatorとユニークユーザ数 (全世界版) 2500 2000 49 396 191 312 9 1500 240 359 425 364 307 158 94 49 1000 236 295 256 73 310 237 328 350 320 192 324 316 30 121 500 889 962 993 1031 969 891 889 920 748 677 0 2004 2005 2006 ExtUtils::MakeMaker 2007 2008 Module::Build 2009 Module::Install 2010 Dist::Zilla 2011 Milla Minilla 2012 2013
  • META generatorとユニークユーザ数 (国内版) 250 200 57 150 7 51 100 72 55 67 34 67 14 7 65 16 9 8 50 11 2 4 68 1 68 64 56 41 23 11 43 48 48 2010 2011 2012 32 39 20 0 2004 2005 2006 ExtUtils::MakeMaker 2007 2008 Module::Build 2009 Module::Install Dist::Zilla Milla Minilla 2013
  • META generatorとリリース数 (全世界版) 25000 20000 992 3817 5865 86 15000 4275 6152 6967 5140 4070 2817 1541 10000 2383 3327 3655 942 2305 6938 4198 2783 1074 419 1945 3913 3260 3587 3083 733 1163 5000 6921 7247 2005 2006 7584 8506 7536 7213 6824 6966 2011 2012 5456 5745 0 2004 ExtUtils::MakeMaker 2007 Module::Build 2008 2009 Module::Install 2010 Dist::Zilla Milla Minilla 2013
  • META generatorとリリース数 (国内版) 3000 2500 4 2000 970 37 1500 227 1320 50 1488 1108 907 923 468 1000 175 503 109 500 164 146 9 86 81 320 377 428 138 690 0 31 115 2004 473 406 2005 2006 ExtUtils::MakeMaker 479 2007 2008 Module::Build 370 2009 497 364 2010 Module::Install Dist::Zilla 329 2011 Milla Minilla 349 2012 2013
  • 満点に注目してみた 満点リリース数(国内版) リリース数(国内版) 3000 3000 2500 2500 2000 2000 1500 1500 970 227 651 1000 923 468 1000 93 446 300 500 377 244 131 2012 2012 2013 349 2013 329 149 0 428 329 500 0 ExtUtils::MakeMaker Module::Build ExtUtils::MakeMaker Module::Build Module::Install Dist::Zilla Module::Install Dist::Zilla Milla Minilla Milla Minilla
  • 満点に注目してみた 満点リリース(全世界版) リリース(全世界版) 25000 25000 20000 20000 1074 419 6938 15000 15000 6967 3327 10000 10000 1945 721 3885 5000 3587 3083 4047 5000 1014 1604 769 1451 2471 2133 2012 2013 0 6966 5745 0 2012 2013 ExtUtils::MakeMaker Module::Build ExtUtils::MakeMaker Module::Build Module::Install Dist::Zilla Module::Install Dist::Zilla Milla Minilla Milla Minilla
  • Top10作者とMETA generators BAYASHI YAKEX MOZNION HIDEAKIO SYOHEX Module::Build, Minilla Dist::Zilla Minilla, Module::Build Module::Build, Minilla Minilla, Module::Install AKIYM Minilla, Module::Install, Module::Build SYAGI ExtUtils::MakeMaker, Module::Build ZIGUZAGU ANAZAWA Module::Install Module::Install Minilla, Module::Install, Module::Build Module::Install, Minilla Module::Install PAPIX SOH PAWAPAWA
  • これからモジュールを書くなら、 Minillaがおすすめ • Minillaを使うと初心者でも形式的な問題を起こしづらい • 最初はpmsetupとかModule::Setupでもいいんですが、 継続的なメンテを考えるとMinillaが有利 • いまもメンテナンスが続いている • Module::Installは時代に取り残されつつある • 大量の依存モジュールを気にしないならDist::Zillaや Millaでも • 知識があるならお好きなように
  • Minilla: CPANモジュールを 書く人のツール • (M::I - inc) + shipit + (dzil - plugins) • ひな形の作成からリリースまで、基本的なことは ひと通りできる • ほかのツールの使い方を覚える必要がない • tokuhiromさんの流儀にしたがえば設定も不要 • 依存モジュールが少なくインストールが楽 • Windowsでも問題なくインストールできる
  • インストールには関与しない • CPANモジュールを使うだけならインストール不要 • インストールは既存のツール(Module::Build)に まかせる • 依存モジュールの制約が少ない
  • 基本的な使い方
  • 新規の場合はまず ひな形を用意 $ minil new Foo-Bar $ cd Foo-Bar minil new Foo::Bar でも大丈夫
  • お好みで初期状態を コミットしておく $ git commit -m "initial import" git init && git add . はひな形作成時 に済んでいます。
  • .pmファイルやテスト ファイルを編集する 依存モジュールが増えたら cpanfile も更新すること gitの管理下にないファイルは無視されます prove派の人はaddのし忘れに注意 META.jsonやBuild.PLなどへの修正は無効 minil dist (minil release) 時に上書きされます • Changesの日付やバージョンは更新不要 • リリース前の変更は常に{{$NEXT}}の下に書いていく • • • •
  • テストを実行する $ minil test $ minil test --all リリース時に自動実行されるテストも試したい場合
  • ディストリビューションを 生成する $ minil build もっぱらデバッグ用
  • tarballを生成 $ minil dist $ minil dist --no-test 事故防止のため ./Build dist は殺されています
  • 開発中のディストリビューション をインストールする $ minil install $ minil install --no-test • v0.8.0の時点ではデフォルトで二度テストが走ってしまう →修正を取り込んでもらったので次版からは大丈夫 • ./Build install でも可
  • リリースの前に… • buildtool_not_executable問題 • core.autocrlf • Windowsでも使えますが、リリー スだけは別の環境でするのがお すすめ
  • CPANにリリースする $ minil release $ minil release --trial • 書きかけのファイルが残っているとリリースできません • ひとまず.gitignoreに追加するか、ファイルの存在自体隠蔽したい 場合はファイル名に.bakをつけるなどしてください
  • Githubにのみリリースする (CPANにリリースしない) $ FAKE_RELEASE=1 minil release この辺、名前と実態があっていない気もします
  • CPANにもGithubにもリリース したくない場合は--dry-run $ minil release --dry-run
  • 既存のモジュールを Minilla化する $ minil migrate • subversionのリポジトリなどは先にgitのリポジトリに変換しておくこと • gitリポジトリになっていない場合、v0.8.0の段階では自前でgit init必要 →これも修正を取り込んでもらえました • 隠しファイルなどがあるとパーミッションエラーで変換が止まることも • v0.8.0 時点ではMakefile.PLからの移行時に多少ゴミが残るので、気に なる場合は削除
  • もう少し高度な使い方? • tokuhiromさんの流儀にしたがう、という大 きなメリットが消えてしまうので、あまりお すすめしません • Minillaで頑張るよりは、Dist::Zillaに移行 した方が楽かと
  • XSモジュールを新規作成する $ minil new -p XS Foo-XS XSモジュールのmigrateの場合は-pオプション不要
  • 設定ファイルを編集する • • • XSを書くのでなければ通常不要 Minillaのユースケース上はINIファイルと ほぼ同じ書き方 デフォルトの設定が上書きされるものと、 そうでないものがあるので注意
  • Module::Buildの拡張機能を使う • よほど特殊なことをしたいのでなければ Dist::Zillaに… • ディストリビューションのルートに builder/MyBuilder.pmというファイルを作 成すると、Minillaが内部でModule::Build を利用する際に拡張があたります
  • Questions?