Blog::kobaken

prove t/foo/bar/baz.t

XS::Parse::Keyword でPerlの文法を拡張をする

この記事はPerl Advent Calendar 2025 19日目の記事です。 昨日は、id:mackee_w のXS::Parse::Infix::FromPerlで勝手にパイプライン演算子を追加する でした。Pure Perl で演算子を追加できるなんて最高にPerlっぽい内容でした。今日は、この記事の続きのよ…

カヤックさん主催のコードゴルフ企画 Anybatross YAPC::Fukuoka 2025 に参加しました

カヤックさん主催のコードゴルフ企画 Anybatross YAPC::Fukuoka 2025 に参加しました。最終スコアは、Hole1: -54, Hole2: -102 で、いずれもPerl縛りでやっていました。全体17位で、両方 Perlだと4位っぽいです。楽しかったです!!開催ありがとうございまし…

YAPC::Fukuoka 2025 を堪能しました

YAPC::Fukuoka 2025 楽しかったです!運営の皆様ありがとうございました!! 2025-11-14 企画LT「プロジェクトの空気を読んで開発してくれるPerlのAIツールがほしい」 speakerdeck.com LayerXさんが企画されたAIをテーマとするLTにて登壇させてもらいました。…

令和最新のPerlについて学べる本(になる予定)をZennに公開しました

こちらです。 zenn.dev 執筆の動機は2つです。 AIに最近のPerlのプラクティスを学習してもらいたい Perlには新旧様々な書き方があるので、AIも色んな書き方をします。 使い捨てスクリプトであれば、別にそれでも良かったりしますが、プロダクトコードに安定…

subtest の名前でテスト対象をフィルタリングするTest2::Plugin::SubtestFilterをリリースしました

jest、vitestなどの --testNamePatternのようにPerlのテストで、subtestの名前でテスト対象をフィルタリングできるTest2::Plugin::SubtestFilterをリリースしました。特定のテストだけ実行したい時、便利だと思います! # t/test.t use Test2::V0; use Test2…

MojoliciousでInertia.jsを利用するためのアダプターをリリースしました

PerlのバックエンドフレームワークのMojoliciousで、Inertia.jsを利用するためのアダプターをリリースしました。Inertia.js は、バックエンドフレームワークとReactやVueなどで書かれたコンポーネントを接続するための橋渡し的なライブラリです。 バックエン…

2025-03-10 LLM Tech Night #5 by LayerX / AIエージェントをプロダクト機能として実装する

こちらのLayerXさんのイベントに参加してきました。ありがとうございました! LLM Tech Night #5 by LayerX - connpass AIエージェントで精度出すには AIエージェントに雑に仕事を投げない、Agentに頭を使わせない 仕事が決まりきったものであれば、AIエージ…

ClaudeでPerlのコードを生成する / きのこカンファレンスの前夜祭で登壇しました

きのこカンファレンスの前夜祭で、 わいとんさんと、Perlの生きのこりと題して、登壇しました。内容は、1990年頃のPerlのCGIから、2025年現在までの歴史を駆け上がり、ClaudeでPerlのコードを生成する内容です。貴重な機会をいただき、ありがとうございまし…

Perlで種別分岐の網羅性チェックをする方法

アプリケーション開発をしていて、種別ごとに処理が分岐されているコードはよく見ると思います。 例えば、次のコードは自然言語の種別ごとに挨拶を返す関数です。 use v5.40; sub hello ($lang) { if ($lang eq 'JP') { say 'こんにちは'; } elsif ($lang eq…

Perlの型ライブラリのkuraと組み込みのclassを一緒に利用できるようになりました

metacpan.org kura meets built-in class! タイトルの通り、Perlの型ライブラリのkuraと組み込みのclassを一緒に利用できるようになりました。 オブジェクトと型を近くにおけて、便利なんじゃないかと思います。 利用例はこんな感じです。(上の画像と同じ内…

PerlでResult型を扱うResult::Simpleをリリースしました

metacpan.org 簡単な利用例 Result型は関数の戻り値を成功または失敗として表して、安全なエラー処理をする旨味があり、F#、Rust、Goなど他の言語でも使われています。詳細は他に譲ります。 Perlでも同様にその旨味は享受できます。加えて、このモジュールの…

カヤックさん主催のコードゴルフ企画のPerlbatrossを勝手に解説、感想。ネタバレ含みます!

Perlbatrossが終了しました! ご参加いただきありがとうございました。1位はこーのいけさんでした。おめでとうございます。現在投稿されたすべての回答が見られるようになっています。この後、ランキングに載らない状態でコードを実行できるようにする予定で…

YAPC::Hakodate 2024に行けなかったけれど、カヤックさんのコードゴルフ企画を楽しんだ

今回のYAPC::Hakodate 2024は子どもが生まれたばかりで泊まりの外出は難しく、YAPCのタイムラインを眺めていました*1。タイムラインに流れてくる数々の美味しそうな海鮮*2をみて、このまま何もせず終わるのはしんどそうだったので、面白法人カヤックさんのコ…

Data::Checks, Type::Tiny, Moose などの様々な型制約を一箇所に保存し、取り出せる kura をリリースしました。

metacpan.org Perlには、Data::Checks, Type::Tiny, Mooseなど型制約を司るライブラリが複数あります。大型のプロジェクトだと、時代の変遷からか複数の型制約が混在することがあると思います。また、最近のPerlだと、class featureのCorinna プロジェクト …

Syntax::Keyword::Assertをリリースしました

metacpan.org assert { ... } と書けば、ブロックの評価値に応じてアサーションします。キーワードプラグインを利用することで本番環境などアサーションが不要な時にパフォーマンスを損ねることなく利用できることが特徴です。コンパイル型言語のアサーショ…

YAPC::Hiroshima アフターイベントのススメ

こんにちは。YAPC::Hiroshima 2024の運営リーダーをしているkobakenと言います。 YAPC::Hiroshima 2024 は、Perlだけにとどまらない技術者たちが、好きな技術の話をし交流するカンファレンスで、技術者であれば誰でも楽しめるお祭りです。とほほのWWW入門の…

Hack For Perl #8 で、YAPC::Hiroshima 2024の準備をしました。

Hack For Perlというイベントの8回目を開催しました。Hack For Perlとは、Perlに関わる人々が集まり、自由に開発を進めるイベントです。 今回は、YAPC::Hiroshima 2024 の開催直前ということもあり、この運営準備をしました。 具体的には次のようなことをし…

2023年に買ってよかったもの

Mac mini M2 Pro 柿渋石鹸 マグロ漁船の靴下 サンダル HURRICANE XLT2 ドメイン kobaken.co Mac mini M2 Pro 今年から開発の業務委託をするようになり、ある程度のスペックのMacが欲しくなり、買った。構成は、10コアCPU M2 Pro、32GBメモリ、1TB SSD。これ…

Hack For Perlのサブタイトルのふりかえり

この記事はPerlアドベントカレンダー 2023の記事です。 Hack For Perlは、Perlに関わる人々が集まり、自由に開発を進めるイベントです。基本的に毎月開催され、参加は無料で、誰でも大歓迎です。5月から始めてみて、今年は7回実施できました。 hack4perl.con…

Perlの型づくりチートシート(2023-12-07 updated)

この記事はPerlアドベントカレンダー の7日目の記事です。 Perlで型制約をつくるType::Tinyというモジュールがあります。Moose,Mouse,Mooといったクラスビルダーの型制約と互換性があり、加えて依存も少ないので、使いやすいモジュールだと思います。 型制約…

Hack For Perl #7 で、perldoc.jp の全エンドポイントのテストを書きました

Hack For Perlというイベントの7回目を開催しました。Hack For Perlとは、Perlに関わる人々が集まり、自由に開発を進めるイベントです。 今回は、perldoc.jp のサーバー引越しのための仕込み作業をしました。 cronで翻訳データを更新しているのをGitHub Acti…

ISUCON13で、参考実装のPerl移植をしました

こんにちは。kobakenです。 ISUCON13で、Goの参考実装からPerlへの移植をしました。ISUCON10から数えて、4年目の移植でした。貴重な機会をありがとうございます! ここでは、今回の移植で工夫したことを書きます。 競技の公平性のためGoのオリジナル実装に忠…

Perlのレキシカル関数の使い所2選

この記事はPerl アドベントカレンダー 2023のN日目の記事です。娘はサンタさんにキックボードをねだっていました。 レキシカル関数というと、ブロックやファイルだったり特定のスコープでだけ有効な関数のことで、スコープ外では存在しないように扱えます。 …

TMTOWTDIのつづき。Bicarbonate(けれど、一貫性を保つことは悪くないこともある)

Perl のモットーは「何をするにもやり方は一つだけじゃない」(TMTOWTDI; There's more than one way to do it. 読みは Tim Toady)で、自分は魅力を感じる。それは、Perlのコミュニティから、Perlに限らずさまざまな技術を愛する懐の深さを感じるから。実際…

perldoc.jp のこの1年の変化まとめと、次の1年

この記事は、Perl Advent Calendar 2023 1日目の記事です。 perldoc.jp というperlの公式ドキュメントやモジュールなどの翻訳を掲載したサイトがあります。 この1年このサイトの中身を弄ったので、その変化をまとめてみます。 BEFORE perldoc.jp は、次の4箇…

Hack For Perl #6 をしました

Hack For Perlというイベントの6回目を開催しました。Hack For Perlとは、Perlに関わる人々が集まり、自由に開発を進めるイベントです。 今回は、ISUCON13の参考実装の移植作業をしていたので、今、パブリックに言える中身はないです! この日の出来事 yusuk…

Hack For Perl #5 でJPRPのチケットをGitHubに移管できました

Hack For Perlというイベントの5回目を開催しました。Hack For Perlとは、Perlに関わる人々が集まり、自由に開発を進めるイベントです。 今回は少し進展がある作業ができました。 第3回目のHack For Perlにて、翻訳データのリポジトリをOSDN.net からGitHub…

WEB+DB PRESS 22.9周年パーティに感謝を伝えるつもりで行ったのに、逆に元気をもらって帰ってきた

WEB+DB PRESSの執筆を経験させていただいて、もともと壊滅的に文章を書くことが苦手だった私が、会社の技術ブログの推進をしたりドキュメントを翻訳するワーキンググループを主導できるようになった。このお礼を、編集いただいた稲尾さん、牧さんに伝えたく…

Hack For Perl #4 を開催しました

Hack For Perl というイベントの4回目を開催しました。Hack For Perlとは、Perlに関わる人々が集まり、自由に開発を進めるイベントです。 今回、自分の進捗はあんまりでした*1が、tenmihi が初参加してくれて、翻訳も初めてしてくれた会でした。すばら 次回…

ドキュメントでプログラミング言語に貢献する

8/26(土) は湘南.pm #1でした。初開催おめでとうございます!主催のid:papix ありがとうございました!! そこで話したことを書いてみます。 意識高めの題ですが、まずはじめに私は翻訳は全くの素人です。英語が得意だから、英語ドキュメントを翻訳してみよう…