Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

今日は YAPC::Fukuoka 2025 の2日目です

YAPC::Fukuoka の2日目です。昨日と同様にメモだけ残しておきます。

ある編集者のこれまでとこれから —— 開発者コミュニティと歩んだ四半世紀 / inao さん

  • 踊り場に来てください
  • What is most personal is most general
    • 個人的なことを描き切った方が、世界に届く
  • 運が良かった、環境に恵まれた、人に恵まれた
  • 工学部を退学し農学部へ。読書、川下り
  • 出版社の現場を経験したかった
    • 4/1 に来てと言われて行ったら、日曜日で誰もいなかった
  • WEB+DB Press の初期から
  • YAPC の半分は WEB+DB Press でできている
  • YARPC 日本で最初の LT
  • Perl Hackers Hub 2010-2023年
    • 著者探しのために監修者さん
  • 全角を駆使した編集記号「inao記法」
  • markdown2inao.pl / md2inao
  • WEB+DB PressPerl でできている
  • GitHub Kaigi
  • 入社当時は WEB+DB Press は「なぞなぞにしか見えなかった」
    • 「自分が面白い、理解できれば、みなさんも」
  • LifeHacks PRESS がヒットした
  • Vol. 32 でリニューアル
    • Ajax の時期 / Web 2.0
    • 17本連載スタート
    • これが非常にうまくいったのが成功の要因
    • 編集者 2.0
  • 含まれるもの、含まれないもの、中心、は何か
    • Webアプリケーション開発のためのプログラミング情報誌
    • インフラ、開発、境界があいまいになった時期
    • 境界ではなく、中心を意識
  • 自分は対象読者ではない
    • 「知りたい」駆動
    • 知りたければ書いてもらえばよい
  • 「知りたい」→「役に立ちたい」
    • 声を掛けられ、うっかり転職
    • 転職しなかった会社の待遇の方が圧倒的に良かった
  • t-wada さんに相談
    • 「ゼロから立ち上げの方が転職のストーリーとしては良い」「応援してもらえる」(待遇は低いが)
  • 発刊されなかった137号も依頼済だった
    • 辞意を伝えたところで役員会で休刊になった
    • 続けられる基盤はできていたはず
  • DevRel の社外メンター 941 さん
  • 「開発者をつなぐ」
    • 境界を考える必要はない
    • 採用に関するミッションは持っていない
    • 「つなぐ」ことだけを考える。それが採用などにつながる
  • 編集者として動く≒DevRel
  • 会社の変更
    • 「編集者」の地位の上昇
    • 外部の評判を利用する / WEB DB Press に助けられた
  • テックブログ
    • 前職と同じような動き(原稿料は発生しない)
  • イベント
    • 雑誌の目次と同じような作り方
  • タイトルのつけ方→良さを生かす
  • イデアと企画
    • 企画につなげるという意識を持って、習慣化する
    • 一週間過ごすと、1~3つは浮かぶはず
    • 思ったような反響を得られなくても、気にしない
      • 「俺は悪くない、世界は悪い」→もう一度挑戦
    • 及第点くらいの企画→放置
      • 寝かせるのが大事
  • 松山で会い鯛
    • 鯛縛りはありなのか
    • 「鯛の被り物を買い鯛」
    • 「釣り船」「タイ焼き」「テーマソング」は没
    • 「今会い鯛、すぐ会い鯛」は伝わらず
  • 企画の判断基準
    • びびってる、びびってない
      • 「マックでダイエットコーラを頼むのはビビってる」
      • 「時を超えた創造の原則」はビビってない
  • 編集者とは?
    • DevRel でも「編集者」と言っている
    • 何についても一番詳しくない
    • 集めて編む者
    • Developer's best friend
      • 経験がないことに挑む開発者に伴奏する
    • いなお=犬
  • 組織に大きな変革をもたらすのは、最初の数年
  • 編集者は 100~200人(国内)
    • 20年やり続けるコンピュータ情報誌の編集者は皆無
    • この経験を生かした何か。職業人生 *Q). キャリアへの不安や居心地の悪さは?
    • A). ない。それで今までやってきた
  • Q). inao さん自身が記事は書きたくない?
    • A). 自分から伝えたいということはない。読むのは好き
  • Q). 現職でメディアを立ち上げる?
    • A). エンジニアが希望すれば。今は「編集者」ではないキャリアを歩んでいるので
  • Q). ビビってると感じた時の突破方法
    • A). 別の案を考える。デザイナさんに「どっちがビビってないか」
    • A). 今日はビビっているけど、違う意味でのビビり
    • A). ビビってるんすか?とは聞く

Perl の生きのこり / わいとんさん & kobakenさん

  • 令和最新版 Perl BBS
  • CGI 1990 年
    • リクエストを受けた時だけリソースを利用(今時)
    • 書籍がたくさん出ていた
  • mod_perl
  • 2009 年 PSGI/Plack
    • PSGI を満たせば入れ替え可能
    • 秩序を保って、多様性
    • 変化を促すのに、ルールを入れる、のが面白い
  • 2005 年
    • デプロイで壊れる、自分の環境では再現しない
    • 様々な問題が発見され、言語化
    • パッケージ管理、 CI 、設計の進化、アクセシビリティ
    • 現代でも向き合っている問題
  • 2011 年 Carton
    • Bundler / Go Modules / Cargo のようなもの
    • cpanm ではバージョン管理はできていなかった
    • @miyagawa ロックスター。今のあたりまえを作った人
  • 複雑化する環境に「Perl」はどう対応?
    • ES: use strict, class構文、 let/const (イミュータブル)
    • 変化のための痛みは止むを得ないのか
    • 高い候補互換性「bugward-compatibility」バグに依存している挙動も壊さない
  • OOP
    • blessMoose
    • builtin class
      • 単一継承
      • 中身を触れられない
  • 2010 年に keyword plugin が仕込まれた
    • Object::Pad で PoC ができた
    • builtin class として組み込み
    • Perl 自身に手を入れる必要がない
  • とほほさん「OSS のサポート期間が短い」
    • 2~3年は年寄りには短い
  • 2007 年 iPhone
    • UI/UX の変化
    • ガラケーの手法が厳しい。フロントエンドバックエンドが分離
    • jQuery は今も動くのがすごいところ
  • 「課題」をコミュニティで話す
    • コンテキストが異なる人で話すと、抽象化される
  • LLM
    • 古い書き方をする→古い書き方でも動くのは Perl の利点
  • PEVANS: Perl をよくするには使い倒して、そんな無茶するよりいい方法があると言わせるといい
    • 機能を限界まで使うのはいいこと。新たな課題が見える
  • 旧(9)世代の話
    • 「価値を届ける」のは変わりがない
  • Q). Sledge は重要では
    • A). ごめんなさい。 mod_perl はカバーしきれなかった(謝罪)
  • Q). 新しい書き方を進める良い理由は?
    • A). try/catch ハマりどころがない。諸学者の人にハマって欲しくない
    • A). 新しい人に学んでほしいのか。移行コストをかけたいのか
  • Q). 古い書き方を AI に書かせる
    • A). 新しい知識が混乱する。コンテキストを絞るのが大事。新しい書き方のみをコンテキストにしたり
    • A). ドキュメントを整えていくのはやっていきたい。コンテキストをきれいに。

JavaScript🦏はPerl🐪の子孫である / dankogai さん

  • JavaScript は書いたことがある人は多いが、 Perl を書いたことがある人は少ない
  • Speaking JavaScript 書籍
    • ES5 の時代
    • Perl の影響が受けたことが書かれてる
  • JS と PerlPython
    • Perl は語彙も挙動も類似
    • e.g.) 存在しない添え字を配列に指定した場合
    • Rubypushappend も実装している
  • Unicode
    • JS は Java 風(15bit)
    • Perl はバイト列の時代が長かった
      • Unicode の 1 文字をキャプチャできない
      • 2001 年に苦労をして UTF-8 で実装された
      • Python のへま→ビルドオプションによって文字列の長さが変わる
    • JS は UTF-32UTF-16 を併用
      • for (const chr of str) {}
  • 国旗は code point を二つ使っている
    • Perl には \X があり、1表示文字にマッチする
    • JS にはまだない Intl.Segmenter を使う
  • JS はスクリプト言語
  • もともと Perl のカンファレンスだったはず
    • 悪いことではなく、 Perl コミュニティは正しいことをしてきた
    • LT も文字列の扱いも我々が正しかった
  • Q). なぜ正しく UTF-8 を選択できたのか?
  • Q). Perl は JS になれたのか?
    • A). ブラウザで動くのはなかなか

転ばぬ先のXS入門 / polamjag さん

  • List::Util::min XS で書かれている
  • 「インストールがコケる」が主要の問題
  • Makefile.PL ExtUtils::MakeMaker
  • Build.PL Module::Build Module::Build::Tiny
  • Minilla Dist::Zilla
  • App::cpm
    • fetch configure install
    • configure で Makefile.PL 作成、 install で実行
  • XS
    • インターフェース記述ファイルフォーマット
    • XS はプログラミング言語
    • xsubpp で C へトランスパイル
    • ExtUtils::ParseXS
  • Perl ランタイムは C で書かれている
    • 共有ライブラリ、静的ライブラリとリンク
    • Perl は静的リンクも可能
  • ネイティブライブラリのラッパー
    • DBD::myaql, Perl, XS, libmysql-client
    • XS は Perl ランタイムと同じ土俵に上げられる
  • 余談「ネイティブ拡張」という言葉は誰が使っている?
    • ruby の ビルド時のメッセージ説
  • Perl ではツールやライブラリごとに共有ライブラリの指定方法がマチマチ
    • Makefile.PL がなんでもできてしまうため
    • e.g. mysql_config コマンド
  • https://wiki.archlinux.jp/index.php/Perl_%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%AC%E3%82%A4%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3 がわかりやすい
  • perlxs perlapi perl****
    • perlguts Perll API のイントロダクション
    • いろんなドキュメントが多くて大変
    • 実践あるのみ
  • Cpanel::JSON::XS DBD::mysql `Inline::Ruby
  • encode_jsongrep すると二つ出てくる
    • MODULE = Cpanel::JSON::XS PACKAGE = Cpanel::JSON::XS
    • これより前は C プログラム( POD の未除去)
    • それより下が XS でエントリポイント
  • XSUB: Perl 上での関数定義の単位
    • ALIAS 別名
    • PPCODE 以下が実装
    • PUTBACK / SPAGAIN / XPUSHs
  • SV
    • PB IB RV
  • AV HV
  • スタックの操作が必要となる
    • 引数をスタックから取得
    • 戻り値をスタックに積む
    • perlinterp, perlgts, perlsub, perlffunc, perlcall などにスタックの話が出てくる
  • PUTBACK / SPAGAIN
    • スタックを Perl ランタイムに書き込む
  • pTHX_ マルチスレッド用のマクロ
    • sv_2mortal NEWSV
  • aTHx_ 受け取ったものを渡すときに使うマクロ
  • Perl を壊さないような変数操作などは xsubpp や C マクロに隠蔽されている
  • *.c ファイルを見ると xsubpp の実行結果も見られる
  • dbd_st_fetch `dbd_st_execute の二つを DBD 側で用意する
  • dTTHX DBI のしきたりの初期化処理
  • mysql_st_internal_execute41
    • mysqll_ で始まるものはほぼ mysql の関数
  • Low-Level Inline::Ruby
    • my_rb_eval という機能がある
    • PREFIX = my_
    • PREINIT typemap に邪魔されない引数定義
    • rb2pl
    • rbrescue2 try catch
    • RubyPerl の値の変換ロジックは勉強になる
  • 氷山の一角
  • slu_sv_value amagic_call
  • 別海
    • FFI など
    • AI が使えるかも
  • Q). GC は自動?
    • A). 自分でやることもあるし、マクロが自然とやってくれることもある

やり方は一つだけじゃない、正解だけを目指さず寄り道やその先まで自分流に楽しむ趣味プログラミングの探求 / sugyan さん

  • 「すっかりみんな年をとりましたね」
  • 業務以外の時間にコードを書く
    • その時に興味があることを自由に
  • AI がコードを書くのに?
    • 楽しいから書く
  • 面白さ
    • 計算機の能力を引き出す
    • 動く
    • TMTOWTDI
  • Adent of Code とは
    • Eric Wastl
    • 12 月に毎年 25 日出題される
    • 2019 年から参加(日本人は少ない)
  • part1 と part2 がある
    • 入力は1つで、問題が変わる
    • 入力がユーザごとに異なる(友達に聞けない)
    • parse が面倒なものも多い(協議プログラミング的ではない)
    • 回答のみを提出する(答えが合うことが大事)
    • 多くの場合は part1/part2 で部品が使いまわせる
  • e.g. 入力の整数値を仕様通りに実装するとブロック崩しができ、そのスコアを応える問題
  • Reddit で解放の共有
  • e.g. 同じ文字の大文字小文字が連続しているときに取り除く
    • スタックを用意して1文字ずつ読み、マッチしたら pop 、それ以外なら push
    • s/(.)(?!\1)(?i)\1//
  • e.g. 二次元座標の問題
  • e.g. 点列が動いて、突然クリスマスツリーになる問題
    • いつクリスマスツリーが出るのか
    • AI が解くのは難しそう
    • png ファイルにして、 png ファイルが小さくなったのが答え(すごい)
  • e.g. 壁が落ちてきて、いつ経路到達ができなくなるのか
    • BFS とか二分探索とか逆順で探索とか Widest path prolem とか
    • 可視化すると迷路になっていて面白い
  • 今年は 12 日間になるらしい
  • Advent Code を生成 AI に解かせるのは?
    • 人間が楽しむためのもの。友達をジムに行かせて運動になる?
  • ペントミノ
    • 解放が多い
    • 子供のために買った→プログラミングで解く
    • 子供はすぐ飽きた
  • バックトラック
    • 12! 5億通り
  • Bitboard
    • ビット演算が使える
  • 解けた
    • 高速化、 WASM 化
    • X 型(回転可能)を先に置くのがポイント
    • 6x10を70ms (速い)
  • だんご屋の暇つぶし(子供のパズル)
    • パズルオーディション最優秀賞
    • ハノイの塔の亜種
    • 16 手の問題が最長
  • フロントエンドもできると可視化ができて便利
  • 解きたい問題、書きたい/読みたいコードは無限にある
  • Q). 時間は?
    • A). 無理せず時間が取れるときに
  • Q). パズルとビジュアライズの不具合の切り分けは?
    • A). ビジュアライズはおまけなので、同時にはやらない
  • Q). パソコンを持ち歩くのは大変では?
    • A). 最近は外に出ていない

LT

Perl 9 / moznion さん

  • Perl1 ~ Perl7
  • Perl9 new
  • Perl11 もあった
  • Perl6 を上下さかさまにすればよい
    • Text::UpSideDown
  • Plan 9Perl が動けばいいのでは
  • /sys/src/cmd/perl/5.004/ が動く
    • perlplan9
    • 動くバージョンを探すのが大変
  • 「連打するといずれ通るので頑張れ」
  • Perl 4 + Perl 5 = Perl 9
    • Perl 4 は今ビルドできない
    • むずくてあきらめた
  • Perl 4 を目を細めると Perl 9 ...?

Binary "pack" Rebooted in PerlRubyistの視点から〜 / udzura さん

  • Perlと言えば・・・ Rubyですよね
  • pack unpack
  • バイナリパースや FFI
  • フォーマット文字列を暗記するのが大変
    • CSLQZ* を覚える
  • 1989 に pack/unpack 導入
    • Ruby には 1.0 の段階からある
  • Ruby の利用しているメモリを Perl で覗くデモ

コマンド行から簡単に new してメソッドを試したい、タブ補完もしたい…MouseX::OO_Modulino と関連モジュールのご紹介 / hkoba さん

  • モジュリーノ×オブジェクト指向=探索的なプログラム開発に便利
    • ライブラリファイルが実行プログラムを兼ねさせる
    • Python__main__
  • OO Modulino
    • --foo=abc funcA みたいなのをコマンドライン引数として渡したい
    • TAB 補完もしたい
  • MouseX::OO_Modulino
    • shebang を書く
    • ->cli_run(...) unless caller で判定可能
  • 「ゴーン!」

小さなPerlスクリプトから続くOSS / nukumaro22 さん

  • Linux にはジェスチャの選択肢がなかった(2012年)
  • mac ぽくスライドしたい
  • ログが出ている。指の本数、座標
  • Perl スクリプト。デバグログが入力
  • xSwipe 448 stars
  • Synaptics ドライバでも動く、 perl は入っている
  • OS アップデートでデバグログが消えた
  • タッチパッドポインティングスティックは修飾キー
  • 道具がより手がなじむようにするのは最高

ghqの秘密 / songmu さん

  • Go Hot 九州
  • もともと go get の挙動を模した
    • Mercurial Bazaar Subveirion にも対応していた
    • ghq も同様
  • いろんなリポジトリをとるテストがある
    • git
    • svn (Code Repos)
    • CVS (列挙のみ)
    • git-svn
    • mercurial
    • Bazaar
    • Fossi (SQLite)
    • Darcs (Haskell)
    • Pijul (Rust)
    • Piper (以下は未サポート)
    • Perforce
    • Sapling (sl)
    • Jujutu

伝統的日本企業のソフトウェアエンジニアになって無双しよう! / kurain さん

  • 1960 年、797 名
  • toC サービスをやっている
  • 内政組織がない
    • 大量アクセス
    • リリースできない
    • 協力会社多すぎ問題
  • 速く安定した開発
  • Charaforio 、アプリデータ分析の内製化、新規開発、認知拡大
  • 伝統的日本企業
    • セキュリティチェックシート
    • GitHub Codespaces アクセス禁止、貸与モバイル以外利用禁止
    • SaaS の禁止
  • 物販とライセンス
    • セキュリティは大事
  • 企業理念「みんななかよく」
    • 相談すればみんなやさしいので問題は解決する
  • 今後はノベルティにも期待・・・!

ベストトーク LT / カヤックさん

  • 鎌倉にサウナ、OKINAWA うんこミュージアム
    • 何やっているかよくわからない会社
  • 面白法人は「みんな面白いんでしょ?」
    • オモハラ
  • 自分たちが面白がる、面白い人と言われる、周囲の人を面白く
    • ストレートに面白い、逆に面白い、一周回って面白い
    • 演習力で振り落とされているから
    • 逆に求心力が働いている人が残る
    • 「なるほど」と思った人は騙されやすいタイプ
  • ストレートに、誰かの人生を面白い
    • 真ん中を目指すのは難しい

Stay Hacker ~九州で生まれ、Perlに出会い、コミュニティで育つ~ / P山さん

  • 旅先でタクシー捕まらない問題
    • GO株式会社
  • KKD 勘、経験、度胸
  • 2013 年 電力会社の ISP のサーバエンジニア
    • Postfix
    • 委託先が本物の自動化 「.pl」
    • プログラミングへの感銘
  • ラクダ本を頭から読む
    • 仕事では使えず、伸び悩む
  • モダン Perl 入門
  • 習作が必要
    • フットサルの練習日程調整
    • RailsPerl での WEB に自信がなかった)
  • 定期異動→保守
  • オンライン面接「ある数字が素数かを判断」
    • 奇数を判定するプログラムを書いてしまった!
  • 「計算量」の話がわからず
    • 雰囲気で触ったことのない Redis 発言
  • 希望年収を低くすることで入れてもらえた
    • 「胡散臭くて最後まで迷った」
    • 420 万くらいにしてくれると思って 300 万と書いたら 300 万になった
  • エンジニア評価制度
    • カンファレンスやコミュニティの活動が推奨された
  • builderscon Tokyo でトークをさせてもらえた
    • 集客できなくて悔しい
  • WEB+DB PRESS & Software Design
    • テクニカルライティングについて学んだ
  • YAPC
    • YAPC::Fukuoka 2017 HAKATA
    • YAPC::Tokyo 2019
  • 「九」州 良いコミュニティ
  • 空港が近い→全国様々なカンファレンス
    • アウトプットを評価してくる場は、幸運
  • 「熱」
    • 良くしたい
    • 言語、役職、職種の壁がない
  • 「怠惰」「短気」「放漫」
    • 技術力で解決する人
    • 技術力が高いとコミュニケーソン能力も高い
  • Hacker の仕事はプログラムを書くことではなく課題を解決すること
    • AI に奪われるものではない
  • イデアが浮かんだ後、コードを書き始めると写経になる
    • AI によって解消される
  • AI によって変わらないと思うこと
    • やるやつはやるしやらないやつはやらない
  • Hacker であり続けるために
    • いい課題、研鑽を続ける、事例から学ぶ
  • Hack し続ける
    • 怠惰、短気、傲慢
    • 「手段」は変わる。「目的」は変わらない
  • これをどう使うか、考え続けるのが Hacker

クロージング

  • ドタバタでした
  • ベスト LT 賞
    • GO 「運転手ごとの癖を学習して迎車したりしている」
    • moznion さん 「今日の日のためにやってきてそうだった」「ふざけたトークだったが、エッセンスは詰め込んだ」
    • 2+3万円九州グルメのカタログギフト
  • ベストトーク
    • カヤック「スイッチ2は自前で買いました」
    • Sosuke Suzuki san / 「別のカンファレンスで話す予定だった」
    • 明太子,しゃぶしゃぶ、PaperWhite、Switch2
  • 48 人のスタッフ、 419 人の参加者
  • Ending ムービー
  • 記念撮影
  • 2015 年 YAPC::Asia
    • YAPC JJapan で 10 年
    • 全国各地でいろんな出会い
    • YAPC::Asia の場に戻る→ Tokyo Big Site 2026年11月28日、29日
    • YAPC::Asia と同じスタイルを再現する」