ざっくりした感想

Yokohama.pm #11 に行ってきました。偵都ヨコハマやっぱ遠い。 普通に家を出てちょっと早めに着くくらいのつもりだったのに、開始ギリギリだった。あぶないあぶない。

メインはそんむーさん(@songmu)のライブコーディングで、その後はひたすらLTしまくる会、 というのが今回の Yokohama.pm の構成でした。

ライブコーディングって凄く面白くて、普段どんな感じで開発してるのかとか、うまく言えないのだけど 「開発のリズム」ってみんな微妙に違っていて、設計はコード見れば分かるけど、「あーここでこのテスト書くんだー」とか 「こんな感じでコミットするのね」とか、そういうのが分かるのが面白い。もちろん時間制限とかいつもと違う制約が諸々あるから、 普段書いてるスタイルと全く同じ、というわけではないのかもしれないけど。

登壇側の負担はめっちゃあるから、カジュアルにはできないけれど、やってみたい人がいるなら是非是非やって欲しいなぁ、と思う。

ちなみに、ライブコーディングで作ったモジュールは無事 CPAN モジュールとしてリリースされました。すごい

LT は当初の目的とは異なって(?)、(僕も含めて)自分が作ったやつ、作りたいやつを発表する場になっていた。まー面白かったから、 良いんじゃないですかね。発表したい人がいっぱいいるなら、こういうのきちんとやった方が良いと思うけど、そうじゃないなら 発表者が見せたいものを見せる方が良いんじゃないかな、と僕は思うのです

自分のLTについて

僕も LT しました。資料はコチラ(↓)

「テストデータにミルキィホームズのデータを使いたい」という純粋なんだか不純なんだか良くわからない 動機から、Acme::MilkyHolmes というモジュールを開発しております。

Data::Faker というテストデータ生成器がプラガブルになっているので、テストデータでカジュアルにミルキィホームズが使えて みんなハッピーになれるような、そんな世界を目指して日々開発しております。

Acme::MilkyHolmes こぼれ話

Yokohama.pm の今回のテーマが「あなたの思うすごいモジュールを紹介してください」だったし、「ミルキィホームズ&ブシロード7周年記念ライブin横浜アリーナ」 開催記念という事もあるし、ミルキィホームズの舞台はヨコハマなので、できればリリースした上で LT に望みたかったのですが、 なんかコードがダメダメな感じだったので、泣く泣く断念しました。

今回、Acme::MilkyHolmes を開発するにあたって、「せっかく何の制約も無く作れるモジュールだから、普段やった事無い事をやってみよう」と思って、2つチャレンジを しています。

  • ローカライズ
  • ちゃんとしたクラスビルダーを使ってみる

ローカライズ

日英のデータを出せたら素敵だし、ローカライズって真面目にやった事無いので、やってみようと思ってやりました。実施してみて初めて分かる事ってやっぱりあって、 たとえば、英語なら、「名前 苗字」の順で出しておけばいいけど、日本語だと、日本人の場合は「苗字 名前」で、外国人(欧米圏)だと「名前 苗字」になります。

シャロだと、日英どちらでも「Sherlock Shellingford(英)」「シャーロック・シェリンフォード」(日)となるので、問題ないのですが、 ネロだと、英語だと「Nero Yuzurizaki」に、日本語だと「譲崎 ネロ」にならないといけません。

みんなコレ、どうやってるんでしょうね?

キャラクターのデータに「国籍」みたいなのをつければ可能なんでしょうけど、ネロって日本人なんですかね?ってか他のキャラクターもどこの国なんだろ?みたいな ところがあり、こういうの難しい。実際のサービスでも同様だしね。(国籍をデータに持たせる事は可能だが、苗字・名前の順がどうなるかをすべての国に対して持たせるの? みたいな)

クラスビルダーについて

業務だとクラスビルダーあんま使えない感じで、自分で書くモジュールだとがっつりクラスを書く事はないから、Class::Accessor::Lite とかで足りてしまうので、Moose とか Mouse とか Moo とかあんまりちゃんと使った事が今まで無かったんですね。

んで、先行事例を調べてみると、Acme::PrettyCure が Moo を使っているので、「じゃあ僕は Mouse にしようかな」と思って、 Acme::MilkyHolmes は Mouse を使って実装されています。

んで、さじ加減が分からなかったせいで、今の実装は破滅していて完全にダメな感じになっています。具体的に言うと、Role の使い方がボロボロで本当にひどい。

Moose/Mouse の Role ってデフォルト実装を置けるのですが、コレ、定数返すだけとかフィールド返すだけとかにしないと、破滅しますね。あるいはもっとちゃんとしたやり方 があるのかなぁ。実プロジェクトで同じ事やったら大変な事になってたので、その前に試しておいて本当に良かったと思う。

リリースと今後について

とりあえず、Role 周りで無駄に複雑になってる所が解消できたら、リリースしたいな、と思っています。

今後としては、中の人の情報とかもうちょっと拡充したいな、っていう想いはあるのですが、まだやりたい事が明確になってないなぁ。あとは誕生日のデータで 年が無い(設定に無いから分からない)からやむなく文字列で持っているのだけど、コレももうちょっと何とかしたいなぁとかあります。

あとは「文章のダミーデータってどうすんの?」って uzulla さんに聞かれたので、ミルキィの名台詞とか迷台詞とかを混ぜつつ文章も作れたりすると 面白いかもしれない(これは別のディストリビューションかな)

あと、Acme::MilkyHolmes はプラガブルにしたい、と思っていて、G4とか怪盗帝国とかカラーザファントムとか、作りたい人が作れるような感じになっていると 良いんじゃないかなー、とか色々妄想しております。

つーことで、何かご意見とかあれば、issue とか @tsucchi まで送ってもらえると嬉しいです。

最後に、Yokohama.pm とても楽しかったので、次回も是非参加したいです。主催のゆーすけべーさん、まこぴーさん、本当におつかれさまでした。