Foursquareでスーパーユーザ・レベル1になりました

Foursquare 大好き、ロケーションベースサービス大好き、おがたです。

  • 2014年4月16日追記: 4月16日は4sqDayです。東京でもイベントが行われます。興味のある方は参加してみませんか?See: Foursquareの本質とは何なのか

数年前から何度かチャレンジしていたのですが、先月2013年10月にFoursquareのスーパーユーザ・レベル1(以下SU1)になることができました。

スーパーユーザ(SU)とは

Foursquareには最近のゲーミフィケーションサービスではよくある「バッジ」というものがあって、初めて比較的すぐ「スーパーユーザ」というバッジが取得できますが、それとは全くの別物です。

スーパーユーザ(SU)とは、Foursquareの情報をレベルに応じて編集することができる、ある種の特権ユーザの事を言います。

通常のSUではないFoursquareユーザは、自分が作ったべニューのみ住所等のべニュー情報を編集することができますが、SUは自分が作ったものではないべニュー情報もレベルに応じて編集することができます。もちろん、現在(2013年11月現在)「修正提案」というインターフェースもあり、SUではないFoursquareユーザも間違ったべニュー情報への修正提案を投稿することができますが、これは即時反映されるものではなく、SUが妥当かどうかの検閲を入れて受理された後の反映となり、即時反映ではありません(そのためのスーパーユーザツールがあります)。

Wikipediaによれば、スーパーユーザには3種類のレベルがあり、以下のような種類分けがあります。

  • スーパーユーザ・レベル1はベニュー情報(所在地、交差道路、Twitter名)の編集、「閉鎖」印を付けること、重複したベニューについてfoursquareに知らせることができる。
  • スーパーユーザ・レベル2はベニュー情報の編集と重複したベニュー情報を統合することができるだけでなく、任意のベニューのためにベニュー種類を追加できる。
  • スーパーユーザ・レベル3はベニューの別名を作成することや偽物/スパムのベニュー情報を削除する能力が加わる。

スーパーユーザ(SU)になるにはどうすればいいの?

FoursquareユーザがSUになるには、Become a Foursquare Superuser ページに行って、なぜSUになりたいかという意気込みを書き、所定のテストを受けて合格する必要があります。そのために熟知しておく規約であるとかハウスルールの類の文章はそこからたどることができます。

Become a Foursquare Superuser

テストのために熟読が必要な文章やテスト自体は全て英語で行われます(2013年10月現在)。私は英語が苦手で、ハウスルールの理解やテスト項目の読解に相当苦労しました。

数年前に一度SUテストを受けたときは、テスト段階から間違いを指摘されたりして、相当(数ヶ月?)待ってから不合格であった旨メールが来ました。

それからハウスルールなどを都度読んで理解するようにして、ふと思い立って2013年10月に再度テストを受けたら、どうやら一次審査は通った模様。

ここから連絡が無かったのでもう一度 Become a Foursquare Superuser ページに行ってみたら、SUにふさわしいかべニューの編集を何度も繰り返すページに遷移され、ひたすら100件ほどのべニュー情報の修正を行いました。

SU1への最終修行

そこでの修正方針が良いと判断されたようで、後日晴れてSU1になることができました。

4sqのバッジとSU1の紋章

あまりFoursquareスーパーユーザへの道のりを解説した記事が無かったので、今回その過程を書いてみようと思った次第です。

当然ながら注意点として、SUは既存のユーザをSUにするためにテスト内容などを教えてはいけないとされます。また道は自分で切り開くものとして、そのための手引きすらしてはならないとも言う人がいます。ただ、SUはSUになるべきFoursquareユーザの推薦はできるようで、その推薦によって多少SUへの道が変わってくるのかもしれません。なので、ここではハウスルールの詳細やテスト内容については触れていません。

また、SUになるためのテストは、ある一定以上Foursquareを使っているユーザしか受けられないという話もあります。それの真偽や、ある一定以上のしきい値といったものは分かりません。

なぜスーパーユーザになりたかったのか

私がなぜFoursquareスーパーユーザになりたかったのか。それは私が大好きなFoursquareという世界を良くしたいという想いがあったからです。

Foursquareはゲーミフィケーションとして楽しむものとされていますが、最近ではライフログとして活用するケースが増えています。またあらゆる場所を「べニュー」という概念で包括的に扱う世界的サービスはほとんどなく、あらゆる場所のあらゆる情報が集積される場所としてのFoursquareの重要性は日に日に増しています。

位置情報を扱う非常に多くのアプリケーションは、最近ではFoursquareの情報を引用するようになっている事に気づいている人も多いでしょう。また、あのAppleでさえ自社のマップを良くするためにFoursquareと提携して作業をしているという話さえあります。Foursquareの情報は日に日に重要性を増しています。そういう一企業のサービスでありながら公共性すら感じられ毎日多くの人に使ってもらえる情報の編集の一端を担えるというのは非常にやりがいのあるものです。

スーパーユーザであることの自覚と注意点

これはテストに臨む前に読むべきハウスルールなどのFoursquareが提供している文章にも繰り返し書かれているものですが、スーパーユーザという権限を持つことは、それなりの責任も持たなければならないとされています。

私は一部の「べニュー内べニュー」というものについて否定的な考えを持っています。例えば「上野駅」というべニューはいいとして「上野駅1番ホーム」というべニュー内べニューには否定的といった感じ。ただハウスルールではこれはOKとされており、スーパーユーザはこれを拒否してはならないとされています。

スーパーユーザになった今、決して私情を優先すること無く、スーパーユーザの自覚としてFoursquareのガイドラインに適合した編集をしていく所存です。

また、ハウスルールには厳格には適合しない、日本独自というか日本のFoursquare SU独自の暗黙のポリシーもあるようで、そういう部分についても柔軟に対応していきたいと思います。

Foursquare以外のロケーションベースサービス

Foursquare好きの私ですが、今までそれ以外のロケーションベースサービスも色々試してみましたが、Foursquareとロケタッチの2つに集約しつつあります。

ロケタッチは日本国内としては非常に優秀なサービスであり、livedoorグルメなどと連携した非常に速い飲食店反映などに定評があります。最近であればLINEとの連携も魅力的です。

ただ、場所の修正などは運営元への提案以外の方法がなく、その点の修正が遅れる点、また海外での場所の登録が少ない点がFoursquareに一歩遅れている部分だと思いますが、それでも、Foursquareブームの後に日本で雨後の筍のように現れたロケーションベースサービスの中では、最も優秀なものと言ってもいいでしょう。比較的最近の概念であるO2Oを目論んだ後発の国産ロケーションベースサービスに比べても、うまくいっている事例ではないでしょうか。

そういう意味ではFoursquareのスーパーユーザ制度は、Foursquare社だけでは手に負えない程の全世界のべニューをある一定の品質を保ちつつ良くしていく仕組みとして、うまいなぁと感じることしきりです。

その点のロケーションベースサービスの比較であったり、Foursquareの使いこなし術といったものについては、別のブログ記事で書いていきたいと思います。

Google日本語入力のローマ字テーブルを設定するとはかどる

おがた (@xtetsuji) です。

ここ最近長文エントリが続いたので、軽めの話題。

最近では「Google日本語入力」がだいぶ普及してきました。無料であること、軽い事、Windows/Mac/Linuxマルチプラットフォームであること、Googleの面目躍如とも言える名詞の変換効率の良さなど、色々な要因があると思います。

さて、Google日本語入力をあまりよく知らない人が驚く機能として「変換モードをオンにして zh って打ったら ← (左矢印) が出た」というもの。これは変換辞書ではなくローマ字テーブルに定義されているものです。これ自体、Googleの発案ではなく、UNIX/Linuxで大昔から使われていた日本語変換ソフトCannaや、その後継として最近使われているAnthy等で普通に定義されて使われているものなんです。

実際に設定から「ローマ字テーブル」のところまでたどってみてください(各OSで若干手順が違うかもしれません)。

Google日本語入力のローマ字テーブル設定

色々な初期定義があることがわかります。このローマ字テーブルの定義に追加をすることで、記号等を素早く出す定義を作ることができます。

かな漢字変換の変換設定を追加することで効率アップという話はいたるところでききます。「よろ」と入れれば「よろしくお願いします」と出るような類。ただ、Google日本語入力ではサジェスト機能があるので、一度実際の変換で覚えさせればそういう設定が必須ではないという優秀さもあります。

ローマ字テーブルの定義を見てみると、zとの合わせ技で一文字の記号を出すという設定が多いのが分かります。ローマ字変換ではあまり使われない子音であることと、qwerty配列キーボードの場合は左手→右手という流れで打てることが意識されていることが分かると思います。なので新規追加する設定では、qやxを選んでもいいのですが、まずは無難にzの「空いているところ」を選ぶとよいでしょう。

設定はボタンを押すことで直感的に出来ると思います (各OS版やGoogle日本語入力のバージョンによって操作に差異があるかもしれません) ので説明は省きます。

以下のスクリーンショットでは、zn と打つと ▼ が出力され、zm と打つと ▽ が出力される設定を追加してみたところです。これは私がよくテキストメールなどでセクションの頭文字として使うことが多い記号だからです。人によっては、四角記号や一般的なセクション記号 § や、ダガー記号 † ‡ を登録しておくとはかどるかもしれません。

ローマ字変換テーブルに設定追加

 

変換辞書の設定との使い分けですが、変換辞書はローマ字変換テーブルと比較して例えば以下のようなデメリットがあるでしょう。

  • 意図した変換候補の順番が常に最新とは限らない。また複数出てきて選択が煩わしいこともある (「さんかく」と打って複数出てきたりする)
  • 逆に変換を意図しない場合に出てきて煩わしいことがある (「よ」で「よろしくお願いします」が出る設定の場合、意図せずそれが出てきて、うっかりチャットに放流したりすることがある等)

逆に、ローマ字変換テーブルは変換辞書と比べて例えば以下のようなデメリットがあるでしょう。

  • キーバインドの数に制限がある
  • 特に定義を多くし過ぎると覚えきれない
  • 設定として変換辞書ほど一般的ではないので、乗り換え時の移植性に困難が伴う可能性がある

「変換辞書」もGoogle日本語入力のサジェスト検索と組み合わせると今までのIMEに比べて随分とはかどりますが、要所要所に「ローマ字変換テーブル」の設定を導入すると結構便利。人によって使い分けはさまざまかと思いますが、色々と模索してみると良いかもしれません。オススメです。

YAPC::Asia Tokyo 2013 で「Apacheの展望とmod_perlの超絶技巧」というトークをしてきた話など #yapcasia

おがた (@xtetsuji) です。

YAPC::Asia Tokyo 2013 トークなど編。その他の「YAPC::Asia Tokyo 2013」関連記事は目次ブログ記事からどうぞ。

いつもそうですが、今回もかなりの長文です(1万文字越え!)。mod_perlに特段の興味のない方は、流し読みでどうぞ!YAPC::Asia Tokyo 2013関連のブログ記事はこれが完結編の予定。

トーク「Apacheの展望とmod_perlの超絶技巧」について

昨年の初トークに続き、今年もYAPC::Asiaの壇上で2度目のトーク「Apacheの展望とmod_perlの超絶技巧」をさせていただきました。2年連続、今年も飽きずに得意の持ちネタであるmod_perlネタをぶつけましたが、今年も採用してくださって本当にありがたいです。世間では古い古いと邪険に扱われがちなmod_perlですが、こういうトークもソーシャルボタン等でそれなりの支持をいただいて嬉しい気持ちです。

最初はタイトルが「mod_perlの展望とApacheの超絶技巧」というタイトルだったのですが、スライドを作って発表が終わって一段落付くまで、Apacheとmod_perlというキーワードが入れ替わっていた事に気がつかないというボケをかましてしまいました。悩んだ挙句、トークページのタイトルをしれっと書き換えるという作戦に出ました。これくらいであれば許されますよね?

前のVimのトークはイベントホールが満席状態だったのに、自分が壇上に立ったら半分くらい人がいなくなったときは焦りました。ただ、イベントホールとメインホールは普段はそんな感じで、多目的教室が狭すぎたという意見も聞きますし、mod_perlというニッチな題材にしては、そこそこの入りだったかなと感じます。

実際、話したかった事は

  • Apache httpd serverは、Nginx等の他のウェブサーバ実装の台頭でこの先どのようになるのか展望を話す
  • mod_perl2 を使って任意のサーバが Apache2 と同等の堅牢性で書けるということのコンセプトを示す

というところだったので、タイトルとしては「Apacheの展望とmod_perlの超絶技巧」のほうが言いたかったことを表しているわけです。

前年は「mod_perlの本質とは何か」ということをmod_perl1とmod_perl2両方を例示して懇切丁寧に解説して大量のスライドが余った感じでしたが、今回はmod_perl1の説明は一切しませんでした。私自身が関わっている業務でもmod_perl1をmod_perl2にマイグレーションして、mod_perl1環境がほとんど残っていないですし(わざと自宅にmod_perl1化石環境を残しているだけ)、展望と超絶技巧を示すには当然mod_perl2だというのが背景にあります。

トークが採択されたのは「超絶技巧」という大げさな単語を入れたのも効果あったかなと感じています。「無駄にカッコイイ」などと褒め言葉もいくつか頂きましたし。日常生活では「超絶技巧」なんて言葉は使わないですよね。クラシック音楽ではフランツ・リストの「超絶技巧練習曲」という作品が有名で、そこから単語を採用させていただきました。

肝心のトーク内容については、無難にまとまったかなといった印象。前半の展望と後半の超絶技巧、両方そこそこだったかなと。もっとうまくできれば…という点はもちろん色々あるんですが、終わってから欲を言っても仕方が無いわけで。

中間部にあのトークを意識した「もう一つの本当にあったレガシーな話」というスライド群を入れたのですが、時間の関係で飛ばしてしまいました。内容はスライドままなので、興味のある方は読んでみてください。

mod_perl2でmemcachedサーバを実装するというコンセプトが当日までに完成しなかったのですが、完成したところで20分のトーク中に実演することもなかったので、これからに期待してくださると幸いです。特にこの事例は実用を目指しているというわけでなく、コンセプトとしてこんなことも出来るということを示したいという意図程度です。

mod_perl1はHTTPリクエスト処理しか書くことができませんでしたが、mod_perl2ではTCPコネクション層から処理を書くことができます。これはApache1.3とApache2.xのモジュールAPIと対応しています。Apache1.3では本体にパッチを当てないとSSL接続を直接受けられなかったのが、Apache2.0でmod_sslが生まれて単体で処理が可能となった事などが好例です。

世間は新しいものが受容される環境ばかりではありません。古式ゆかしい納品型受託案件などでAnyEventはまだ新しい実績の乏しいものと見られ敬遠されるケースがあるかもしれません。daemontoolsはdjbアレルギーで拒絶される場面もあるかもしれません。そんな時にApache2/mod_perl2で任意のTCPサーバが書けることがプロジェクトの突破口になることもありうるのでは、という情報を提供したかったということもあります。現にqpsmtpdはApacheをEngineとして動作するmod_perl2モジュールが存在しますし、mod_mrubyやmod_luaなど、新たなApache拡張系の登場も、このジャンルがまだ現役である事の証拠だと思います。先輩であるmod_perlがmod_mrubyやmod_luaへの実用例の開拓者になるって素晴らしいと思いませんか?

トークでお話した通りですが、展望面では、Apache2.6では大きな変更は無いとしても、Apache3.0が依然として謎のベールに包まれています。またApache2.4でのmod_perl2対応がWindows環境で難航していることで今後どうなるのか、見守りたいです。未成熟なevent MPMが今後成熟してNginx等と切磋琢磨していくのかなど、今後もApache/mod_perlから目が離せません。随時ウォッチして、ブログやトークなどでアウトプットしていきければと思います。

会場では @tokuhirom さんが聴講してくださって質問やアドバイスをいただけたのは嬉しかったです。「Apache2をAnyEventのエンジンにするのは?」は、実用とは別に興味深い課題。つい「そのアイデア、頂きました」と言ってしまいました。

後日 @tokuhirom さんが書いたmod_perlに関するブログ記事もリンクしておきます。

「本当にあったレガシーな話」を聴講して

いやはや、1日目に20分mod_perl推し(?)トークをした私でしたが、2日目の @lestrrat さんの「本当にあったレガシーな話」はまさに40分mod_perl dis吹き荒れる真逆のようなトークで、聴講していた私も内心ビクビクしつつ、楽しんで聴講しました。

[tweet https://twitter.com/xtetsuji/status/381289572115562497]

さて、会場で爆笑していた人の中で、あまりmod_perlに詳しくない方のために、私なりの解説をしてみようと思います。

その前に注意点として、私はこの内部コードの事を当然知らないわけで、憶測や推測で語っている立場だということ。また、私自身の無知や無理解による誤解や間違いが含まれている可能性があるということ。これらをご留意下さい。

前提として、@lestrrat さんの「脱mod_perl、PSGI化推進」という方向性は2013年の今の選択として正しいと私も考えています。一度PSGI化してしまえば、Plack::Handler::Apache1を使って「裏返し」にmod_perl1を据えることさえ可能だからです(はたしてそれをしたいかは別として)。Plack::Handler::* の数だけ裏側のウェブサーバの実装とPerlの永続化手法も選び放題です。このメリットは計り知れません。その他に得られるメリットも枚挙にいとまがない。

このトークの「mod_perlをPSGIに書き換える一大事業」は大きく分けて二部あって、前半が「mod_perl1ハンドラ(sub handler)で書かれたアプリケーション」、後半が「mod_perl1に密に依存したSledge」でしょう。mod_perl1の問題点は前半で大体語りつくされており、後半も色々な試行錯誤があるものの、前半の部分に話の比重が置かれてか、軽めな印象を覚えました。

前半のmod_perl1ハンドラで書かれたアプリケーションの話。Apache::Request->instance と言われて一瞬意味がわからなかったのですが、libapreq のことだったんですね。

mod_perl1で「リクエストオブジェクト ($r)」と呼ばれるものは主に2つあって、

  • Apache オブジェクト (ref $r eq ‘Apache’)
  • Apache::Request オブジェクト (ref $r eq ‘Apache::Request’) a.k.a. libapreq

というものがあります。今回 @lestrrat さんが語っていたのは後者の Apache::Request のほう。

「もともとmod_perlはApacheのモジュールをC言語ではなくPerlを使って書けるようにしたもの」というコンセプトに立ち返ってC言語でのApacheモジュールの開発に降りて考えると、mod_perl1でいうApache オブジェクトが、Apache1.3 での mod_*.c 内での原始的なリクエスト構造体 (request_rec 構造体) の対応です。ただ、この request_rec 構造体はHTTPリクエストを扱うにはあまりにも貧弱で、例えばファイルアップロード(multipart/form-data)のPOSTデータを受け取ってそれをほどくことすら自前ではできません。C言語を書くプログラマにとってこれはあまりに苦痛でしかないことは容易に推測できるわけで、これを補うために libapreq というライブラリが Apache側から提供されました。これを使えば大体のHTTPリクエスト処理ができるようになります。このlibapreqのPerlバインディング(XS)がApache::Requestと理解していただいて良いでしょう。

資料には Apache->uplaod() で Apache オブジェクト (request_rec 構造体) から upload オブジェクトを取得できるとされていましたが、upload オブジェクト (Apache::Uploadオブジェクト) を取得するためには確か libapreq / Apache::Request の力が必要なはずです。ここでは「Apacheオブジェクトは貧弱、Apache::Request (libapreq) オブジェクトは強力」ということを覚えておいてください。というか、libapreq はあまりにも強力なものです。良くも悪くも。

実は私は、ジョークやコンセプト以上の目的で libapreq / Apache::Request を使ったことがありませんでした。なので Apache::Request->instance という文字列が出てきて理解するまで10秒くらいかかったのはここだけの話。この呪文 Apache::Request->instance は、どこでも都合よく強力なApache::Requestリクエストオブジェクトを虚空から取り出せる呪文のようなもの。1つのリクエストサイクル中でリクエストオブジェクトは実質的にシングルトンであるとはいえ、このクラスメソッドを使ってしまうことで、コードの量が多くなればなるほど可読性は大いに下がると推測されます。

Perl CGIのRegistry高速化は別として、ハンドラとしてのmod_perl はあくまでも「複雑なことをさせない」「外部との密結合を避ける」ことが大事だというのが私のモットーだったので、libapreq / Apache::Request を使った時点でそのモットーが崩れるというのが私の意見。要するに libapreq / Apache::Request を使った時点で、複雑なウェブアプリケーションをmod_perlハンドラで書くという船出をしてしまったようなものと言えるかもしれません。

「単純なことをする」「疎結合である」という要件が満たされるのであれば、速度や可搬性を持った良いmod_perlハンドラアプリケーションが書けるでしょう。例えば簡潔なJSONを出力するAPIなどのようなもの。HTMLの画面を出力するサーバとは分離したApache/mod_perl世界があるときなど、こういう手法は悪くないと思います。将来の移植性に置いても心配はそれほど無いはず。

トークでは「$rは多機能過ぎる」という下りがありましたが、まさに$rはmod_perl1のオブジェクトという存在以上に「Apache1.3そのもの」であると言っても過言ではないでしょう。この「多機能」というキーワードには、モダンなフレームワークが持つコンテキストオブジェクトのような移譲による役割分担をせずに、$rだけであらゆることをやろうとするという雑然としたメソッドの世界観を含んでいると感じました。また「ブラウザからのHTTP接続の切断」といった状況すら検知できる(皆さんがお使いのHTTPサーバやフレームワークではできますか?)という意味での強力さに手を出してしまうと移植性が途端に低下してしまい、Apacheロックオンの危険性を感じる立場もあるでしょう。

mod_perl1ハンドラは、いわばC言語を使わずPerlを使って書かれたApache1モジュールそのもの。サイトexample.jpの画面とロジックを作るとき、mod_examplejp.cを作ろうと普通の人は考えないのと同じ理由で、mod_perlで画面とロジックを書く事は迷宮への入口を思わせます。HTMLの画面としてのレスポンス結果を作成するのは、mod_statusくらいのHTTP GET単発画面を出す程度の簡単さがギリギリラインかなと思います。そうでなければ移植性を考えてPerl CGIを書いた上でmod_perl高速化環境を使うか、この層を抽象化したフレームワークを使いたいところです。

後半のSledgeをPSGI化する話。実際にSledgeを使ったアプリケーションを書いたことは無かったのですが、私が当時mod_perlハンドラを学び始めた頃の活きた教材がSledgeでした。

標準のSledgeはPerlの永続プロセス手法としてmod_perl1(2ではない)以外のバックエンドを持っていない事がまず問題です(CGIは非永続プロセス手法なので考慮外)。SledgeをPSGI化する外部の試みのいくつかも、大規模サイトに投入するにはネックとなることがトークで語られていました。

余談ですが、SledgeのAPI自体も非常にmod_perl1の影響を受けているようで、コンテキストオブジェクト (という名前が正しいのかな) のメソッド名はmod_perl1のリクエストオブジェクトのメソッド名を築一参考したと容易に推測可能なものです。これは、当時よくHTTPリクエストを抽象化していたものがCGI.pm以上にmod_perlのリクエストオブジェクトだったから、それ以外の実装がなかったから、という理由なのでしょう。当時「HTTPリクエストの抽象化」を意識できる教材は、SledgeかJavaのTomcat、Strutsくらいしか無かったような気がします。このような先人の苦労が今のPlack::Requestに結実していくのです。

トークでも語られましたが、Sledgeのmod_perl1部分はApacheオブジェクトは当然として、なんとそれの進化系であるApache::Requestに完全に依存しています。まずフェイクオブジェクト(のようなもの)を作成するという @lestrrat さんの作戦は、問題解決への鋭いアプローチだと感じました。

$r->status(200) + return 404 のくだりは私も理解が足りない部分だったのですが、エラー時にmod_perl1がヘッダ類を出力するときの癖というのは結構あります。Apache1.3コアのErrroDocumentディレクティブもそうですが、エラー画面を出力するという処理には内部リダイレクトという処理が関わってきて、それがApache1.3/mod_perl1上でのヘッダ処理をややこしくしているのではないかと感じています。私の定石は「$r->status()は使わない」「$r->send_http_headerをしたあとでステータスコードをreturnする」です。確かに $r->status() を使うと変な事が起こりがちかも。

Plack化の最初でパフォーマンスが落ちたという話。Plack::Request中でクエリ引数処理が重かったとのこと。Plack::Requestのクエリ引数のパース処理はPure Perlだったと思いますが、mod_perl1は古ぼけていていもクエリ引数のパースはmod_perl1のネイティブAPIがやるので爆速なはずです(libapreqを使う使わないに関わらず、内部的にはC言語での実装です)。

トークで語られたような当時のPlack::Request中にあった重複処理などを改善していく話はエキサイティングでしたね。そもそも、Plackの目的がパフォーマンスよりもPSGIのリファレンス実装やPlack::Handler::*によるウェブサーバの差異の吸収といった部分を優先している(ように見える)ことからも、見逃されていた重複処理があっても仕方が無いかなという気はします。クエリ引数のパース処理が目に見えてパフォーマンスにおいて支配的になるのは大規模サイトだということも、今まで見逃されてきた(?)一因でしょう。こういう観点からも、Plackの大規模サイトへの投入は興味深い事例だと感じました。

ここまで長々と私の解説を書いてみましたが、誤解や間違いがありましたらご指摘下さい。

両方のトークを比較する

長文での説明でしたが、私のトークと @lestrrat さんのトーク、対立するものではなく、向いている方向が違うという感じなんですよね。

  • @xtetsuji のトークは最新のPerlとmod_perl2の先端を使い尽くす
  • @lestrrat さんのトークは太古のPerlとmod_perl1の呪縛から解放する

そういう意味では、両方のトークを聴講した方が、mod_perl というものをどう受け取ったのか、興味深い部分ではあります。

聴講中に

[tweet http://twitter.com/xtetsuji/status/381306340414476288]

なんてツイートをいただいてどうしようかと思いましたが、時間切れで質問タイムはナシ。でも聴講時の私の認識は今よりも甘く、結果的に質問しなくて良かったかなと感じています。

@lestrrat さんからは

[tweet http://twitter.com/xtetsuji/status/381297867916185600]

と返していただいて微笑ましい感じでした。トーク後に10秒ほど会話をさせていただきましたが、両者の考えが互いに良い意味で伝わったような気がします。対立関係じゃないですよ!(笑)

今もmod_perlを採用している人達からの声とそれへの返答

その後、後夜祭などで声をかけてくださった方で、今も業務でmod_perl1アプリケーションを動かし続けている方が結構いることに驚きました。「動くものは触らず」の原則はあるでしょう。それについては否定できません。ただ、古いものを使い続けることへのある種の漠然とした不安を持っているという印象を覚えました。今回のレガシーな話のトークの影響も少なからずありそうです。

私が業務でmod_perl1からmod_perl2へマイグレーション作業をすることになったのは、Ops側が最近掲げた「Debian stable付属パッケージを全ての拠り所にする」というポリシーが大きいです(他にも細かな理由はありました)。Debian stableは既にApache1.3/mod_perl1を外してしまったため、マイグレーションの必要性があったわけです。私はDebian原理主義者的な部分があるほどのDebian好きなので、このポリシーには歓迎をしていて、ブランチを切って一気にマイグレーション作業を完結させました。

ただ、mod_perl1/2の知見が少ない企業が、今も引き継がれ残るmod_perl1アプリケーションをmod_perl2にマイグレーションすることは現実的ではないと感じます。mod_perl1→mod_perl2はApacheのモジュールAPIに対応するように、ある種のAPIの断絶があります。作業としては楽なものではなく、Plack等の別の基盤に載せ替える作業と大して変わらない作業量かもしれません。そうであればPSGI化するほうが良いに決まっていることは前段で述べた通り。

私、ネタとして「mod_perl芸人」的な部分を狙っていると言われればそうなのですが、ビジネス上大事な場面や商用環境でまで何でもmod_perlという立場ではありません。何でも適材適所というのは上述でも繰り返していること。むしろ、最近は業務でも個人でも、ネタ以外でmod_perlプログラムあまり書かず、AnyEventやMojoliciousを使うことが多いんですよね。まぁ、デプロイは慣れたApache2とmod_perl2(Plack::Handler::Apache2)を使って…ということはありますが、MonocerosのコードリーディングをしたりNginxのHttpPerlModuleを調べたり、そういう方向への研鑽も続けています。

ただ、せっかく得たmod_perlの知識。mod_perlを何かにマイグレーションしたい方や、mod_perlアプリケーションを何らかの理由で保守したり新規開発したりといった方へのアドバイス等に活用していきたいと考えています。@xtetsuji や @mod_perl_info にお気軽にご相談ください。

これからどういう活動をするの?

嬉しいことに「mod_perl芸人」はそこそこウケがいいので、小さな場では時々ネタを披露しようと思います。あと前述のようにレガシーに悩んでいる方のために、Apache/mod_perlのウォッチ活動は続けていきたいと思っています。リクエストがあれば、トークやマイグレーション等のアドバイスなどの活動は積極的に行っていきます。ブログなどのネット上でも細々と活動していくつもりです。

私は「新しいもの=善、古いもの=悪」という図式には完全には賛同できない部分があります。初学者の「CGIでゴメンナサイ」発言だなんて「大規模になって立ち行かなくなったときに改めて考えればいいのであって、まず動くものが作れる事がまず大事ですよ」「フレームワークは余裕があれば」と声をかけることもしばしば。それとは同時に、Perlの歴史が長いことで、古い真の意味で廃れた情報が未だに現役の如くネット上に残り続ける負の側面も知っています。何が良くて何が悪いのか、何が正しくて何が正しくないのか、そういう部分も意識して、誤解がないように各スキル層へのアプローチをしていきたいと考えています。

[tweet https://twitter.com/xtetsuji/status/395061721900920832]

Mojolicious飲み会等、新しい試みもしています。私の新しい側面にもご期待いただければと思います。

「来年のYAPC」(期待)のような大きな場での発表は、特段リクエストがなければmod_perlトークはしないかなと思っています。さすがに3度目は無いかなぁと。MPMは別として、APIとしてのApache2は既に枯れており、2回のYAPC壇上で話した内容が大枠の説明を網羅していることでしょう。

今年の YAPC::Asia Tokyo 2013 でも様々なジャンルのトークが行われました。Perlというプログラム言語の可能性は広く、これからも広がり続けることでしょう。そのための力となるべく、様々な事に取り組んで、微力ながらPerlというプログラム言語でありコミュニティを盛り上げていきたいというのが、私の今後の活動だと認識しています。

これからも精力的に活動していきますので、どうぞよろしくお願いします!

YAPC::Asia Tokyo 2013 ハッカソンとその後 #yapcasia

おがた (@xtetsuji) です。

YAPC::Asia Tokyo 2013 後日編。その他の「YAPC::Asia Tokyo 2013」関連記事は目次ブログ記事からどうぞ。

ハッカソンに行くまで

YAPC::Asia 2013 Hackathonのページに書いてある通り、「例年はスピーカーならびに、スピーカーの招待者を基本有参加資格者としております」と書かれたイベント。私もトークをしたスピーカーの一人であるので有参加資格者ではあったのですが、どんな場所か分からず、出ようかどうか前日からさんざん迷っていました。

当日は疲れて動けないということもなかったので、とりあえず外に出て別の場所に行っていましたが、行こうかどうか悩んでいたものの、@YappoさんからMentionをもらって、行こうと決めていざフリークアウトへ行きました。

ハッカソンに行ってみた

表参道駅までやってきて、フリークアウトのオフィスが入っているビルを探してやってきました。恐る恐る入り口を開けると、そこは広大かつ綺麗なオフィスと、名だたるPerlハッカーの皆さんが各所で静かに黙々と作業をしている光景。

Foursquareにもvenueがあったので当然チェックイン。

メイヤーは @hiratara さんでした。

[tweet https://twitter.com/xtetsuji/status/381657005502390272]

オフィスが広大で綺麗なところに感動しました。特に感動したのは無限水、そう、自由に無料で飲めるミネラルウォーター。よく「その会社の福利厚生はミネラルウォーターを提供するかで表れる」と言われることがありますが、ここにはその夢の無限水があったのです。すごい!それだけでなく、カップのジュースやスープの自動販売機があったので、何か飲もうとお金を投入しようとしたら何と無料。ボタンを押すだけでジュースやスープが出てくる!すごいすごすぎる!どこからどこまでも夢のオフィスでした。しかも飲み物だけでなく、自由に食べても良いお菓子まであるという!オフィスグリコとか目じゃないこの太っ腹さ。感涙ものです。

写真を撮っていいものか、みんな真剣に作業をしている感じで聞きづらかったし、何しろお邪魔している他社様のオフィスなので、写真はほとんど撮りませんでした。撮影OKだったら記念に撮っておけばよかったな。

しかも、冷蔵庫にはビールがあるから自由に飲んで下さいとのことで、もう気分は最高潮。

[tweet https://twitter.com/xtetsuji/status/381672497642364928]

皆さん一箇所に固まらず、バラバラに座っている感じではあったのですが、私が座った席のテーブルの右斜め向かいには@miyagawaさんがいらっしゃって、黙々と作業していました。なんという豪華な空間!

私がしていた作業は、とりあえずYAPC感想ブログ第一弾を書いて…といったところで、その後は未完成だったmod_perl2で動作するmemcachedサーバであるModPerl::Memcachedを作っていたのですが、ビールを飲んだところで疲れと眠気が出てきて、ここからは眠気との戦いになってしまいました。眠気覚ましに立って歩いていても、皆さんお疲れの模様でした。さすがに3日間ぶっ続けのYAPC::Asiaでしたから、疲れが出て当然ですね。

結局、私の手元では眠気が邪魔して単純なミスに気づかず、memcachedサーバの実装は全然進まなかったのですが、各所ではPlackの実装についての議論が交わされていたり、第一線のPerlハッカーが一箇所に集まって作業をした成果が出ているようでした。Plack::Request::WithEncodingも、この場で@miyagawaさんや@tokuhiromさんが@moznionさんと議論をしながら骨格が作られたものです。

ハッカソンというものに出ること自体が初めてで、こういう空間はもちろん初めてだったのですが、第一線のPerlハッカーに囲まれて作業するだけでも刺激的な数時間を過ごすことができました。少し悩んだけど、勇気を出して(?)出て良かった!

会場のフリークアウトさんの写真は全然撮れませんでしたが、@941 さんのブログの行ってきた記事を見てみると雰囲気がわかるかと思います。

会場を提供していただいたフリークアウトさん、本当にありがとうございました!終始感動しっぱなしでした。

タイムテーブルでは23時まで続くと書かれていたハッカソンでしたが、19時くらいには「そろそろ食事へ…」という雰囲気になって、お開きになりました。

ハッカソン懇親会

ハッカソンの懇親会は、フリークアウトさんのオフィス近くのもつ鍋屋に来ました。

昼間からビールを飲みながらコードを書いていたわけですが、ここでもビール。美味しい鍋を食べながら会話が弾みます。

私の席は、鍋をどうすればいいかアタフタしていたら、@charsbar さんに色々と面倒を見てもらうことになって、なんだか有り難いやら申し訳ないやら。豪華なメンバーしか集めていないハッカソンだけあって、どこの席も豪華なPerlハッカーです(私という平凡なPerlプログラマ目線)。ここでもPerlやプログラム言語全般についての話が盛り上がりました。刺激的な空間です。

YAPC::Asia 開催中にもすれ違っていたはずなのですが、初めて @__gfx__ さんとお話ができました。色々な優秀で著名な方の話を聞くと、見聞が広がっていいですね。

YAPC::Asia Tokyo 2013 その後

今回、挨拶や有名人見たさの野次馬以上に、実質的に初めて本格的な議論を交わしたPerlハッカーの方々も多く、出会いって大切だなと感じると同時に、今後とも情報交換など良好なお付き合いをしていきたいと感じました。そのためには自分自身もその目線まで上がらなければと感じた数日間。ギブアンドテイクの世界、私もPerlの世界に多少なりとも貢献出来るよう、これからも頑張っていくぞと、やる気をもらえたYAPC::Asiaとハッカソンでした。

「来年のYAPC問題」については、別記事でも何回か書いた気がしますが、特に心配しなくてもいいんじゃないかなと思います。もちろん、誰かが発起して協力を求めるのであれば、出来る限りの協力をしたいと考えています。みんなでPerlを盛り上げていきたいです。

私のその後は「YAPC燃え尽き期」か、しばらくは疲れた感じで惰性で(?)9月を過ごし、10月へ入っていくことになるのでした。10月に入ってから、この記念すべきYAPC::Asia Tokyo 2013を記録に残すべく、少しずつ振り返りブログ記事を書いているといった感じです。

あ、そういえば、1日目の懇親会で出会ったMojolicious仲間と一緖に、その後9月25日に「Mojoliciousやmod_perlを話題にした飲み会 #2」を開いたのでした。この会自体が @jamadam さんが東京にいるときに開こう的ノリなのですが、今後も継続して開催していきたいと感じました。Mojoliciousユーザ、結構たくさんいるという印象を今回のYAPCで持ったものの、横のつながりがなかなか出来ていなくて、情報交換の場がもっとあってもいいかなと。

10月も後半になって、YAPC::Asia Tokyo 2013から1ヶ月が経ち、個人でのプログラミング活動も徐々に盛り上がりつつあります。これからも何かあったら当時のアツい日々を思い出して、自分自身のプログラミング活動の活力としていきたいと感じました。

YAPC会期中やその前後で、色々な新しい企画への誘いもあったり、自分自身でもこんなイベントが欲しいというアイデアが色々出ました。疲れを取って落ち着いた後は、また面白い日々が過ごせそうです。

本当に良いイベントを前夜祭からハッカソンまで、通算4日間、存分に経験した2013年9月。これから「次のYAPC」まで、この体験を思い出して頑張っていけそうです。微力ながら、私も未来を切り開いていく一人として邁進していきたいと心に誓いました。

YAPC::Asia Tokyo 2013 2日目 #yapcasia

おがた (@xtetsuji) です。

YAPC::Asia Tokyo 2013 2日目編。その他の「YAPC::Asia Tokyo 2013」関連記事は目次ブログ記事からどうぞ。

聴講したトークなど

列挙していきます。

トーク雑感

@yusukebe さんのMojoliciousトーク、相当期待していたのですが初心者向けで、多くは既に知っていることが多かったです。とはいえ振り返りができたり、自分が取っていた手法は間違いじゃないんだということを確認できて良かったトークでした。@yusukebe さんには日本有数のサイト開発運用経験を元にMojoliciousの書籍執筆を期待したいです。絶対買います。

@goccy54 さんの「これからのPerlプロダクトのかたち」は、昨年の氏のトーク同様、多くの注目が集まっていました。gperlの構文解析の成果を現状のPerl5にポートして、それによってiOS開発ができる(RubyでいうRubyMotionのような)PerlMotionを作成中という話も期待が持てます。すでに構文解析の成果をPerl5で実現したモジュールは各所で使われており、PPIより速いと好評のようです。さすがPerlを根底から理解しようとした強者ならではのトークでした。

@typester さんによるEmacsの話は、Emacsユーザとして初歩的ではあったものの、いまどきの流行を知ることが出来て良かったです。anything.el すら面倒で入れていなかったのですが、今はまた別のブームがあるようで、まだCarbon Emacsの環境をCocoa Emacsに作り替えるタイミングで、スライドを見ながら大いに参考にしようと思っています。

@lestrrat さんによるレガシー話。Apache1.3+mod_perl1+Sledgeという構成のlivedoorBlogをPSGI化したという話でしたが、40分まるまるmod_perl disで、前日にmod_perlトークをした私は終始ハラハラしながら聴講していました。とはいえ、どこに真意があるのかはmod_perlをかなり使っている私は分かっていて、同意することしきりではありました。

壇上でmod_perl disが繰り広げられているときに、こんなツイートをいただいて、どうしようかなって思ったり。結局質問タイムが無くて公開の場で質問する機会は無かったのですが、結果的にそれで良かったかなと思っています。

会場で爆笑していた人がたくさんいましたが、何がダメだったのか、本質を見抜いていた人はどれだけいたのかなぁ。これについても語ると長くなるので、別ブログ記事で解説したいと思っています。

@maka2_donzoko さんによるボードゲーム話、「サラダ枠」とのことで、毎年楽しみにしている枠でもあります。今年も本当に面白かった。JSON::PP などの重要モジュールのメンテナーでもあるまかまかさんですが、人を楽しませる心意気には感心することしきりです。このトークは動画もスライドも、見たら元気が出るトークです。

PhantomJSの話、以前から気になっていたJavaScriptプロダクトだったので、結構興味深かったです。Seleniumとどういう違いがあるのかな…未だに理解不足な部分が多いですが、とっかかりとしてPhantomJSをいじってみようというキッカケになったことは良かったです。

@myfinder さんの、フルテストも50msec話は面白かったですね。日々増えるテスト、さすがに50msecでは終わらないそうですが、それにしてもテストが根付いた文化というのはうらやましいというか私の境遇からは想像できないので、終始感心しっぱなしでした。テストがあるおかげで安心してデプロイが出来て、新しいものを躊躇すること無くリリースできる好循環。モダンな開発環境が整った時代から始まった会社とはいえ、さすがフリークアウト。

LT雑感

1日目に続き、2日目のLTも盛り上がりました。こちらも、5分弱の録画ビデオが公開されているので、1日目同様、笑いたい時、楽しみたい時に見返すとよいかもしれません。

印象に残ったLTから抜粋してご紹介。

  • 今年のPerl同人活動報告 と銘打った @maka2_donzoko さんの同人報告。今年も大舞台で同人活動宣言。これは期待。
  • @azumakuniyuki さんの、JSONでメールが送信できるHainekoの話。とある要請で作ったようですが、当面メールが無くなることがないわけで、Ajaxなどを使ってメールを送信したいという要求を満たすことができるのではないでしょうか。興味深いです。
  • @barimi さんの「初めてのPerl ~ つぶやいてないでコードかけ ~」。@yusukebe さんを味方につければ素人でも5日でTwitterボットが書ける!冗談っぽい話ではありますが、人に聞くというのは大切なことですね。
  • @__papix__ さんによる「Perl入学式2013年度中間報告」。これからも期待しています。
  • @cubicdaiya さんによる Nginx に mbruby を組み込む話。Pixivでは Nginx+mrubyを精力的に使っているのでしょうか。なかなか興味深い。こういうトークも自然と受け入れられるところがPerlの祭典であってエンジニアの祭典でもあるYAPC::Asiaの懐深さなのかもしれません。mruby期待しています。
  • @takesako さん、今年は○×クイズでLT。いやはや、全員起立の参加型LTなんて初めてでしたよ。そして難問をクリアしたのがラクダ本の和訳をした近藤先生というのだから、なんというチート。面白かったです。

Keynote

LINE社の池邉さんによるKeynote。例年、この最後の枠はスピリチュアルというか、エンジニアという立場を俯瞰した視点でのトークがなされますが、今年もじんわりと響くトークでした。

池邉さんはlivedoor時代(もっと前?)から長く会社の技術を支えてこられて今の位置にいたりするわけで、業界の人間として何か感慨深いものがありました。大昔のYAPCで池邉さんのトークを聴講したこともありましたが、その時から立場が変わって、たとえ人の上に立つ立場となっても技術者視点を忘れないということは大切だなーと思いました。

Closing

例年のYAPC::Asia同様、牧さんによるClosing。今年の入場者数が1000人越えといった発表の後、牧さんと櫛井さんが今年でYAPC::Asiaの運営から卒業するという突然の発表。そして来年のYAPCは誰かが名乗りでないと開催されないという、さらに衝撃の発表。

しかしながら、地方でYAPCするぞというLTもあったり、今年の規模を越えることはできないにしても、来年のYAPC::Asiaは何らかの形で行われるのではないか、私はそう期待していますし、何か協力できることがあれば出来る限り積極的に協力していきたいです。

昼食

ちょっと時間を巻き戻して正午の昼食ですが、1日目同様2日目も学食へ行きました。慶応大学の学食、本当に安くておいしい。生活圏内に欲しいくらいでした。

昨日は気付かなかったけど、4sqにvenueがあったのでチェックイン。冷麺うまかった。

勝手に後夜祭

Closingの後、勝手に後夜祭に参加。

狭い店の中に60人以上が入って、鉄板の暑さと人の暑さですごいことに。ぎゅうぎゅう詰めの中、著名なPerl Monger達が立ったり座ったり暑い暑い言いながら懇親を深めました。

初期フードメニューはこんな感じ。食べ飲み放題でしたが、コナモノなのですぐに満腹になりました。

勝手に後夜祭の初期メニュー

そしてこの人のひしめき合う狭さ!

勝手に後夜祭の狭さ

あまりの狭さに懇親よりも「暑い暑い」と言っている時間が長かった気もしますが、それでも様々な方と会話ができたりして楽しかったです。金銭的時間的に余裕があれば、こういう場には積極的に参加したいですね。それだけ実りのある会話ができて、実りのある時間が過ごせます。

23時頃に解散。前夜祭も含めて3日間の疲れが出ないうちに帰宅となりました。

噂によると、八王子近辺在住のHachioji.pm勢はこの後、朝まで八王子で飲んでいたとか。すごい。

今後に向けて

3日間のYAPC::Asia Tokyo 2013の最後が「牧さんと櫛井さんのYAPC::Asia運営卒業。来年のYAPC::Asiaは誰かがやらない限り行われない」というものでしたが、きっと誰かがやってくれると楽観できるのは、この3日間で実感したPerlコミュニティの熱い想いがあるからでしょう。地域.pmもたくさん増え、それに伴って全国各地に心強いPerl Mongerが増えている現実もあります。東北勢も来年のYAPC::Asiaを東北でやりたいと名乗り出ました。YAPC::Asiaという名前のイベントや今回のような規模ではないものの、きっと来年も「YAPC::Asia」は行われる、そう信じています。

ひとまず前夜祭を含めて3日間の心地良い疲れを持ち帰って帰宅しましたが、実はさらに次の日に行われたハッカソンにも参加してきました。

というわけで、その後のハッカソンの話と、私のトークにまつわる話へ続きます。

YAPC::Asia Tokyo 2013 1日目 #yapcasia

おがた (@xtetsuji) です。

YAPC::Asia Tokyo 2013 1日目編。その他の「YAPC::Asia Tokyo 2013」関連記事は目次ブログ記事からどうぞ。

オープニング、そして基調講演

前夜祭で遅くに帰宅して1日目の自分のトークの準備をしていたので、朝起きられるか不安でしたが、夢と希望の力で起きてオープニングには余裕で間に合いました。人間は夢と希望で活動していると実感した瞬間。

恒例の櫛井さんのオープニング。その後の基調講演。今回の冒頭の基調講演も前年同様英語のプレゼンテーションではありましたが、スライドが分かりやすかったのと、発音した英語が多少追えたので、なんとか楽しむことができました。Perl5.18の今や、これからのPerl5といったものが垣間見えて、これからの楽しみが増えました。

聴講したトークなど

列挙していきます。

トーク雑感

@kazeburo さんのMonocerosのトークは期待していたので、絶対聴講するぞと以前から思っていました。Monocerosというウェブサーバ自体の魅力の他にも、UNIX/Linuxでサーバを書くための作法というようなものも学べたのが良かったです。straceの出力を出して「これ読めますよね」という@kazeburoさん、さすがです。Monocerosのコードリーディングは細々と続けています。

学術分野におけるPerl、普段Perl入学式や地域.pmなどでお会いしている@__papix__さんによるトークでした。GPGPUを使った部分など、なかなか高度な事にチャレンジしているんだなと感心しきりでした。

普段はEmacs使いの私ですがVimにも興味があったので、Vimのトークを聴講しました。なかなか練られたプレゼンテーション手法に感心。後日公開されるスライドを読み返しながらVimの設定をしてみようと思います。

私自身のトークの振り返りは長くなりそうなので別記事で…。

@hiratara さんによる型付きPerlの話は、部屋があふれるほどの盛況ぶり。後ろの床に座って聴講していましたが、本当に難解でよく分からなかったというのが正直な感想。このあたりも勉強しないとなという意識付けが出来たのは良かったです。

次に聴きたいトークまで間があるし、多目的教室はいつも盛況で入れない状況だったので、しばらくロビー内などをブラブラしていました。ロビーの隅っこでは床に座り込んでparumonをしているHokkaido.pmの人たちがいたり、なかなかバラエティにとんだ風景でした。

床でparumon

@tokuhirom さんによるFuture Perlのお話は、午前中の基調講演とはまた角度が違った面白いトークでした。Perl6の実装は色々あれど、どれも開発フェーズが混迷していたり遅かったり使うのはちょっと…という印象を持っていましたが、Seisはなかなかいいところまで来ているという印象。私を含め、今まであまりPerl6に興味がなかった人もPerl6を使いたくなったトークではないでしょうか。前年のYAPCまでとは違い、今年はそういう未来についてのトークが熱かった印象。

@toku_bass さんのライブコーディングも会場が盛況。入場すら厳しい部屋から人があふれるほどの状況で、チラッと拝見しました。ただ、壇上に @toku_bass さんがいなかったにも関わらず、画面は進み声は聞こえるという不思議な光景。あとで聞いたら、立ちながらのライブコーディングは厳しいということで、最前列に座って作業していたとのことでした。今年のYAPCもPerl初心者中級者といった人が結構いたと思うし、そういう人にPlackの内部を見せながらウェブアプリケーションを書いていくライブコーディングは有用だったことでしょう。

LT雑感

LT1日目も盛り上がりました。タイムテーブルは公式Twitterで告知されているので、それに従って印象深いものを抜粋して振り返ってみようと思います。公式にビデオが上がっているものは、LTの時間制限の性質上、4〜5分で見られるものなので、何か愉快な気持ちになりたい時に、人生落ち込んだ時、ちょっと何か見て笑いたい時にも使えそうです。

  • ギークな異性を落とす魔法の言葉はネタ枠として大成功でしたね。200 OK
  • How to inspect a RUNNING perl processは既存のPerlプロセスを外部から観察する方法という込み入ったシステム的な内容でしたが、デバッグ時に参考になる部分も多く、今後この手法を使ってdaemonを開発したりしていきたいなと感じました
  • YAPC::NA 2013に行ってきたは、昨年ベストスピーカー賞を獲得した@yusukebeさんがそれでYAPC::NA 2013に行ってきた記録ですが、一度は海外のカンファレンスに行ってみたいと思わされたトークでした。英語の壁などありますが、金と時間があって行く機会を作れば乗り越えられそうな気が十分します。
  • んだっちゃだれ Sendai.pmは、今元気なSendai.pmの話。YAPC::Tohoku(仮称)の話も出てきて非常に盛り上がりました。東北は青春18きっぷで途中下車した盛岡くらいしか経験がないので、今度じっくり東北観光をしたい。
  • オープンソースプロダクトに貢献することはSixApartの方のトーク。一度movabletype (MTOS) をforkして、とある改良を入れようとしたのですが、どうしても克服できない点があって諦めた経験あるんですよね。でも行動に起こしただけ数年前の自分自身より進歩あるかなって思いました。
  • 1日目LTのトリである2013年代のBlogツールRijiの紹介は、もう@songmuさんの突然の中国語トークに全てを持って行かれた感がありますね。「YAPC::Asia なんだし例年台湾等からも聴講者が来るわけで、日本語以外のLTがあってもいいじゃない」という考えには大いに同意であります。いやはや、これは一筋縄では真似できない偉業です。

会場の雰囲気

このあたりは櫛井さんのブログが非常に詳しく写真も綺麗なのでそちらを参照していただくことにして、私が撮った数少ない写真からいくつかピックアップ。 各トークについては原則的にYouTubeで動画が公開されているので、そちらを参照すると雰囲気が分かると思います。

個人スポンサーの提灯

個人スポンサーのちょうちん。私のものも飾られていて「お〜」ってなりました。その後、2日目の終盤に持ち帰りました。

昼食

2日目もそうだったのですが、1日目もHachioji.pmあたりの人と集まって、生協の学食に行って食べました。安いしうまい。 YAPC自体に慣れてきたからか、外がそれほど暑くなかったからか、トーク会場との移動にそれほど困難を伴わなかったのも良かったところ。

懇親会

2007年から2010年まではボッチで食事だけして帰ってくる懇親会でしたが、2011年夏のHokkaido.pmとの交流開始から3年弱、Hachioji.pmにもよく顔を出すことにしていたら知っている人が増えて、この場が色々な場から集まる人達が一堂に会する同窓会的場所になってきました。

個人的にも長年のボッチ体験を回想して、ポツンとしている人やグループを見かけたらなるべく話すようにしましたが、私自身へ声をかけてくれる人も結構いたりして、色々限界もありましたが、多少のボッチ対策には貢献できたでしょうか。Mojoliciousを使っている会社の方々のグループがあって、数人の方とはPerlBeginnersかPerl入学式で面識があったのですが「@jamadamさんに会ってみたい」と言われたので、探して引きあわせたりしました。それが後日のMojolicious飲み会につながったりもしたので、なかなか有意義だったと思います。

それだけでなく、今年は勇気を出して@miyagawaさんにも話しかけて、Plack::Handler::Apache2まわりの話の質問を投げかけてみました。勇気を出した割には意外に気さくに受け答えしてくれたので、自分が無意識に作ってしまっている「著名な成果を出した人への心理的障壁」を感じましたね。消極的なの良くない。拙作のModPerl::PSGIについても、名前の良し悪しといった評論をしてもらって、非常にありがたかったです。先日のHokkaido.pm#10の時にゲストで来た@tokuhiromさんと話した時もそう思ったのですが、そういう殻はどんどん打ち破って話しかけていくべき、そう感じました。 そういう意味では、英語コンプレックスから、海外より来日したゲストの方々と話せなかったのは数少ない心残りな点でした。

懇親会の食事1 懇親会の食事2

 大人のYAPC

こちらにも申し込みをしていましたが、これは「ヤバい、面白かった」としか書けないです。守秘義務があるので。でもこういう試みは絶対求められていると感じた次第です。この独立イベントを手配してくれた@lestrratさんと@yusukebeさんには感謝です。

時間的に懇親会とかぶっていたので、懇親会を途中で抜けて、途中から大人のYAPCに入った感じでした。もっと懇親会を楽しめればよかったなという気持ちと、大人のYAPCを最初から聴きたかった気持ちが両方。両方とも稀有なイベントゆえですね。

飲み会

その後、1日目の自分のトークが終わった開放感からも飲みに行こうと思い、会場の1階にあるHUBに行って飲みました。さすがというくらい、様々なPerl Mongerが集まっていて非常に刺激的な場所でした。これぞYAPCという光景が確かにここにありました。

この場では、Hachioji.pmの人々と歓談したり、Hokkaido.pmの人達もいたので話したりしました。有用なメール関連ツールを精力的に開発している京都の @azumakuniyuki さんとお会いできてお話できたのは大きな収穫でした。その後 @azumakuniyuki さんから「Hokkaido.pm の @aloelight さんいますか?」と言われて「あぁ見かけましたよ、こっちです」といった感じで新たな接点が生まれたり、適度にPerl Mongerが密集した良い場となりました。

その後、終電が近い人から徐々に解散していき、私も23時30分には電車に乗って帰路に付きました。

2日目に続きます。

YAPC::Asia Tokyo 2013 前夜祭 #yapcasia

おがた (@xtetsuji) です。 YAPC::Asia Tokyo 2013 前夜祭編。その他の「YAPC::Asia Tokyo 2013」関連記事は目次ブログ記事からどうぞ。 写真があればいいんですが、写真を撮るのが下手なので、あまりありません。公式サイトから大量の公式撮影写真が見られると思うので、雰囲気を感じるのであればそちらを参照ください。特に前夜祭の場合はイベントホールの雰囲気と「LTソン::Tiny」ですね。

入場まで

会社を16時過ぎに出て会場には17時30分頃に到着できるようにして余裕を持たせました。ただ、開場の18時がズレこんでロビーで多少待たされることに。とはいえ、当日(1日目)の混雑を前日に分散させるという意味ではこの前夜祭受付の試みはいいですよね。 待ち時間は、各地の*.pm(ほぼHokkaido.pmとHachioji.pm)の方々などと懇親(雑談)していました。 受付を済ませて、会場の床に座って斬新なカードに自分の所属ジャンル?のシールを貼る作業。そしてイベントホールの場所を確認して移動しました。

無限(?)ビールでのおもてなし

例年の前夜祭は、半ダースの350ml生ビールがそこかしこにあって自由に飲んでもよいという状態だったのですが、今年は生ビールの缶がテーブルに綺麗に整列されていて、さらによい環境となっていました。そして、LTソン::Tinyの会場として、イベントホールは机が整列され、さらには前倒しで用意された(本来であれば1日目からの予定だった)Wi-Fiまで完備されているという絶好の環境。ツイートし放題! カウンターで350mlのビールを一缶もらって席につきます。 前夜祭の缶ビール俯瞰 その後、LTソン::Tinyが始まります。 写真は @equinox79さんが撮影した写真がとても雰囲気を表しています。 また公式 @yacpasia でも前夜祭の写真がアップされています。

LTソン::Tiny

私のエントリでは、ざっくりと取ったメモを残しておきます。メモというよりは、誰が発表したかくらいしかメモっていなくて、内容はほとんどないので、gihyo.jpさんのレポートも合わせて読むと良いと思います。

  • 継続可能な勉強会を支える技術
  • ほっけみりんさんの千葉.pmと自己紹介
  • Apache::LogFormat::Compiler: @kazeburo さん (ベストエルティニストでした)
  • Seleniumで捗る話: @__papix__ さん
  • サンフランシスコのIT企業: @yusukebe さん
  • @tomcha_ さん
  • 猫と色々(BounceHammer / Haineko / Acme::Nyaa / Nekoproxy): @azumakuniyuki さん
  • Excel方眼紙撲滅委員会活動報告2013.9: @tk0miya さん
  • @dameningen さん
  • ふっふはっほ: @dokechin さん
  • 日吉とラーメン: @bayashi さん
  • Mojo::UserAgentかわいい: @turugina さん
  • Mooseとその周辺の今とp5-mop-redux: @tokuhirom さん
  • エンジニア業務と忍術: @tomita さん
  • @tagomoris さん
  • Perl for beginners: @coji さん
  • ギターの話: @itrysd さん
  • PeaTiXの長い一日: @aklaswad さん
  • Social AppのFlash事情: @karupanerura さん
  • Riji使ってみた: @koji_magi さん

 その後

21時までに撤収とのことだったので、LTソン::Tiny発表者が全員発表した後、即座に会場を出ることに。座った席がど真ん中だったので、結局ビールは一缶しか飲めませんでした。 その後、私はHokkaido.pmの人達と合流して、久々(といっても1ヶ月ぶり)ですねといった話をしながら、日吉の定食屋に入って食事をして(アルコールは明日もあるしもういいって感じになっていた)、その後明日に備えて解散しました。

前夜祭、昨年初めて出て、前日から感じるその熱気に魅力を感じて今年もやってきたのですが、いやはや今年もそれを裏切らない熱気でしたね。 今年の「LTソン::Tiny」は、昨年のカジュアルに離席が可能で会場の収容人数も少なかった「LTソン」と比較すると、規模もケタ違いの聴衆が集中して、昨年のLTソンの雰囲気を想定して準備してきた一部の人は面食らったようです。あれは1日目2日目の通常のイベントホールでのトークより人いるから、緊張は数倍だろうなーって思いました。

司会の @uzullaさんとLTソン::Tinyのスタッフとして準備していた皆さん、そして発表者の皆さん、お疲れさまでした。そして前夜祭から楽しい催しありがとうございました。 1日目に続きます。

YAPC::Asia Tokyo 2013 に参加してきました #yapcasia

おがた (@xtetsuji) です。

とりあえず「ブログを書くまでがYAPC」ということで、開催中はバタバタし過ぎて書けなかったブログ記事を徐々に書いていきます。一つのエントリが長くなりすぎると読みづらいかなと思うので、いくつかの記事に分けて書きます。

この記事自体も後で多少加筆修正をしたりすると思います。

自分とYAPCの今まで

このエントリを読んでいる人は分からないかもしれないので、自分とYAPCの関わりを列挙しておきます。

  • YAPC::Asia Tokyo 2013 は 2007年から毎年参加
  • コミュニティへの参加は積極的では無かったけど、YAPC::Asia Tokyo だけは会社の後輩を連れて行くようにしていた
  • 2010年までぼっちが続く。今のような「ぼっち防止企画」とかも無かったし、今よりずっと内気だったので、懇親会も単に「後輩と一緖に食事して帰ってくるだけ」に近かった
  • 2010年に地元北海道帯広市のスカイアークがYAPCのスポンサーになっているのを発見してスカイアークに興味をもつ
  • 2010年のゴールデンウィークの帰省中にスカイアーク会社訪問。@onagatani さんに熱烈歓迎を受けて2011年7月の Hokkaido.pm#5 で地域.pm初デビュー & トーク初デビュー(20分)
  • 主に各地のPerlの勉強会(Hokkaido.pm、Hachioji.pm、PerlBeginnersなど)を中心にトーク経験を積む
  • 在籍している会社を説得して、2011年から協賛スポンサー企業デビュー。今年で3年目
  • 2011年はHokkaido.pm勢のYAPCトークデビューを見て「自分もいつかは」と思う
  • 2012年のYAPC::Asia Tokyo 2012で「モダンmod_perl入門」でYAPCトークデビュー
  • 今年2013年のYAPC::Asia Tokyo 2013で「Apacheの展望とmod_perlの超絶技巧」というトークを発表

 全体的な感想

もうとにかく楽しいといか言いようがないですね。日本のカンファレンスの中で一番面白いのではないかと言っても言い過ぎではないくらい。トーク本編だけでなく、屋台が出ていたりBOFやランチカンファレンスといった企画があったり、様々な工夫がある。

年々楽しくなっている要因は、自分の変化もあるし、そしてYAPCの変化もあるのだと思います。

前述のように2010年までは事実上ぼっち状態だったので、トークに刺激を受けつつも交流という部分ができずにいました。ただ2011年以降は地域.pmやPerlBeginnersやPerl入学式などといった小さな場所で交流を深めて、さらにTwitterなどを使って互いに知った仲間を増やしたりして、「YAPCを同窓会の会場にする」という事を実現していきました。

自分の4年ぼっち経験を回想して、なるべくぼっちの人を作らないように努力したつもりです。Perl入学式やPerl Beginnersで顔を知った数人と、Hokkaido.pmやHachioji.pmの人を対面させたりしたりといった感じ。もちろん、数人をフォローした程度ですし、自分自身の懇親もあったので気が回らなかった部分も多かったように思えます。

またYAPC自体も、ぼっち防止企画やBOFなどの交流企画を続々と投入して、みんなで楽しめるイベントに年々成長していっているなということも感じました。

交流の難しさ

前段で「ぼっち防止対策」の話をしましたが、自分はどうだったかというと、満足半分反省半分といった感じでした。

Twitterや他のブログを読んでいると「日本人は真面目にトーク聴き過ぎるので、Hallwayをもっとすべき」といった話もありました。特に痛感したのは、せっかく来日した海外からのスピーカーと話せなかったこと。自分が英語に対してコンプレックスを持っていることもあって、ここは例年の課題を今年も解決できなかった部分で、大いに反省したいところです。英語力強化というよりも英語を話すことに対しての抵抗感を無くしていかなければならないなと痛感。

自分の場合は、2011年から「地方.pm等の各地の小さいところで顔見知りを作り、YAPCは彼らが一同に集う同窓会的な場所にしよう」としていたのですが、YAPCでしか会えない人もいるわけで、これも正解とも不正解とも言えない難しいところ。今年は例年以上に多くの人と会話をして懇親をしたつもりですが、なかなか交流って難しいと痛感した次第です。

YAPC::Asia のこれから

今年のYAPC::Asia Tokyo 2013のクロージングでの突然の告知、牧さんと櫛井さんのYAPC運営からの卒業。そして「来年のYAPC::Asiaは無い」という話。驚きました。そして今までお疲れさまでした&楽しいイベントを提供してくださってありがとうございます。

ショックではありましたが、Perl入学式やPerlBeginnersなどの初心者イベントの充実、それに地方.pmの増加など日本を取り巻くPerlコミュニティは全国的に盛り上がって来ている感じはします(他の言語でもそうなのかもしれませんが)。

以前だってShibuya.pmからJPAにYAPC::Asia Tokyoの主催が移管されたりといったことがありましたし、今年の壇上で東北の方が「来年は東北でYAPC::Asiaやる!」と言っていたり、今年ほどの規模ではないかもしれませんが、来年もYAPC::Asia *** といったイベントが開かれそうな気はします。1000人以上も参加した今年、きっと誰かが発起してくれるのではないでしょうか。

Perlのこれまでとこれから

だいたい季節の変わり目、3ヶ月に一度くらいはネットで「Perlは終わった言語」というFUDが吹き荒れます。最近では慣れっこになった感もありますが。でももしPerlが本当に終わった言語であれば、なぜYAPC::Asia Tokyoが他のLLカンファレンスを越える日本最大規模のカンファレンスとして年々成長していっているのか。まさにFUDな証拠。

とはいえPerl5には至らない点が諸々あることは事実です。しかし色々な方々によって改善が進んでいて、Perl5.xxのマイナーバージョンは成長していき、Perlコアの不便を補うPerlモジュールもたくさん開発されている。色々な理由でPerlは愛され続けています。

もちろん、後発のLLや他の言語がPerlを参考にして作り出され、当然のようにPerlより良い言語になっていることは確かです。私もRubyの構文で魅力的だなと思う部分は結構あります。私は、あれもこれもと手を広げすぎるとダメなパターンの人間なので、それなりの選別をしつつも、他のプログラム言語もほどよく取り入れていける人になれればいいなと思った次第です。

トークを応募してから採択され、準備をし、9月のYAPC::Asia Tokyo 2013まで色々と準備をしたりしました。8月は少し忙しかったし9月のYAPC直前までは体調不良で結構つらかった。でも3日間のYAPCは疲れを吹き飛ばすくらいの面白さだったし、終わってみると一瞬だったなって感じます。時が過ぎるのは早いです。今年もあと3ヶ月、色々な目標を立てて実現しこうと思います。そしてまだ幻の「YAPC::Asia *** 2014」に向けて…。

個別の日程の感想や自分のトークの総括といった内容は、上述の通り、別エントリで書こうと思います。

cutコマンドが分からないからxsvcolコマンドを作った

cutコマンド、いつもよく分からなくて使い方をmanするんですが、よく分からなくて結局 perl のワンライナーを使ってしまうので、perl で cut コマンドのような事をする xsvcol コマンドを書きました。大したものではないですが。

使い方は

xsvcol 正規表現文字列 0始まりの区切り番号

で、具体的には

ps ux | grep foo | xsvcol '\s+' 1 | xargs kill -HUP

といった感じで使います。上の説明は、foo が入ったプロセスの2番目のPIDを取り出して、xargs で kill に渡して HUP を投げるという感じ。名前の由来は何か(x)で区切られた値(separated value)の列(column)を取ってくるというもの。

仕様は気分で変える可能性があります。GitHub から clone するか pull するときに、perldoc をチェックしてみてください。

使っている外部モジュールはないので、通常Perl5が入っているシステムであればどこでも使えると思います。

その他にも、GitHub の xtetsuji/varios-commands には掘り出し物系コマンドがあるかも。面白いコマンドが出来たらまた紹介記事書きます。興味があれば git clone して bin/ ディレクトリにパスを通してみて下さい。

GrowlChromeという拡張機能が壊れていた

最近はGoogle Chromeでもデスクトップ通知が出来るようになって嬉しい時代になりました。ただここ最近、対応サイトをタブで開きっぱなしにしているはずなのに通知が出ないという不思議な現象に苛まれていました。拡張機能で入れたものは通知を出してくれるのに、サイトだと全許可にしても出てくれない…。

結論としては GrowlChrome という拡張機能を入れていたからで、これを無効にしたらデスクトップ通知が出るようになりました。んー、いつ入れたのかも分からない。

ただ、ここ最近「Growl」「Google Chromeデスクトップ通知」「Mac OS X 通知センター」の3つが画面上で競合するのが嫌で、統合できないかなーという思いは前々からあって、それで見つけた GrowlChrome を入れたんだと思う。個人的にはGrowlが一番好きなんですけどね。

GrowlChromeの拡張機能の中を見て、修正が出来れば修正しようと思ったものの、今は色々忙しいのでそれは後にすることにしました。一応、拡張機能は無効にしているだけで手元に取ってはあるので、暇なときにでも見てみることにします。時が経って本家で特定環境での不具合が修正されることがあるかもしれないので、それも期待。

Hokkaido.pm#10 に参加してきました #hokkaidopm

こんにちは、おがたです。

8月31日に行われた Hokkaido.pm#10 に参加してきました。

詳細は上記の開催報告が詳しいです。参加者のブログ記事もまとめられています。

場所はいつものところ

いつもよりかなり遅めにホテルを出たのですが、現地に向かう途中で @ytnobody さんにあったり、@akiym さんにあったりしました。13時開場を13時開始と勘違いしていてみんな焦っていたという…。

あと、開始直前に LOCALの @koiwa さんが颯爽と現れて、学生支援の(?)クオカードを置いて行きました。「せっかくだから少し見ていきませんか」って言ったのですが、用事があるらしく、一瞬だけ来て颯爽と去って行きました。

今回も前回同様Ustream生放送はありませんでしたが、@onagatani さんが一部を録画していたようです。後日公開されてるかもしれません。期待。

今回は開催に当たって大きなイベントを避けたつもりが、どうやらバレーボールの世界大会にぶつかってしまったようで、2ヶ月前にも関わらず宿泊先をおさえるのに相当大変な思いをしました。最初は「どうしてこんなに予約埋まっているの?」って感じでした。以前(#8)のSMAPとフィギュアスケートがぶつかったときのような、恵庭まで遠くに宿をとるのは避けたいと思ったので、結構お高いホテルでしたが空室があったすすきのの宿に宿泊しました。

以下、私の手元のメモより。メモを取りきれなかった部分もありますので情報としては不完全、ダイジェスト版だと思ってください。詳細は、上記まとめエントリから各スライド資料を参考にするなどしていただければと思います。

フォームバリデーションを自動化してみた

Mojoliciousのスペシャリストで、雑誌「月刊I/O」2013年8月号にMojoliciousの記事を寄稿したり、mojo-legacy などでも有名な @jamadam さんによる発表。

  • バリデーションルールを書くのは大変。DBフィールドを全部網羅しても不足。1000くらいある。
  • 書いた → Mojolicious::Plugin::FormValidatorLazy
  • ミドルうウェア的な位置づけでバリデーションをする。
  • 署名をつける
  • 問題点
    • JavaScriptバリバリのアプリでは役に立たない
    • スキーマの生成が高負荷
    • あくまでセーフティネット
    • ブラウザの差異を吸収するJSが必要
  • Web Application Firewallという分野で既出?

Perl meets ■■■ → Perl meets Leap Motion

Hokkaido.pm が誇る若手のホープ @akiym さんによるトーク。

大学生。「Herokuで学ぶ、初めてのPerl」という話を YAPC::Asia Tokyo 2013 でする。

  • akictf / CTF: セキュリティ競技大会

Perl meets Leap Motion? → なにそれ?

  • 次世代デバイス
  • 手のひら、指を細かく認識
  • WebSocketでデータを取ってくることができる

#1. air pointer

  • マウス操作
  • OS X でマウスをコントロールする方法
  • WindowsならWin32::GuiTest
  • Cocoa::GuiTest みんな大好きCocoaモジュール
  • マウスを動かす
  • ただし不安定

まとめ

  • PerlからLeap Motionを扱ってみました→夢広がっています
  • Cocoaモジュールが足りない

時間が余ったので「GitHub止まりモジュール」5選

  • #1. Text::PicoTemplate
    • ユーザーにテンプレートを書いてもらう
    • – Text::MicroTemplateはPerlのコードが実行出来るようになっている
    • – 変数のみサポート
    • – s/// でやれば
    • – もう少し柔軟に対応したい
  • #2. Text::ChineseNummeral::JA
    • 漢数字→数字
    • 正規表現でゴリゴリ → ワイルド
  • #3. Cocoa::NetworkChange
    • ネットワークが変更されたときに何かをする (OS X専用)
    • 例えば特定のWi-Fiにアクセスしたときにログイン処理をするとか → 大変捗っている
    • is_network_connected()
  • #4. Iroh
    • もうひとつのTeng
    • ネーミングがおかしい
    • T*nga – a  = Teng
    • no inflate, deflate, iterator
    • というかTeng使っています
  • #5. WWW::Fc2Video::Download
    • WWW::なんとか::Downloadシリーズ
    • FC2動画が足りない!
    • 単純にスクレイピングだけでは不可能
    • 良モジュール!

https://github.com/akiym をどうぞ。

イベント駆動とノンブロッキング

私 (@xtetsuji) のトークです。

詳細は Slideshare にアップしたスライド からどうぞ。

以前から @aloelight さんに「YAPC (mod_perlの展望とApacheの超絶技巧) の前哨戦みたいなトークどうですか?」と言われていたのですが、そういえばイベント駆動ウェブサーバのことをよく分かっていないなー、ということで、その勉強の記録をまとめてトーク素材にしてみました。むしろ、ブロッキングだとかそういう事を何となく理解したつもりになって、イベント駆動自体の理解を深めずにAnyEvent周辺を使っていたこともあるし、Apache 2.4 で正式リリースされた event MPM の理解にもつながるだろうということもありました。さらに社内の部内勉強会でそのあたりを突っ込むきっかけもあったので、さらにちょうどよいきっかけとなりました。

ウェブサーバを自分自身で書いてしまう凄腕のプログラマーとか、分かっている人は分かっているのでしょうが、StarmanやStarletやTwiggyやHypnotoadなどのイベント駆動ウェブサーバの使用者側の多くの人の中で「なんとなくググって出てきた方法で起動させたら動いたので、なんとなく使っている」という人もいるのではないかとは感じていました。数カ月に一回のHokkaido.pmだからといって肩筋を張って自分ができうる限りの難しい話をするよりも、恥を忍んでこのような初歩的なトークをしてみるのも悪くないかなと思って、今回のトーク資料を作った感じです。

普段のmod_perlネタはあまり反響がない(?)のですが、今回はSlideshare上でもそこそこ資料に対する反響もあったようで、やはり興味を持ってくれる人は持ってくれるんだなということはわかりました。

懇親会で @tokuhirom さんから、epoll や IO::Select を中心に調べてみるとよいといった話を聞くことができました。epoll については勉強会や独自勉強の過程でも出てきたキーワードで、自分自身Linuxの基礎の勉強が足りないなと痛感していたところでした。雑事が落ち着いたところで、持ち運ぶのも重量級な1600ページを越える書籍「Linuxプログラミングインタフェース」を買って重要箇所から拾い読みして勉強する予定です。さすがに書籍の体積と重量が凄まじいので、先日発表されたKindle Paperwhiteの最新版を予約しました。PDFの電子書籍版を購入する予定です。時代は電子書籍なんでしょうね。紙の書籍の質感は大好きなのですが、自宅の本棚が満杯なのを見てそう痛感する次第です。

ここ最近の取り組み

TengやQudoなど多数のPerl CPANモジュールの開発者として有名な @nekokak さんによるトーク。以前 JPA 派遣講師として来てくださいましたが、今回は自費で参加してくれました。

現在は DeNA に在籍しており、普段はあまりコードを書かないマネージメントをされているようです。

  • Gmailとスプレッドシートが友達。
  • 海外とのコミュニケーションのため、英語のスラングの勉強ばかり
  • commit log に fuck fuck 書くようになりました

共通技術基盤という組織について。

  • 自分たちで解決した問題を宣伝
  • いろんな所に首突っ込んで宣伝
  • 一緖にやってくれそうな別部署捕まえて進めていく
  • 社内tech talkとかやってどういう取り組みやってるか宣伝

BaranというPerlモジュールの名前空間を作ったら社内でウケた。

  • 名前の元々の由来は弁当に入っている仕切り「バラン」→そういう影を支えるモジュール
  • Baran::DBI
  • DBIx::Handler のラッパー
  • Baran::Memcached
  • Cache::Memcached::FastのDeNAラッパー
  • Baran::PushNotification
  • DeNAのInfraに特化した内部共通モジュールとして成長
  • DeNAに依存しない物はCPANモジュールにしたい
  • Baran::PushNotificationとか普通にCPANモジュールとしてアップしたい

プッシュ通知はバッドノウハウ。CPANモジュールをそのまま使うと結構ハマる。

新しい取り組みについて。

  • 新規プロジェクトを始めるときは必ず何か今までにやったこと無いことを取り入れるようにしてる
  • 例えばNginxは他部署に黙って採用して既成事実化したりした
  • JSON-RPC

SOA化の推進。

  • 細かく分割しよう
  • JSON-RPCのmethod単位でplackup
  • methodによってrequestの数とかが異なるので用途ごとにスケール出来るように

マネージャーになるときに思ったことや聞かれたこと。

  • よくコード書きたくならないですか?
    • 自分が書いたほうが速いこともある
    • 書きたいこともある
    • でも本気で書いたら負け
    • 一人で挙げられる成果なんてたかが知れてる
    • チームで高いアウトプットを出せるようにするのがマネージャー

「GitHub止まりモジュール」

  • Komainu
    • Fluentdに置き換えられていってます
  • Class::Anon
  • Data::Koyomi

「Pager Duty」というサービスを多く使っている。アラート用のサービス。メールを投げると誰も反応しないと電話がかかってくる。お金がかかる。SMSはカネがかかる。

CPANと私

JPA派遣講師としていらっしゃった @tokuhirom さんによるトーク。

Thanks to JPA++

自己紹介

  • Web Application Engineer
  • サーバサイド
  • 自社サービス
  • 書いている言語は色々ある:Perl5, Perl6, Ruby…
  • 最近はHTMLよりもJSONを出力するAPIを書いている

CPANモジュールの話をしようと思ったら @xaicron とかぶる

立場が変われば技術もかわる

  • 受託とか
  • 納期とか

アジェンダ

  • CPANモジュールの選び方
  • おすすめのCPANモジュール
  • CPANモジュールを取り扱うためのモジュール
  • 将来への展望とYAPC

CPANモジュールの判別

僕が重要視すること

  • 他人のコードのせいで動かないことはキライ
    • Cratalystみたいにコードがぐっちゃぐちゃなもの

客観的な選別手段

  • 最終更新日
  • CPAN Testersの結果
  • t/が寂しいモジュールは使わない
  • バグトラッカーへの登録数をみる

作者による選別

  • 個性に溢れすぎているCPAN Authors
  • 人ごとの癖がわかると、わりとなんとかなる
  • gfxだから高速
  • ○○さんはテストを動かさないでリリースする
  • ○○さんはインターフェースが重厚
  • ○○さんのモジュールは実際にはつかってない
  • ○○だから非互換の変更をする
  • ○○さんは自分で書くけど使っていない
  • ○○は非互換な変更をする

信頼おけるパールハッカーの例

  • dgolden
  • rjbs
  • miyagawa
  • gfuji
  • mschwern
  • makamaka

速度

  • 当たり前ですね
  • メモリ消費量

Moose依存はダメ。「0.7秒」は困る。

後方互換性に対する姿勢

  • 最重要
  • 動いていたコードが動かなくなるのはすごく嫌

結局は他人に聞くのが一番いい

  • Twitter
  • Lingr
  • etc.

Fukuoka.pmはFacebookページがあるらしい。

Hokkaido.pmにはFacebookページがあるらしいんですけど…

最終的に自分でメンテしてもいいな、というものだけを選ぶ。

流行り廃り

  • アーリーアダプターの穴掘り
  • つきあう必要なし

流行りは廃りでもある。ある程度落ち着いてからでいい。

CPANモジュールの選び方の実例。「@xaicronとかぶっていないのをえらんでみました。」

アプリケーションサーバ → Plack+PSGI

  • ◎ Starlet
  • ◎ Twiggy
  • ○ Starman
  • × FCGI
  • – CGI
  • – mod_perl

Starman vs Starlet

  • Starletはかずほさんが一から書いたもの
  • Starman は Catalyst の何かからポートした物

Starlet は中身が追える。@kazeburo さんも読んでいる。良い。

FastCGIは一番無い選択肢。中途半端。ApacheのFastCGIの実装には癖がある。FastCGIの仕様を忠実に守った実装がない。

オブジェクト関連

  • ◎ Class:Accessor::Lite
  • ○ Class::Accessor::Fast
  • × And others
  • ◎Moo
  • ◎Mouse
  • ○Moose
  • ×Any::Moose
  • ×And others

Mooはほとんど問題無いけど、一部モジュールを呼ぶとMooseにアップグレードするというのが問題。

MooはCPANモジュールを作るときに使う。

MouseはMoose陣営から嫌われている。

オブジェクト関連の今後の展開。

  • p5-mop-redux
  • たぶんコアへ
  • たぶん5.20には間に合わない

CPANインストーラー

  • ◎ cpanm
  • × The CPAN Shell
  • × CPANPLUS

O/R Mapper

  • ◎ Teng
  • ○ DBIx::Skinny
  • ○ DBIx::Class (DBIC)
  • × Class::DBI (CDBI)

DBICは海外ではそれなりに使われている。

日付関連

  • ◎Time::Piece
  • ○DateTime

月末問題やタイムゾーン問題というものがある。

JSON

  • ◎ JSON::PP
  • ◎ JSON::XS
  • ○ JSON
  • × Cpanel::JSON
  • × JSON::Any

JSON::Anyは絶対に使ってはいけない。PPとXSを自動で切り替えるモジュールはあまり使わないほうがいい。

JSON::PPは標準添付になっている安心感。速度気にしない場合はJSON::PPで問題無い。

CPANモジュールの使い方

実際、どういうふうに使っていくか

  • plenv
  • cpanm
  • carton

plenv

  • plenv = Perlバイナリの管理
  • perlbrewみたいなもの
  • 複数バージョンのPerl5をきりかえて使う
  • 最新のPerl5をつかう
  • 通常は普通にシステムPerl使えばいい
    • Macだとsystem Perlが腐っているので必須。
    • Linuxならsystem perlをつかってもいい。
      • ただし、system perl は -Dusethreads → 速度劣化
  • アプリケーション単位でperlのバージョンを変えられる
  • 環境変数でバージョン切り替え

plenv global と plenv local の話

plenv local では、古いPerlがこのプロジェクトでは有効に…といったことができる。

$ cat ./.perl-version
5.8.1

環境変数でも指定可能

$ PLENV_VERSION=5.19.0 perl -v

仕組みは、シェルスクリプトを ~/.plenv/shims/perl に置いている。

どうやってバージョンを指定するか

  • PLENV_VERSION
  • .perl-version (plenv local) → ほぼこれ使っていない
  • ~/.plenv/version (plenv global)
  • システムPerl

以上簡単なplenvの使い方。

cpanmの話

  • CPANモジュールのインストールにはcpanmを使います
  • plenv install-cpanm
  • perlbrew の install-cpnam は壊れていた!
  • cpanmはインストールしなくても使える!
  • cpan とか perl -MCPAN -eshell やめておいたほうがいい (とくにperl -MCAPn -eshell の CPAN Shell は)
    • 古のやり方
  • cpanm -n Carton

簡単でしょ

carton

cpanfile というファイルに依存関係を書いておくと

$ carton install

local/ 以下にモジュールがインストールできる。インストールしたバージョンを cpanfile.spapshot に記録。cpanfile.snapshot を元に local/ を復元できる

GitHub止まりモジュール

  • Perl5 is DSL for CPAN
  • Another DSL?
  • Perl6!
    • YAPCでは詳しく話す。
  • Perl6 to Perl5 transpiler
    • like Coffee script
    • With XS hacks
  • Passed 3% in test suites
  • Seis 面白い

LT: Asset Pipeline

Hokkaido.pm の主催者の一人で色々とお世話になっている @aloelight さんによるLT。

  • 複数のJavaScriptやCSSを結合してminifyしてくれる機能
  • Plack::Middleware::Assets::RailsLike というのを作った

主な機能

  • JavaScript、CSSの結合と最小化
  • LESS, Sass/Scssの展開
  • Cache
  • Pre-compile

LT: PDLを使ってみよう

Perl meets beats でおなじみの @techno_neko さんによるLT。

  • http://pdl.perl.org/ で数値計算。行列計算とか。

後半、音がならないとつまらないよね!ということで、PDLで音楽を鳴らしていました。

LT: 気象のお話とか

東京から来た北海道生まれでPerl Beginners主宰の @ytnobody さんによるLT。今回Hokkaido.pm初参加?

  • MetXML という気象情報XML
  • XML::XPath::Diver 書いた
  • Nephia という WAF を書いている
    • JSON API

LT: Riji さわってみた

Hokkaido.pmの常連の一人である @koji_magi さんによるLT。

  • Rijiは @songmu さんが作成したブログ作るツール

懇親会

今回も最近のHokkaido.pm恒例の、17時あがりの17時30分懇親会スタートスタイル。諸事情で少し開始が遅れて18時頃の開催となってしまいましたが、それでも余裕たっぷりです。この余裕が懇親会での気楽さとなっている、そんな気がします。

一次会

でした。もしかしたら「南4条店」のほうだったかも。このあたり、この店のチェーン店が密集していてよく分からなかった。

普段、私は東京にいるにも関わらず、札幌にいたほうが東京の有名人の方々と密にコミュニケーションが出来るといういつもながらの不思議を味わっていました。

@tokuhirom さんとは最初私のほうがたどたどしく会話していましたが、徐々に慣れてきた感じでした。この場で私のトークに対して epoll であったりというアドバイスを頂いて「なんか発表中に指摘しづらかった」とのこと。私のトーク、なんか割り込みづらい雰囲気でもあったのかな…。Dan the Question がしやすいトーク作りを目指そう。

十数人の参加で、結構盛り上がりました。Facebook には Hokkaido.pm のボスである @onagatani さんがアップした写真もあるので、アカウントがあるかたはそちらも御覧ください。

二次会は、活イカがいれば「酒肴酒菜 掌-てのひら-」になるところでしたが最近は活イカが不漁とのことで

となりました。こちらでも盛り上がりました。活イカ食べたかったけど、ここも美味しかった。

三次会は、普段は @onagatani さんが先導してみんなでラーメン屋に行くコースなのですが、@onagatani さんが次の日に社員旅行があるらしく帰ってしまったので、ここで一旦解散となりました。ごく一部の人達で、ノリのよい @itrysd さんに連れられて行ったが以下のお店。

いわゆるすすきのによくあるパブです。ただ、パブの相場にしては安かった。@ytnobody さんと@itrysd さんがひたすら弾けまくっていました。

この後、四次会らしきものもあったようですが、私はホテルへ戻りました。午前3時前。

起床したら午前10時を過ぎていて、午前11時チェックアウトのホテルでひたすら焦りました。お高いホテルを取ったのに、室内を全然堪能できないという残念状態。

この後、札幌から地元とかち帯広へ帰省することになるのですが、それはまた別の機会に書きます。

前日の話

話は逆戻りしてしまいますが。Hokkaido.pm#10 はいつもの Hokkaido.pm のように前日入りしていました。前日8月30日に集まれた一部で、ジンギスカンの食べ放題の店に行ってきました

すすきの駅のすぐ近くにあるビルのテナントでしたが、かなり美味しかった。食べ放題であの美味しさ、その割にはコストパフォーマンスが良かった。ただ、しばらく肉は食べなくていいなー、って感じになりました。年を取った証拠ですね。しばらくは野菜や魚の食生活をしたいです。

前日で、特に私はスライドが出来ていないにも関わらず二次会にも行ってしまいました。

活イカの店ですが、前述の通り不漁で活イカはいませんでした。しんみり日本のお酒を飲んでいました。

この後、ホテルに戻ってスライドの残りを作っていたものだから、一日目も起きたのが遅くなって結構焦りました。

まとめ

今回は @akiym さんが出した「GitHub止まりモジュール」という言葉が一番流行った感じでしたね。その後の発表の人達もみんな自分のGitHub止まりモジュールの事に言及していました。なぜGitHub止まりなのかは色々事情はあると思いますが、CPANに上げるべきタイミングはいつなのか、色々悩むところ多いですからね。私は主にテストが書けないモジュールのアップは躊躇している感じです。

今回も楽しい Hokkaido.pm をありがとうございました。前回 #9 の 3月から半年近い期間が空いてしまいましたが、3ヶ月に1度くらいのタイミングでの開催を期待しています。Hokkaido.pm Casualがあるから補完されているという雰囲気もああるようですが、私に取ってついでに帰省するきっかけにもなるし、どんどん開催して欲しいです!

Chiba.pm #2 と #3 に参加したときの話 #chibapm

おがたです。

2013年4月末から7月末までブログが無かったときと、ブログ執筆意欲が枯渇していたときに書いていなかったイベント参加レポートを思い出して書くシリーズ。Chiba.pm 編。

#1 には参加しなかったんだけど、いつも市川市文化会館で行われているみたい。

Twilogxtetsujiの#chibapmのツイートを見ると、なんとなく雰囲気が分かるかも。#2でロケタッチ使っているのは、4sqの調子が悪かったんだと思う。

Chiba.pmは発足間もない地域.pmなので、色々手探り感があっていい感じ。千葉県に住んでいる人に限らず、東京からの参加も結構いるっぽい。Twitterアカウント @chibapm はあるけど、公式ページはなさそう。なので公式ページからの参加者の参加レポートまとめとかは無いっぽい。

探してみたらこんなのはあった。

比較的自由で毎月必ず開催されている(非公認)地域.pmであるHachioji.pmが居酒屋を会場にして居酒屋LTを軸としているのと対照的に、施設を借りて勉強会の体裁が整っている感じ。ただ、Perlの集まりのはずなのに、参加者が面白がってPerlの話をあまりしないというところが気さくな感じ。MySQLの話をしても許されるし、他の勉強会のネタで用意したけど使えなかったネタを持っていっても許されそうな感じ(許されなくても責任は持てません)。

私は、普段のPerlの勉強会では飽きもせずApache mod_perlの話ばかりをしているのですが、Chiba.pmでは別の顔を持とうとしてMacのペーストボード(クリップボード)の話しかしていません。

余談ですが、#3 で話した AnyEvent::Mac::Pasteboard で CPAN Authorデビューしました。PAUSEの設定画面をいじっていたらうっかりデビューした感じ。#4 ではWindowsやLinuxのクリップボードの話でもしようかなって考えています。

YAPCとかPerlの集まりで「あ、クリップボードやっている人だ!」って言われたら千葉県民認定できるくらいまで話そうと思います。

懇親会は

というところでした。会場は本八幡駅から多少歩くけど、懇親会会場は本八幡駅から比較的近い場所という印象。土間土間は結構落ち着けて良かった。まぐろのカリスマは、人数の割に狭い場所に押し込まれて、出てきた料理も少なめだったので、肩透かしを食らった感じでした。コースということで、まぐろ三昧を期待していたんですが、食べ物が足りないという人が自主的に注文しだしたりするくらいだったので、本当に料理は少なかった気がする。

ここまで他の参加者のトーク内容に触れていないのですが、まとまった公式レポートもないし、思い出せるのは「みんなPerlの話しなかったなー」「面白かったなー」ということ。検索すれば公開されているブログエントリやスライド資料は出てくるはず。

少なくともPerl成分を求めて行くとアテが外れるけど、それなりに面白いという勉強会です。良い人集まっているし、オープン系IT業界の情報収集を兼ねて行ってみるといいかなと思います。#4 にも期待していますが、不定期開催のようで、次はいつかなと Twitter @chibapm からのアナウンスを待っている今日この頃です。次回も都合がつけば行きたいです。

WordPressのWXR形式とPosterousからのインポート

2013年4月末に終了したPosterousというブログサービスから、借りているVPSに手作業でインストールしたWordPressに記事を移した際に行った事のメモ書きです。もうPosterousというものは世の中にはないけど、手法としては参考になるかもしれないし、自分への覚え書きとして残しておきます。

WordPressでは、インポートやエクスポートの形式として WXR形式 というものをサポートしています。RSS+αといった感じ。用途としてはMovableTypeのMT形式のようなものでしょう。

Posterousもさすがに終了時に記事をZIPでエクスポートできて、その中に wordpress_export_1.xml というファイルがあったので「あぁこれはWXR形式なんだな」と思っていたんだけど、3ヶ月放置してマズイマズイと思ってWordPress設置してWXR形式としてインポートしたら見事にエラーが出た。参った。これは妥当なWXR形式じゃない!

PosterousのエクスポートZIPには、中を見ると1ファイル1記事となったPosterous独自と思えるXML形式があったので、とりあえずメールのような「ヘッダ、空行区切り、ボディ」といった自分独自のテキストファイル変換した

XMLは見づらいし扱いづらいので、メールっぽいUTF-8テキストファイルになれば、後はWordPressが受け付けてくれるWXR形式を作ればいいだけになる。今回は WXR(WordPress eXtended RSS)から記事をインポートする方法 – (DxD)∞ というページを大いに参考にさせてもらった。記事中のWordPress(2013年8月現在バージョン3.6)もWXR形式もバージョンが古いけど、それでもうまく行った。XML文字列をテンプレートにして、渡した独自形式テキストファイルの数だけitem要素を反復するスクリプトを書いて動かした。

タグやカテゴリのインポートは面倒なので諦めることにした。たかだか40くらいの記事だし、元々がタグやカテゴリの設定に不満なこともあって、取り急ぎインポート出来ればいいやと思った次第。タグやカテゴリ、あと欠損した画像とかは手作業でやると割り切りました。

40記事くらいであれば本当に全部手作業でインポートしてもいいかなと思ったけど、WordPressの投稿インターフェースでは過去の投稿日で投稿することはできないことが分かったので、WXR形式を少し真面目に作ることにしました。これはパーマリンクを “/?p=数字” ではなくて “/年/月/ポスト名” などとしている場合に響いてくる話。MySQLのWordPressのデータ構造を読みといて…というのも、テーブル数が少ないWordPressであることもあって出来なくは無さそうかなと思ったけど、WXR形式を作るほうが安全だろうなと思います。

他のPosterous難民は、Posterous終了直前にWordpress.comやTumblrから救済措置としてPosterous APIを使ったインポートツールを提供したので、そっちに移行したか、コンテンツを失ってしまったかのどちらかなのかなと思います。私も一応 post-tumblr.tetsuji.jp というTumblrに一時避難させました。ただ、こちらはしばらくしたら閉鎖したい。あと、PosterousのパーマリンクがWordPressとは相容れない形式だったので、URLとしての一意性を失ってしまったというのは痛い。独自ドメインでやっていたので、そういうリンクを拾おうと思えば拾えるのだけが救い。これをApache+mod_perlで拾って適切なリンクに誘導する方法も考えているので、後々のブログネタにする予定です。

もし将来的にWordPressから別のブログサービスに移行したくなったときも、たぶんWXR形式が役に立つんじゃないかな。永続性の担保されないサービスへデータを預けると、後々大変になるかもという話でした。

4月末から3ヶ月以上アウトプットの場を失っていた感じでしたが、いよいよ復活。これからアウトプットもどんどんしていきます。以前にさかのぼって記事を書いたり、いろいろはかどりそうです。

YAPC::Asia Tokyo 2013 で「mod_perlの展望とApacheの超絶技巧」をトークします #yapcasia

こんにちは、おがた (@xtetsuji) です。

2013年9月19日〜21日まで慶応大学日吉キャンパスで行われる YAPC::Asia Tokyo 2013 でトーク「mod_perlの展望とApacheの超絶技巧」をさせていただけることになりました。

Apache httpd server (以下Apache) 上で動作して、長らくPerlのウェブサーバ高速化環境として欠かせなかったmod_perl。今では新たな技術が出てきてその役割が少しずつ減っているように感じる昨今ですが、そのmod_perlのこれからの展望について話す予定です。

昨年のYAPC::Asia Tokyo 2012では「モダンmod_perl入門」というトークをさせていただきましたが、そちらがmod_perlの本質のご紹介とその実践であれば、今年はより思想的かつ哲学的な話、具体的に言えばmod_perlの未来といった話をしようと考えています。もちろん、コードや動くものが出てこないのは楽しくないので、後半半分くらいは「超絶技巧」と題して「そんなことまでApache+mod_perlでやるのか!」と人を驚かせるような事を披露する予定です(が、2013年8月7日現在構想段階です)。

チケット発売は8月11日(日曜日)までです。私は2007年から毎年参加していますが、Perlをメイン言語にしないプログラマの方も絶対に楽しめる3日間です。この規模のイベントにしては5000円は安い!しかも学生は無料(申し込みは8月11日までに必要です)。ぜひ会場で会いましょう!

質問など有りましたら、Twitter @xtetsujiなどへお気軽にどうぞ。

ブログを作り直した

こんにちは、おがたです。

Posterousが2013年4月末に終了して、ひとまずコンテンツをTumblrに退避していたのですが、Posterous終了のショックが大きくて、Tumblr上でブログを投稿する気にもなれず、3ヶ月アウトプットの場を無くしていました。どうしようかとあれこれ考えていたのですが、ひとまず自分が借りているVPS上にWordPressをインストールして運用することにしました。

2013年8月1日現在、まだ過去ブログ記事の移行が済んでいないので、まだ post-tumblr.tetsuji.jp のほうは活かしてあります。

Posterousショックもあって、商用ブログに対する不信感というほどでもないけど、リスクというものを感じてしまって、どうしようかなーと思っていたところでした。Googleがサービスをサクサク終了するのと同じリスク。まぁ、数学ブログははてなブログを使っていますが、頻繁に更新する予定の本拠地ブログを商用ブログサイトに入れてまたカジュアルに終了されたら堪らんなぁとも思ったり。そして独自ドメインでの運用をしたかったので、商用ブログサイトだと大抵VPS一つ借りれるくらいの課金が発生してしまう。Tumblrは「リブログどうなの」って感じであまり本流にはしたくないなってのがあって、結局自分が借りているVPSにWordPressを設置するところに落ち着いた感じです。

Perlを使っているしMovableTypeをセットアップするといいんじゃないかなと思ったけど、セキュリティに関する防御策がイマイチよく分からなかった(理解力不足)し検索しても「こう設置したらこう動いた」って記事ばかりで分からなかったのと、mod_perl2で動作しなかったのが気に入らなかった。mt.psgiも試してみたけどまぁそれは別として。それに、MovableTypeのライセンスが商用を禁じていて、MTOSもバージョン6で無くなることが最近決定されたこともありました。個人でアフィリエイト用途なら個人版でもいいよって書いてありましたが、いつ業務寄りになるかとか起業するか(たぶん無いけど)なんて分からないですからね。MovableTypeは、より公益性の高いオープンプロジェクトで採用したいと思いました。ただ、MovableTypeの静的生成モデルはちゃんと理解して使えばWordPressの動的生成モデルよりずっとセキュリティは担保できるわけで、MovableTypeの導入事業者が商売になる理由が分かって勉強になりました。

要するに、情報公開の「手段」であるブログ設置が、様々な思惑でブログ設置自体が「目的」になってしまって、それが元で数ヶ月情報公開の場が失われるのは本末転倒だなと思ったわけです。

「Perl loverのはずなのにPHPのWordPressなんですか?」って聞かれそうだけど、PHPは悪い言語でもなく、PHP製のソフトウェアには他にも多くお世話になっているし、WordPress+mod_perlってのも将来的に面白そうだなと思って選択しました。会社でブログ設置したときもWordPressでしたから、経験があったのも大きな選択肢の一つ。お金の無い会社にMovableTypeの商用ライセンスの課金は正直キツイですから…。

2013年夏、Perl界隈では空前のブログソフト開発ブームではありますが、アルファバージョンのものを導入する勇気がまだなかったことと、自分で作る直近の余裕もなかった感じでした。また気分で別のブログを選んだり、前述の数学ブログのように使い分けたりすることもあるかもしれませんが、とりあえず2013年8月から本拠地ブログはWordPressではじめてみることにします。

これからWordPressへPosterousの過去記事のインポートをどうするか、悩む日々が始まります。