Slide 1

Slide 1 text

まかまか般若波羅蜜 YAPC::Japan Online 2022 Acme、其は Perlの ユグドラシル

Slide 2

Slide 2 text

※タイトルはtreeです ←ユグドラシル(世界樹) Wikipedia 「ユグドラシル」の項より

Slide 3

Slide 3 text

前口上 ←Discord のルーム見ながら喋ります

Slide 4

Slide 4 text

前口上 ←Discord のルーム見ながら喋ります トーク中、質問やツッコミがあれば 出来る限りレスしながら進めたいと 思います。

Slide 5

Slide 5 text

前口上 ←Discord のルーム見ながら喋ります 寒いギャクが出るかもしれません そんなときは遠慮せず 「おー寒っ!」って書き込んでください

Slide 6

Slide 6 text

前口上 綴りはこんな感じで Awesome!

Slide 7

Slide 7 text

自己紹介 • 名前 • まかまか般若波羅蜜(makamaka) • 所属 ・株式会社ネコトーストラボ ・Hachioji.pm ・どんぞこ楽屋

Slide 8

Slide 8 text

自己紹介 • 名前 • まかまか般若波羅蜜(makamaka) • 所属 ・株式会社ネコトーストラボ ・Hachioji.pm ・どんぞこ楽屋

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

主な事業はYAPCのノベルティに光る棒を送り付けること

Slide 11

Slide 11 text

自己紹介 • 名前 • まかまか般若波羅蜜(makamaka) • 所属 ・株式会社ネコトーストラボ ・Hachioji.pm ・どんぞこ楽屋

Slide 12

Slide 12 text

自己紹介 • 名前 • まかまか般若波羅蜜(makamaka) • 所属 ・株式会社ネコトーストラボ ・Hachioji.pm ・どんぞこ楽屋

Slide 13

Slide 13 text

どんぞこ楽屋 • Perlの同人サークル • だいたい2008年から活動~2021年 • 『Acme大全』という同人誌を毎年発行 • http://www.donzoko.net/gakuya/ • https://donzoko.booth.pm/

Slide 14

Slide 14 text

どんぞこ楽屋 • Perlの同人サークル • だいたい2008年から活動~2021年 • 『Acme大全』という同人誌を毎年発行 • http://www.donzoko.net/gakuya/ • https://donzoko.booth.pm/

Slide 15

Slide 15 text

• なお、他にPerlの同人活動としては • kaz hiramatsuさん 『雅なPerl入門』(第3版) • https://miyabi-perl.booth.pm/ がとても素晴らしいです(在庫切れらしい)

Slide 16

Slide 16 text

最初に確認

Slide 17

Slide 17 text

YAPC::Japan (あるいは YAPC::Asia )に 参加したことがありますか。

Slide 18

Slide 18 text

A. YAPC::Asia Tokyo 2006~2015 から B. YAPC::Japan 2016~ から SAPPORO(2016) OSAKA(2017) HAKATA(2017) ONNASON(2018) Tokyo(2019) C. 初めての参加

Slide 19

Slide 19 text

Acmeモジュールが何か 知っていますか? A. 知ってる B. 知らない

Slide 20

Slide 20 text

『Acme大全』が何か 知っていますか? A. 知ってる B. 知らない

Slide 21

Slide 21 text

なるほど

Slide 22

Slide 22 text

このトークについて • Acmeモジュールの紹介に命を懸けた10 数年間を振り返ります • 『Acme大全』の制作にまつわる話 • 同人活動に一段落をつけた今後について

Slide 23

Slide 23 text

つまりエモい話

Slide 24

Slide 24 text

つまりエモい話 ではなく えーもういいょ……って話

Slide 25

Slide 25 text

本日のアジェンダ • Acmeの扉 • 必要はAcmeの母 • 少々Acmeウゼェナ • 星のAcme

Slide 26

Slide 26 text

本日のアジェンダ • Acmeの扉 • 必要はAcmeの母 • 少々Acmeウゼェナ • 星のAcme ↑プロポーザルに上記で出して通ったので、 そのままの章立てでいきます……

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Acmeの扉

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

Acmeモジュールとは ・Acmeは冗談モジュール用の名前空間 ・Damian Conway の Bleach に端を発す (2001年)

Slide 31

Slide 31 text

# hello.pl use Acme::Bleach; say "Hello YAPC::Japan"; # このスクリプトを実行すると > perl hello.pl

Slide 32

Slide 32 text

# hello.pl use Acme::Bleach; > cat hello.pl # Acme::Bleachを残して消えるが、動作する > perl hello.pl > Hello YAPC::Japan

Slide 33

Slide 33 text

# source/DCONWAY/Acme-Bleach-1.150/lib/Acme/Bleach.pm package Acme::Bleach; our $VERSION = '1.150'; my $tie = " ¥t"x8; sub whiten { local $_ = unpack "b*", pop; tr/01/ ¥t/; s/(.{9})/$1¥n/g; $tie.$_ } sub brighten { local $_ = pop; s/^$tie|[^ ¥t]//g; tr/ ¥t/01/; pack "b*", $_ } sub dirty { $_[0] =~ /¥S/ } sub dress { $_[0] =~ /^$tie/ } open 0 or print "Can't rebleach '$0'¥n" and exit; (my $shirt = join "", <0>) =~ s/(.*)^¥s*use¥s+Acme::Bleach¥s*;¥n//sm; my $coat = $1; my $pressed = '#line ' . ("$coat¥n" =~ tr/¥n/¥n/) . ' ' . (caller)[1] . "¥n"; local $SIG{__WARN__} = ¥&dirty; do {eval $coat . brighten $shirt; print STDERR $@ if $@; exit} unless dirty $shirt && not dress $shirt; open 0, ">$0" or print "Cannot bleach '$0'¥n" and exit; print {0} "${coat}use Acme::Bleach;¥n", whiten $pressed.$shirt and exit; __END__

Slide 34

Slide 34 text

local $_ = unpack "b*", pop; tr/01/ ¥t/; open 0, ">$0"; print {0}; tr/ ¥t/01/; pack "b*", $_; 初回実行すると…… use Acme::Bleach されたスクリプト自身を読み込む use Acme::Bleach から後の行の文字列を2進数にして0ならスペース、1ならTABに変換 use Acme::Bleach されたスクリプト自身に書き出す 再度実行したときは元に戻して eval

Slide 35

Slide 35 text

Acme誕生の歴史 • 下記あたりを参照 • https://www.perlmonks.org/?node_id=410774 • https://www.perlmonks.org/?node_id=967004

Slide 36

Slide 36 text

このような冗談モジュールを Acmeモジュールと呼んでいます。

Slide 37

Slide 37 text

同人活動

Slide 38

Slide 38 text

同人活動 太古代 • 2004年~2005年 自分の日記サイト

Slide 39

Slide 39 text

同人活動 太古代 • cf. 海外でのAcmeの紹介例(2006年) • https://www.perlmonks.org/?node_id=558220

Slide 40

Slide 40 text

同人活動 原生代 • 2006年~2007年 • 評論系サークルの冊子に間借り数ページ • コミケに出展

Slide 41

Slide 41 text

同人活動 原生代 • 2006年冬コミ • 『マルチ中毒』

Slide 42

Slide 42 text

同人活動 原生代 • 2006年冬コミ • 『マルチ中毒』 翌年のYAPC::Asia Tokyo 2007でなぜか Perlの部分だけ抜き出して緊急頒布!

Slide 43

Slide 43 text

同人活動 原生代 • 2006年冬コミ • 『マルチ中毒』 翌年のYAPC::Asia Tokyo 2007でなぜか Perlの部分だけ抜き出して緊急頒布! ↓ nipotan に「マークパンサー?」って言われる

Slide 44

Slide 44 text

同人活動 原生代 • 2006年冬コミ • 『マルチ中毒』 翌年のYAPC::Asia Tokyo 2007でなぜか Perlの部分だけ抜き出して緊急頒布! ↓ 表紙を見て買った人に 「中にイラストないじゃん!」って言われる

Slide 45

Slide 45 text

同人活動 原生代 • 2006年冬コミ • 『マルチ中毒』 • 記事「美しいPerl」

Slide 46

Slide 46 text

同人活動 原生代 • 2006年冬コミ • 『マルチ中毒』 • 記事「美しいPerl」 • 政治風刺的な内容

Slide 47

Slide 47 text

同人活動 原生代 • 2007年夏コミ • 『マルチ中毒 vol.2』

Slide 48

Slide 48 text

同人活動 原生代 • 2007年夏コミ • 『マルチ中毒 vol.2』 • 記事「年金問題とPerl」

Slide 49

Slide 49 text

同人活動 原生代 • 2007年夏コミ • 『マルチ中毒 vol.2』 • 記事「年金問題とPerl」 ↑年金問題は全く出てこない

Slide 50

Slide 50 text

同人活動 原生代 • 2007年夏コミ • 『マルチ中毒 vol.2』 • 記事「年金問題とPerl」 • 美しいPerl 2.0 夏割

Slide 51

Slide 51 text

同人活動 原生代 • 2007年夏コミ • 『マルチ中毒 vol.2』 • 他の執筆者が「文化批評への断層」とか 「電脳コイルは■■■の夢を見るか」など 真面目に書いているというのに……

Slide 52

Slide 52 text

同人活動 原生代 • 2007年冬コミ • 『マルチ中毒 vol.3』 • Acme::rion ……創聖のアクエリオン ED「オムナ マグニ」っぽいコードに変換 する Acme::Bleach系モジュール

Slide 53

Slide 53 text

同人活動 原生代 • 2007年冬コミ • 『マルチ中毒 vol.3』 • 他の執筆者が「論考談義 洞爺湖G8サミット」 とか「ありがとう天元突破グレンラガン」など 真面目に書いているというのに……

Slide 54

Slide 54 text

やっぱり間借りでなく、 ちゃんと同人誌書きたい……

Slide 55

Slide 55 text

(独り)サークル立ち上げ!

Slide 56

Slide 56 text

同人活動 顕生代 古生代 • 2008年夏コミ • サークル名「どんぞこ駱駝」 • 初の同人誌『 Python & Perlmons 』 • コピー誌

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

Python & Perlmons • Perl Monger になりきる TRPG • P&P……元ネタは D&D や T&T

Slide 59

Slide 59 text

Python & Perlmons • Perl Monger になりきる TRPG • P&P……元ネタは D&D や T&T

Slide 60

Slide 60 text

Python & Perlmons • Perl Monger になりきる TRPG • P&P……元ネタは D&D や T&T • Python 全く関係ない

Slide 61

Slide 61 text

Python & Perlmons • Perl Monger になりきる TRPG • P&P……元ネタは D&D や T&T • Python 全く関係ない • D&Dにおけるゲームマスター =DM(ダンジョンマスター) • P&PではDM(ダン ザ マッチョ)

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

各都市のPM 参考: https://www.pm.org/groups/

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

同人活動 顕生代 古生代 • 2008年冬コミ • サークル名「どんぞこ楽屋」に変更

Slide 66

Slide 66 text

同人活動 顕生代 古生代 • 2008年冬コミ • サークル名「どんぞこ楽屋」に変更 ↑ラクダの使用はオライリーに許可とる べきという指摘を受け、連絡してみるも 返事なしだったため、以後同人誌内でイ ラスト、画像は使わないように

Slide 67

Slide 67 text

同人活動 顕生代 中生代 • 2008年冬コミ • サークル名「どんぞこ楽屋」 • 同人誌『本日のAcme』 • コピー誌

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

同人活動 顕生代 中生代 • 2008年冬コミ • サークル名「どんぞこ楽屋」 • 同人誌『本日のAcme』 • コピー誌

Slide 70

Slide 70 text

同人活動 顕生代 中生代 • 2008年冬コミ • サークル名「どんぞこ楽屋」 • 同人誌『本日のAcme』 • コピー誌

Slide 71

Slide 71 text

同人活動 顕生代 中生代 • 2008年冬コミ • サークル名「どんぞこ楽屋」 • 同人誌『本日のAcme』 • コピー誌

Slide 72

Slide 72 text

本日のAcme • 四季折々の重要なイベントに相応しい Acmeモジュールの紹介と解説 • 人生の中で直面する様々な苦難に際して指 針となるようなAcmeモジュールのリスト →計30有余のモジュール

Slide 73

Slide 73 text

本日のAcme あとがき

Slide 74

Slide 74 text

本日のAcme あとがき 売れた

Slide 75

Slide 75 text

Acme大全 へ

Slide 76

Slide 76 text

同人活動 顕生代 新生代 • 2009年夏コミ • 『Acme大全2009』

Slide 77

Slide 77 text

『Acme大全2009』

Slide 78

Slide 78 text

『Acme大全2009』 動 物 名 「 だ ら く 」

Slide 79

Slide 79 text

『Acme大全2009』 私 で す

Slide 80

Slide 80 text

『Acme大全2009』 • CPAN上のAcmeを含んだ名前が掲載対象 • 全て掲載することをモットーに • 2009年7月7日時点でのデータ利用 • 以後、毎年 7月7日のデータで

Slide 81

Slide 81 text

『Acme大全2009』 • YAPC::Asia Tokyo 2009 で出展 • 以降、代々のYAPC::Asiaで頒布 ~ YAPC::Asia Tokyo 2015

Slide 82

Slide 82 text

突然ですが 『Acme大全』の作り方

Slide 83

Slide 83 text

『Acme大全』の作り方 • 02packages.details.txt(.gz) • https://www.cpan.org/

Slide 84

Slide 84 text

『Acme大全』の作り方

Slide 85

Slide 85 text

『Acme大全』の作り方 • Acmeを含んだディストリビューション

Slide 86

Slide 86 text

『Acme大全』の作り方 • Acmeを含んだディストリビューション • 前年と差分を取る

Slide 87

Slide 87 text

『Acme大全』の作り方 • Acmeを含んだディストリビューション • 前年と差分を取る • Acmeモジュールはインデックスされてな いものも結構あった (ex. Acme::Nada) ※わざとインデックスされない実験なども

Slide 88

Slide 88 text

『Acme大全』の作り方 • なので、 search.cpan.org で検索 • 目 grep も必要だった

Slide 89

Slide 89 text

『Acme大全』の作り方 • 巻末のモジュールの作者一覧

Slide 90

Slide 90 text

『Acme大全』の作り方 • 巻末のモジュールの作者一覧 • 01mailrc.txt

Slide 91

Slide 91 text

『Acme大全』の作り方

Slide 92

Slide 92 text

このようにして 『Acme大全』 は作られています

Slide 93

Slide 93 text

同人活動 顕生代 新生代 • 2009年冬コミ • 『逆引きAcme大全 夢幻編』 逆引きできる!

Slide 94

Slide 94 text

『逆引きAcme大全 夢幻編』

Slide 95

Slide 95 text

『逆引きAcme大全 夢幻編』 • Acmeモジュールの逆引き……

Slide 96

Slide 96 text

『逆引きAcme大全 夢幻編』 use strict してないスクリプトを削除したい → Acme::Code::Police

Slide 97

Slide 97 text

『逆引きAcme大全 夢幻編』 use strict してないスクリプトを削除する Acmeモジュールを阻止したい → Acme::Code::FreedomFighter

Slide 98

Slide 98 text

No content

Slide 99

Slide 99 text

No content

Slide 100

Slide 100 text

とにもかくにも、 『Acme大全』は順調に 毎年夏コミに出せました。

Slide 101

Slide 101 text

『Acme大全2009』 最 初 の 大 全

Slide 102

Slide 102 text

『Acme大全2010』 す こ し 厚 み が

Slide 103

Slide 103 text

『Acme大全2011』 背 表 紙 が 大 分 立 派 に

Slide 104

Slide 104 text

『Acme大全2012』 表 紙 の 人 物 が 変 わ る

Slide 105

Slide 105 text

『Acme大全2013』 姉 者 登 場

Slide 106

Slide 106 text

『Acme大全2014』 同 時 に 登 場

Slide 107

Slide 107 text

『Acme大全2015』 電 子 版 を 出 そ う と

Slide 108

Slide 108 text

『Acme大全2016』 す る も 出 な い ……

Slide 109

Slide 109 text

『Acme大全2017』 電 子 版 も 出 た

Slide 110

Slide 110 text

『Acme大全2018』 最 後 の 紙 版 ( カ バ ー 付 )

Slide 111

Slide 111 text

『Acme大全2018』カバー

Slide 112

Slide 112 text

2018の「発酵事件」 2009年以来、奥付に「発行」ではなく 「発酵」を使ってきた

Slide 113

Slide 113 text

2018の「発酵事件」

Slide 114

Slide 114 text

2018の「発酵事件」 最初の2年ぐらいは印刷所から確認の 電話がきて、そのたびに意図したもの であることを伝えていた

Slide 115

Slide 115 text

2018の「発酵事件」 ながらく何も言わなくても そのまま通るようになった

Slide 116

Slide 116 text

2018の「発酵事件」 ながらく何も言わなくても そのまま通るようになった しかし2018では印刷所が勝手に 「発行」に修正して印刷…… → 奥付の「発酵」が初めて「発行」に

Slide 117

Slide 117 text

最後の製本版『Acme大全』に相応しい 思い出深いものに

Slide 118

Slide 118 text

『Acme大全2019』 電子版のみ

Slide 119

Slide 119 text

『Acme大全2021』 電子版のみ

Slide 120

Slide 120 text

同人活動で決めていたこと

Slide 121

Slide 121 text

同人活動の継続性 • 継続して活動できるよう、持ち出しになら ないようにする • 印刷代…… • 小部数なら捌けるが印刷単価アップ • 大部数だと印刷単価下がるが捌けない

Slide 122

Slide 122 text

同人活動とYAPC • YAPC::Asia で出展できたおかげで印刷部 数の調整が効いた • 余剰も発生 →コミュニティに還元

Slide 123

Slide 123 text

シールで

Slide 124

Slide 124 text

2010

Slide 125

Slide 125 text

2011

Slide 126

Slide 126 text

2012

Slide 127

Slide 127 text

2013

Slide 128

Slide 128 text

2014

Slide 129

Slide 129 text

2015

Slide 130

Slide 130 text

2013年まで シール作成に気合が入っていた

Slide 131

Slide 131 text

理由:仕事がなくて暇だった

Slide 132

Slide 132 text

2014年から転機があって 同人活動に若干専念しづらくなった

Slide 133

Slide 133 text

さらに 別の理由で 『Acme大全』作成のモチベ が下がる。 それはまた後ほど……

Slide 134

Slide 134 text

必要はAcmeの母

Slide 135

Slide 135 text

怒涛のAcmeモジュール紹介

Slide 136

Slide 136 text

と思ったが

Slide 137

Slide 137 text

この10年さんざんやってきた

Slide 138

Slide 138 text

自分のサイトで

Slide 139

Slide 139 text

アドベントカレンダーで 2010年 Acmeトラック https://perl-users.jp/articles/advent-calendar/2010/acme/ 2011年 Acmeトラック https://perl-users.jp/articles/advent-calendar/2011/acme/

Slide 140

Slide 140 text

No content

Slide 141

Slide 141 text

No content

Slide 142

Slide 142 text

※本家も当然大昔からAcmeモジュールを扱ってる https://perladvent.org/2002/17th/ - Acme::Intrawe https://perladvent.org/2003/19th/ - Acme::Code::FreedomFighter

Slide 143

Slide 143 text

Perl Hackers Hub で 第19回 Acmeで広がるPerlの世界―CPAN は愉快なジョークモジュールの宝庫 https://gihyo.jp/dev/serial/01/perl-hackers-hub/001901 https://gihyo.jp/dev/serial/01/perl-hackers-hub/001902

Slide 144

Slide 144 text

紹介したかった Acmeモジュールは ほぼ紹介し尽くしてる

Slide 145

Slide 145 text

なので『Acme大全』制作過程で 思い出深かったモジュールに 絞って紹介

Slide 146

Slide 146 text

その前に、 ここでお詫びです

Slide 147

Slide 147 text

お詫び 『Acme大全』にSongmuさんの Acme::BeerSushi (2014年リリース) が掲載されていませんでした……

Slide 148

Slide 148 text

お詫び 02packages.details.txt になかったため 気づかず、かつ確認作業を怠った結果 取りこぼしてました。 まことに申し訳ございませんでした!

Slide 149

Slide 149 text

発覚の経緯 CPANにビールのモジュールがあったはず だと "acme beer metacpan" で検索した結果

Slide 150

Slide 150 text

発覚の経緯 CPANにビールのモジュールがあったはず だと "acme beer metacpan" で検索した結果 「お、Acme大全に収録した覚えのない Acmeモジュールが……」

Slide 151

Slide 151 text

発覚の経緯 なお、検索したかったCPANモジュールは

Slide 152

Slide 152 text

ore::Beer Jonathan Leto

Slide 153

Slide 153 text

$ perl -More::Beer # ってコマンド打ってもエラーにならなくなる

Slide 154

Slide 154 text

話を戻します

Slide 155

Slide 155 text

Acme::LifeUniverseEverything Mike Rosulek

Slide 156

Slide 156 text

No content

Slide 157

Slide 157 text

6 * 9 = 42 になるモジュール

Slide 158

Slide 158 text

No content

Slide 159

Slide 159 text

みんな大好き overload

Slide 160

Slide 160 text

package Acme::LifeUniverseEverything; use overload; my %ops; $ops{'0+'} = $ops{'""'} = sub { ${ $_[0] } }; $ops{'*'} = sub { my $val = (($_[0]==6 && $_[1]==9) || ($_[0]==9 && $_[1]==6)) ? 42 : ("$_[0]" * $_[1]); Acme::LifeUniverseEverything->new($val); };

Slide 161

Slide 161 text

『Acme大全』では 42ページ目に42の 説明があったが、掲 載項目が増えた結果、 長らくページがずれ た。 2021年版で数年ぶ りに戻った。

Slide 162

Slide 162 text

Acme::Pi Acme::Tau Karen Etheridge thrig

Slide 163

Slide 163 text

$ perl -Mutf8 -MAcme::Pi -E"say π" 3.14159265358979

Slide 164

Slide 164 text

No content

Slide 165

Slide 165 text

$ perl -MAcme::Tau -E"say Acme::Tau->VERSION" 6.28318530717958

Slide 166

Slide 166 text

なんとなくτが印象残ったので

Slide 167

Slide 167 text

Acme::Colour Acme::Orange Acme::Octarine Léon Brocard Nicholas Clark Nicholas Clark

Slide 168

Slide 168 text

# 光の三原色 $c = Acme::Colour->new("black"); $colour = $c->colour; # black $c->add("red"); # red $c->add("green"); # yellow # 絵具の三原色 $c = Acme::Colour->new("white"); $c->mix("cyan"); # cyan $c->mix("magenta"); # blue

Slide 169

Slide 169 text

# Acme::Orange $colour = $c->colour("pink"); # orange $c->add("blue"); # orange # なにやってもオレンジにしかならない # London.pm のシンボルカラー

Slide 170

Slide 170 text

use Acme::Octarine; # (架空の)octarine 色が使える use Acme::Colour; $c = Acme::Colour->new("octarine"); # black # ついでに new するたびにランダムに # Acmeモジュールがインストールされる

Slide 171

Slide 171 text

# Acme::Octarine # エグいハック(コピペ良くないという理由) use B::Deparse; use PadWalker 'closed_over'; my $deparse = B::Deparse->new("-sC"); my $body = $deparse ->coderef2text( ¥&Acme::Colour::new ); my $r = closed_over(¥&Acme::Colour::new)->{'%r'};

Slide 172

Slide 172 text

「ディスクワールド」シリーズを 読むきっかけになったので

Slide 173

Slide 173 text

Acme::ComeFrom ☻ 唐鳳 ☺

Slide 174

Slide 174 text

comefrom - goto の逆

Slide 175

Slide 175 text

goto LABEL -> LABEL goto &sub -> sub LABEL -> comefrom LABEL sub() -> comefrom &sub comefrom が複数あると fork されて実行

Slide 176

Slide 176 text

use 5.010; use Acme::ComeFrom; sub func { say @_ } func("Start"); # 実行されると comefrom func 行にジャンプ say "ここは表示されない"; # 上の func() で下の comefrom func に飛んだので comefrom &func; say "Branch 1"; exit; comefrom &func; say "Branch 2"; # 片方は exit して終了、もう一方は処理続行 (forkされる) LABEL: say "ここも表示されない"; # comefrom label へ comefrom LABEL; say "Branch 3"; exit; comefrom LABEL; say "Branch 4"; # 片方は exit して終了、もう一方は処理続行 (forkされる) EXPR0: say "ONE"; exit; # 実行されて下の行にジャンプするかもしれないし、しないかもしれない comefrom 'EXPR' . int(rand(2)); say "ZERO"; # ランダムに EXPR0 か EXPR1 になる # EXPR0 なら say "ONE"; exit; が飛ばされ say "ZERO"; に。EXPR1 なら存在しないので say "ONE"; exit; が実行される

Slide 177

Slide 177 text

No content

Slide 178

Slide 178 text

シンプルにして画期的で印象深い

Slide 179

Slide 179 text

Acme::Manekineko Greg McCarroll

Slide 180

Slide 180 text

No content

Slide 181

Slide 181 text

猫が好きなので

Slide 182

Slide 182 text

Acme::Undead Likkradyus Winston

Slide 183

Slide 183 text

die , sleep が無効になる bless で die する

Slide 184

Slide 184 text

No content

Slide 185

Slide 185 text

実行プロセスが死なない

Slide 186

Slide 186 text

してやられた

Slide 187

Slide 187 text

Amce::CNA Ricardo SIGNES

Slide 188

Slide 188 text

a moer tolernat verison of mehtod location メッソド確定の より かよんうな バジョーン

Slide 189

Slide 189 text

Amce::CNA -> Acme::CAN

Slide 190

Slide 190 text

package Acme::Taizen; use Amce::CNA; sub hello_world { return 'Hello World!'; }

Slide 191

Slide 191 text

use Acme::Taizen; say Acme::Taizen->heoll_wolrd(); # ちゃんとhello_worldする

Slide 192

Slide 192 text

これを収録するかどうか悩んだが 結局Acmeモジュールとみなした

Slide 193

Slide 193 text

以上、思い出深い Acmeモジュールでした

Slide 194

Slide 194 text

念のため

Slide 195

Slide 195 text

お前、他人のモジュールばかりで 自分でAcmeモジュールアップしないの?

Slide 196

Slide 196 text

と思った方もおられるかもなので

Slide 197

Slide 197 text

Acme::Oil Makamaka Hannyaharamitu

Slide 198

Slide 198 text

変数をオイルに浸すことで 値を代入しくくしたり、 取り出しにくくする。 あと "fire" という文字列を代入す ると値が undef になる。

Slide 199

Slide 199 text

Acme::BeyondPerl::ToSQL Makamaka Hannyaharamitu

Slide 200

Slide 200 text

Perlの代わりに データベースに 計算させる。

Slide 201

Slide 201 text

use Acme::BeyondPerl::ToSQL ("dbi:SQLite:dbname=acme_db","",""); my $value = 5; print 2 + $value , "¥n"; # 7 print 1.2 - 0.2 , "¥n"; # 1 print 9 / 2 , "¥n"; # 4.5 # DEBUG MODE # use Acme::BeyondPerl::ToSQL ({ # dbi => ["dbi:SQLite:dbname=acme_db","",""], debug => 1, # }); # # SELECT 2.0 + 5.0 # SELECT 1.2000000000000000 - 0.2000000000000000 # SELECT 9.0 / 2.0

Slide 202

Slide 202 text

use Acme::BeyondPerl::ToSQL ("dbi:Pg:dbname=$dbname;host=$host", $user, $pas,"",""); my $value = 5; print 2 + $value , "¥n"; # 7 print 1.2 - 0.2 , "¥n"; # 1 print 9 / 2 , "¥n"; # 4.5 # DEBUG MODE # use Acme::BeyondPerl::ToSQL ({ # dbi => ["dbi:Pg:dbname=$dbname;host=$host", $user, $pass], debug => 1, # }); # # SELECT CAST(2 AS double precision) + CAST(5 AS double precision) # SELECT CAST(1.2 AS double precision) - CAST(0.2 AS double precision) # SELECT CAST(9 AS double precision) / CAST(2 AS double precision)

Slide 203

Slide 203 text

それはそれとして

Slide 204

Slide 204 text

CPAN 以外にも

Slide 205

Slide 205 text

世界にはたくさんの Acmeモジュールであふれています

Slide 206

Slide 206 text

Acme::MineChan Yoshinori TAKESAKO

Slide 207

Slide 207 text

幕間

Slide 208

Slide 208 text

Acme::Godot Salve J. Nilsen

Slide 209

Slide 209 text

No content

Slide 210

Slide 210 text

少々Acmeウゼェナ

Slide 211

Slide 211 text

問題を含んだAcmeモジュール

Slide 212

Slide 212 text

冗談モジュールという性格上 差別的・侮蔑的なものも 現れやすくなる

Slide 213

Slide 213 text

• 身体的特徴をネタにしている 掲載するべきかどうか 特定の個人を ネタにしたモジュール

Slide 214

Slide 214 text

• 身体的特徴をネタにしている 掲載するべきかどうか → ポリシー(全て載せる)通り掲載 → 注釈欄で批判 特定の個人を ネタにしたモジュール

Slide 215

Slide 215 text

• 某大統領の発言の拙さをネタにしたモ ジュール 特定の個人を ネタにしたモジュール

Slide 216

Slide 216 text

• 某大統領の発言の拙さをネタにしたモ ジュール → 公人に対する風刺であると判断 特定の個人を ネタにしたモジュール

Slide 217

Slide 217 text

• 本来はコミュニティを盛り上げるためのもの 特定の集団を 扱ったモジュール

Slide 218

Slide 218 text

• 本来はコミュニティを盛り上げるためのもの ↑ ↓ • 属性をとりあげることは極めてセンシティブ 特定の集団を 扱ったモジュール

Slide 219

Slide 219 text

• 女性のCPAN Author をリスト化したモ ジュール 特定の集団を 扱ったモジュール

Slide 220

Slide 220 text

• 女性のCPAN Author をリスト化したモ ジュール → 批判を受けCPANから削除された 特定の集団を 扱ったモジュール

Slide 221

Slide 221 text

Michael G Schwern "How Not To Highlight Women In Perl" 特定の集団を 扱ったモジュール

Slide 222

Slide 222 text

Michael G Schwern "How Not To Highlight Women In Perl" → 翻訳をAcme大全の付録として掲載 特定の集団を 扱ったモジュール

Slide 223

Slide 223 text

Michael G Schwern "How Not To Highlight Women In Perl" → 翻訳をAcme大全の付録として掲載 パワーバランスが対等でない状況では 慎重にならなければならない 特定の集団を 扱ったモジュール

Slide 224

Slide 224 text

• イタリアのCPAN Author をリスト化したモ ジュール • イシューを受けCPANから削除された 特定の集団を 扱ったモジュール

Slide 225

Slide 225 text

Acme::Playmate 事件 • これは直接モジュールの問題ではないけど

Slide 226

Slide 226 text

Acme::Playmate 事件 • PLAYBOYのカバーガール(プレイメイ ト)のデータを取ってくるモジュール

Slide 227

Slide 227 text

Acme::Playmate 事件 • PLAYBOYのカバーガール(プレイメイ ト)のデータを取ってくるモジュール • テックカンファレンスのLTで実演

Slide 228

Slide 228 text

Acme::Playmate 事件 • PLAYBOYのカバーガール(プレイメイ ト)のデータを取ってくるモジュール • テックカンファレンスのLTで実演 • その際にプレイメイトの写真が写った

Slide 229

Slide 229 text

Acme::Playmate 事件 • PLAYBOYのカバーガール(プレイメイ ト)のデータを取ってくるモジュール • テックカンファレンスのLTで実演 • その際にプレイメイトの写真が写った • セッション長と登壇者は謝罪

Slide 230

Slide 230 text

モジュールを公開する際も、 トーク(同人誌公開 etc.)する際も、 問題がないか 一旦立ち止まることを心掛けたい(自戒)

Slide 231

Slide 231 text

近年のAcmeモジュール界隈

Slide 232

Slide 232 text

特定の作者が大量アップ • 近年(2016年~)一人の CPAN Author が大量にAcmeモジュールをアップするよ うに

Slide 233

Slide 233 text

特定の作者が大量アップ • 近年(2016年~)一人の CPAN Author が大量にAcmeモジュールをアップするよ うに • 直近(2019~)は 新規の7~8割

Slide 234

Slide 234 text

特定の作者が大量アップ • そのほとんどが機械的に取得したデータの 「リスト」のようなもの

Slide 235

Slide 235 text

特定の作者が大量アップ • そのほとんどが機械的に取得したデータの 「リスト」のようなもの • 紹介するのが辛い……

Slide 236

Slide 236 text

特定の作者が大量アップ • 2019年版からその作者のモジュールにつ いては収録するが解説つけないことに……

Slide 237

Slide 237 text

No content

Slide 238

Slide 238 text

特定の作者が大量アップ • 2019年版からその作者のモジュールにつ いては収録するが解説つけないことに…… 全て掲載するポリシーとしては敗北

Slide 239

Slide 239 text

Acme敗戦

Slide 240

Slide 240 text

こうして私の『Acme大全』作成に関する 同人活動はいったん幕を下ろしました

Slide 241

Slide 241 text

星のAcme

Slide 242

Slide 242 text

星の手向け 陰暦七月七日に、牽牛・織女をまつること。 また、その供え物。(コトバンクより)

Slide 243

Slide 243 text

顧みるに

Slide 244

Slide 244 text

自分の人生の 1/4 近くを Acmeモジュールの紹介に 費やしていた

Slide 245

Slide 245 text

フリー素材ぱくたそ(www.pakutaso.com) うわっ…私の偏執、 高すぎ…? (4x歳Mさんの場合)

Slide 246

Slide 246 text

しかし

Slide 247

Slide 247 text

同人活動を通じて 多くの出会いがあった

Slide 248

Slide 248 text

仕事の無い時期に、 同人活動は支えとなった

Slide 249

Slide 249 text

連絡をちゃんとしないと奥付の発酵 が発行になってしまうとか、人生で とても大事なことが学べた

Slide 250

Slide 250 text

コミュニティに十分還元でき たとはいえないけれども

Slide 251

Slide 251 text

ありがとうございます

Slide 252

Slide 252 text

今年中に『Acme大全』を オープンソース化する予定です

Slide 253

Slide 253 text

どんぞこ楽屋は アナログゲーム方向にシフトします

Slide 254

Slide 254 text

また会いましょう

Slide 255

Slide 255 text

No content

Slide 256

Slide 256 text

ありがとうございます

Slide 257

Slide 257 text

No content