Masteries

技術的なことや仕事に関することを書いていきます.

Class::Accessor::TypeというCPANモジュールを書いた

Class::Accessor::LiteやClass::Accessor::Lite::Lazyはサクッとオブジェクトのクラスを作ることが出来て便利なのですが, newするために初期値を渡す時や, rwないしwoでオブジェクトに値を書き込む時に, 渡された値のチェックが出来ない(例えば, 関数の引数をSmart::Argsでチェックするように...)という点が気になっていました.

MouseやMooを使えば良いという話題はありつつ, それよりももう少し軽量で, Class::Accessor::LiteにSmart::Argsでやっているような値のチェックが出来る程度のモジュールがあったら便利そうでは...? ということで, 若干車輪の再発明感もあったのですが, Class::Accessor::TypeというCPANモジュールを書いてみました. まだshipitはしていません.

github.com

...コードを読めばわかるのですが, まんまClass::Accessor::Lite + Smart::Argsの融合合体という感じのモジュールになりました(ついでに両方のモジュールを丁寧にコードリーディングする良い機会になって良かったです). 結果として, Class::Accessor::Liteのようにオブジェクトのクラスを定義しつつ, Smart::Argsで出来るような値の指定(isadefaultの宣言)が出来るようになっています.

特にimportの実装がもちゃっとしている点, あとはテストが書いていない点などまだまだ荒削りですが, 需要がありそうであればその辺りも整備してshipit出来ると良さそうかな, と思っています. ご意見ご感想などあれば, TwitterやIssueにてお知らせ下さい.

AWS::XRayでEC2プラグインが使えるようになりました

id:sfujiwara さんのAWS::XRayファミリーにいくつかpull requestを送らせて頂いて, EC2プラグインを使えるようにしてみました.

github.com

github.com

X-Rayのプラグインとは

X-Rayには, 公式にプラグイン機能が提供されています. 例えばRubyのSDKだとこういう感じです.

github.com

現在, EC2, ECS, Elastic Beanstalkの各プラグインが用意されており, アプリケーションがそれぞれのリソース上で動いている場合に, その詳細情報をセグメントに含めて送ってくれるようになっています. 例えば, EC2プラグインであればセグメントが処理されたEC2インスタンスのIDと, それが所属するAvailability Zoneの情報が追加されるようになっています.

使い方

Plack::Middeware::XRayを使っているのであれば, 次のようにして簡単にEC2プラグインを有効にすることができます.

enable "XRay"
  name => "myApp",
  plugins => ["AWS::XRay::Plugin::EC2"],

あとはX-Rayにデータが送られるのを待つだけです. ブラウザでX-Rayの各セグメントの詳細を見る時に,

f:id:papix:20190902203156p:plain
「Origin」を見ると, EC2インスタンス上で処理されたことがわかる

f:id:papix:20190902203159p:plain
そのセグメントが処理されたEC2インスタンスのIDやAZがわかる

...という感じで, EC2の詳細な情報も見れるようになります.

あるセグメントがどのEC2インスタンスで実行されたかがわかれば, 例えば何かしらの問題が発生した時, 実際にそのインスタンスにある各種ログを調査するといった作業が手軽に出来るようになり, 問題に関連した情報が更に得やすくなるはずです. 是非使ってみて下さい.

「builderscon tokyo 2019」でLTをしてきました

builderscon.io

builderscon tokyo 2019に参加してきました. 今回は当初, 何かしらのネタでproposalを出そうと思っていたのですが, 「きっとPerlConで燃え尽きているだろうな...」と予想して回避しておったのですが, 案の定風邪(+ その後長引いている咳)で滅していたので, 結果的にセーフ(?)みたいな感じになっていました.

業務だったり, あとは咳による体調不良だったりで, 今回は余りトークを聞きに行くことはなかったのですが, 懇親会や休憩スペースなどではいろいろな方と久々にお会いしたり, 有意義な会話が出来て非常に良かったです.

...とはいえ, このままだと(完全に自責ではありますが)不完全燃焼だな, ということでLTに登壇してきました. 先日参加してきたPerlConネタです.

スライドの中でも紹介している, PerlCon参加レポートはこちら.

developer.hatenastaff.com

今回は, マイクを握った瞬間に何故かいつもよりギアが高まってしまって, 異様なテンションでのLTとなりましたが, 「海外のカンファレンスに参加するのもアリだよ!!! 楽しいよ!!!」という事が伝えられたのであれば, 幸いです.

buildersconは, かつてのYAPC::Tokyoのように, 年に1回いろいろな界隈の人達が集まる大同窓会のような様相があり, また「知らなかった, を聞く」ことができ, 刺激を貰える良いカンファレンスだと思っています. YAPC::Japanなどに関わっている身としては, スタッフの皆様は本当に準備や運営など大変だろうなあ... という気持ちがあって, 今回も素晴らしい場所を作って頂いて本当にありがとうございました, お疲れさまでした! という気持ちでいっぱいです. 来年があるなら是非参加したいですし, 次こそはproposal出して何かしら発表したいなと思います!!!

「PerlCon 2019」参加しましたエントリを書きました

「PerlCon 2019」に参加しましたエントリを書きました. 今回は, 会社からのサポートを受けて業務として参加したので, 会社のエンジニアブログに書いています.

developer.hatenastaff.com

資料はこちら.

リガやヘルシンキで少し観光する機会があったので, これらの様子については別途趣味ブログにて旅の様子をまとめたいと思います.

papix.hatenablog.jp

来年も, ヒューストン(北米)かアムステルダム(ヨーロッパ)か, どっちかのカンファレンスには参加してみたいですね!!!

PerlCon 2019に参加してきます

perlcon.eu

今年の1月, 2018年の振り返りをしたときに, 2019年は「海外に行く」というTryを挙げていました.

papix.hatenablog.com

それを果たすべく, 今月ラトビアのリガにて開催されるPerlCon 2019に登壇してきます. 登壇ということは, 言うまでもなく(?)何かしらの発表をするのですが, 今回はミスって主語がとても大きい「Perl in Japan」というタイトルで応募してしまったので, 今の日本におけるPerlの現状やはてなにおけるPerlの活用事例, 日本人CPAN authorが作った有用なモジュールの紹介や, JPAを含むPerlコミュニティの近況などについて発表し, 意見交換などができたらいいな... と思っています.

英語についてはまだまだ勉強中なので, 果たして大丈夫なのかな... という気持ちは強いのですが, こういうのは経験を積まないと伸びない領域でもあると思うので, 覚悟をきめて(?)参加してこようと思います. 感想などについては, またブログや勉強会などで共有していきたいと思っていますので, 是非お楽しみに.

【PR】

なお, 今回PerlCon 2019に参加するにあたっては, 現在所属している株式会社はてなより, 渡航費や宿泊費など支給してもらって, 業務として参加することになっています. そういうこともあるので, ちゃんとPerlCon 2019からいろいろ知見やPerlの現状など, しっかり持ち帰りたいですね...

さて, はてなでは, 望めばこのように海外カンファレンスへ業務で参加するチャンスを掴むことができます(もちろん, 予算の都合などもあるので万事叶う訳ではないですが...). 興味のある方はこちらからどうぞ!!!!!!!!

hatenacorp.jp