Apache上のPerl FastCGIはCustomLogにデータを書くことができるか?ついでにmod_perlでのお話

こんにちは、Apache mod_perl が大好物の おがた (@xtetsuji) です。

そういえば、2012年に開催されるYAPC::Asia Tokyo 2012にトーク「モダンmod_perl入門」を応募しました。この記事が気に入りましたら、ぜひとも「イイね!」お願いします。

mod_perlに偏執的なのも良くないなと思って、最近はFastCGIやPSGI/Plack以降のWAFも勉強しています。Perlから外に出られていないのがまだまだといったところですが…;。

それでも好きが講じて、Twitterを使って日々mod_perlの情報を収集しているのですが、今日こんな会話を見つけました。

この会話、要約するに

  • ApacheのFastCGI(mod_fastcgi)を使ってPerlスクリプトを動作させている
  • PHPのapache_note()関数のようにApacheでデータをログに乗せたい → たぶん LogFormat ディレクティブで “%{Foobar}n” 書式を使って CustomLog ディレクティブに指定したログにデータを書きたい
  • mod_perlは使いたくない → 嫌わないで(´Д⊂ヽ

FastCGIの仕様書や、FastCGIを使ったプログラムを書いたり読んだりしたことはありますが、私はそれほどFastCGIの仕様はわかっていません。ただ、当初これはFastCGIでは無理ではないかと思いました。

  • FastCGIは永続環境であるもののCGIの思想を踏襲しているわけで、Apacheとは独立した仕様であり(Nginxやlighttpdでも動きますし)、Apache HTTPリクエストフェーズでの情報交換を目的としたApache独自の「Apacheノート」にアクセスすることは出来ないだろう
  • FastCGI、今回はApacheのmod_fastcgi自体がこの要望を叶えられないのであれば、各種CGIとなるプログラム言語のライブラリレベルで努力しても、少なくとも普通の実装では無理だろう

環境変数ならと考えてはみたものの、perldoc FCGI を読んでみても実際に試してみても、use FCGI; して得られた my $request = FCGI::Request(); を試行錯誤していじってみても、環境変数をApacheリクエスト処理の後続に位置しているログ処理フェーズに伝えることはできませんでした。…;というかそんなのは当たり前ですね。詳しく説明できない程度の知識しかないのがもどかしいですが、FastCGIはApache本体とは独立したコンテナのようなデーモン(サーバ)を作るわけですから。気の利いたソケット(詳しくないけど言ってみたかっただけ)で両者が繋がっていれば話は変わってくるかもしれませんが、最初から勝算はありませんでしたし、うまくもいきませんでした。

perldoc FCGI をさらに読んでも、環境変数はまだしも、Apacheノートに関する記述は完全にありませんでした。敗北が見えはじめました。

基本に戻ってLogFormatのカスタムログ書式を復習してみました。ApacheのサイトにあるLogFormatのカスタムログ書式のマニュアルを読んでみると、任意データを受け取れそうな “%{Foobar}?” といった書式はこれだけありました。

  • %{Foobar}i:入力ヘッダ “Foobar” の内容
  • %{Foobar}n:Apacheノート “Foobar” の内容 (公式サイト上では「メモ」と書いていますが、この記事では「Apacheノート」で統一します)
  • %{Foobar}o:出力ヘッダ “Foobar” の内容

入力ヘッダはいじりようがない(FastCGIが動作するリクエストフェーズのずっと前の、Apacheのヘッダ解釈フェーズで既に処理されている)ので除外。Apacheノートも、上記考察から除外。

最後に残ったのは出力ヘッダ。「あ、出力ヘッダはFastCGIからApacheを通るし、もしかしたらいけるんじゃね?」と思って試してみました。

custom-output-header.fcgi

#!/usr/bin/perl
# ogata 2012/08/03

use strict;
use warnings;

use FCGI;

my $request = FCGI::Request();

while ( $request->Accept() >= 0 ) {
    print "Content-type: text/plainrn";
    print "X-Tetsuji: Hello! World.rn";
    print "rn";
    print "It is fine.rn";
}

LogFormatの設定

LogFormat "%h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i" "%{X-Tetsuji}o"" combined_xtetsuji

手元のApache2+mod_fastcgiにVirtualHostを作って、この combined_xtetsuji を CustomLog で使うようにして、custom-output-header.fcgi を叩いてみました。

以下がそのアクセスログ(IPアドレスは何となく伏せました)

xxx.xxx.xxx.xxx - - [03/Aug/2012:00:08:28 +0900] "GET /custom-output-header.fcgi HTTP/1.0" 200 245 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.57 Safari/537.1" "Hello! World."

お、最後に “Hello! World.” 出てる!

結果的に、出力ヘッダ “%{Foobar}o” を LogConfig ディレクティブに使えば、記録したいデータを出力ヘッダに含めることで、FastCGI でも Apache CustomLog ディレクティブに指定したログにデータが記録できることがわかりました。

…;が、この方法は、わざわざヘッダを見るユーザには記録したいデータが丸見えという明らかな欠点がありますね。これはちょっと…;

Apache FastCGIを使う限り、会話に登場した方が本当に満足する方法があるのか。もしくは上記で良いのか、ちょっとわかりません。私にはこれが限界でした。

あと一つ!mod_perlはPerl CGIの高速化環境として見ても、それほど悪いものではないですよ。FastCGIもmod_perlも永続環境という意味では同じような魅力と問題を合わせ持っていると思います。インフラエンジニアの専門家の方には「Apache自体はスリムであれ」等、鋭いご指摘等があるかもしれませんが。そういったご意見もぜひご教示いただきたいです。

ちなみに、Perl CGIの高速化環境 (PerlHandler Apache::Registry (mod_perl1) / PerlResponseHandler ModPerl::RegistryPrefork (mod_perl2)) のmod_perlでAapcheノートにデータを読み書きする方法は、ざっくり以下です。

  • use CGI; # CGI.pm は Perl CGIの高速化環境下のmod_perl{1,2}をサポートしている
  • my $cgi = CGI->new(); # 普通にインスタンス作成
  • $cgi->r というメソッドが用意されていて、これでmod_perlリクエストオブジェクト(Apache::Request (mod_perl1) / Apache2::RequestRec (mod_perl2)) を取得することができる
  • $cgi->r->notes->get(“BuzzMemo”); # Apacheノート “BuzzMemo” の値を取得
  • $cgi->r->notes->set(“BuzzMemo” => “This is fine”); #  Apacheノート “BuzzMemo” の値を設定

実際にmod_perlハンドラを生で書く場合には幾つかの注意点があったりしますが、今回は割愛(需要あるかな?)。CGI.pmではその部分をなんとなく吸収してくれています。ただひとつ注意点は、CGI.pmのドキュメント perldoc CGI では r というメソッドには一切触れていない、つまり非公開メソッドであること。とても歴史の古いモジュールですので、突然次の日に使えなくなる可能性は限りなく低いとは思いますが、使う場合はその点ご留意ください。

そんな部分も含め、mod_perlの興味深い世界に興味を持っていただいた方は、しつこいですがトーク「モダンmod_perl入門」にぜひ「イイね!」よろしくお願いします!YAPC::Asia Tokyo 2012 会場でのトークや(トーク動画とともに後日公開もされる)資料で、もっと興味深い世界をご紹介します。

Hokkaido.pm#7 に行ってきました

こんにちは、遅筆癖を直したい おがた (@xtetsuji) です。

2012年5月13日に行われた Hokkaido.pm#7 に行ってきました。

…;と、このブログを投稿している7月末になって「何をゴールデンウィーク明2ヶ月前の話をしているんだ!」とお叱りを受けるかもしれません。ごめんなさい。遅筆な上に、ついつい文章を書き始めると長文になってしまって時間がかかるので、書き始めるまでの心理的障壁が大きいんです。

あとブログ記事が遅れた要因として

  • 会社が「おまえよく発表後に体調崩すから発表しちゃダメ」と言われたのに飛び入りLTした事を会社に律儀に報告して許しを乞う(5月中旬)
  • 発表に使ったMyApache2::Sinatraticに大バグ発見。Apache上の複数のVirtualHostで使っただけで崩壊なのには自分ながらガッカリした。修正開始。(5月下旬)
  • 体調を崩す。元々弱い腹に胃腸炎が襲来。(6月上旬から中旬)
  • 胃腸炎の後遺症で戻りかけていた睡眠リズムが崩壊して体調が中々戻らない(6月下旬)
  • MyApache2::Sinatraticさらに修正(7月上旬)
  • 忙しかったり体調不良が続いたり(7月中旬)

といった事情もあります。言い訳。MyApache2::Sinatraticはなんとか「動くように見える」レベルまで修正しました。後述。

今回は簡潔に行きます!要約大切!(いまのところの意気込み) → …;と思って書き始めましたが、結構な長文になってしまいました…;とばし読み流し読み大歓迎!もしくは「あとで読む」に放りこんで、時間のあるときにどうぞ!

Hokkaido.pmは #5 から連続3回目の参加です。今回も東京から札幌へ遠征をしました。

このブログの過去記事より過去のHokkaido.pm。

今回は公式サイトの開催報告が良くまとまっていて見やすいです。動画もスライドも開催概要もここからたどることができます。私もトゥギャッターで協力しました。今回のテーマは「Webアプリ「再」入門」。特にWAF(Web Application Framework)の話が多くをしめました。

今回も各トークの私なりの感想を簡潔に書いてみたいと思います。

「ゼロからはじめるAmon2」@akiymさん

Hokkaido.pmの高校生Perlハッカー@akiymさん。「WAF初心者」とのこと。

「WAFとは?」という問いかけから、Amon2の基本的な使い方を紹介。

「Perl WAF といえば Catalyst?」という時代もあったけど、「なるべく学ぶことは少なくしたい。再入門に時間なんてかけてられない」。確かにそうです。

Perlにおける軽量WAFとして、「Amon2」「Dancer」を例示。Amon2がjQueryやTwitter Bootstrapを同梱していたり、Text::Xslateを標準テンプレートに採用しているといったメリットを提示。

スケルトン生成からデモへ。

flavorとしてBasic(デフォルト)とLarge、Liteがある。Amon2::Lite # Mojolicious::Liteっぽい。

コード例から、コンテキストオブジェクト $c からの基本を解説してくださいました。RequestやResponseはPlackからのシンプルな継承。設定ファイル config/{development,deployment,test}.pl を紹介して、これを PLAC_ENV で切り替えられるというお話。

% plackup -E deployment app.psgi

dispatcherはRouter::Simple。

詳細はスライドを見ていただければよくわかりますが、基本的なスケルトンコードを例示。いわゆるSinatraライクですね。

プラグインも紹介。

  • Web::CSRFDeefender → CSRF対策(トークンを埋め込む)
  • Web::FillInFormLite → $c->fillin_form(); # HTML::FillInForm::Lite
  • Web::JSON → $c->render_json();
  • Amon2::Auth → Twitter, Github, Facebook, Loctouch をサポート
  • Amon2::DBI → $c->dbi

実際にウェブアプリを作ってみるというデモもありました。

まずは「オレオレGyazo」を 「% amon2-setup.pl Gyazo」 として生成。FillIn や CSRF は要らないので削除、dispatcher にべた書き(このあたりはスライドが詳しいです) → 短縮URLの実装もやる → SQLite

ネタ的なおまけとして「KENT WEB」をAmon2で書きなおそう!なんてのもあって会場は爆笑。

  • Amon2::DBI
  • Teng
  • Form::Validator::Lite

素材はこれら。「KENT WEB」が最先端の技術で蘇りました。スゴイ。

まとめ:

  • Amon2は非常にシンプルなWAFで、使い勝手がいいのでおすすめ。
  • WAFは好み e.g. Catalyst, Mojolicious
  • Amon2はコードも読みやすいし複雑なことをしていないのでオススメ

簡単なWAFと呼ばれたAmon2のことが概観できて楽しかったです。

「DancerでWebアプリ再入門」 @aloelightさん

こちらもHokkaido.pmの顔ともいえる@aloelightさんのお話。札幌の会社でPerlの開発やインフラまわりをお仕事にされている方です。

今回のHokkaido.pm#7のテーマ「Webアプリ「再」入門」ということでDancerを使ってみた話。

先行の発表者が宣言したWAFを除いて、残ったものがCatalyst、CGI::Application、Kossy あたり…; その中で一番簡単そうで世界で知名度が高かったのが Dancer だったとのこと。

早速ウェブアプリを作ってみたとのことです。文字通りの機能を持つ「AWS Health Info」

  • Twitterアカウントでログイン
  • AWS Service Health をチェック
  • 登録者にお知らせ

次の一声「間に合いませんでした!」惜しい!業務でAWS触り始めた私も「AWS Health Info」に興味津々だったのに…;。

次にDancer の紹介と特色を紹介。特徴としては以下のようです。

  • Sinatra系のPerl整WAF # 最初から
  • すっごくシンプル
  • 豊富なプラグイン
  • 意外と豊富なドキュメント

インストールは簡単「$ cpanm Dancer」。依存 CPAN モジュールも少ないのだそうです。

Sinatraライクな文法なのは前述で触れられましたが、まさかサブルーチンリファレンスで文字列を返却するだけでレスポンスが書けるとは…; → use Dancer; get ‘/’ => sub { return “Hello, world”; }; dance; # これだけのスクリプトで 5000 番ポートで待ち受けるdaemonの完成。

もう少し複雑なアプリケーションの場合は「$ dancer -a MyApp」とするとスケルトン雛形が作成されるのでMyApp/lib/MyApp.pm にアプリを書くとよいそう。シンプル。基本は use Dancer; するだけ。

豊富なプラグインもあります。現時点で Dancer::Plugin 系が 94件。

メジャーなPluginのご紹介。

  • Dancer::Plugin::Database
  • Dancer::Plugin::DBIC
  • Dancer::Plugin::Email
  • Dancer::Plugin::Thubnail
  • Dancer::Plugin::Facebook

もっと知りたい方は「Dancer plugins ecosystem」http://advent.perldancer.org/2011/17 へGo!、だそうです。

Pluginの作り方も簡単とのこと。

ドキュメントも豊富。

  • Dancer::Introduction
  • Dancer::Tutorial
  • Dancer::Cookbook
  • Dancer::Plugins
  • Dancer::Deployment

Dancerの基本文法をご紹介。ここらへんは上述のように簡単。詳しくはスライドや動画を御参照いただけると良いと思います。Config、Cookie、Session、Templateにもそれぞれ独特のDSL構文(所定のオブジェクトを返す0以上の引数サブルーチン)があって、簡潔さを目指しているなぁというところが伝わりました。

ちなみに標準のテンプレート Dancer::Template::Simple には IF,LOOPが無いので Dancer::Template::TemplateToolkit を代わりに使いましょう、とのことでした。

データベースもやっぱりシンプル。use Dancer::Plugin::Database; をすると database というDSL構文が使えるようになってシンプル。前述の Config 等についても、use Dancer::Config をすると config 構文が使えて同様、等々。

これも前述のようなDSL構文が徹底されたリダイレクトやロギングといった部分を解説し終えた後、AWS Health Info のソースコードを読みながら、その雰囲気を味わいました。

やはり前述のような構文が多様されているため「MojoliciousやAmon2と違って $ が少ない」のが特長とのこと。

Twitter連携についてアドバイス。

  • Net::Twitter は Moose 依存
  • Net::Twitter::Lite はそうじゃないのでそっちを使おう

テストには Dancer::Test というのが用意されているので、それを調べて使いましょう、とのことでした。

感想としては、インポートされるDSL構文(詳細を説明すればオブジェクトを返すサブルーチン型のシンボルようなもの)が多くなるものの、メモリ等のコストとしては大したこと無いでしょう。こういうコンセプトのWAFも興味深い。ただ、日本での使用者人口がまだそれほど居なさそうで、何か困ったときの拠り所や頼れる人が不足しているのではないかという一点のみが懸念点でした。それ以外については、これほどシンプルさを目指したことに感心しきりでした。

「Mojoliciousをウェブ制作現場で使ってみてる」@jamadamさん

前回の Hokkaido.pm#6 の二次会で「初対面」して熱いトークをしたのが @jamadam さんでした。その時は全然知らなかったのですが、氏は Mojolicious のヘビーユーザ。英語のMojolicious ML へのコミットや、GitHub に自作の Mojolicious アプリケーションを精力的にアップしている方でした。私も @jamadam さん作だと知らずに使っていた Mojolicious アプリケーションもあって驚いたくらいです。北海道、Hokkaido.pmは、知れば知るほど猛者の集まりです。北海道出身の私は当然北海道ひいきですが、東京の人は地方を見くびっちゃいけない!

Mojolicious は現在の Perl WAF の中でも情報がいっぱいあります。

  • Mojoliciousアプリを簡素に記述できるMojolicious::Lite
  • MojoliciousというWAF
  • Mojoというモジュール群

このあたりの話をまずざっくりと解説されました。モジュール群の継承関連図の美しさ(本人作)には会場も息を飲みました。

最小のMojoliciiousアプリの例示「use Mojolicious::Lite; app->start;」

話はMojoliciousのモジュールMojoの構造の話へ。このあたりは内部設計まで踏み込んで解説されました。そしてMojoやMojolicious関連クラス群の親クラスMojo::Baseの使い方へ。

Mojoliciousはバージョン2.0からPerl5.8サポートが切られ、Perl5.10以上を必要とするようになってしまい、困ったのでmojo-legacyを作ったとのこと。レガシーな環境へのデプロイの仕事を多く持つ @jamadam さんならではの作品ですが、その原動力には感心するばかりです。ただし、本家Mojoliciousのいくつかのテストが失敗するのが困っているとのこと。それでもmojo-legacyは実践投入されているようです。mojo-legacy の話は紹介で終わり。

本題は「ウェブ制作の現場ではデザイナー主導で組みあがったサイトに動的コンテンツを後付けすることが多い。」「それってPHPが最適解」「でもPerlでやる」という一連の流れ。やっぱりPerl!

実践コードをいくつかご紹介されました。紹介された処理をプラグインにまとめたりもしたそうです。詳細はスライドや動画を御参照ください。

感想としては、WAF素人の私としては、今使うなら日本でも使用者人口が増えてきた Mojolicious かなぁ…;と考えていたので、非常に参考になるトークでした。@jamadam さんが内部設計に詳しくそこにフォーカスをあてたトークだったため、前2つのAmon2やDancerのトークよりも難解さを感じはしましたが、まずは Mojolicious::Lite からコツコツとためしてみようと思います。

「Ops Tools with Perl」@riywoさん

東京から招待されたDeNAの @riywo さんによる Ops (運用) 関連のトークです。

Ops に役立つ Perl 製ツールの紹介をしてくださいました。

まずは有名な @kazeburo さんによる作品 CloudForecast。中身のウェブインターフェースはWAFなのですが、Kossyの元祖であるShirahata.pmというものを使っているのだそうです。Shirahata.pm、名前すら聞いたことありませんでした。

次は GrowthForecast の紹介。こちらのウェブインターフェースは WAF Kossy とのこと。

話はウェブから離れつつ、「はかどる系」のお話へ。

Alien::RRDtool の紹介。名前の通り RRD のモジュール。

chase-tail というツールの紹介。@hirose31 さん作。tail をしながら、指定したものがあればお知らせしてくれる系(だったかな)。これはシンプルなツールゆえ、すぐに活用ができそうです。以下のようなコマンドラインですぐに使えるそうです。

$ tail -f error_log | chase-tail -l 10 -t various_error

そして App::Ikachan のお話。@yappo さん作。これは私も使っています。簡単なHTTPでしゃべらせることができるIRCボット。障害が起こった時等、curl 等のよくあるHTTPクライアントツールで ikachan を叩けば、ikachan が IRC 上ですぐに教えてくれるといった使い方。

@riywo さんは「Touryo」というツールを作っているそうです。コンフィグ管理ツール。ただ、まだソースコードを出すことができないそう。会社でコンフィグ管理の必要性が発生した際に、ChefやPappetでは収まらない要求があったために自作したとのこと。基本はCLIツールだが、ウェブ管理画面もあって、それはAmon2中心に作っているのだそうです。

コンフィグはサーバごとに微妙に違ってくるケースがあって、それが既存ツールでうまくできない部分なのだそう。Touryo、公開が待たれますね!

内部的にはサーバにSSHしているけど、Net::SSH は ~/.ssh/config を読まないので使わなかったとのこと。そういう制限があるんですね。IPC::Cmd で ssh を呼び出すというスタイルを取っているそうです。これなら ~/.ssh/config も反映される。

最後に「どんな言語を使えば良いか?」という問いかけ。色々なスタイルの言語がある。スクリプト型、コンパイル型といった分類。手続き型、オブジェクト指向、関数型言語といった分類。普及しているか否かといった分類。

やはり選ぶとしたら普及している言語を選ぶべきという話。ライブラリが充実していることと、みんなが読めることがその理由

そしてTouryo等でPerlを採用したのは「I love Perl」だから。早く書けるし、なにより自分の周りにPerl Mongerがたくさんいたこと、そしてCPANの存在。

感想としては、私の会社ではインフラや運用はプログラマや開発とは部署が完全に分かれていて、インフラや運用で専用ツールを作るといった発想が無かったです。インフラ部署に行くとプログラムからは離れてしまって寂しいのではという印象すら持っていた。もちろん、既存ツールを使うという選択肢はインフラ部署で取られてはいますが(Nagiosとか)。私も元々インフラ志望だったこともあり、プログラムで「はかどる系」を促進していく、@riywo さんのようなインフラ運用を担うプログラマに憧れを抱きました。

LT

ここはメモが欠落しているのですが、記憶では1枠のLTがあったのみで今回は枠が2つ余っていました。冒頭で書いた通り、会社から「発表すんな」と言われていたのですが、こっそり秘蔵ものを持っていたので、空いているLT枠の話を聞いた時に休憩時間の10分間で簡単なスライドを作って「飛び入りLT」をやってのけました

このLTには動画がありません。会社にバレたときに怒られる可能性があったので、Ustreamを切ってもらったのでした。その後、会社から「それくらいいいんじゃない」と言われたので安堵しましたが…;。また、当初のスライドは10分で作った15枚くらいのスライドで、実際は後半3分ほどは拡大したEmacsにコードを移してカーソルを動かしながら解説したのでした。

私は mod_perl Hacker (Baka) として Hokkaido.pm で前2回トークをしているので「今回もmod_perlで無茶しやがって…;」といった笑いを頂くことができて嬉しかったです。テーマに従って、素の mod_perl を WAF っぽくするという無茶ネタ。興味ある方はぜひスライドをご覧ください。

その後

それでも余ったLT枠の時間で @onagatani さんが Hokkaido.pm についてのお話をされて、さらにそれでも余った時間のため、いつも押し押しになるにも関わらず時間を余しての終了。

懇親会までの時間も必然的に余るわけで「もう懇親会の会場に行っちゃおうか」という声が自然と沸き起こり、普段は19時あたり開始の懇親会をが17時45分に始まることになりました。

懇親会

居酒屋の座敷部屋での懇親会でした。東京からいらっしゃった@riywoさんのために、北海道の海の幸が存分に振舞われました。「カニの刺身が食べられるのはHokkaido.pmだけ」。美味しいものが食べたい方はぜひHokkaido.pmへ行きましょう!トークの質も(私は置いといて)みんな濃い!今最も熱い地方.pmのひとつと断言して良いのではないでしょうか。

二次会

バーのようなところに入ったのですが、すし詰め部屋に押し込まれてトイレに行くだけで大混乱、しかも外野が騒々しい(ダーツやってた?)という中々の環境でしたが、懇親会で入ったアルコールで皆さん打ち解けて話ができました。

三次会

三次会恒例のラーメン。@onagatani さん自信のコースです。東京からいらっしゃった方々も札幌ラーメンに舌鼓を打っていました。

そして、開始が早かったことで、Hokkaido.pm にしては異例の23時解散となりました。結果的に開始が早かったことで解散も早く、身体への負担も減った感じです。次回も懇親会は17時45分開始くらいにしても良いのではないでしょうか。

まとめ

結局長文になってしまいましたね…;。ここまで熟読してくれた方、飛ばしながらも読んでくださった方、ありがとうございます

当日リアルタイムにEvernoteにメモを取っていたので、トークの概要の大方はコピペ修正で編集しています。それでも執筆時間は2時間ほど。遅筆…;(なのかな)。でもせっかくの熱いHokkaido.pmの活動、なるべく活字として残しておきたいという思いをどうか汲みとってやってください。

Hokkaido.pm#5 で初pm参加 + 初トークをしてPerl仲間が劇的に増えました(YAPC::Asia Tokyo は2007年から参加しているけどいつもぼっちでした)。東京在住ですが北海道出身の私にとって、Hokkaido.pmは文字通り私の故郷でありパワースポットであり、意欲や情熱などの大切なものを色々頂いている本当に素晴らしい場所です。主催の @onagatani さん、@aloelight さん、その他常連の皆さん、本当にいつもありがとうございます。次回も都合をつけて絶対に参加します!今から本当に楽しみです。

今年も胃腸炎で苦しんだ

こんにちは、いつも病弱で困っている おがた です。

突然ですが、Twitterによってもたらされた大きな情報として何だと思いますか。私は「世の中こんなに腹痛を持っている人がいる」ということを知ったことでした。フォロワーが100人以上いれば、たびたび「腹痛」「#ponponpain」などとつぶやいている人を発見することでしょう。

私も小さい頃から腹痛持ちで、普段から腹が緩いことはもう気にしていない(暴飲暴食を避けたり整腸剤を服用している程度)のですが、これが一歩進むんで病名が付く病気となると大違い。医者によると「ウィルス性胃腸炎」に罹ってしまいました。

2012年6月2日の土曜日。二週間に一回の睡眠導入剤などを処方してもらった帰り、昼食を食べた後すぐから腹痛がしてきました。いつものことだと気にしていなかったのですが、その腹痛の猛威は普段以上なのは明らか。その日の夜に飲み会の予定があったので、自宅のトイレに予想外にこもって遅刻しつつも、その日は飲み会に行きました。飲み会中は一時的に腹痛は収まった感じでしたが、帰宅してから猛烈な腹痛が続く…。横になっていると多少は楽なのでベッドに横たわるしかないわけですが、結局トイレとベッドの往復を日曜日月曜日と続けて、会社を休んで火曜日に「これはいつもの腹痛ではない」と危機感を感じて自宅の一番近くの病院に行くことにしました。そこで診断された病名が「ウィルス性胃腸炎」

私は偏執的なライフロガーなので、普段食べるものの写真を撮ったり、入った外食店はfoursquareでチェックインしています。なので、何を食べたかという記録を遡るのは簡単なのですが、今回は原因となるような(例えば生ものとか)ものが全くわからない。医者によると「胃腸炎には食事以外の感染経路もある」とのことで、公共のモノを触れた手を洗わず口に付けたりすると病原菌やウィルスが感染してしまうこともあるようです。手洗いは本当に大切ですね。

実は昨年2011年の5月にも「ウィルス性胃腸炎」に罹ったことがあり、その時は2日前に立ち飲み屋で鳥刺しを食べていたのが明らかな原因でした。納得がいなかったのは、その場で一緒に鳥刺しを食べた自分以外の誰も胃腸炎にならなかったことでしょうか(笑)。大体ウィルス性胃腸炎の潜伏期間は2日とのことで、これ以外の原因は無いと断定できるほどでした。鳥刺しを食べたのは、そこに出てきてみんなが自然に食べているので別に何も気にせず食べた以外の理由はありませんでした。

ユッケやレバ刺し等の生肉の規制が話題になる昨今ですが、私はそれを食べるのは自己責任だとは思いつつ、自分はもう絶対に食べないし、子供や老人や私のような腹の弱い人に説明無しに食べさせるのは無しだなという立場です。生肉は自分は食べない立場でも、これが生魚とか生卵に波及してくるのは嫌じゃないですか。魚の刺身が食べられなくなったら人生の楽しみが半減です。

もともと腹が弱い自分。結局3週間くらい会社を休むことになり、自宅で静養するしかありませんでした。罹患してから2週間くらい経って、薬のおかげで腹の調子が上向いた時を見計らって会社に行くも、完全復帰するまで相当な時間がかかっています。昨年もそうだったなと思い返しました。

胃腸炎と一口に言いますが、結局、感染経路が食事であることが明らかであれば胃腸炎は食中毒と同じ意味なんですよね。食中毒と聞くと非常に物騒な響きですが、そんなのに二年連続でなってしまうとは…。これからは食事には細心の注意をするとともに、帰宅時の手洗いは絶対に欠かさないようにしようと心に誓った次第です。

実際、医者を始めとした色々な人に聞いたところによると、胃腸炎等の下痢時に避けたほうが良い物の例は

  • 牛乳
  • 炭酸飲料
  • アルコール類
  • 塩分・香辛料の強い食品
  • 食物繊維の多い食品・生野菜など

だそうです。油や刺激物や消化に負担があるものがダメなんですね。自覚症状が出た日に、事前に予定されていた飲み会に行ったことは医者にも咎められました。でも普段から腹が緩いんだから、そんなの気にしていたら飲みに行けないじゃん!とは思いましたが…。

逆に、胃腸炎等の下痢時によい食べ物の例は

  • うどん
  • おかゆ
  • とうふ
  • 軟らかくゆでた野菜
  • バナナ
  • スポーツドリンク

だそうです。私は自炊を一切せず普段コンビニ生活の人間なので、うどんととうふを買って毎日食べていました。でも、そんなので栄養が付くわけがない。起き上がるだけで本当に大変なほど体力が落ちてしまいました。今では胃腸炎の腹痛はすっかり治まりましたが、落ちた体力の回復までは至っていません。そして睡眠リズムは乱されたままです。

後は脱水症状にならないように水の摂取は欠かさなかったのですが、水ばかり飲むのも問題だと後で指摘されました。塩分等の電解質が摂取されず排泄される一方だからだそう。そういう時はスポーツドリンクを飲むと良いそうです。私はスポーツドリンクの味が大嫌いなのですが、そういう時は仕方がないとして飲むしかないのかなと思いました。

うどんととうふだけの生活で落ちた体力を取り戻すため栄養摂取のために野菜ジュースを時々飲んでいたのですが、野菜ジュースもダメだと二軒目に行った(症状が治まらず悪化の一途をたどって我慢の限界だったときに一軒目の医者が休みだったので)医者に言われてしまいました。「軟らかくゆでた野菜」と同じだろうと思っていたのですが、結局繊維質なものが残っているのが野菜ジュースだということです。知っている人に言わせれば「バカか」と言われそうですが、そんなの分からんって…。

冒頭で睡眠導入剤を処方…というように、もともと睡眠リズムもまるで上手くいっていない私ですが、胃腸炎で数週間昼夜関係無くトイレとベッドの往復を余儀なくされたおかげで、睡眠リズムもすっかりズタズタに崩れてしまいました。これもまた昨年も同じだったなぁ…。睡眠リズムは5月末から調子が良くなかったのですが、6月2日の胃腸炎発症でトドメをさされた感じですね。

結局ほぼ一ヶ月まともな活動ができなかったような気がします。会社にも途切れ途切れにしか行けない、書きたいブログエントリも書けない、書きたいプログラムも書けない…といった状況でした。今ようやく胃腸炎から脱し、こんなエッセーブログ記事が書けるようになった、そんな状態です。

腹痛も無くなり、後は失われた体力を取り戻して睡眠リズムを整えるだけです。「失われた6月」を少しでも取り戻すために、6月残りの一週間弱を仕事とプライベートの生産的な活動に当てたいと思います。色々とご迷惑やご心配をおかけした皆様にお詫びとお礼を申し上げます。

2012年5月11日から15日までの北海道での予定

こんにちは、地元が北海道の おがた (@xtetsuji) です。

このブログを書いている今が2012年5月11日なので急といえば急なのですが、2012年5月11日から15日まで北海道に行きます。

  • 5月11日(金)の夕方に会社を出て、羽田空港→新千歳空港、と移動
  • 5月11日(金)の夜に札幌入り→そのままホテルにチェックイン
  • 5月11日(金)の夜は、いとこと会う予定
  • 5月12日(土)はHokkaido.pm#7とその懇親会 (これがメイン)
  • 5月13日(日)にホテルをチェックアウトして、気が向いたタイミングで実家(帯広)へ向かう
  • 5月13日(日)の夕方までには実家に到着
  • 5月14日(月)は実家で静養 (部屋の片付け等の雑事や、親戚周りをしているかも)
  • 5月15日(火)の朝に実家を出て、とかち帯広空港→羽田空港→会社、と出勤

札幌や帯広で上記日時周辺で都合が付いて会いたいという方がいらっしゃったらぜひ連絡下さい。遊び語りましょう。

Perl Beginners#2 に参加してきました #perlbeginners

こんにちは、Perlビギナーの おがた (@xtetsuji) です。

2012年4月27日に、東京の文京シビックホールでPerl初心者向けのイベント「Perl Beginners #2」が行われ、参加してきました。

当日の実況等はTwitterでも #perlbeginners ハッシュタグで流されていて、私がそれを以下にトゥギャりました。Twitterに流されていない感想ブログについても、見つけたものは末尾に載せました。当日の雰囲気を把握する上では、こちらをザッと読んでみると良いかと思います。

以下は、私から見た Perl Beginners #2 です。

あまり皆さんとは関係ない事なのですが、2012年3月1日に当社の開発部署にも新人さんが入社。ようやく、開発部署が1〜2人というごく僅かな事態が改善されつつあります。ただ、新人さんは実は前職がIT業界ではないこともあって「ここにいる1〜2人の人間が開発者の象徴だと思われると困るな、もっと広い世界のたくさんの開発者像を知ってほしいな」という思いがあり、ビギナー向けと呼ばれるこのイベントに参加してみることにしました。強制参加にはしたくなかったので、最初は都合が良くて気が向けば…という感じで誘ってみたところ、好意的に参加してくれることになったのでとても良かったです。意欲が高いその姿勢は素晴らしい。その後、会社からも公式に勉強してきてね(交通費が出て勉強会の時間中は出勤扱いになる)ということになって、最近は会社の理解もあるなぁ、と色々ありがたく思ったのでした。

私もPerl歴というかPerlを本気で書き始めてから9年ほど経過しましたが、偏った知識ばかりが蓄積して一般的な知識という意味での成長が見られないので、このイベントでいろいろ勉強させてもらえればという気持ちで参加しました。

初参加のイベントだったので、緊張しつつも会場入り。

既に主催者である @ytnobody さんによって会場設営が完了していました。

PerlBeginners#2 会場の様子

JPAさんの補助により、会場代はタダ、すなわち参加費もタダ!JPA++。また、JPAからのゲストに @zigorou さんがいらっしゃっていました。

主催者の @ytnobody さんに「写真撮ってね!ブログでレポート書いてね!雰囲気伝えてね!」と発破をかけられていたのですが、あまりたくさんの写真を撮ることができませんでした。場慣れしていない初参加イベントだと、どうも動きが鈍る…。

以下、当日のタイムテーブルが書かれたホワイトボードです。

PerlBeginners#2 当日のタイムテーブル

ビギナーズセッション

この「ビギナーズセッション」というのは、発表者が自分が今取り組んでいることを発表しつつ、聴衆に向けて「もっと良いやり方がありますか?」と問いかけるというもの。主催者とゲストの知識人が答えてくれるという面白い試みです。

まずは @c_tyo さんによる質問。ajax.cgiというPerl CGIをjQueryの$.ajax()で叩いてFacebookのような(画面遷移の少ない)ページを作っているが、もっとよい方法があるか、というもの。

知識人からの回答としては、やはりCGIよりもPSGI/PlackベースのWAFを使ったほうがいいのではないか、JSONの扱いならJSON.pmでやったほうがいいのではないか、という回答でした。

次は @i4djunichi さんによる質問。開発環境で作ったものをどのように本番環境にデプロイすればよいか、という話だったと思います。ただ、開発環境と本番環境でOS環境やCPANモジュールのバージョンが違うと…という話から、話題はバージョンを保持するといった話へ。

知識人からの回答としては、DarkPANやOrePANの話が出てきました。私もOrePANは知っていましたが、DarkPANのことは良くわかっていなかったのですが「DarkPANの実装の一つがOrePAN」ということでいいのかな。DarkPAN⊃OrePANという包含関係。

local::libというキーワードも出てきましたが、cpanmの登場によりそういうこともあまり気にしなくなりましたよね。ちなみに私が勤める会社では主にDebianを商用環境に採用していて、自社開発モジュールに関しては、適当な場所にバージョン管理システムから落としてくる、または rsync で転送したモジュールのトップディレクトリを、perl -le ‘print for @INC;’ して出てきた include-path のうちのどこか、大抵は /usr/local/lib/site_perl/ 以下に symlink を作るという方法で解決しています。コアのPerlやCPANモジュールについては、基本的にDebianパッケージになっているものしか使えず、そうでないものはインフラ部署にお願いしてDebianパッケージを作ってもらう流れなので、local::lib や lib などといったプラグマのお世話になることは皆無ですね。ちなみに、商用環境でのcpanmの使用は現状は事実上できない状況です。このあたりは開発部署主導というよりもインフラ部署主導なので私には意見を出せる部分ではなくて…。このあたりは、世間の会社とはちょっと違うところかも。

そしてちょっと早い休憩。

LT

@ytnobody さんによるLT。「PSGIへの誘い」というようなお題で、無名サブルーチンと配列リファレンスがあるだけの、非常に簡単なPSGIアプリを書いて、PSGIが簡単でこれからウェブアプリケーションを書く人にPSGIがオススメであることを分かりやすく解説していました。ちょっとしたハプニング(?)からか「ライブコーディング」が見られたのは、結果的に面白かったと思います。

「PSGIは難しくない」というメッセージ。ただ環境には、トークの中で触れられていた「SSH等でシェルを実行出来る環境であること」「プロセスを常駐させても怒られないこと」「必須じゃないけどperlbrew+cpanmが使えること」の3条件を満たす必要があるのは要注意。そのために、VPS等の環境をご紹介されていました。自宅サーバは色々敷居が高いにしても、「さくらのVPS」の最小構成であれば月額980円でこれが手に入りますし、ちょっと癖があるにしてもdotCloudを使えるようになるとある程度の範囲までは無料で作れるようになるので、良い時代になったなと思います。むしろdotCloudはPerl CGIのデプロイは無理で、PSGI/Plackアプリしかデプロイできなかったんじゃなかったな(この前見たけど調査サボり)。

「Twitterでハッシュタグ #perl を付けて「教えてください」っていうと意外に偉い人が教えてくれる。」という心強い話も。あんまり教えて君になるとdisられそうなので、困ったときの奥の手として使いたいところです。

このプレゼンテーション資料は @ytnobody さんによるページにて公開されています。PSGI/Plackが良く分からっていない人(自分含む)にとってとても参考になる導入資料ですので、一度目を通してみるとよいと思います。

私の会社では、以前は半分くらいCatalystを模倣した自社WAFがあったことがありましたが、現在は世間で言われているようなWAFといったものでの開発がなされていない状況です。ただ、PSGI/Plackの基盤がだいぶ固まった今だからこそ、今後新規で立ち上げるプロジェクトでは、何らかのWAF(Mojoliciousあたりを検討中)でPSGI/Plackの恩恵にあずかりたいと考えています。

次は @pohtarou さんによるLT。WAF(Webアプリケーションフレームワーク)「Kossy」によるWebアプリケーション作成のトークでした。Kossyは@kazeburoさん作のWAFでSinatra(RubyのWAF)風、簡単にWebアプリケーションを作ることができるというものです。

トークの中で「ストーカー力」という言葉が出てきたのが興味深かったです。「とりあえず書く」「ネット上をくまなく探す」そしてその作者に質問をぶつけるという意味だったかな。

とにかく疑問・質問・賛辞は作者にどんどんぶつける。多くは返答が返ってこないかもしれないけど、その中からバグが発見できたり自分の疑問が解決できたり、作者が喜んだり、色々良い事があるのかなと改めて思わされたトークでした。

質問タイムに「Kossyで作った商用サービスはありますか?」という質問をしてみました。まだ、社内サービスでの投入の段階とのことでした。

次は @irmr_log さんによるLT。「Perl歴2年ちょいで、LTもパワポも初めて」だそうです。その割には場慣れしている感じでした。

トークの内容は、HTTPヘッダ、W3C、MIMEタイプなどを解説した後、Webスクレイピングをするという話に到達。LWP::UserAgentが基盤としているモジュール、HTTP::{Response,Headers,Message} 辺りを解説した後で、この中にある文字コード判定コード $res->decoded_content() に着目してひたすらそのコードを解説するというガチンコトークでした。

たぶん、プレゼン資料に細かい字で書かれたコードをここで読めというわけではなく、雰囲気としてスゴイ大変なことをしているんだということが分かること、あと実際に動いているCPANモジュールのコードの中には色々なエッセンスが入っていてソレを読むことは勉強になる、という理解でよいのかもしれません。

文字コード判定といえば、Perl5.8から登場したEncode::Guess、またスクレイピングモジュールとして有名なWeb::ScraperやWWW::Mechanize等については割愛とのこと。自前でWeb操作系クラスを書くときにはdecoded_content()のコードをうまく活用するとよいかも、とのことでした。また、LWP::UserAgentを用いたコードを使うとき「コンテンツ取得部のデコード処理が適切か」といったことを抑えておくと良いという話もありました。

JPAセッション

JPA(Japan Perl Association)からゲストで来られた @zigorou さんより、今後のJPAの活動まわりのお話がなされました。本人曰く「技術系以外のプレゼンは初めて」とのこと。内容も、JPAという組織の活動といったことが大部分で、Perlのコードは一行も出てきませんでした。

まずは組織と新しい理事のお話。

PerlBeginners#2 JPAのスライド

@shakuji さん、@nekokak さん、@ktat さんが新しい理事に迎えられたというご紹介。

その次は活動報告について。JPAは首都圏や地方のPerlコミュニティの勉強会やイベントを支援しているという内容。私もこの制度のお陰で、札幌のHokkaido.pmで著名な方にお会いできたりして、非常にありがたいです。

さらにperldoc.jpのお話。個人所有だったものをJPAが買ったとのこと。今はperldocの和訳が読めるというサイトだけど、今後は日本のPerl情報が集約されて読めるきちんとしたサイトにしていきたい、そのためにデザインもid:nagayamaさんにお願いすることが正式に決まったとのことです(このあたりの話は先日Ustreamで拝見したKyoto.pmでもid:nagayamaさんが直々にお話していた気がします)。

そしてみんな気になる「YAPC::Asia Tokyo 2012」の話。テーマは「Take Another Step Forward」。ゲストは以下の豪華メンバー。

  • Gosuke Miyashita (a.k.a. mizzy)
  • Tim Bunce
  • Adam Kennedy
  • Larry Wall

その他「IRC(freenode)に入ろう」「ボランティア募集中(Join #yapcasia-staff@irc.freenode.org)」といったお話で締めくくられました。

昨年2011年から私の会社もYAPC::Asiaのスポンサーになることができましたが、今年も会社と相談をして、スポンサーを継続できるように働きかけていきたいと思いました。また今までperldoc.jpの情報にお世話になった恩返しとして、新perldoc.jpサイトの和訳等のボランティアで協力できることがあればしていきたいと思った次第です。

撤収

みんなで片付け。

片付け最中に、懇親会には出られないという @zigorou さんと少しお話させて頂きました。Hokkaido.pmでちょくちょく発表している私を伝え聞いていたとのことで、著名な方に知っていただいているとは本当に嬉しい限りでした。

懇親会

懇親会の会場は水道橋駅の近く。文京シビックホールの春日駅近辺からしばらく歩きました。

懇親会への参加は12人。全員男性でしたが、本体のほうには女性の参加も数名いました。

個人的にIT業界で男性女性をことさら分ける意義は特に無いとは思うんですが、大学や専門学校等で最近は扱われる機会の少ないPerlを勉強していこうという方が男性女性問わず増えていくことは、とても好ましいことだと思います。

PerlBeignners#2 懇親会

懇親会では酒が入った熱い話が続きましたが、途中からついつい私の偏ったPerlの知識の総決算でもある mod_perl について熱く語ってしまいました。同席の方、申し訳ありませんでした。私がここまで mod_perl に傾倒することになった経緯については、どこかでまとめて紹介できればと思います。

各自色々な話で盛り上がった後、終電が迫っている方から順に解散していきました。

最後に

次の開催は2ヵ月後、6月29日(金)を予定しているとのことです。隔月開催なのかな。非常に有意義な勉強会でしたので、次回もぜひ参加させていただこうと思います。

第6回 Twitter API勉強会に参加してきました #twtr_hack

こんにちは、「情報はなるべくオープンな場所に」をモットーにTwitterを活用している おがた (@xtetsuji) です。

先日、4月24日になりますが、「Twitter API勉強会」に行ってきました。今回からタイトルに回数が入らなくなりましたが、前回が第5回なので、今回は第6回ということになります。毎月月末開催の活発な勉強会の一つです。

私は今回を含めて3回連続の参加。前回は(グダった)トーク(Slideshare)をしましたが、今回は純粋に聴衆側として参加してきました (今回のfoursquareチェックイン)。

前回同様、公式サイトは無いようですが、Zusaarのイベント開催ページや、Togetterのまとめがあります。

今回の会場は、前々回(第4回)に行われた御茶ノ水のデジタルハリウッド東京本校さんでした。

デジタルハリウッド東京本校の中

Twitter API利用規約 5月のAPI改訂

最初のトークは、@yusukeyさんによる2012年5月12日に変更されるとアナウンスがあったAPIのお話。

このトークは多くのTwitterを使ったサービスの開発者に興味深い事柄ですが、幸いなことにSlideshareで公開してくださっています(2012年5月14日のAPI改訂 概要Twitter API利用規約概要)。また@yusukeyさんによるブログ記事「第6回Twitter API勉強会を開催いたしました – ビデオ・スライドまとめ #twtr_hack」にてこのトークを含む当日のビデオがとスライドがまとめて観られます。

大きく分けていくつかのセクションに分けて解説をされていました。

  • Rules of Road
  • I. Twitter Content
  • II. Principles
  • III. Twitter Functionally in your Service
  • IV. Commercial Use
  • V. Other Legal Terms

とりあえず「II. Principles」を読んでおけばOKだそうです。憲法のようなもの。

詳細は、上記リンクからたどってください。以下は自分の手元のメモより。

「I. Twitter Content」のメモ。

  • Twitterの利用規約の上になりたつ。
  • Twitterロゴ使ってよい(というか公式の鳥アイコン”Larry”を使ってほしい)
  • 事前の書面での許可なしにTwitter API自体、またはそこから取得したデータの販売、貸与、サブライセンス、再配布することは不可。
  • アフィリエイトとか有償サービスを作るのはいいけど「APIから取ってきたデータ自体」を販売するのは不可

「II. Principles」のメモ。

「憲法のようなもの。これを読んでおけばひとまずOK」

  • ユーザを驚かせない
  • ユーザが意図しないタイミングでのツイートやフォローなどを行わない
  • スパム行為の禁止
  • ユーザプライバシーの尊重
  • 削除したツイートの保管などはしてはならない
    魚拓のようなサービスはダメ
  • Be a good partner to Twitter
    常識的に考えて

「III. Twitter Functionally in your Service」のメモ。

  • どのアカウントで入ったのか、わかるように

「IV. Commercial Use」のメモ。

  • ユーザの体験を損ねない、サービスはタイムラインの外側に構築する。
  • バナー広告をタイムライン内に配置してはいけない
    バナーはバナーとわかるように
  • タイムライン近くに配置したバナー広告は明確に別れている必要がある。ツイートに見せかけた広告表示は禁止。ちなみに広告とわかるツイートはOK
  • 逆にツイートをさせて広告をさせるというのは規約としてはアリ。フォロワーの多い人に商品宣伝をしてもらったりはアリ。ツイートに見せかけた広告はダメということ。

「V. Other Legal Terms」のメモ。

  • TwitterはいつでもTwitter APIやTwitterコンテントへのアクセスを遮断する権利を持つ
  • Twitterは将来Twitter APIや規約、ディスプレイガイドラインを変更する権利を持つ

これはよくある免責事項のようなものですね。いちおうポリシーとしては1ヶ月前までには変更はアナウンスされるとのことです。

「アプリ/サービスローンチチェックリスト」のメモ

  • 自動化されたツイートがいつ行われるのかユーザが明確になっている
  • フォローは自動化されていない (商品名をさけんだ人を自動フォローとかはダメよ)
  • 急激なフォローは行わない
  • アンフォローは自動化されていない
  • ツイート/DMの自動化寄稿にはリミッターがある(1日1000ツイート、250DM、特に@ツイート、URL入りツイートに注意)
  • ディスプレイ、商標ガイドラインを守っている
  • 広告はタイムラインとは明確に区別できるようになっている
  • むやみにツイートを永続化していない
    ユーザがツイートの削除をできるように、またはsite streamで削除ツイートは消えるように
  • 固定アカウントから@ツイートをする場合は利用者に事前フォローをさせている (http://cp.redbull.jp/tweet の例)
  • 恐れずローンチしてください
  • 万が一アプリ/アカウント凍結されたらお問い合わせ https://support.twitter.com/forms
  • 組織的にチェックしたいデベロッパ向け情報
    dev.twitter.com – Twitter API利用規約
    support.twitter.com – レートリミット
  • …;などなど

「5月のAPI改訂」の概要メモ。

  • Twitter APIは2006年から互換性を保ってきた
  • 一部はTwitterのスケーラビリティに支障
  • 新旧APIで新しいAPIデベロッパーが混乱
  • いったん一区切りしましょう。

具体的なAPI改訂については、一覧 https://dev.twitter.com/docs/deprecations/spring-2012 を参照するか、上記スライドorビデオを参照いただけると分かると思います。メモの転記に疲れた?いや、ここは開発に関わる部分なので公式に近い情報を当たって欲しいという理由です(言い訳?)。

当然の流れかと思いますが、今後のTwitter APIはJSON中心になっていき、今回でAtom形式のエンドポイントが無くなります。今後、XML形式も無くなるかもしれない、とのお話もありました。

Twitter  Internationalization

@kn さんによるTwitterの国際化のお話。

現在のTwitterは28ヶ国語。50万人のボランティアが翻訳をしているそうです。その翻訳の受理の流れなどを解説してくださいました。

twiccaについて

twiccaの作者 @R246 (アオヤマテツヤ)さんによる、AndroidのTwitterクライアント「twicca(ついっか)」の話。

もともとはPHPやJavaScriptやももクロ(?)等のサーバサイドエンジニアだったそうですが、Android初期のTwitterクライアントのあまりの出来の悪さに「つい、カッ」となってつくったのが「twicca」だそうです。「当時はJavaとか知らなかった」という発言もありましたが、「つい、カッ」となった勢いはすごいなと思いました。

ネタが無いので、Twitterで「twiccaについて聞きたいこと」というツイートを流してみたとのこと。

twiccaを開発しようと思ったのは2009年7月当時、満足いくTwitterクライアントがなかったから。前段のお話です。

twiccaではユーザに「色」を割り当てることができるのが特長。クラスタごとに色分けをしたりすることで、タイムライン上の視認性をあげることができる。これは大事なツイートを見逃さないためのツイートなので「カラーラベルのご利用は計画的に」とのこと。

バックアップ/同期を実装しない理由→クラウド同期がかっこいい→クラウド同期ができない理由→サーバ料金を賄えない。

「twiccaサポーターズ」というのがあるそうで、twiccaの開発支援プログラムのようです。シェアウェアではないけど、twiccaを金銭面で応援したい人のための制度。目立つ告知はしていないそう。これに参加するとアプリ内の「twiccaについて」に名前が掲載されるらしい。「twiccaは儂が育てた」と言ってよいそうです。

「例の脆弱性」JVN#31860555 についてもお話がなされました。

「お金を積まれたら売る?」という質問には「売りません」とハッキリ発言。「サポーターズが居る限り」。カッコイイ。

最後にtwiccaアイコンの変遷を解説されて終わりました。

私も寝かせているAndroid端末があるので、ぜひそれでtwiccaを使ってみたいと思いました。

LT: 女子中高生とTwitter4J

@i2key さん。リクルート(MTL?)の中の人。

「 マイクロコンテンツ化」という仮説を打ち立てて「3文字の絵文字」で情報を伝達できないか、というサービス「さんもじ絵文字できもち伝わる!Happy Balloon」の紹介をされました。

これはタイトルからも分かるようにネタLTの傾向もあって、動画のほうが場の面白さの雰囲気があるので、時間に余裕のある方は動画のほうをご覧いただくと良いと思います

返信と@ツイートの仕様変更と提案

@tkawa (川村徹) さんによる、返信と@ツイートのTwitter仕様に対する提案のお話。

真面目なお話でしたが、個人的にこれはかなり有意義なトークでした。返信というメタデータと、返信と扱われるか扱われないか現状曖昧な「@ツイート」の仕様について、もっと明確に良い方向になっていって欲しいと思わされました。

詳しくは当該スライドをご覧いただくといいかと思います。

dotcloudによるすぐ始めるtwitter webアプリ開発

@yut148 さんによるdotCloudを使ったウェブアプリ開発のお話。クラウドを大量に使っているゲーム会社 or エンタテインメント会社に所属して、普段はPHPやPythonを使う方らしいです。

dotCloudを使えばとりあえずドメイン名は振られるので、Twitterのアプリ開発に必要なドメイン名を確保することができるとのこと。それに最初はFree!

Freeアカウントの制限は「登録できるアプリは2つまで」「ディスク容量」とのこと。

dotCloudはPHPやPythonだけでなく、様々な言語の様々な環境が選べるので、今後PaaSの環境として要注目かもしれません。2サービスまでなら無料で作れますし、より複数のサービスを作るのであればディレクトリ構成を工夫したりすることでやりくりできるらしいです。

@yut148 さんは本当にdotCloudが好きな方なようで、dotcloudユーザ会(仮称)を作って活動をしはじめているとのことです。

「困ったら@yut148 に質問送っていただければベストエフォートで答えるよ。」という心強いお言葉も。

私も以前、無料だったのでdotCloudにアカウントを登録したっきり使っていなかったので、これを機会に今度時間を作っていじってみたいと思いました。

最後に

情報源

今まで一通りAPIやったので、次回は「Twitter API勉強会」から違う名前に衣替えをする予定だそうです。名前募集中。

  • 名称変更「Twitter API勉強会」→「Twitter Hack(仮)」
  • 次回開催:5月末、6月末、7月末

スピーカー常に募集中!

懇親会

今回は貸し会議室での「立食パーティ」形式ではなく、会場すぐ近くの居酒屋での開催となりました。

当初自分が懇親会に申し込んだ時には定員割れになって開催されないのではないかと危惧していましたが、駆け込みで多くの方が参加されて、居酒屋の予約席は満席状態になりました。

第6回Twitter API勉強会の懇親会「ももや」

 

「ももや」店内の料理の風景

 

Twitter API勉強会といいつつ、私の席ではTwitterの話よりもコンピュータ昔話に花が咲いていた気もしますが、それもまた一興でしょう。

定期的にTwitter開発の旬な話が聞けたり、著名なTwitterクライアントの作者の方のお話が聴ける、この勉強会。非常に有意義でして、私もかれこれ3回の参加をしていますが、今後も予定と体調が許す限り、参加して勉強させていただきたいと思いました。

「foursquareの日」に東京で行われたイベントに行ってきました #4sqDay #4sqDayTokyo

こんにちは、ロケーションベースサービス大好き、特にfoursquare大好きな おがた (@xtetsuji / 4sq/xtetsuji) です。

foursquareの日(4月16日/4sqDay)に東京・中目黒で行われたイベント #4sqDayTokyo に行ってきました。

要するに「foursquareの日」に、世界各地で懇親会(Meetup)を行おう東京版、のようです。

foursquare(以下「4sq」と省略)を始めてから数年、何回か4月16日に行われることは知っていたものの、気になっていただけで行かなかったor行けなかったイベントでした。最近は勉強会等にも積極的に顔を出しているその勢いで、今回勇気を出して参加してみました。

早速、会場のビールバー「中目黒タップルーム」に行ってみると、4sqだけが共通項の人達がどんどん集まってくるではありませんか。そして到着してみんなやることといったら「チェックイン」店の中のかなりの空間を占める相当数の人達が席に座りもせず、黙々とスマートフォンをいじるさまは、店の人(ここが4sqDayTokyoの場所だということを知らなかったようです)や他の無関係なお客さんにとっては異様な光景だったことでしょう。

4sqdayでチェックインをする人々

4月16日に4sqチェックインをした人なら、誰もが「4sqDayバッヂ」をもらったかと思いますが、この会場は「イベントチェックイン」というものが4sqの偉い人(?)によって設定されていました。私にとって初めてのイベントチェックインでした。

4sqdayのイベントチェックイン「中目黒タップルーム」

 

4sqDay Tokyo イベントチェックイン

昨年の4sqDayTokyoでもこの同じ店が使われたらしいですが、その時に用意されて余った4sqグッズが欲しい人に配られました。私はもう色々欲しかったのですが、そこはグッとこらえて、シール2枚バッヂ2枚だけを頂いてきました。

foursquareバッジの入った箱

 

foursquareバッジが並ぶ光景

適宜落ち着いてきたところで、リーダー(?)の@jaytypeさんが音頭を取り、到着した皆さんに説明をして、各自ビール等を注文して適当な席に着席する流れ。

「4sqだけを共通項にどれだけ話題が盛り上がるんだろう」と会場に到着するまでは少々不安でしたが、そこは同じ4sq’er。4sqに対する熱い思いや最近の4sqの動向等、話が尽きない会でした。

Twitterの4sq系ハッシュタグでもよくお見かけする方とも実際に初対面できたりして、そこで初めて名刺交換をして挨拶をして4sqフォローをするという流れも出来上がっていました。

色々な人と話していると、4sqフォローポリシーに関しては「面識が無くても特に問題無いと判断すればどんどんフォローをする」人と、「面識を持って実際にその人が悪い人でないことを確認したらフォローする」人の2タイプがあるようです。自分は基本的に後者です(いくつかの例外はあります)し、この場に集まった歴戦の(?)4sq’erも後者の方が多かったように見受けられます。逆に前者のようなポリシーの猛者の方に「フォローは1000件までなんで今はフォローできないんですよ」という事を言われたりして、「そんな制限初めて知った」状態でした(Twitterにも似たような制限がありますね)。

どんな方が集まったかというと、当然ながら純粋に4sqが好きな人が集まったわけです。さらに細分化していくと

  • ロケーションベースサービス全般に興味がある方
  • マッパー
    (地図サービスに従事していたり、趣味でOpenStreetMapをGPSで修正してまわっている方)
  • 位置情報のコレクター
    (多くの場所にチェックインする方=Collector / 位置情報の修正や正規化に熱意を燃やすSuperUser=Corrector)
  • チェックインで解除できるバッヂ集めに熱意を燃やしている方
  • ライフロガー
  • 4sqを利用したアプリやサイトの開発者・企画者

といった方が集まりました。

もっと「実際に4sqのアプリやサイトを開発・企画している方」が集まるものかと思っていましたが、数十人集まったうち、実際にそういった方に会えたのはほんの数名ほどでした。もちろん、集まっている人達の大半はIT業界のギーク層・アーリーアダプタ層と言える、エッジのきいた人達が集まっていたことは確かです。

私の場合は完全なライフロガー、つまりチェックインをCalDAVでGoogleカレンダーにインポートして、後で時系列を眺めることを趣味としている人なわけですが、意外にもライフロガーはそれほど多くありませんでした。ライフログも兼ねているけどバッヂが好きとか、そういう4sq兼業ライフロガー(?)は何名かいらっしゃったような気がします。

あと意外だったのは、メイヤー(Mayor)数をやりがいにしている人が全くいなかった(少なくとも会場で話した人は誰もメイヤーに興味が無かった事)でした。バッヂ好きのある方いわく「メイヤー争いをし始めると人が不幸になるけど、バッヂ集めは人を不幸にしない」とのこと。

確かに、4sqはここ数年人口もかなり増えて、メイヤー数をやりがいにしている人はどんどんメイヤーを取られてしまい、さらにメイヤーを奪うこともできず、やりがいを無くして4sqに魅力を感じなくなり、知らないうちにやめていくのかもしれません。後は不正チェックインや通過チェックイン(4sqのハウスルールで用語とともに定義されていますが、通過チェックインは禁止とされています)のようなチート手段を使うようになるかですが、そうなると根本的なところでゲーミフィケーション性を感じなくなって終わりという事もあるのかと思います。私も数年4sqをやり続けて、今のメイヤー数は最もメイヤー数が多かったときの半分くらいですから、メイヤー数をやりがいにしていたら今ごろ4sqなんてやっていないだろうな、と思いました。

さすがこういう場だけあって、4sqから一般ユーザより強力な情報修正権限を与えられたスーパーユーザー(SU)と呼ばれる方も多数おられて、そういった方々のべニュー修正方針等をうかがえたのも面白かったです。私もSU検定を受けたことがあるものの一度落とされた経験があります。ただ、この4sq熱が冷めやらぬうちにと、後日再チャレンジしました。結果はまだきていません。ドキドキ…;。

私の好きな「バス」をキーに、「バス停」やそれに関連する「鉄道駅」のベニューをどうするかといった議論も、同じ趣向を持ったSUの方と議論を交わしたりできたのは面白かったですね。

個別に会って嬉しかった方々のご紹介はここでは割愛しますが、本当に面白くて良い人達が集まっていた事は事実です。この場に来るまでに「メイヤー争いなんかを話題に殺伐としていたらどうしよう」と思っていた私はとてもホッとしたと同時に、勇気を出して参加して良かったなと思った次第です。

一次会は2時間ほどで終了して、人数収容の問題もあって二次会はカフェ・ラーメン・飲みの3パーティに分かれました。私は飲みのパーティについていったのですが、意外にも一番人数が少なく(自分を含めて5人だったかな)、その分濃い話ができたのは良かったなと思いました。

来年の4sqDayTokyoも催されればぜひ参加したいですし、今後もこういった4sqのイベント的なものがあれば積極的に参加して、ロケーションベースサービスに興味を持ったりアンテナを張ったりしている方と積極的に交流が出来ればなと思いました。とても有意義な会をありがとうございました。

2012年4月の公開スケジュール

こんにちは、昨年の夏くらいからアクティブに活動していきたいと思い、色々なところに顔を出し始めた おがた です。

4月ももう中盤ですが、今月私が参加するイベント等のスケジュールをお知らせします。基本的に誰もが参加できるイベントばかりなので、興味がある方は一緒に行きませんか?

4月16日のfoursquare Meetupは、全世界で「foursquareの日」である4月16日に行われるイベントの東京バージョン。4の2乗(square)で16だから4月16日は「foursquareの日」というシャレ。foursquareを使って数年経ちますが、何回かこの「foursquareの日」に行われるfoursquare Meetupの話を伝え聞いて、「どんなものなんだろう?」と興味だけ持って行かずという感じでしたが、今年は勇気を出して参加してみることにしました。たぶん、foursquareのAPIを使って何かサービス開発を…という事ではなくて、単純にfoursquareのユーザ交流会のようなものだと思います。foursquareを使っていてfoursquareが好きな方、foursquareを含めたロケーションベースサービスに興味がある方、一緒に参加してみませんか

数年前から、ほぼ毎月のペースで活発に行われている「東京エリアDebian勉強会」ですが、こんなにDebian好きな私なのに一度も参加したことがありません。土曜日の昼から夕方、何かしら用事が入ったり体調が悪かったり疲れていたりする事が多いんですよね。現時点(at 2012/04/12)ではまだ申し込みをしていませんが、今回こそ参加してみようかなと考えています。

こちらも最近毎月のペースで活発に行われている「Twitter API勉強会」。前回と前々回に参加して、前回は10分LT(スライドブログ記事)までさせていただきましたが、今回は発表はせずに聴講側に回ります。Twitter社とは無関係なイベントではありますが、Twitter社の中の人が主催していたり、Twitter社の中で国際化や短縮リンク開発をしている方の興味深いお話が聴ける貴重な場です。勉強会の趣旨から、どうしても楽しむためには開発寄りの知識が必要なトークが多いですが、それだけ濃い話が聴ける場でもあります。開発の知識がなくても「こんなサービス作ってみた」系の話は、開発者だけでなく企画者や運用者の方にも参考になると思います。参加費の面で優遇をすることで、プログラミング言語や開発全般を学習中の意欲的な学生も積極的に受け入れているという勉強会です。若い人の意欲的なお話を聴いて元気をもらう場でもあります。

「Perl Beginners #2」は、タイトルの通りPerlの初心者のために始められた勉強会の第2回目です。私もPerlを8年くらい書いているはずなのですが初心者の域を出なくて…。それが冗談かどうかは追求しないことにしても、先月3月からウチの会社に入社した開発部の新人さんに参加して刺激を受けてもらいたいということで参加することにしました。

…あ、新人さんには強制したわけじゃなくて「用事が無くて、実際の外の開発者の方々の生の声を聴いて勉強したいのであれば参加してみない?」と柔らかく言いましたよ。今も結構放置プレーで勉強したり過去の社内コードを読んでもらったりしていますが、前職がIT関連でないことを感じさせないほど、意欲的に勉強してもらって心強いです。「外に出る事=善、外に出ない事=悪」というわけでは決してありませんが、今の当社の開発部署は本当に少人数なので、私以外の多くの開発者の姿を見せたいという思いはあります。この思いについては書きたい事が色々あるので、別記事で書いてみようと思います。

「Hachioji.pm#16」は、前回勇気を出して参加した先月の「Hachioji.pm#15」の次のイベントです。Hokkaido.pmでもそうですがHachioji.pmでも「地方.pm」の小規模な居心地の良さを痛感しました。せっかくの東京在住ということで、常連を目指して今回も参加することにしました。このイベントの直前の日中に行われるハッカソン(開発合宿的なもの)には今回も参加しない予定ですが、前回(ブログ記事)は「食事をしながら昨今のPerl界隈やさらにその外周の開発事情をざっくばらんに話す」といった軽いイベントで非常に楽しめました

来月5月の予定は「Hokkaido.pm#7」が札幌で5月12日にあるのに参加する以外は特に決まっていません。「Hokkaido.pm#7」は、内々では5月12日開催が決まっていて会議室確保や参加表明が行われていますが、現状は公開イベント開催ページもできていないので、例示できるリンクが現状(at 2012/04/12)ではありません。来月5月についても、この記事と同様に「2012年5月の公開スケジュール」として記事を書こうと考えています。

今回列挙した上記イベントは全て公開イベントです。もし興味があるイベントがありましたら一緒に参加してみませんか?また、私の動向についてはTwitter @xtetsuji で逐次ツイートしていますので、私の動向に興味のある方は是非そちらもフォローしてみてください。

NMLノート 2012年3月版

クラシックは聴く専門の おがた です。

この記事、月初恒例にしようと思って、結局4月になって10日ほど過ぎて更新しています。ダメダメですね…。

過去の記事

NMLって何?」等は上記URLを参照ください。

今月は全然聴いていません。まぁ、2枚以上聴いたから元は取れているかなレベル。

▼フンメル:ヴァイオリン協奏曲/変奏曲 変ロ長調/ポプリ/アダージョとロンド・アラ・ポラッカ(シェリー)

http://ml.naxos.jp/album/CHAN10255 (2012/03/11鑑賞)

NML-CHAN10255

フンメルといえば、彼の代表作とも言えるトランペット協奏曲がスゴイ好きなんですよ。もう第一楽章はヘビロテ。でも、ただでさえメジャーとは言えない古典派の作曲家。その他の作品はCDショップでは見る機会も無いのですが、こういう時のNMLです。

交響曲というジャンルが好きな私にとって残念というか、フンメルは「交響曲の父」ハイドンと同じ時代に生きながら、交響曲というジャンルを一つも書かなかった作曲家でしたが、協奏曲などオーケストラの作品は多岐に渡るものが残っているようです。今回は、そんなフンメルのヴァイオリン協奏曲をチョイス。さすがにトランペット協奏曲ほど熱くは無いですが、これもなかなかの名曲でした。

▼フンメル:ピアノ協奏曲集/主題と変奏ヘ長調

http://ml.naxos.jp/album/CHAN9886 (2012/03/10鑑賞)

NML-CHAN9886

再びフンメルです。今度はピアノ協奏曲。先ほどと同じ「Chandos」というレーベルのようです。改めて調べてみたら、Chandosはフンメルの楽曲が相当充実している。Good Job! とはこのことです。

こちらの「ピアノ協奏曲集」は全集ではないようですが、2曲のピアノ協奏曲を収録しています。こちらもまた名曲です。

iTunesからダウンロード

▼ジョリヴェ/イベール:フルート協奏曲 フランスのフルート作品集 (ミラン/ロンドン市シンフォニア/ヒコックス)

http://ml.naxos.jp/album/chan8840 (2012/03/17鑑賞)

NML-chan8840

これはどういう動機で聴いたんだろうなぁ。メモが残っていない…。N響定期で演奏する曲の予習かな。イベールフルート協奏曲はメジャーな部類だと思いますが、今回初めて聴きました。古典派ばかり聴いていて(買うお金がなくて)、ロマン派とかパリ楽派とかにまで手が回らなかったんですよ、CDを買わないとまともにクラシック音楽が聴けなかった昔は…。

あ、これもレーベルがChandosだ。特にChandos縛りをしたわけでもないのに、偶然かな…。

iTunesからダウンロード

▼ティペット:交響曲第1番/ピアノ協奏曲(シェリー/ボーンマス響/ヒコックス)

http://ml.naxos.jp/album/chan9333 (2012/03/19 鑑賞)

NML-chan9333

全く聞きなれない名前の作曲家、ティペット。交響曲第1番がN響定期で演奏されるらしいので予習で聴いてみました。それまで名前すら知らなかった。現代イギリスの作曲家。

ただ、現代イギリスの作曲家と聴いて現代音楽のような不協和音を身構えて恐る恐る聴いたものの、現代音楽という感じはあまり無く、とても聴きやすかったです。ロマン派や近代楽派というよりも、初期の映画音楽のような感じ。こういうのもいいですね。

あ!またしてもレーベルがChandosとは。もうこれはNMLにあるChandosを制覇しろという天啓じゃなかろうか…。

…といったところで2012年3月はこのようなアルバムをNMLで聴きました。

もっとクラシック音楽の楽理解説(アナリーゼ)のような文章も書いてみたいと思いつつ、いつも惰性で平凡な感想を書いています。真面目なアナリーゼサイトを作ってみたいという野望もありますが、どれだけの要望があるでしょうか。そもそもこのブログのこの記事もどれだけの要望があるのやら。検索してやってきたNML加入者の方への新たな曲の「発見」のきっかけにでもなれば幸いです。

とはいえ4月以降、Chandosレーベルを本気で制覇しようかなと思い始めました。ここまで読んでくださった皆さん、また来月をお楽しみ〜。

「ジュエルペット サンシャイン」最終回までの感想と、これからの楽しみ方 #jewelpet

こんにちは、ここ二年くらいの間にアニメを再度観始めている おがた です。

つい先日、2012年3月31日に、アニメ「ジュエルペット サンシャイン」が最終回を迎えて、一年間(4クール)の放送を終了しました。

この記事を書いているのは2012年4月2日〜3日。2012年度の始まりですが、2011年度の始まりは決して明るいものではありませんでしたね。大震災とか原発とかの影響の真っ只中。そんな中、2011年度の始め、2011年4月9日からテレビ東京系ネットで放送開始されたのが「ジュエルペット サンシャイン」でした。

そういえばテレビ東京さんはブレないとネットではもっぱらの評判。他のテレビ局が特番を流していても平気でアニメを流したり通常放送をする。このスタンスは批判されたり嘲笑のネタとなったりすることがありますが、個人的には大震災直後で凄惨な映像を見続けていた3月11日以降、平常通りの放送に救われました

「ジュエルペット」「ジュエルペット サンシャイン」って何?

「ジュエルペット」とは、サンリオとセガトイズが共同開発したキャラクターのようです。詳しくはWikipediaの当該ページを参照してください。サンリオということで、キティさんとかの仲間みたいなもので、サンリオピューロランドとかでも会えたりするらしいですが、詳しいことは分かりません。女児向けの分かりやすいキャラクタービジネスですね。あぁ、夢のない大人の発言。

ジュエルペット サンシャイン」(参考: Wikipediaの当該ページ)はこのジュエルペットを題材とした第3作目のアニメ。テレビ東京では毎週土曜日の朝9時30分から30分間放送していました。2009年4月から一年間放送されたものが「ジュエルペット(通称: 無印)」、2010年4月から一年間放送されたものが「ジュエルペット てぃんくる」というらしいですが、こちらは観たことがありません。2011年4月から一年間放送された第3作目である「ジュエルペット サンシャイン」の第一話から観始めたのがジュエルペットアニメを観始めた最初です。

何で30代のおっさんの私が「ジュエルペット サンシャイン」を観始めたかというと、その放送の一ヶ月前くらいに、女児の娘を持つとある父親からジュエルペットの玩具である「ジュエルポッド」の話を聞いたのがきっかけでした(参考: ジュエルペット商品紹介ページ)。ジュエルポッドを検索してみると、まるでiPhoneの廉価版のような外見をしているではありませんか。「女児の玩具までもがスマートフォンの時代なのか!」と驚いて、ウェブの業界人として物語でそれがどういう描写がされるのか気になって「ジュエルペット サンシャイン」を見てみようと思ったのでした。

実際に「ジュエルペット サンシャイン」を観た感想は?

第1話から最初の数話までは、とにかく普通に面白く出来ているなと素直に感心しました。そして、メインキャラクターであるとともにサンリオのキャラクターでもあるジュエルペットという存在と、アニメ版のために描かれた普通の人間と、あと擬人化された動物、そして擬人化も何もされていない普通のヤギなどが共存していている教室。それに誰も疑問を抱かず説明もないという状況が、なんだかシュールでカオスで面白いという感想を持ちました。ちなみに舞台は、人間界とは別の(ただ比較的気軽に人間界と行き来できる設定である)「ジュエルランド」という場所にある高校です。

そういったちょっとした好印象が「次回も観てみようかな」という原動力になったんだと思います。

それが第7話あたりからでしょうか、カオスに「加速」がかかったのは。スタッフが、昭和時代の映画やドラマやアニメのパロディを随所に盛り込み始めたのです。時には、というか後半以降はほぼ立て続けに昭和ネタを繰り返し、テレビ東京が音楽著作権を包括契約しているということを武器にか、昭和作品に出てきた原曲をそのまま使用してカオスな雰囲気を醸し出しはじめました。「これ女児わからんだろ」という感想。昭和を生きた30代40代を笑わせるには十分なネタ。特に「オレたちひょうきん族」の「ひょうきん懺悔室」を15分まるまる本当に忠実に再現した回(第38話)には本当に感服しました。

好意的に解釈すれば、女児と一緒に視聴しているお父さんお母さんへのサービスかと思わせるものですが、終盤は「これはお父さんお母さん世代でも分からない古さだろ!」というくらいのネタさえ持ち出す始末。たとえ元ネタが分からなくても、何か軌道を外れたその雰囲気からカオスという狂気な面白さを感じることはうけあい。私も、放送後に元ネタをネットで知って「復習」することもしばしばです。

「女児向けアニメ」のはずなのに「大きなお友達(大友)も楽しめるよ」と説明すると、何か卑猥なネタでもあるのかと誤解されそうですが、さすがに深夜アニメでもない朝9時30分のアニメにそんなことはありません。サンリオが関わっているわけですし。でも、そのネタのカオスさ故に、動画サイトのMADには「深夜33時30分アニメ」というタグが付くことは常です。スタッフの暴走(?)は続き、「サンリオはこれを許したのか!?」と疑うような回も後半は多くなってきました。

感想は、Twitterの #jewelpet タグ、そして 2ch のジュエルペットスレ で観ていましたが、みなさんは毎回大変楽しんでいたようです。

「ジュエルペット サンシャイン」最終回を観た感想は?

これから観る方へのネタバレになるので詳しくは書かないですが、私としては「サンシャインらしいカオスさを残しつつも、ちゃんと終盤のドタバタをまとめきった。そしてうかつにも感動させられた。」という感想です。

ネットで観ていても「一年間楽しませてもらったし最終回も楽しく感動させてもらってありがとう」といった好意的な言葉が多いですが、一抹のひっかかりがあった人も何割かいたようです。

ただ

  • 原作が無く、1年間52回放送した
  • 最初から、また中盤で、どれだけ最終回までのプロットが固まっていたか分からないものの、途中でキャラの肉付けや、明らかに後付けと分かる設定をおりまぜた

という中で万人を満足させる最終回は難しいとは思います。上記条件を満たした今作以外の作品にも言えることですが、特にSFの類やタイムスリップ、唐突な時間の経過が絡むと、すぐに矛盾や謎が生じてしまいます。

原作があって1クール(3ヶ月)程度の放送であれば、原作の矛盾解消や1クールに収めるための策をアニメ化の際に講じることはできると思いますが、「ジュエルペット サンシャイン」を含んだ上記のようなアニメだと、最終回に賛否両論が起こるのは避けられないかなと。それでも、ネットで見ていると「最終回まで楽しめてよかった派」が多く、私もそう思う派なので、この作品は30代40代にオススメと断言します

これから「ジュエルペット サンシャイン」を楽しむにはどうすればいい?

これを書いているのは2012年4月2日ですが、2012年4月9日からキッズステーション再放送があるようです。平日の午後3時に集中的に放送していくようなので、キッズステーションを観るための契約と録画機がある方はそれを録画して、週末に2時間使ってまとめ見すると良いと思います。キッズステーション放送版は昭和ネタの際に使った原曲をそのまま流すそうです。ここもポイントですね。これを書いている現在、第2作目「ジュエルペット てぃんくる」もまだキッズステーションで再放送されているようですし、しばらくはキッズステーションでの再放送が繰り返されるのではないかと思っています。

レンタルDVD版も続々リリースされています。また、コアなファンのためにDVD-BOXも発売されています。DVD−BOX版の内容はレンタルDVDに準拠しますが、キャストやスタッフによるオーディオコメンタリーが収録されているという、ちょっとした特典付きとなっています。ただ、レンタルDVD版/DVD-BOX版は版権の都合で昭和ネタの際に使った原曲がフリー音源に差し替えられているので、本放送当時もしくはキッズステーションで放送される内容よりも衝撃度が低いという難点があります。なので、キッズステーション視聴環境+録画機がある方はそちらのほうがより楽しめるのではないかと思います。

まとめ

「カオス」「これはひどい」「女児置いてきぼり」「スタッフ頭おかしい」「やらかした」は褒め言葉。昭和を懐古しよう。若いってすばらしい。だけど若くなくても心は若くあれ。

一人でも多くの方が「ジュエルペット サンシャイン」の楽しさに気づいてくれることを願って止みません。

Hachioji.pm#15 に参加してきました #hachiojipm

こんにちは、最近は積極的に勉強会の類に参加してみようとしている おがた (@xtetsuji)です。

いつもブログが遅筆ですみません。記事を書いている段階では一週間前の2012年3月24日に行われた「Hachioji.pm#15」に参加させていただきました。私は中野区在住で八王子駅まで片道1時間弱。移動の負担は首都圏的感覚だとそれほどでもなかったです。

東京在住なのに、地元が北海道という縁でHokkaido.pmには2回参加+トーク発表をしたものの、今回初めて関東圏の地方.pmに参加させていただきました。まぁ、YAPC::Asia Tokyoは2007年から行っていますが、地方.pmのような大規模でないイベントのほうが各人の交流がしやすくていいなとは、Hokkaido.pmの参加のときから思っていました。その思いを膨らませて、今回Hachioji.pmに思い切って初参加した次第です。

このイベントの前の朝から夕方までに行われていた「Like a ハッカソン」は参加してみたかったものの、あまり体調が良くなくて長く作業すると疲れが出て後日に響いてしまうコンディションだったため、興味はあったのですが今回の参加は遠慮させていただきました。

参加前に参加要件を見ていたのですが、「一枚LT」とか聞いたこともないものが要件にあったりして、検索してみたら「模造紙でプレゼン」とか出てきたりして、文房具店に行く時間も無いし一枚に自己紹介と課題である「スマートフォン」の話をどう書けばいいんだろうとか、いろいろ考えてしまって結局準備をせずに向かったのですが、模造紙云々はどなたかのネタらしく、みなさん普通にプレゼンテーションアプリケーションを使った数枚のスライドのプレゼンテーションをされていました。

「Like a ハッカソン」とは違い、本イベントである「Hachioji.pm#15」自体は、どちらかというと飲食店に集まって飲み食いしながら技術のお話をするというのがメインのようで、お酒が入った状態でざっくばらんに最近の技術動向について情報交換ができる、気軽な場所でした。

「Like a ハッカソン」を含めた「Hachioji.pm#15」の詳細は、Hachioji.pmのブログ記事やそこからリンクされたページを参照していただけると、私の記事より良いものがあります。

個人的にざっくばらんな会話で感じたのは、一人でネット上の情報を見ていても「流行り」はたくさん流れてくるけど、「廃り」といったことは実際に対面でお話をして動向のお話をしないと見えてこないということでした。確かにネットで「廃り」を宣言したりすると、その作者やそれの愛用者の目にとまったときにdisられたとか反感を買うので書きづらい部分はあるんだと思います。今回も「jQuery UIはダメだね」とか、それぞれの方々の思う「廃り」の印象のお話が聞けて面白かったです。

初参加で一人八王子までやってきて、会場のペルー料理店MISKYに「こんばんは〜」と入ってきたのですが、ネット上で存じていた方や、YAPC::Asia Tokyoでお会いした方(@ytnobodyさんとか)もいらっしゃって、向こうはこちらの顔なんて覚えていないだろうなと思いつつも、空気を読まず「いやー、お久しぶりです」とか言って場に馴染もうとしてみました。

初参加なのに30分くらい遅刻をしでかした私でしたが、その後に遅れて@maka2_donzoko さんがやってきて、課題の「スマートフォン」に引っ掛けて「すあま」と「本」を持ってきました (参考: ご自身によるブログ記事)。すあま、あまり馴染みのないお菓子でしたが、かなり美味しかったです。自分好み。

すあま

いただいた すあま の写真。美味。

「まかまかさん」こと@maka2_donzoko さんは、PerlのAcmeモジュール同人誌「Acme大全」やPerlモジュールを題材にしたカードゲーム「Parumon」の作者でもあります。YAPC::Asia Tokyo 2011で「Acme大全」は購入できたのですが、売り切れで入手できなかった「Parumon」を、なんとこの場で売ってくださいました!ありがとうございます、まかまかさん!

Parumon

「Parumon」は、Hokkaido.pmの何名かが購入をして、プレイ風景をリアルやネットで見たりしていたのを指をくわえて羨ましがっていた状態だったので、非常に嬉しかったです。会社でもちょうど3月に開発者が一名入社してPerlの勉強をしてもらっているところなので、教材としても使っていきたいです。

飲み食いが一段落したところで、皆さんの「1枚LT」が開始されることになりました。詳しくは上述のリンクに譲りますが、みなさんタイトルの「1枚」とかお題の「スマートフォン」に縛られないLTを繰り広げられて、これでいいんだって感じました。皆さんのお話はどれも興味深いものばかりでした。

Hachioji.pm#15の開催者である@uzullaさんがとても精力的な方で、そこから繰り広げられる話の数々を拾うだけで、とても有意義でした。PHPerを何度も自称しながら、それなのにPerlイベントを主催しているとか、ジョークも数々。楽しかったです。

本当にいろいろな話題が出て、すべてを拾いきるのも、ここで思い出して書くのもなかなか大変なのですが、スマートフォン向けのjQuery互換軽量JavaScriptモジュールzepto.jsは本当に名前も知らなかったので、jQueryで作ったスマートフォン向けサイトをzepto.jsで置き換えできないか、考えてはじめています。また、スマートフォン開発に詳しい方が数名いて、Androidアプリ内課金の大変さを説いていたのも印象的でした。私も最近Android アプリ内課金案件を抱えていたので、もっと詳細を聞いておけばよかった、とも後で思ったのでした。

その他は、上述のHachioji.pm自身による記事からたどっていただけると、興味深い話題が多かったことがわかると思います。

「Like a ハッカソン」もそうですが、予定や体調が許す範囲で、次回以降の「Hachioji.pm」にもぜひ参加してみたいと考えています。まだまだ新参者感が抜けない私ですが、Hachioji.pmの皆さん、今後ともよろしくお願いします。

第5回 Twitter API勉強会に参加+発表してきました #twtr_hack

こんにちは、「最近の主戦場はどこ?」と聞かれたら「Twitter」と答えるでしょう、 おがた (@xtetsuji) です。

先日、3月21日になりますが、「第5回 Twitter API勉強会」に行ってきました。前回「第4回」から二度目の参加になります。

公式サイトは無いようですが、情報をTogetterにまとめてくださった方がいらっしゃいましたので、タイムテーブルやスライド資料などはコチラからご参照ください。

前回の私の感想ブログの締めくくりで「機会があればPerlのTwitterライブラリについて発表してみようかなと思いました。」と書いたのですが、今回のタイムテーブルの10分LTに自分のアカウント名が登録されているではありませんか。「いつか発表したい」→「次回発表する」の流れにちょっとビックリ。

[tweet https://twitter.com/xtetsuji/statuses/172637481408282625]

そういえば前回「第4回」で、こんなやり取りがあったのでした。まさか本当に「第5回」で発表になるとは…。

「Twitter API勉強会」は月1回の活発な勉強会で、準備期間は1ヶ月もありません。まぁ、結局スライドは前日の深夜に徹夜気味に作ったのですが…。当日いらっしゃった方々、内容もさることながら、発表がグダってしまって本当に申し訳ありません。練習不足でした。スライドの内容の補足等については後述します。

前回の会場は御茶ノ水のデジタルハリウッドさんでしたが、今回は渋谷の「ハロー会議室」というところでした。

ハロー会議室

広々とした会議室でしたが、私はちょっと遅刻してしまったので、最初は後ろのほうに座って聴講していました。その後、トークの隙を狙って前の方に進出していきましたが…。

Twitterの日本語検索、ハッシュタグについて

最初のトークは、急遽タイムテーブルが変更になって、Twitterの国際化等に携わっている@keita_fさんによる「Twitterの日本語検索、ハッシュタグについて」。

資料も公開されていない半分オフレコっぽいトークだったので、どこまで感想を述べていいかちょっと分からないのですが、浅い範囲で手元のメモに書かれている興味深かった項目としては

  • Lucenceを使っている
  • Twitterは50もの言語をサポート
  • ツイートの言語判定はJavaで実装。UTF-8文字列を各種ローカル文字コードにエンコードしてみて失敗するかどうかでチェック(結構コストがかかりそうなトライアンドエラーで検出するとは意外でした)。西欧の文字列はn-gramでチェック。
  • 2つ以上の言語が混じっている場合の苦労
  • 絵文字(emoticon)の取り扱い
  • Unicode Alphabetの取り扱い
  • 形態素解析にはGomoku、西欧の文字列は独自実装。
  • テキスト処理のオープンソース化を https://github.com/twitter/commons/ 以下にしていっている

といったところでした。

@keita_fさんは、あのティコリンク(t.co短縮URL)の実装にも関わっている人らしく、どちらかというとそちらの方で色々と質問したかったのですが、時間が無かったのと懇親会にいらっしゃらなかったので、そちらについてはほとんど話を聞けませんでした。

声をかけて一つお話をしたのは「ティコリンクの識別子(スラッシュの後の文字数)は8文字ですが、Twitterには日々膨大なURLが投稿されているので、あれが9文字になる日は来るんですか?」というつまらない(?)質問をしてしまった(とっさに思いついたのがそれだった)のですが「じきにそうなる日も来るでしょう」という回答でした。実際、Twitter APIからはティコリンクを展開したURLの情報も乗ってくるので、そちらを見れば各種実装が8文字を想定する必要すらないので、他愛も無い質問だったなぁと思います。

交流タイム

最初のトークが終わった後は、恒例の交流タイム。今回は学生さんの参加が少なかったようですが、周囲の社会人の方とどんなお仕事をされているのかとか、どういった興味でここに来たのかといった話で盛り上がりました。ここで後ろの席から前の席へ移動。

ランチタイム共有サービス「昼会」のご紹介

次のトークは@setomitsさんによる「昼会」のご紹介。デジタルガレージの中の方です。

なぜTwitterかという話から。最初は(デジタルガレージが業務提携を結んでいた)LinkedInのOAuthを使ったログインを検討していたらしいです。ビジネスランチ的な何か?そこは普及度を考えてTwitter OAuthに変更したとのこと。

開発は、Google App Engine(GAE)上でTweepyというAPIを使って開発しているとのこと。Pythonですね。

ユーザへの通知に自分へのDMを使用しているとのことですが、ユーザから「自分から自分にDMが来るのは気持ち悪い」「スパムかと思った」「アカウントを乗っ取られたかと思った」といった意見があったとのこと。でも開発者に話をすれば実装上「まぁこうするだろうね」といった感じで折り合いが着いた(?)ような感じです。Zusaarでも登録ユーザへの連絡はユーザ自身へのDM(ひとりごとみたいな感じ)で実現していますし、同種の考えのサービスは多いようです。

既存のサイトのOAuthの利用について、いちいち新しくユーザー登録をしなくて良いのは良いとのこと。

トラブルもあって、ログイン出来ないということはサービス開始前やサービス開始直後に頻発していた模様。原因追及できず、一切のAPIコールができない状態が続いたようです。

昼会の開発から8ヶ月、色々な発見があったようです。昼会というサービス自体で新しい出会いがあったこともあるようですが、昼会の敷居が意外に高いこともあったとか。確かにサイトを見ても中々昼会の予定が入っていない。質疑応答で「夜会もやったほうが…」というジョーク質問がありましたが「ドメインhirukai.jp取ってしまいましたし…」とのことでした。

昼会の開発体制は最初3人。開発1人、デザイナ1人、企画交渉1人。最小編成ですね。

質問はGAEコストにも波及して、改定前は数千円/月だったのが改定後に数万円/月になってヤバいと思い、APIのコール周り等のコストを見なおして、改定前くらいの価格まで押さえ込めたとのこと。GAEのコスト改定はニュースにもなっていましたが、桁が違ってくるほどの値上げだったんだなと思いました。

この後はLT。

Twitter 4 contact

@inda_re さんの「Twitter 4 contact」。問い合わせフォームをTwitterで作ってしまおうという発想は面白かったです。資料もPHPで作られたプログラムも公開されているので、導入しようと思えばすぐにでも導入できそうです。発想の面白さと、LTならではのウケ狙いの上手さに感服です。

PerlのTwitterモジュールについて

これは@xtetsuji によるトーク。5分や20分の経験はあったのですが、10分LTというのは初めてで、どれくらいの分量でトークしていいか分からないまま、練習不足というかほとんど練習をせずにのぞんでしまったために、非常にグダってしまい申し訳ありませんでした。

前回、学生さんが多かった事を念頭に置いて「半分くらいはPerl自体の環境導入をやったほうがいいのでは」と思って資料を作ったのですが、今回はほとんど学生さんがいない(居たとしても既にスキルある方ばかりな)状況だったので、ちょっと構成に失敗したかなぁ、といったところです。

結局のところ、PerlにもStreaming APIをいじれるAnyEvent::Twitter::Streamというモジュールがあって、手軽にプログラムが書けるんだよといったところが伝わればよかったかなと思います。

以下、資料です。

デモプログラムで登場した twitter-stream-search.pl は、自分自身がテレビ番組(アニメとか)の実況をコンソールで tail -f のように流し見しつつ、あとで録画したものを観るときにそのストリームの詳細がログの様になっていて欲しい、と思い立って30分くらいで書いたプログラムです。今も便利に普段使いしています。仕事のプログラムは書くのに何時間も掛かるのに、人は私利私欲があればものすごい速度でプログラムが書けるんだと思った瞬間でした。AnyEvent::Twitter::Streamの導入さえ成功してしまえば、後は比較的簡単に使い始められるのも特長としています。

ここからは発表から蛇足になりますが、AnyEvent::Twitter::Streamも万能ではないようで、まだできないこともあります。最近Streaming APIで開始されたgzip圧縮にも対応していないようです。あと、上流でHTTPストリームが切られた場合の再接続アルゴリズムも実装されていないようです(Squid経由で接続してSquidを再起動させれば簡単に再現できる)。前回の勉強会の時にJava Hackerに囲まれて話をしたときに「TwitterのStreaming APIを正確に実装しているのはTwitter4Jしかない」という話がありましたが、まさにそういうことなのかもしれません。Twitter4Jの作者であり、このTwitter API勉強会の主催者である@yusukeyさんに、懇親会でその辺のお話をうかがってみると、再接続アルゴリズムは実装も確認も大変とのこと。Perlに貢献するべく、AnyEvent::Twitter::Streamにパッチでも当ててみようかとも思ったのですが、作者がPerl界の大御所過ぎて、どうしていいかちょっと悩みますね。でしゃばり過ぎとか言われそう。

twitter-stream-search.pl は Date::Format と Date::Parse に依存していますが、Perl-5.10以上を最初から要求しているのだから、Perl-5.10からコアモジュール入りしたTime::Pieceを使えば不要な依存関係を減らせると後で思ったのでした。これは気が向いたら直します。Date::Format も Date::Parse も cpanm で簡単に導入できるので、それほど深刻な問題ではないと思いますけどね。

KotlinでもTwitter4J

@ngsw_taro さんによるトーク。KotlinというJavaベース(?)のプログラム言語があるようですね。そのKotlinからTwitter4Jを使おうというトーク。結局デモは失敗してしまいましたが、後日Kotlinから投稿したツイートがあったので、それでデモが成功(?)ということになった感じでしょうか。

LT中に紹介された、お手軽開発環境 http://kotlin-demo.jetbrains.com/

Java界隈にはGroovyとかJRubyとか、その上に乗る言語がたくさんあって面白いですよね。Twitterの勉強会なのに、Javaを見直すきっかけが多い勉強会でもあります。

懇親会

渋谷の外を移動して、今回も貸しスペースでのオシャレな場所で懇親会がありました。

(写真撮ってくるの忘れた…)

今回初めて出席された方と色々な話で盛り上がったり、前回トークをした方へ質問をしてみたり、有意義な時間が過ごせました。勉強会中だとなかなか質問したり交流したりといったことが苦手な日本人でも、酒が入るとその辺結構いけるものなんですね。酒が入った後にコードを書いたりできるかどうかは別として、初顔合わせや顔見知りの人と雑談する上で、お酒と貸切の静かな(勉強会関係者以外がいない)場所はうってつけの場所でした。

今回は発表者側に立ったこともあって、声をかけて下さる方もいて、発表者効果さまさまだなと思った次第です。用意は大変ですが、発表者として壇上に立つと、私のような知らない人に声をかけるのが苦手な人も話しに花が咲いて、非常に良い経験でした。

月1回の勉強会に、資料の用意がなかなか大変なこともあって、しばらくは発表者側にはまわらないとは思いますが、次回発表する際には低層の話ではなく、PerlとそのTwitterモジュールを使って書いた何らかのウェブサービスを紹介できればと思いました。体調が許せば、次回も聴講者として懇親会も含めて参加したいです。

NMLノート 2012年2月版

聴く専門の平凡なクラシック音楽ファンの おがた です。

「NMLって何?」というのは「NMLノート 2012年1月版」を参照ください。

先月(2012年2月)はあまりNML聴けなかったなぁ。まぁ2枚聴けば元が取れる計算でいけば、元は十分に取っているわけなんですけど。

モーツァルト:交響曲全集(モーツァルト・アカデミー・アムステルダム/リンデン)

http://ml.naxos.jp/album/BC94295 (2012/02/03鑑賞)

NML-BC94295

全曲集。モーツァルトの交響曲なら他の廉価版の全曲集も持っているけど、その廉価版に入っていない聴いたこともない曲もいくつか含まれていてなかなかよい。音質も良い。レビューによると古楽器による演奏らしく、そこもまた高ポイント。

また有名な大ト短調交響曲「交響曲第40番」の版をクラリネットあり・なしの2版収録しているのも面白い。

何しろ曲数が膨大なので全部聴くまでには至っていないものの、時々流し聴きしておきたい名盤です。

プロコフィエフ:ピアノ協奏曲全集(エル・バシャ/ベルギー王立モネ歌劇場管/大野和士)

http://ml.naxos.jp/album/fug505 (2012/02/12鑑賞)

NML-fug505

プロコフィエフのピアノ協奏曲全曲を聴きたいなぁと思って全集を検索。大野和士指揮というところに興味があってチョイス。先程もそうだけど、全集も数々揃えているNMLは素晴らしい。CDを買っていた時代も、やっぱり同じ演奏者で全部聴いてみたいという欲求が後で出てくるのであれば、最初から全集をチョイスするということをよくやっていました。廉価なものも探せば結構あって、それほど高くなく全集も手に入るし。一枚あたりに換算して数百円とかそんな感じの相場。ただ、リッピングは相当大変だけど。

ちなみにプロコフィエフのピアノ協奏曲は第3番が一番好きです。あのジャズっぽくもありクラシックっぽくもあるはじけ方が好き。逆に第1番はチャイコフスキーの同じピアノ協奏曲第1番にモロに影響を受けているなぁと感じる私です。それもまた悪くない。

プロコフィエフ:交響曲第1番「古典交響曲」, 第5番

http://ml.naxos.jp/album/7190 (2012/02/13鑑賞)

NML-7190

古典派やその周辺(バロックやロマン派)の管弦楽が好きな自分が、近代や国民楽派に入っていく入口のような管弦楽がいくつかあって、プロコフィエフの「古典交響曲」もその一つ。

当時の最先端の(今でいう「近代」の)先鋒で人気もあったプロコフィエフが、聴衆に示した最初の交響曲は、表向き古典派の交響曲のような簡素なもので、良くも悪くも当時の聴衆の期待を裏切りました。その裏には、当時古典派の作曲家ハイドンを研究していたプロコフィエフの実験「もしハイドンが今生きていたらこんな交響曲を書いただろう」というものでした。

「近代」を聴くと、この「古典交響曲」を聴いてみたくなる。そして古典派の色に安心しつつも、その中に巧妙に入れられた「近代」のエッセンスをなるべく汲みとって聴くようにしていると、近代色を自分の中で楽しめるようにモードが切り替わるんです。

そういう私にとっての「近代への入口」の音楽には、この「古典交響曲」とは別に、マーラーの「交響曲第5番」もそうだったりします。ロマン派の真っ只中、または古典派のような曲を巧妙に展開をしつつも、しっかり「近代」の交響曲を聴かせてくる。この時期のマーラーもバッハを研究していた産物としてこの交響曲を作った(あと第4楽章のアダージェットは妻アルマへの美しいラブレターですね)というのも、プロコフィエフの「古典交響曲」と似ている部分があると思います。

なんだか、プロコフィエフの交響曲第1番の話をしていたのが、マーラーの交響曲第5番の話をしてしまっている。マーラーの交響曲第5番もNMLで名演や興味深い演奏を探してみることにしましょうかね。

iTunesからダウンロード

ヴィヴァルディ/テレマン/クラーク/L. モーツァルト:トランペット協奏曲集(アンドレ/北ドイツ放送室内管/エトヴェシュ)

NML-MCS-ED-9059

http://ml.naxos.jp/album/MCS-ED-9059 (2012/02/28鑑賞)

「トランペット協奏曲」って、協奏曲の中ではかなりマイナーなジャンルだと思うんですけど、私は結構好きなんですよ、そういうマイナーなの。協奏曲といえば「ピアノ」「ヴァイオリン」が二大巨頭なわけですけど、個人的には管楽器の協奏曲が好きです。トランペットもそうですが、クラリネットとかオーボエとか。そういうマイナーな協奏曲を聴けるのも、NAXOSならでは、NMLならでは、です。

自分が古典派ひいきだからかもしれませんが、「トランペット協奏曲」の鉄板は、やはりハイドンとフンメルのトランペット協奏曲でしょうか。エステルハージコンビ(笑)。2曲とも、聴いていると熱くなってくる。

それら2名のトランペット協奏曲は入っていませんが、バロックから古典派までのトランペット協奏曲を集めたのがこの盤。心地良いトランペットの音色に酔いしれることができました。

iTunesからダウンロード

(番外編) ベルワルド:交響曲第1番「厳粛な」, 第2番「気まぐれな」 (ヘルシンボリ響/オッコ・カム)/ ベルワルド:交響曲第3番「風変わりな」, 第4番「繊細な」/ピアノ協奏曲(ヘルシンボリ響/オッコ・カム)

http://ml.naxos.jp/album/8.553051http://ml.naxos.jp/album/8.553052

NML-8.553051 NML-8.553052

「番外編」と書いてみましたが、これらはNAXOSのアルバムですが、これはNMLで聴いたというよりも、ずいぶん昔に実物のCDを買って持っているものです。リッピングしておいたものを改めて2月にヘビロテしていたという感じ。

NMLは本当に素晴らしいサービスなのですが、鑑賞には通信が必要なこと、特に移動中は通信が途切れやすかったりiPhoneの電源が消耗したりといった移動中の通信をすることによるデメリット等もあって、NMLに契約していてもヘビロテするCDは実際に買う(そしてリッピングする)というのが正しいやり方なのかなと思っています。

このベルワルドという作曲家。生前はほとんど報われない作曲家だったようです。特に自国であるスウェーデンで。時代としては、古典派とロマン派の中間あたりに位置する作曲家でしたが、やはり独特の音階進行が当時の素朴な曲を聴き慣れた聴衆に理解されなかったのでしょうか。現代の我々はそれこそ不協和音の塊の音楽を聴き慣れているので、彼の曲を聴いてもその曲想は、古典派のエッセンスにどことなく現代風の味付けをした新鮮なもの、という印象を受けます。

特に聴き応えがあるのが「風変りな」と題された第3番。何かロマン派の時代の先を行くような不思議な響きがあります。本当は古典派・ロマン派時代の作曲家のはずなのに、私のプレイリストには間違って「近代」どころか「現代」に分類されていました。クラシック音楽の「現代音楽」の中でも、無調音楽や12音音階といった不協和音の塊の前衛音楽に半期を翻した「新古典派」や、近代から現代にかけて新しく生まれた機会音楽のジャンル「映画音楽」に近い響きを醸し出しています。

ベルワルドが残した交響曲はこの4曲のみのようですが、今後他のベルワルド作品も聴いてみたいと、4曲の交響曲をヘビロテしながら思いました。またNMLが役に立ってくれそうです。

CD帯紹介文より:結果的にはスウェーデンが生んだ最大の作曲家であったベルワルドは、生前自国ではほとんど評価されずに終わった人物です。作風は立派なドイツロマン派で、少し古典的なシューマンといったところでしょうか。国民楽派確立前の人物なので、いわゆる北欧風の香りは希薄ですが、実に壮大で堂々たる交響曲を4曲残しました。尚、ここに収められている交響曲第2番は、総譜の紛失により本当の第2番なのか疑問視されている“真作”です。

CD帯紹介文より:第3交響曲はベルワルドの最高傑作と言われています。激烈な第3楽章も相当なものですが、何と言っても第1楽章!非常に独特な和声進行が不思議な近代性と大らかな情感を生み出しており、ベルワルドの個性を十二分に堪能することができます。ただ、2年後に作られた第4番は、第3番よりぐっと古典的な肌ざわりとなっています。ピアノ協奏曲は死後に匿名で作曲コンクールに出されて好評を博したものの、ベルワルド作と判明するやいなや無視されお蔵入りした悲運の曲です。

…と今月聴いた中で記録と記憶に残ったのはこのようなものでした。マニアックなものが多いですが(というかNMLとNAXOSはマニア志向ですが)、興味が湧いたものがありましたら、一緒に語りにつきあっていただけると私が嬉しいです。

NMLの月額費用の元を取ろうというわけではないですが、好きな曲から苦手な曲まで、もっとたくさん幅広く聴いて、クラシック音楽ファンとしての知識の幅を広げたいなと思う次第です。

月末やうるう年を判定して実行するかどうかcronで条件分岐

うるう年にブログを更新するのがアツいという世間の流行に乗せられている おがた です。

特にネタは無いなぁと思いつつ、お仕事からうるう年っぽいネタを出してみます。

シェルスクリプトを「月末に実行する」「毎月29日に実行するけど、うるう年ではない2月の場合は3月1日に実行する」といった要請があって、cronの日付指定だと難しいケースがあります。

そういう時に、月末やうるう年を判定して、それをステータスコードを返して “&&” や “||” で後続のコマンドを実行するかしないか判定するコマンド “end-of-month.sh” と “leap-year.sh” というシェルスクリプトを作ってみました。

#!/bin/bash
# Usage:
#   # crontab: need to run some-command at end-of-month.
#   0 15 28-31 * * end-of-month.sh && some-command

set -o errexit

arg=$1
if [ $(date +%m -d "$arg tomorrow" ) != $(date +%m -d "$arg" ) ] ; then
    exit 0;
else
    exit 1;
fi
#!/bin/bash
# Usage:
#   # crontab: need to run some-command at leap-year or not it.
#   5 18  1 3 * * leap-year.sh || some-command
#   5 18 29 2 * * some-command

set -o errexit

arg=$1
if [ "$arg" ] ; then
    year=$arg
else
    year=$( date +%Y )
fi

if [ $(( $year % 4 )) = 0 ] ; then
    if [ $(( $year % 100 )) = 0 ] ; then
	if [ $(( $year % 400 )) = 0 ] ; then
	    exit 0
	else
	    exit 1
	fi
    else
	exit 0
    fi
else
    exit 1
fi

使い方はソースコードに書いてある通りです。

2月29日中にブログを更新したくて、中野の地下の飲み屋でビールを飲んでおでんを食べながらのブログ更新です。本当なら今日は健康診断だったので、バリウムの都合でアルコールは飲まないようにと言われているのですが。まぁ一杯だけ…。お店の良い雰囲気の中、3月を迎えることになりそうです。でも健康的になるべく早く帰って就寝する予定です。

第4回 Twitter API勉強会に行ってきました #twtr_hack

こんにちは、日々Twitterで情報収集やテレビ実況を楽しんでいる おがた (@xtetsuji) です。

(とりあえずアップします。今のところ、もう少し加筆予定です at 2012/02/27)

先日、2月23日になりますが「第4回 Twitter API勉強会」に行ってきました。

公式サイトは無いようです。上記ZussarのURLのタイムテーブルより。

  • 19:00〜19:40 @yusukey 「Webサイト向けAPI」
    参考図書: Twitter APIポケットリファレンス
    (書いてある内容+αを話すだけでお持ちでなくても大丈夫です)
    http://bit.ly/twtr-ref
  • 19:40〜19:50 グルーブに分かれて簡単に自己紹介
  • 19:50〜19:55 デジタルハリウッドよりご挨拶
  • 19:55〜20:35 @twtrfk 「Virtua Fighter5 Final ShowdownのTwitter連動機能について」
  • 20:35〜21:00 LT
    @kimukou_26 「TwitterSphere of Twitter4J」
    @making「Twitter Bootstrap入門」
    @bina1204 「ApiDemos of Twitter4J for Android」

こんな感じでした。

今回足を運んだきっかけは、2012年1月28日に行われた「第3回Twitter研究会」のUstreamをたまたま観ていて面白かったことです。「Twitter研究会」は年1回の行事とのことで、特にそのUstreamで興味をひいたTwitter4JとTwitter APIについての @yusukey さんのトークで知った「Twitter API勉強会」は頻繁に行われている、というのがきっかけでした。しかも @yusukey さん主催。

今回初参加となりましたが、迷うことなくZussarで懇親会を含めて参加申し込みをして、「Twitter APIポケットリファレンス」を事前に購入して会場に向かいました。

詳細なメモは取っていないので、ざっくりとした感想をつらつらと書いていこうと思います。

まず @yusukey さんのお話。前述の「第3回Twitter研究会」でのお話とそれほど大差ないお話でしたが、生で聴くのはまた違いますね。とても面白かった。ちなみに @yusukey さんはTwitter社の中の人であり、JavaライブラリのTwitter4Jの作者でもあります。

座るときに机の左側に座るように指定されたのですが、これが「グループに分かれて簡単に自己紹介」の時に、左側が社会人で右側が学生だという仕掛けだとわかります。学生と社会人の交流を促進する、面白い仕掛けだなぁって思いました。もっとも、私の隣にいた学生さんは、起業をしている学生さんで、半分社会人みたいな方でした。後ろ席の方ともコミュニケーションを取ったりしましたが、皆さんいい人達ばかりで話題に花が咲きました。

前回と会場が変わって、今回はデジタルハリウッドさんが会場を提供してくれたということでしたが、意外に駅から近くて、Wi-Fiも貸してくれて、とても広くて快適な会場でした。一瞬入学したくなったくらい。

第4回Twitter API勉強会のデジタルハリウッド会場の様子

交流タイムも終了して、次はSEGAの中の人 @twtrfk さんによる「Virtua Fighter5 Final ShowdownのTwitter連動機能について」。ゲームセンターの機器と直接Twitter連携しないで別途サーバを用意する等といったお話。サーバ側はLinux/C/C++/Javaだそうで、Linuxの上にWebSphereとDB2を載せているとのこと。SEGAのシステムはIBMと懇意なのかなぁと思ったり。大企業のシステムにしては、テーブル構造や処理ロジックの詳細等、突っ込んだ話が多くて、大いに興味をそそられました。「部内SNSであるAmitterというのを作ってデモをした」「Twitterのテストアカウントをテストだと分からないように地道に100個作った」(Twitterの規約では連番アカウントはグレーなんですね)といった面白い話も聴けました。部内SNSを作ってしまってデモとは見習いたい開発パワーですね。最後の方はマーケティングとして、初音ミクさんのお話等が盛りだくさん。ちょくちょく格闘ゲーム全般は触っているのですが、久々にバーチャファイターをやり込んでみたくなりました。マーケティングに乗せられてしまいました。

LTで特に印象に残ったのは@makingさんによる「Twitter Bootstrap入門」でした。@makingさん曰く「CSSフレームワーク」。以前から名前は聞いていましたが、ここまで簡単なものとは。あまりに簡単にTwitterライクなおしゃれなデザインが作れるので、他との差別化が難しいといった新たな難題が出てくるくらいだそうです。社内ツールに色付けをする使い方とかに良いなぁと思いました。

その後、懇親会のため移動。指定された場所に行ったら雑居ビルのようなところで一瞬不安になりましたが、会場である部屋の中は非常におしゃれで、これまた居心地が良い空間でした。

第4回Twitter API勉強会の懇親会会場の様子

懇親会でもそうだったのですが、全体的にJava Hackerの人口の多いこと多いこと。発表もJavaずくし。懇親会で話しかけた人が開発者だったらほぼ確実にJava Hackerという状況。まぁ、@yusukeyさん自体がJavaのTwitter4Jライブラリの作者で、その人徳で人が集まっているということも大きいのかもしれません。Perlしか書けない私に、なんとなくJavaも書いてみようかなと思わせるくらいの空気感。良い人だらけで、居づらいということは全く無く、どことなく自分から見た異文化を垣間見たようで楽しい空間でした。

しかし、Java Hackerの中でPerlのお話をすると「CGI(ry」「Perl6(ry」といった話を振られて、ちょっと困る場面もあったり…。PerlというかLLの外側の業界の人から見たPerlって、今も初心者がCGIを書くための言語という感じなんでしょうね、やっぱり。LL全般に言えることですが、Perlも日々相当進化しています。私が追いきれないくらいに。ここは「日本Perl改造計画」に期待したいです。

「PerlにはTwitterのStreaming APIを仕様通りに実装しているモジュールは無い」といった話をどなたからかうかがったのですが、AnyEvent::Twitter::Streamにも何か欠陥があるのでしょうか…。普段使いしていて大きな問題は無いのですが…(Proxy等にHTTPストリームを切られたときに再接続しない問題があるんだなということは最近把握しました)。

著者サイン!懇親会で機会をうかがって @yusukey さんからサインを頂きました。嬉しかったです。

Twitter APIポケットリファレンスにサインをもらった

Java以外の他の言語の発表も募集しているというお話だったので、機会があればPerlのTwitterライブラリについて発表してみようかなと思いました。発表をするかしないかは別として、次回も時間が許せばぜひ出席してみるつもりです。