#2「今年書いたCPANモジュール」tech.kayac.com Advent Calendar 2013

@songmuです。

このエントリーはteck.kayac.com Advent Calender 2013の2日目のエントリーです。

今年も無駄にあまり知られないCPANモジュールをそこそこ書いたのでまとめて紹介です。自分以外の人が書いたモジュールをCPANに上げる業も今年結構やったのですがそれらには触れません。

App::RunCron

cronのエラー処理や通知処理を柔軟に行うことのできるラッパースクリプトruncronを提供します。コードはかなりcronlogから拝借したので安心のクオリティだと思います。

Cache::Redis

最近ゲーム開発ではあまりmemcachedを使わなくなったので、Cache::CacheなインターフェースでRedisにシリアライズデータをぶち込む用途で作りました。Redis::Fastを併用すれば、Cache::Memcahced::Fastには及びませんがそこそこ十分な速度が出ます。

Config::PL

config_do という関数をExportします。.pl ファイルを設定ファイルとして扱う際の落とし穴を吸収してくれるモジュールです。地味に重宝します。

DBIx::CSVDumper

データベースに投げたクエリをそのままCSVとして保存したいというニーズがあったので作りました。作ったのは去年でそのままgithub止まりだったのですが、今年なんとなくCPANに上げました。

DBIx::FixtureLoader

ヘッダ付きCSV、YAML、JSONファイルから、データベースに対してデータを突っ込んでくれる君です。Test::mysqldとか開発サーバーにデータを突っ込んだりするときに便利です。

DBIx::Schema::DSL

SQLのDDLをDSLで書けるようにしたモジュールです。通常のSQL直書きに比べて、

  • DRYに書ける
  • 出力されるSQLのクオリティーが統一される
  • Perlの定数をdefault値として扱ったりできる

などの利点があります。

内部的にはSQL::TranslatorのDSLインターフェースとも言えるので、GitDDLとの相性が良いのも特徴です。

GitDDL::Migrator

GitDDLの機能を拡張して、migrate履歴や切り戻し機能、実際のデータベースとの差分などを取得できるようにしたモジュールです。

Parse::Crontab

crontabのテキストをparseするモジュールです。

  • そのcrontabにシンタックスの間違いがないか
  • 指定しているコマンドスクリプトがちゃんと存在するか
  • 狙った時間にコマンドが実行されるか

などのテストを書くときに便利です。

Plack::Middleware::UnicodePictogramFallback::TypeCast

Unicode絵文字をtypecast絵文字のimgタグ等にfallbackしてくれるPlack::Middlewareです。フォントの貧弱なAndroid機に対して使ったりできると思います。次のPlack::Middleware::Wootheeと組み合わせて使うことで、iPhoneで入力した絵文字をAndroidではimgタグで表示すると言った対応をPlack::Middlewareのみで行うことができるので結構イノベーティブです。

Plack::Middleware::Woothee

WootheeによるUserAgentのparseをPlack::Middlewareレベルでやってくれるモジュールです。

Puncheur