吉祥寺.pm11の参加希望者が定員を超えました

kichijojipm.connpass.com

吉祥寺.pm11のイベントページを公開して、丸1日で定員枠が全て埋まり、補欠者が出ました(主催者である自分も登録し忘れていて、今補欠枠です…)。

会場で使わさせて頂いている武蔵野公会堂の会議室は、定員は45人なのですが、発表用のプロジェクタなどを設置する関係で30人も入るとかなり手狭になります。

以前に一度だけ90定員の会議室を借りたのですが、その時は参加人数が割と少なめで全然45人定員の会議室で十分だった、ということもあって、以降はずっと45人定員の会議室を借りていました(利用料も倍になるし)。

しかし、今回既に36人の登録が有り、比較的初めての参加者も多いので、以前から参加されている方があまり参加登録できていない、という状況もありますので、枠が空いていれば会議室を増やして参加者が増やせるようにしたいと思います。

一方で懇親会の会場はさすがに大型の会場が押さえられるか、そこが問題ですが…

吉祥寺.pm11を開催します

kichijojipm.connpass.com

やっといつものペースに戻ってきました、吉祥寺.pmです。

7月の中旬開催ということで暑い夏には、熱い情熱を!ということで、テーマは「いま全力で取り組んでいる言語やライブラリについて」となりました。

熱いトークをお待ちしておりますが、大型イベントYAPC::Fukuoka 2017 HAKATAと、builderscon - Discover Something Newに挟まれての開催なので、肩の力を抜いた緩いネタも歓迎しています。

あと、今まで人前で発表したことが無い方はばっちりフォローします!

USB Type-CのHDMI変換機を買いました

先日の吉祥寺.pm10で運営費のカンパをいただきました。ありがとうございます。

早速ですが、最近USB Type-CのMacBookを持ち込まれる方が増えてきたのと、会場で貸し出されるプロジェクタにHDMI端子付きの物が用意されたのでType-C用のHDMI変換機を購入しました(あとケーブルも)。これでどんなマシンが来ても大丈夫(?)です。

AnkerからはほかにもUSBハブ付きの物も出ていて、常用するにはこちらが良さそうです。

今後とも吉祥寺.pmをよろしくお願いします。

吉祥寺.pm10が終わりました

kichijojipm.connpass.com

今回は参加31人ということで、過去2番目の参加人数、更には初めての参加社もたくさんいらっしゃったので、非常に新鮮なイベントとなりました。

参加された皆様、ありがとうございます。

スライドをアップしたり、感想をブログに書いたりするまでが吉祥寺.pmなので、よろしくお願いします。

次回は7月開催を予定しています。今回はテーマ的にコードがまったく出てこない会だったので、次回はテーマを「ブレイクスルー」として、「こんなライブラリで問題を解決した」「dirty hackだけど、目の前の問題は解決した」みたいなことを話して頂けると幸いです。コード量多めで!

と言うわけで次回吉祥寺.pm11でお会いしましょう。

あと、HDMI接続の人とか、type-C端子の人が増えてきたので、ケーブル類を用意しないと…

Test2::Plugin::TermEncodingというモジュールを書きました

先日、Test2::Suiteを使ってテストを書くというエントリを書きました。

kichijojipm.hatenablog.com

Test2::Suiteには、Test2::Plugin::UTF8というモジュールが含まれていて、これを使うことでutf8 pragmaが有効になり、テスト結果の出力をUTF-8エンコードしてくれます。

しかし、世の中にはWindowsという、未だターミナルのエンコーディングUTF-8ではない環境も有るので、このままでは少し不便です。そこで、Test2::Plugin::TermEncodingというモジュールを作りました。

使い方は簡単で、単にテストコードの先頭でuse Test2::Plugin::TermEncodingとするだけです。これだけで、Term::Encodingモジュールを使ってターミナルのエンコーディングを取得して、適切なエンコーディングの設定が行われます。

また、pipeで出力結果を別のアプリに繋ぐときなど、ターミナルのエンコーディングに合わせたくない時も有ると思いますので、出力先がターミナルではないときには、自動的にutf8がセットされるようになっています。

久しぶりにCPAN moduleを作りたくなったので、作ってみました(久しぶり過ぎて最初MANIFESTを作り忘れて空っぽのアーカイブをアップロードしてしまいました…)。

Programming Perl

Programming Perl

Learning Perl: Making Easy Things Easy and Hard Things Possible

Learning Perl: Making Easy Things Easy and Hard Things Possible

Test2::Suiteを使ってテストを書く

吉祥寺.pmは一応(?)Perlのイベントなので、たまにはPerlのことを書いてみます。

Test2モジュール

Perlのテスティングフレームワークと言えばTest::Moreがスタンダードですが、今リリースされているTest::More v1.3以降では内部構造が全て作り直されていて、Test2というモジュールがベースになっています。

Test2モジュールでは、テストの結果やメッセージが全て「イベント」という形で取り出せるようになっていて、テストモジュールの作者は従来より確実にテストができるようになっています。

詳細は割愛しますが、従来のTest::Moreではテストモジュールのテストが難しい、という課題を解決するためにTest2モジュールは作られました。

Test2::Suiteモジュール

さて、Test::Moreの中身はTest2モジュールを使って書き直されていますが、後方互換性を維持するため単にTest::Moreを使うだけであれば、テストの書き方は従来とまったく変わりませんが、おなじくTest2モジュールをベースにしたTest2::Suiteというモジュールを使うと、今までよりテストを書く上で便利な機能が使えるようになります。

例えばTest2::Bundle::Moreを使えば、より詳細なメッセージを出力するis_deeplyが使えますし、Test2::Plugin::UTF8というプラグインを使えば、Unicode文字列が正しく表示されるようになります。

use Test2::Bundle::More;
use Test2::Plugin::UTF8;

use utf8;

my $hash1 = { name => "ガンダルフ" };

is_deeply($hash1, { name => "サルマン"}, "イスタルの名前");

done_testing;

実行すると(当然ハッシュの中身は一致しないので)テストが失敗し、その詳細なメッセージが表示されます。

$ perl test.t
not ok 1 - イスタルの名前
# Failed test 'イスタルの名前'
# at test.t line 8.
# +--------+------------+----+----------+
# | PATH   | GOT        | OP | CHECK    |
# +--------+------------+----+----------+
# | {name} | ガンダルフ | eq | サルマン |
# +--------+------------+----+----------+
1..1

Test::Moreis_deeplyより読みやすい形式で出力されました。また日本語を出力しても、おなじみのWide Character...のメッセージも出力されていません。

なお、Unicode文字列を表示する際には、Unicode::GCStringモジュールがインストールされていないと、正しい文字幅で表示できない旨の警告メッセージが表示されるので、併せてインストールしておいた方が良いようです。

おわりに

このようにTest2::Suiteを使うことでTest::Moreより分かりやすいテストが書けるようになります。ぜひ使ってみてください。

かんたん Perl (プログラミングの教科書)

かんたん Perl (プログラミングの教科書)

吉祥寺.pm10のトーク枠、LT枠が埋まりました

kichijojipm.connpass.com

吉祥寺.pm10のトーク枠、LT枠が全て埋まりました。

今回はテーマを「カンファレンス、勉強会、そしてPerl入学式」と設定しましたが、実際には発表される方におまかせしているので、主催者である自分も何が出てくるかは全然分かっていません!

参加者はまだ募集中なので、迷っている方は是非ご参加を!