そのごの UUID::Object

だらだらと書く。

  • 仕様をフルに満たしている UUID の CPAN モジュールがほとんどない
  • Pure Perl で書かれたまともな UUID モジュールが CPAN にない
  • そのくせ UUID の既存の実装が CPAN にいっぱいあって混乱ぎみ
  • (ここまでは UUID と Perl について - daily dayflower 参照)
  • じゃあもう Any::UUID みたいなの書いちゃおう
  • でも Any::UUID が吐くデータは何にすればいいんだ?
  • 一般的な UUID 文字列だけってのもアレだよね,Data::UUID みたいに base64 で吐きたいこともあるかも
  • じゃあ共通の表象を作ろう ⇒ UUID::Object
  • ついでにそれを吐く PurePerl generator も作ろう ⇒ UUID::Generator::PurePerl
  • Any::UUID みたいなのは作るのめんどくなったからあとにしよ
  • (ここまでは UUID::Object と UUID::Generator::PurePerl を書いた - daily dayflower 参照)
  • Data::GUID::Any なんてのが出てきてる!先こされた!
  • つか Data::GUID って何よ
  • Data::UUID の作者の RJBS のモジュールで UUID::Object みたいな OO 作法のモジュールじゃん
  • 同じようなモジュールあげてしまった。
  • ヤバい。超ヤバい。
  • でも調べたら Data::GUIDData::UUID (XS) に依存してるし,発想違うよね。*1
  • まいっか
  • RJBS から「雑多にインタフェースがあってもしかたないから統合しない?」ってメールきた
  • ヤバい。超ヤバい。
  • 下記事項でだいたい合意
  • とりあえず UUID::Object, UUID::Generator::PurePerl を将来的に取り下げる準備をした ←いまココ

てことで,まだ使ってる人もいなかったかと思いますが,

ともに非推奨です。

教訓: 下調べはしっかりしよう

Perl 5.6 に対応させる

さいしょ 5.8.1 以降対応で開発してたんですけど,CPAN Testers の results に NA が結構つくのがくやしい!

と思って 5.6 でも動くようにしました。

基本的には corelist 調べて,5.6 にないやつは PREREQ_PM に追加していけばいいんですけど,一ヶ所だけハマったのが Exporter の機能。

5.6 付属の Exporter だと

use Exporter 'import';

っていうやりくちが使えないんですな。

素直に our @ISA = qw( Exporter ) すりゃいいんですけど(それか PREREQ_PM に新しめのバージョンを指定する),昔の Exporter の修正履歴をみて,いけそうだなって思って

use Exporter;
*import = \&Exporter::import;

ってやったらうまくいきました。

普通はおすすめできないけどまぁこんなやり方もあるってことで。

DEVELOPER RELEASE する

んで,こういうちまちました「実験」を普通のリリースにするのも迷惑がかかるので,そいうときはとりあえず DEVELOPER RELEASE して CPAN Testers にテストしてもらいましょう。

DEVELOPER RELEASE する方法は CPANモジュールをDeveloper ReleaseとしてUploadする方法 - dann's blog - # 参照。

これすると,CPAN Testers のページにいったときにテスト結果の詳細がでてこなくて焦るんですけど,右上の「Preferences」にある「Dist Maturity」を「Official ONLY」から「All Releases」に変えると,左上の「Module version」に DEVELOPER RELEASE も選択肢にでてきます。

いろんなバージョンの Perl でテストする環境はなかなか揃えられるものでもないので,CPAN Testers のメカニズムに感謝感謝です。あと CPANTS も励みというかモチベーションになりますね。

*1:正直いって実装も理解しづらかった