Suche senden
Hochladen
2013年のCPANモジュール作成事情
•
2 gefällt mir
•
3,114 views
C
charsbar
Folgen
talked at Fukuoka Perl Workshop on 18th CPAN birthday
Weniger lesen
Mehr lesen
Melden
Teilen
Melden
Teilen
1 von 50
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
2017年春のPerl
2017年春のPerl
charsbar
2016年のPerl (Long version)
2016年のPerl (Long version)
charsbar
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
charsbar
Json(::PP) is a-changing
Json(::PP) is a-changing
charsbar
What you need to remember when you upload to CPAN
What you need to remember when you upload to CPAN
charsbar
Analyze CPAN, Analyze Community
Analyze CPAN, Analyze Community
charsbar
Fukuoka pm #27 LINE BOT API With Perl
Fukuoka pm #27 LINE BOT API With Perl
Kazuhiro Osawa
LINE BOT on the Perl (YAPC::Hokkaido ver.)
LINE BOT on the Perl (YAPC::Hokkaido ver.)
Kazuhiro Osawa
Empfohlen
2017年春のPerl
2017年春のPerl
charsbar
2016年のPerl (Long version)
2016年のPerl (Long version)
charsbar
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
charsbar
Json(::PP) is a-changing
Json(::PP) is a-changing
charsbar
What you need to remember when you upload to CPAN
What you need to remember when you upload to CPAN
charsbar
Analyze CPAN, Analyze Community
Analyze CPAN, Analyze Community
charsbar
Fukuoka pm #27 LINE BOT API With Perl
Fukuoka pm #27 LINE BOT API With Perl
Kazuhiro Osawa
LINE BOT on the Perl (YAPC::Hokkaido ver.)
LINE BOT on the Perl (YAPC::Hokkaido ver.)
Kazuhiro Osawa
Amon2 で造られた api サーバを引き継いで課金の実装をしました話
Amon2 で造られた api サーバを引き継いで課金の実装をしました話
Tomoo Amano
モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話
モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話
Tomoo Amano
Mojoliciousのログ出力を改造する in chiba.pm #3
Mojoliciousのログ出力を改造する in chiba.pm #3
Ayumu Itou
Mojolicious+redisでチャットを作った
Mojolicious+redisでチャットを作った
Tetsuya Tatsumi
PerlでWeb API入門
PerlでWeb API入門
Yusuke Wada
Mojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみよう
charsbar
JSON, JSON::PP, and more
JSON, JSON::PP, and more
charsbar
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門
Yusuke Wada
Gofのデザインパターン stateパターン編
Gofのデザインパターン stateパターン編
Ayumu Itou
cpanfile
cpanfile
Yoshihiro Sasaki
変数、リファレンス
変数、リファレンス
charsbar
Perl logging
Perl logging
keroyonn
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
Keizo Tatsumi
OSC Nagoya NETMF 160528
OSC Nagoya NETMF 160528
Atomu Hidaka
プロファイラGuiを用いたコード分析 20160610
プロファイラGuiを用いたコード分析 20160610
HIDEOMI SUZUKI
html5j パフォーマンス部第一回勉強会 Webパフォーマンス事始め
html5j パフォーマンス部第一回勉強会 Webパフォーマンス事始め
Yoichiro Takehora
Interop2018 ブースセッション資料
Interop2018 ブースセッション資料
一清 井上
【Interop Tokyo 2016】 Network Automationによるクラウドネットワークのあり方
【Interop Tokyo 2016】 Network Automationによるクラウドネットワークのあり方
Juniper Networks (日本)
111114_GS道場事前企業勉強会
111114_GS道場事前企業勉強会
Global_Students
研究
研究
Kenta Takahashi
20211227 JAWS-UG初心者支部 LT大会 numaguchi
20211227 JAWS-UG初心者支部 LT大会 numaguchi
Shigeru Numaguchi
Weitere ähnliche Inhalte
Andere mochten auch
Amon2 で造られた api サーバを引き継いで課金の実装をしました話
Amon2 で造られた api サーバを引き継いで課金の実装をしました話
Tomoo Amano
モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話
モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話
Tomoo Amano
Mojoliciousのログ出力を改造する in chiba.pm #3
Mojoliciousのログ出力を改造する in chiba.pm #3
Ayumu Itou
Mojolicious+redisでチャットを作った
Mojolicious+redisでチャットを作った
Tetsuya Tatsumi
PerlでWeb API入門
PerlでWeb API入門
Yusuke Wada
Mojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみよう
charsbar
JSON, JSON::PP, and more
JSON, JSON::PP, and more
charsbar
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門
Yusuke Wada
Gofのデザインパターン stateパターン編
Gofのデザインパターン stateパターン編
Ayumu Itou
cpanfile
cpanfile
Yoshihiro Sasaki
変数、リファレンス
変数、リファレンス
charsbar
Perl logging
Perl logging
keroyonn
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
Andere mochten auch
(13)
Amon2 で造られた api サーバを引き継いで課金の実装をしました話
Amon2 で造られた api サーバを引き継いで課金の実装をしました話
モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話
モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話
Mojoliciousのログ出力を改造する in chiba.pm #3
Mojoliciousのログ出力を改造する in chiba.pm #3
Mojolicious+redisでチャットを作った
Mojolicious+redisでチャットを作った
PerlでWeb API入門
PerlでWeb API入門
Mojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみよう
JSON, JSON::PP, and more
JSON, JSON::PP, and more
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門
Gofのデザインパターン stateパターン編
Gofのデザインパターン stateパターン編
cpanfile
cpanfile
変数、リファレンス
変数、リファレンス
Perl logging
Perl logging
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
Ähnlich wie 2013年のCPANモジュール作成事情
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
Keizo Tatsumi
OSC Nagoya NETMF 160528
OSC Nagoya NETMF 160528
Atomu Hidaka
プロファイラGuiを用いたコード分析 20160610
プロファイラGuiを用いたコード分析 20160610
HIDEOMI SUZUKI
html5j パフォーマンス部第一回勉強会 Webパフォーマンス事始め
html5j パフォーマンス部第一回勉強会 Webパフォーマンス事始め
Yoichiro Takehora
Interop2018 ブースセッション資料
Interop2018 ブースセッション資料
一清 井上
【Interop Tokyo 2016】 Network Automationによるクラウドネットワークのあり方
【Interop Tokyo 2016】 Network Automationによるクラウドネットワークのあり方
Juniper Networks (日本)
111114_GS道場事前企業勉強会
111114_GS道場事前企業勉強会
Global_Students
研究
研究
Kenta Takahashi
20211227 JAWS-UG初心者支部 LT大会 numaguchi
20211227 JAWS-UG初心者支部 LT大会 numaguchi
Shigeru Numaguchi
Oracle Database統合のベスト・プラクティス
Oracle Database統合のベスト・プラクティス
オラクルエンジニア通信
Ähnlich wie 2013年のCPANモジュール作成事情
(10)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
OSC Nagoya NETMF 160528
OSC Nagoya NETMF 160528
プロファイラGuiを用いたコード分析 20160610
プロファイラGuiを用いたコード分析 20160610
html5j パフォーマンス部第一回勉強会 Webパフォーマンス事始め
html5j パフォーマンス部第一回勉強会 Webパフォーマンス事始め
Interop2018 ブースセッション資料
Interop2018 ブースセッション資料
【Interop Tokyo 2016】 Network Automationによるクラウドネットワークのあり方
【Interop Tokyo 2016】 Network Automationによるクラウドネットワークのあり方
111114_GS道場事前企業勉強会
111114_GS道場事前企業勉強会
研究
研究
20211227 JAWS-UG初心者支部 LT大会 numaguchi
20211227 JAWS-UG初心者支部 LT大会 numaguchi
Oracle Database統合のベスト・プラクティス
Oracle Database統合のベスト・プラクティス
Mehr von charsbar
Common boolean class_for_perl5
Common boolean class_for_perl5
charsbar
2018年夏のPerl5
2018年夏のPerl5
charsbar
萬國之津梁
萬國之津梁
charsbar
Better detection of what modules are used by some Perl 5 code
Better detection of what modules are used by some Perl 5 code
charsbar
2017年夏のPerl
2017年夏のPerl
charsbar
perl language update
perl language update
charsbar
On UnQLite
On UnQLite
charsbar
typemap in Perl/XS
typemap in Perl/XS
charsbar
Annual Report 2012
Annual Report 2012
charsbar
DBD::SQLite
DBD::SQLite
charsbar
CPANTS: Kwalitative website and its tools
CPANTS: Kwalitative website and its tools
charsbar
CPANTS 2012
CPANTS 2012
charsbar
Revisiting ppm
Revisiting ppm
charsbar
關於perl的文件翻譯
關於perl的文件翻譯
charsbar
Practical Bug Reporting
Practical Bug Reporting
charsbar
Top Tens of 2008/2009
Top Tens of 2008/2009
charsbar
Mehr von charsbar
(16)
Common boolean class_for_perl5
Common boolean class_for_perl5
2018年夏のPerl5
2018年夏のPerl5
萬國之津梁
萬國之津梁
Better detection of what modules are used by some Perl 5 code
Better detection of what modules are used by some Perl 5 code
2017年夏のPerl
2017年夏のPerl
perl language update
perl language update
On UnQLite
On UnQLite
typemap in Perl/XS
typemap in Perl/XS
Annual Report 2012
Annual Report 2012
DBD::SQLite
DBD::SQLite
CPANTS: Kwalitative website and its tools
CPANTS: Kwalitative website and its tools
CPANTS 2012
CPANTS 2012
Revisiting ppm
Revisiting ppm
關於perl的文件翻譯
關於perl的文件翻譯
Practical Bug Reporting
Practical Bug Reporting
Top Tens of 2008/2009
Top Tens of 2008/2009
2013年のCPANモジュール作成事情
1.
2013年のCPAN モジュール作成事情 Kenichi Ishigaki (@charsbar) Fukuoka Perl
Workshop #24 Oct 26, 2013 (Happy CPAN birthday)
2.
例によってCPANTSネタです • 昨年こちらで話した分析の元ネタ • この一年で、いろんなことがありました •
YAPC本編でもその一部について話してき ました • 今日はその続きとして、papixさんが話す はずだったネタについて話します
3.
まずは軽く昨年の おさらいを
4.
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-)
5.
日本人の新規作者数 (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
6.
日本人作者のリリース数 (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
7.
それから1年
8.
採点基準の変化 • 春のQA Hackathon以降、採点基準が7増 12減しています(YAPC後に1増しました) •
実装の方もだいぶ修正しました • が、今日もまた例外的なディストリビュー ションの作者氏からバグレポートが… • 明日にでもまた1つ基準を増やそうと思っ ています
9.
日本人のデータに もかなりの脱落が… 0.130307 2013/03/07 - turned
out to have long ignored authors whose emails are CENSORED; added nearly hundred people to the list.
10.
実は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++)
11.
最終的に今年のグラフは こんな感じになっています
12.
日本人の新規作者数 (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
13.
日本人作者のリリース数 (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
14.
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-)
15.
若者の台頭、 すばらしいですね • でも、この急激な変化の理由は? • もちろん採点基準が変わった影響は あるでしょうが、それだけ?
16.
リリース年とスコアの関係 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
17.
リリース年とリリース数の関係 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
18.
ディストリビューションを作成する ツールの変化? • ひな形を作成するツールの分析はなかなか大変 • 生成されたドキュメントに痕跡が残っていることも ありますが… •
インストールまわりのツールについてはCPAN Meta filesを見ればある程度分析可能
19.
CPAN Meta files •
META.yml/META.json • いちいちMakefile.PL/Build.PLを実 行しなくてもいいように • 本格的な普及は2005年くらいから • どんなツールで生成したかの情報が 記録されている
20.
Stats on META
Generator http://cpants.cpanauthors.org/stats/meta_generator
21.
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
22.
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
23.
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
24.
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
25.
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
26.
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
27.
満点に注目してみた 満点リリース数(国内版) リリース数(国内版) 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
28.
満点に注目してみた 満点リリース(全世界版) リリース(全世界版) 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
29.
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
30.
これからモジュールを書くなら、 Minillaがおすすめ • Minillaを使うと初心者でも形式的な問題を起こしづらい • 最初はpmsetupとかModule::Setupでもいいんですが、 継続的なメンテを考えるとMinillaが有利 •
いまもメンテナンスが続いている • Module::Installは時代に取り残されつつある • 大量の依存モジュールを気にしないならDist::Zillaや Millaでも • 知識があるならお好きなように
31.
Minilla: CPANモジュールを 書く人のツール • (M::I
- inc) + shipit + (dzil - plugins) • ひな形の作成からリリースまで、基本的なことは ひと通りできる • ほかのツールの使い方を覚える必要がない • tokuhiromさんの流儀にしたがえば設定も不要 • 依存モジュールが少なくインストールが楽 • Windowsでも問題なくインストールできる
32.
インストールには関与しない • CPANモジュールを使うだけならインストール不要 • インストールは既存のツール(Module::Build)に まかせる •
依存モジュールの制約が少ない
33.
基本的な使い方
34.
新規の場合はまず ひな形を用意 $ minil new
Foo-Bar $ cd Foo-Bar minil new Foo::Bar でも大丈夫
35.
お好みで初期状態を コミットしておく $ git commit
-m "initial import" git init && git add . はひな形作成時 に済んでいます。
36.
.pmファイルやテスト ファイルを編集する 依存モジュールが増えたら cpanfile も更新すること gitの管理下にないファイルは無視されます prove派の人はaddのし忘れに注意 META.jsonやBuild.PLなどへの修正は無効 minil
dist (minil release) 時に上書きされます • Changesの日付やバージョンは更新不要 • リリース前の変更は常に{{$NEXT}}の下に書いていく • • • •
37.
テストを実行する $ minil test $
minil test --all リリース時に自動実行されるテストも試したい場合
38.
ディストリビューションを 生成する $ minil build もっぱらデバッグ用
39.
tarballを生成 $ minil dist $
minil dist --no-test 事故防止のため ./Build dist は殺されています
40.
開発中のディストリビューション をインストールする $ minil install $
minil install --no-test • v0.8.0の時点ではデフォルトで二度テストが走ってしまう →修正を取り込んでもらったので次版からは大丈夫 • ./Build install でも可
41.
リリースの前に… • buildtool_not_executable問題 • core.autocrlf •
Windowsでも使えますが、リリー スだけは別の環境でするのがお すすめ
42.
CPANにリリースする $ minil release $
minil release --trial • 書きかけのファイルが残っているとリリースできません • ひとまず.gitignoreに追加するか、ファイルの存在自体隠蔽したい 場合はファイル名に.bakをつけるなどしてください
43.
Githubにのみリリースする (CPANにリリースしない) $ FAKE_RELEASE=1 minil
release この辺、名前と実態があっていない気もします
44.
CPANにもGithubにもリリース したくない場合は--dry-run $ minil release
--dry-run
45.
既存のモジュールを Minilla化する $ minil migrate •
subversionのリポジトリなどは先にgitのリポジトリに変換しておくこと • gitリポジトリになっていない場合、v0.8.0の段階では自前でgit init必要 →これも修正を取り込んでもらえました • 隠しファイルなどがあるとパーミッションエラーで変換が止まることも • v0.8.0 時点ではMakefile.PLからの移行時に多少ゴミが残るので、気に なる場合は削除
46.
もう少し高度な使い方? • tokuhiromさんの流儀にしたがう、という大 きなメリットが消えてしまうので、あまりお すすめしません • Minillaで頑張るよりは、Dist::Zillaに移行 した方が楽かと
47.
XSモジュールを新規作成する $ minil new
-p XS Foo-XS XSモジュールのmigrateの場合は-pオプション不要
48.
設定ファイルを編集する • • • XSを書くのでなければ通常不要 Minillaのユースケース上はINIファイルと ほぼ同じ書き方 デフォルトの設定が上書きされるものと、 そうでないものがあるので注意
49.
Module::Buildの拡張機能を使う • よほど特殊なことをしたいのでなければ Dist::Zillaに… • ディストリビューションのルートに builder/MyBuilder.pmというファイルを作 成すると、Minillaが内部でModule::Build を利用する際に拡張があたります
50.
Questions?
Jetzt herunterladen