モジュールをロードするモジュールはどれを使うのがいい?

モジュールをロードするモジュールは幾つかあるが、どれを使うのがいいんだろうか。まぁ場合によりけりなんだろうけど。僕が知ってるのはだいたいこんな所です。

UNIVERSAL::require

ちなみに僕は普段、何も気にせず UNIVERSAL::require を使ってました。OO な感じで書けるのが個人的にはいいかなと思ってた。

Module::Load

Module::Load は調べてみたら Perl 5.10 から標準添付のモジュールになっているんで、特に理由が無ければこれを使うのがいいんだろうか。

Class::Load

なんと言っても、CPANモジュールガイドで紹介されているというのが大きい。CPAN本に倣ってこれを使うか。

Perl CPANモジュールガイド

Perl CPANモジュールガイド

おそらく、それぞれのモジュールは使い分けるものなんだろうけど、ちょいと調査不足でピンと来ていないので、引き続き調査しようと思う。

YAPC::Asia Tokyo 2011 に行ってきた

東京工業大学で開催された、YAPC::Asia Tokyo 2011 に行ってきました。僕は、今年を含めて4回目の参加でしたが、今年は参加者と交流をするという目的を持って参加しました。そのかいもあり、色んな方と交流できて、本当に楽しい2日間となりました。

前夜祭は仕事の都合で参加できなかったのですが、1日目、2日目と参加出来ましたので、レポートをまとめたいと思います。

個人的に良かったと思ったセッション

実は、1日目、2日目共に70周年講堂のセッションばっかり聞いてました。

Carton: CPAN dependencies manager

miyagawaさんのセッション。依存モジュールの関係やバージョンの違いを解決するためのアプリケーション。僕も、依存関係やバージョンの違いをどのように管理しようか悩んでいたところなので、Carton を使うことで解決しそうです。早速試してみたいと思います。

SmartPhone development guide with Node/CoffeeScript and HTML5 technologies, for Perl programmers

Naoya Itoさんのセッション。スマートフォンアプリは今後、ネイティブから HTML で書く流れになってきている。あと、印象的だったのは「クライアントをjsならサーバもjsでという流れは変わらない」でした。node も来ているという話でしたので、僕も最近、node を触り始めてるので頑張って覚えようと思います。

Mobageソーシャルゲームにおける大規模サーバ運用 with Perl

riywoさんのセッション。mobage のインフラ側の話。HandlerSocket での高速化や DevOps について。「仕様を少し妥協するだけでハッピーになれる」はまさにそうだと僕も感じました。

watch your log - Komainu

nekokakさんのセッション。ログ監視の話。死活監視やリソース監視に比べると後回しにされやすい。Komainu を使うと監視だけではなく、accesslogの集計や application logの集計が出来る。僕もサーバエンジニアをやっていることもあり個人的には1番興味深く聞くことが出来ました。Komainu も是非試してみようと思います。

少人数でのWebアプリ開発 - CGIからPSGIまでの変遷

aloelightさんのセッション。4年間の環境の変化についての話。CGI - ModPerl - PSGI へどのように変わっていったのか、非常に共感できる内容でした。また、テストを書かないのはあり得ないみたいな環境を作るのは大事だと思いました。僕の現場ではテストを書く習慣が無いので、参考にしたいと思います。

YAPC全体の感想

Perl だけではなく、インフラ周り、DevOps と Perl を取り巻く内容も多いのが特徴的だったと思います。個人的には、Perl でコードを書きつつサーバの管理もするという立場なので、幅広く色んなことが聞けたのは大きかったです。

懇親会

実は過去3回の YAPC では懇親会に参加したことが無かったので今回が初参加でした。懇親会の前に、ももいろクローバーZ(以下、ももクロ)つながりで Twitter で仲良くして頂いていた @sugyan さんにまずは挨拶。ももクロを知らなかったら、交流する機会が無かったかもしれないと思うと、ももクロが僕の交流を円滑にしてくれたと言っても過言ではないです。

懇親会では、@sugyan さんを通じて @riywo さん、@miyagawa さんとも交流でき、本当に感謝しています!また、尊敬している @zigorou さんとも久しぶりに会話が出来て楽しい懇親会となりました。

最後に一言

セッションやLTの話し手側も楽しそうだなと思いました。僕も機会があれば、LTあたりで何か話せるようになりたいです!

gtk2-perl #3 イメージビューアにメニューバーとファイルを開くダイアログを追加してみた

前回作ったイメージビューアにメニューバーとファイルを開くダイアログを追加して、アプリ開発をしやすい様に、簡単にクラス化してみた。

ソースはこんな感じ。

メニューバーはXMLで構造を定義して、それに対応する、コマンドやハンドラを登録するという感じです。そんなに難しいところはないんですが、情報が少ないので自分用のメモとして置いておこうかと。

実行するとこんな感じ。

前回との違いは、メニューバーが追加されたのと、Quitボタンを削除して、メニューに入れたくらい。

gtk2-perl #2 イメージビューアを作ってみた

入門GTK+の第2章の画像ビューアを Perl で作ってみた。前回から相当期間があいているが、またちょくちょくやっていこうと思う。

入門GTK+

入門GTK+

ソースはこんな感じ。

実行すると以下の様な Window が起動する。

LinuxGUI アプリに興味があるので、少しずつではあるが勉強していこうと思う。

東京電力の電力使用量を表示するスクリプトを書いてみた

http://linknode.net/tepco.htmlJSON API を使用して、コマンドラインから現在の電気使用量/電気使用率を表示するスクリプト書いてみた。

gist にアップしてあるのでソースコードはここ東京電力の電気使用量を表示するスクリプト · GitHubで確認できます。

別に特別難しいことをしてる訳じゃないけど、業務で PHP を書くことが多くなって、Perl を書くことが少なくなってきたのでそのリハビリと、gist を使ってみようというのが目的だったりする。

最近アウトプットが減ってきているので、その辺もなんとかしたいもんです。

MySQL Cluster の ndb_size.pl を使うための準備

MySQL のストレージエンジン、NDB Cluster のテーブルサイズの見積をするのに便利なコマンド、ndb_size.pl*1は、依存モジュール等がありそのままでは使えないんで、その準備の仕方をメモしておく。

依存しているモジュール

  • HTML::Template
  • Class::MethodMaker
  • DBD::mysql

インストール方法

CPAN モジュールを入れるときは、cpanm が便利なのでこれを使う。

# cpanm HTML::Template
# cpanm Class::MethodMaker

DBD::mysqlMySQL をソースコンパイルで入れた場合、パスが通っていないとテストでこけるのでその辺の設定をする。

# export PATH=/usr/local/mysql/bin:$PATH
# vim /etc/ld.so.conf
/usr/local/mysql/lib/mysql

# ldconfig

最後に DBD::mysql を入れて終わり。

# cpanm DBD::mysql

使い方

使い始めたばかりで詳しくないけどコマンドの紹介。大体こんな感じで使う。
ちなみにコマンドは、/usr/local/mysql/bin にある。

% perl ndb_size.pl --database=testdb --hostname=localhost --user=test --password=hoge --format=html > size.html

色々調べてみて、ブログに書けそうなら続編として書くつもりです。

*1:MySQLインスコするとついてくる

Perlのリハビリ開始

昨年、転職した会社の開発言語が、PHPPerl だったのだが、なぜかやったこともない PHP の案件ばっかりやることになって、ここ最近はPHP の勉強を中心にやってた。

PHP に関しては、良い作法もまだよくわからないし、自分のスキルを生かすことなく悶々としてた。ただ、違う言語を習得することは技術の幅が広がるし、活躍の場も広がると思う。

しかしながら、自分が最も得意としている Perl で開発する方が、はまる事も少なくなるだろうし、開発工数も抑えることができると思う。

そんな経緯もあり、次の開発は Perl で書くことになるだろう。もちろん、既存の PHP で書かれたサービスのメンテのために、ゆるく勉強は続けるつもり。

前置きが長くなってしまったけど、Perl でプロダクトコードを書くにあたり、リハビリが必要かなと思い勉強を始めたのである。

Perl を勉強するにあたって、とりあえずこんなところを抑えようと思っている。

新たなフレームワークを習得

今回選択したのは、Mojolicious である。モジュールの依存がほとんどないのが魅力であると感じた。あと、Mojo 自体にも興味を持ったので。

まずは、運用ツールの開発ができるくらいまで勉強しようと思う。

O/Rマッパーを捨てる勇気

DBICCDBI を使ってきたけど、もう少し薄いラッパーの方が使いやすいなと考えるようになった。具体的には、SQL::Abstract の勉強をしようと思う。

GTKGUI プログラミング

完全興味本位である。以前少しやってたが、他の勉強を優先したので、残念ながら止まってる。がんばって再開したい。

少しずつですが、がんばって行きたいです。