すでに一週間が過ぎ、今更感がありますが・・・ 「ブログに書くまでがYAPC」もといPerl Mongersという言葉もあるのでやっていきましょう。
@__papix__に声をかけていただき、8/26に開催された湘南.pm #1で発表してきました。 「趣味でPerlのビルドをしている話」と題して、AWS::Lambdaとactions-setup-perlのお話をしてきました。
趣味でPerlのビルドをしている話
資料はSpeaker Deckを見てもらうとして、簡単に補足等します。
AWS::Lambda
うっかりサンプルコードの末尾に 1;
を付けてしまいましたが、なんと!最新のPerlでは不要になりました!
use 5.38;
use utf8;
sub handle ($payload, $context) {
return $payload;
}
# 1;
# ↑ スライド資料では付けてしまったけど、なくてよい
これは use 5.38
で module_true
feature が有効化されるためです。
詳細は「Perlのmodule_trueフラグを先取り!」という記事を書いたのでそちらをどうぞ。
この記事を書いたときは開発版のPerlで試しましたが、 Perl 5.38 で正式リリースされています。
Perl Hackers Hub に掲載したサンプルコードを流用したことがバレてしまう・・・。
- Perl Hackers Hub 第75回 AWS Lambda入門 サーバレスでもPerlを活用しよう!(1)
- Perl Hackers Hub 第75回 AWS Lambda入門 サーバレスでもPerlを活用しよう!(2)
さて、このサンプルコード、他にもPerlの(比較的)新しい機能を使っているのですが、気がついたひとはいますか? 実は引数の受け取り方が変わっています!
Perlには元々「サブルーチンの引数を定義する構文」がありませんでした。
@_
という記号を使うか、 shift
などの配列操作関数を使います。
use utf8;
# 昔からある引数の受け取り方
sub handle {
my ($payload, $context) = @_;
return $payload;
}
1;
記号が多くて大変初心者泣かせですね。
そこで、Perl 5.36 から signatures
feature が有効化されるようになりました。
この機能を有効化するとサブルーチンに引数リストを書くことができます。
use 5.38; # use feature qw(signatures); で個別に有効化も可能
use utf8;
sub handle ($payload, $context) { # 引数リストを書ける!!!
return $payload;
}
たった5行の短いサンプルコードですが、最近のPerlのアップデートを感じることのできる、味わい深いコードに仕上げました。
actions-setup-perl
今はビルドしたバイナリをGitHub Releasesにアップロードしています。 そこにたどり着くまでは紆余曲折ありました。
Amazon S3, Azure Blob Storage と試してきたのですが、やはりネックになるのはお金。 その点GitHub Releasesは無料なのがありがたい!
発表の中で「408通りのPerlをビルドしている」とお話しました。 これはつまり「408個のPerlのバイナリ」ができるというわけです(進次郎構文)。 「そんなに大量のファイルをGitHub Releasesに突っ込んで大丈夫か?」という点が不安だったので、 GitHub Releasesは避けていました。だってそんなに突っ込む人間他にいないでしょ?
コストの増加に耐えられなくなってGitHub Releasesに移行してみたら、案外行けました。 案ずるより産むが易し、ですね。
「Perl Coreとその他のモジュールをわけてアップロードしないのはなぜ?」という趣旨の質問がありました。 actions-setup-perlは現代のコンピューター処理において欠かせないSSLやJSONといったモジュールを含んでいます。 これらのモジュールは今も開発が進んでいるので、ときどき更新入ります。 一方Perl Coreは、一度リリースされたものに関しては更新が入りません。 更新頻度が違うので、Perl Coreとこれらのモジュールを分離すれば、計算効率も空間効率も上がるのでは?という意図だと思います。
計算効率も空間効率も上がるのは、そのとおりです。実行に移してないのは主に僕のモチベーションの問題ですね。動くものができたので、ひとまずそこで満足しています。 お金の問題もひとまずの解決を見たので、そこまでの優先度がないのです。
他の方の発表等
一週間も経ってだいぶ記憶があやふやな部分がありますが、覚えているものだけ簡単にメモ。
YAPC::Hiroshima 2024
YAPC::Hiroshima 2024の開催日程および会場は, 以下の通りです. 開催日
2024年2月10日(土曜日)
会場
広島国際会議場
とのことです! 広島・・・行ったことないな。
Go向けORM sqllaの紹介とJOINやUNIONを含んだクエリの扱い方
ドキュメントでプログラミング言語に貢献する
この発表ではじめて perldoc.jp のソースコード管理がGitHubに移行しているのを知りました。
- Hack For Perl #3 を開催して、OSDN.net にあったperldoc.jpの翻訳データをCVSからgitへの移行検証ができ、8/17(木) に移行予定です
- perldoc-jp/translation
Perl 5.34がリリースされたときに誤字を見つけて報告したことがあります。今ならそのままプルリクエストを送ることができるわけです。これは便利。
エンジニア育成に効くかもしれないレイヤードアーキテクチャーっぽいソフトウェア設計
お土産
#湘南pm ですすめられた葦のチーズパイ美味しい😋 (撮影は娘) pic.twitter.com/rp08VI1blc
— kobaken (@kfly8) August 27, 2023
主催者が「みなさんYAuthがあって大変でしょうから」と紹介してくれたお土産です。僕も同じものを買いました。 美味しかった。
まとめ
8/26に開催された湘南.pm #1で「趣味でPerlのビルドをしている話」をしてきました。