Yokohama.pm#6 x PerlCasual#3に行ってきました

2010/7/23 Yokohama.pm#6 x PerlCasual#3@ネイバージャパン株式会社 カフェに参加してきました。

カフェという言葉に少し嫌な予感を感じつつ、着いてみると案の上尋常じゃなくシャレた空間。こういった勉強会にはいつも一人で参加しているので、オシャレな空間にぼっちという修行で心を鍛えつつ、去年参加したYAPC2009以来のPerlな集まりに胸を膨らませていました。

そうこうしている内に始まったので以下プログラム。敬称略です。ブログにまとめるつもりで聴いておらず適当なメモしか残してなかったので、抜けが多いと思いますが、ご了承を。

kazeburo - リソース監視ツール・フレームワークCloudForecastの紹介

Perlで書かれたリソース監視ツールCloudForecastの紹介です。そのまんまですが。
GitHub - kazeburo/cloudforecast: the server metrics gathering

  • サーバー監視は主に2つ
    • 死活監視
      • pingによる到達チェックと、特定のポートにアクセスしてApacheとか個々のサービスが活きているかのチェック。ある瞬間の状態を調べる。
    • リソース監視 <-CloudForecastはこっち
      • サーバーの諸々のリソースやネットワークの状況を監視。サーバーの累積の状態を調べる。
  • CloudForecastの売りは?
    • 設定が簡単
      • YAMLでちょこちょこっとかくだけ簡単監視。
    • スケーラビリティ
      • 家庭内のような小規模から、企業の大規模ネットワークまで対応。実際にライブドアで700台規模の監視に使っているそうです。
    • サーバー内蔵
      • グラフも自動生成。これだけ揃ってれば明日からでも監視できちゃいますね。
    • オープンソース
      • 運用周りのノウハウがたまっていくとすばらしいです

いい感じですね。PerlでWebサービスは作れても、ネットワークやハードウェアの話はさっぱりという僕のような人はきっとたくさんいるはずなので、そういう人にはぴったりのツールだと思います。

会社で使うとなると要件がどうとかの話がついて回るので、まずは家サーバーに使ってみようかなと思います。具合がよければ会社にもプッシュしみよう。

他、詳しくはkazeburoさんのブログで紹介されていますのでそちらを。
CloudForecastっていうリソース監視のツール/フレームワーク作った - blog.nomadscafe.jp

typester - WebアプリケーションエンジニアのためのiPhoneアプリ開発入門

Perlのセッションなのに、Perlのコードはほぼ出てきませんでした。

という話でした。完璧な理論です。

作る時のこつ
HTTP通信
  • ASIHTTPRequestかlibcurlを使う。オススメはlibcurl。cのライブラリだけど問題なく使える。
    • NSURLRequestは標準だけど。これを使うともれなく挫折
JSON
  • JSON Framework
    • NULLが使えないので注意。NSNullというクラスになるけど評価すると真になるとかなんとか。メモし忘れたので詳細はGoogleにて。
XML
  • 基本的にJSONが使えるならそっちで。どうしてもXMLしたいならlibxmlをどうぞ
Blocks構文+Grand Central Dispatcher
  • Blocks構文とはcでいう無名関数。コールバックみたいのが簡単に書ける。
  • これにGCDを組み合わせると、スレッドっぽく通信中に処理をブロックしないようなコードを簡単に書ける。
プッシュ
  • AnyEvent::APNS
    • APPLEのサーバーと常時繋がっているAnyEventのデーモンが立ち上がる
    • Webアプリ側からはJSONRPCを投げることで、iPhoneにプッシュ通知を出せる
    • 本セッションで唯一のPerlコード
つまり
  • libcurl + JSON Frameworkが最強に楽
  • 通信中に処理を止めたくないならBlocks構文 + GCD
  • プッシュ通知したいならAnyEvent::APNS

gfx - Any::Mooseではじめるオブジェクト指向プログラミング

Mooseとは
  • いわずとしれたPerlのOOPフレームワーク
  • Mouseという計量版がある
    • Mooseは重いらしい
  • Any::MooseはMooseもしくはMouseのラッパー
Mooseの機能
  • コンストラクタやアクセサを作ってくれる
  • イニシャライザBUILDやデストラクタDEMOLISHがある
  • ロールを使って多重継承
Mooseってどうよ?
  • 触ったがなければ一度使ってみる価値はあり
  • ここしばらくは安定しているよ
まとめ
  • MooseとはMouseのこと

ちょっと触って食わず嫌いしていたMooseですが、いい機会なので使ってみます。Mouseを。

PerlCasual 初心者向け勉強会 テーマ: Web API と Twitter ボット等

の二部構成でした。

yusukebe - PerlとAPI
  • use URIでクエリーを作って
  • use LWP::UserAgentでAPIに投げて
  • use JSONでパースする

というごく基本的な内容でした。

一つ一つのステップを漏らさず説明しようとしていたyusukebeさんから、Perlをカジュアルに使ってもらおうという目的に対する本気度がひしひしと伝わってきました。

残念ながらというか、会場にはあまり初心者の方をいなかったようです。

なので、次は自分の参加は見合わせて、代わりに周りのPerlやってみたいけど何つくろう?という人や、Webサービス作ってみたいどうやればいいの?という人に行ってもらうように、どんどんプッシュしていこうと思います。そういう人は参加して絶対に損はない!と思わせるだけの内容でした。

WEB+DB PRESS Vol.58とメディアミックスするという技術系初?の試みをしているそうなので、詳しい内容はそちらを参照してください

sugyan - ライブコーディング

yusukebeさんの話を受けて、今度は実際に作って見ましたというセッション。しかも、かの全裸botの作者が実際にPerlで全裸botを全裸で作るというありがたいセッション。ちゃんと全裸になっていました(Tweetが)。

Yappo - 位置情報の使い方

位置情報の取得
  • Geolocation APIでできるよ!
    • ただし常識的なブラウザに限る
測地系の罠
Perlで測地系変換
  • するならGeo::Coordinates::Converterが楽

会場でも位置情報を使ったプログラミングをしたことがある人があまりいなかったのが、印象的でした。これからどんどん面白くなっていく分野の一つだと思うので、今から始めておくと少し先んじれるかも。

xaicron - みんな大好き Encode

  • 入り口でdecodeして
  • ほげほげして
  • 出口でencode

基本ですね。dankogaiに感謝。

polocky - それいけアパッチログレスポンス時間解析

始まったと思ったら終わっていた。何をいっている(ry
マシントラブルで聞けませんでした。実は一番聞きたかったりしたので、残念です。

piarra - Use::Strict::Fast

帰ってから知ったのですが、比較.com - あらゆる商品・サービス・価格の総合比較サイトのCTOの方でした。。そうと知らずどんな会社なんですか?とか質問してしまった、、、

use strict::fastすると早くなるよ!
  • なんと6%もの高速化が!
  • 本当のおすすめはcommon::sence
    • strict, warnings, utf8とかをまとめてやってくれる
おまけ

プレゼンに一ひねり加えたくて当日に作っちゃったらしいです。一秒切れない、、、あの場で0.5秒台をたたき出すとかすごすぎ。さらにmalaさんがXSSでハックしていたとか。

まかまか - 夏コミ新刊Perl同人誌の宣伝

Acme大全の方の、今年の新作の紹介でした。去年は買いそびれてしまったので、今年はチャンスがあればすかさず購入したいです。

  • Acme 以下の全モジュールを紹介
  • さらにPerl初心者にやさしい用語解説付

以上です。要所要所にネタをしこんでいたり、当日に用意した発表じゃ物足りないといってWebサービス作っちゃたり、エンターテイナー精神あふれるプレゼンが多くて、楽しく聞けました。ただ、やはりPerlcasualとして想定していた層とは少しずれていた感が。Perlの裾野を広げるのがPerlcasualがこういう勉強会を開く目的だと思うので、そういう意味では上に書いたように周りのちょっと興味あるレベルにどんどんPerlcasualを推していくのが、自分にできる貢献の一つなのかなと思います。




最後に素敵なイベントを企画していただいたyusukebeさん、会場を貸していただいたNAVERさん、他運営に携わった方、スピーカーの方、ありがとうございました!