読者です 読者をやめる 読者になる 読者になる

北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

YAPC::ASIA Tokyo 2009 前夜祭 実況メモ

レポート perl yapcasia2009

今年もやって来ましたPerlの祭典。昨年と同様に、東京工業大学大岡山キャンパスです(東工大++)。でもって、今日は前夜祭です。

今回はgihyo.jpさんの特集とコラボ(?)させて頂けることになりましたので、そちらも合わせてご覧下さい。

あいさつ

YAPCのTシャツと手ぬぐい(!)が売ってるとのこと。

acotieさん「AnyEvent的ななにか(仮)」

  • AnyEventとは
  • IOの入出力の普通のコードの例(whileのループ)
  • AnyEventを使うと・・・(長いっ)
    • その後に出来るときが違う
    • feedを読んでIRCになげたり
  • Condvar について
    • AnyEventのキモ
    • プロデューサ+待機役
  • IO Watcher ・・・は省略
  • Network プログラミング(ハンドル、DNS、ソケット)
  • デモ
    • twitterのフィードを取り出す(髪切った、のコメントだけ)。
    • DBにインサートまで。
    • Catalystで作った
    • chartで、曜日別に公開したり
  • まとめ
    • 奥深い
    • 継続、リアルタイム、に便利
    • miyagawaさんとtypesterさん、tokuhiromさん、malaさんの本編のセッション聞いてね!

spiritlooseさん「Schenker - DSL for quickly creating web applications in Perl

このセッションに関しては、gihyo.jpさんで参加レポートを書かせていただきました。gihyo.jpさんの特集記事もあわせてご利用下さい。

  • POUSE IDはJIROさん
    • Image::ObjectDetect, Text::Migemo など
  • Schenker とは?
  • Sinatraとは?
  • 記法はSinatraでそっくり
    • Dancer、Mojorisious::Liteも同様のもの
  • HTTP::Engineとは?
  • いいこと: とても簡単!
    • ヘルパがいらない、設定がいらない
  • 大体の物は入っているが、モデルははいってない
  • コマンドラインオプションの説明
  • Configの説明
  • Routingの説明
  • Parameter
    • 裸のparams関数やparam で読み込める
  • Path Parameters
    • my $args = shift;
  • Encoding
    • set encode
  • View
    • TT:
      • tt関数で呼ぶ。__END__以下にHTMLを書くことも可能
      • Podwalker にも対応
    • Text::Microtemplate
      • mtで呼ぶ
  • Helpers
  • Before Filters
    • Beforeで、最初に走るフィルタを定義できる
  • その他、関数群
    • statusとか、bodyとか、headersとか、backとか
    • Sinatraとほぼ同等
  • 画像の取り扱い
    • イメージの出力方法や、send_file 等
  • halt; で、以下の処理を通らないように出来る
  • define_error: statusにより、エラー画面を定義
  • enable 'sessions'; とすると、セッションが使える
  • github上に、サンプルアプリケーションがある
  • TODO
    • これからリリース。PSGIとかPlack対応待ち。
    • ドキュメント
    • Shenkerの拡張方法を提供したい
  • 質疑応答
    • Q: miyagawaさん「今、Plackで動くようにしました。3行で。」

kawanetさん「YAPC::Europe 2009(ポルトガル)参加報告」

  • スライドに自分の姿が映って、プレゼンできる!(すごい!)*1
    • 調整がすごく大変そう。WEBカメラ撮るので、明るさも必要。
  • YAPC::Europe 2009は、リスボンで開催
    • 一番国際的
  • Action Scriptでやってる(Perlじゃない)
    • ブルーバックがなくてもいい
    • 画像を一定時間ごとに重ねると千手観音になれる
  • もう一つしかけ、指サックでWEBカメラで操作可能*2
  • YAPC::Europeの特徴
    • 珈琲ブレークが多い
    • BoF多い
  • 2008年 Copenhagen
    • スナックがかっこいい
  • OSDC.TW 2009
  • その他、気がついた点
    • プレゼン中のツッコミが多い(日本ではdanさんだけ)
    • 女性が多い
    • カンファレンスに求める価値(交流?勉強?)
    • send-a-newble: 若者への支援。平均年齢を下げる。
    • ビデオや会場中継は、日本の方が進んでいる
  • まとめ
    • 海外のYAPCにも行きましょう
    • 英語力より、まとめたい気持ちが大事

k-z-hさん「PerlのWAF今昔」

このセッションに関しては、gihyo.jpさんで参加レポートを書かせていただきました。gihyo.jpさんの特集記事もあわせてご利用下さい。

  • WAFって?: Web Application Framework
    • ウェブアプリケーションの、面倒なアレコレを片付ける
    • セッション管理、ユーザ管理、ルートディスパッチ
  • 他の言語のWAFも色々ある
  • 時代遷移
  • PerlのWAFの昔は手探り状態だった
  • 今のWAFは、おおまかな「WAF」像ができてきた
  • Catalystへの不満
    • Contextが頑張り過ぎ、Pluginは禁止
    • Contextから脱却したいが、それならHTTP::Engineでいい
  • HTTP::Engineでは、依存性が面倒くさい
    • Bread::Board ←これだと、ここに依存性が移っただけ
    • MooseX::Bread::Board を開発中
    • 他、PSGIとか
  • まとめ

amachangさん「みんなHTML5やろうよ!」

  • 勉強ができない、バカ、プログラマで検索すると出やすい
  • HTML5とは?
    • 新しいHTMLの仕様
    • 独自仕様の再定義・新しい要素、属性、意味・API
  • 独自仕様の再定義
    • ブラウザみんなやり放題
    • document.write, canvas, contentEditable
  • 新しい要素
    • nav, aside, article, section、等
  • APIの定義
    • HTML4系までは、文書までの仕様だった
    • ドキュメント + API = WEBアプリケーション?
    • APIありきな要素: canvas, Microdata, contentEditableなど
  • HTML5を使うと、JSで3Dまでいける
    • まあFlashは必要だと思うけど
  • contentEditableの例
  • もう一つの木構像
    • 1つめの木はDOMツリー
  • セクションツリー
    • パワポの、セクションの関係みたいなもの
    • 要素で囲む
    • <h1>や<h2>で定義*3
    • セクションを作る: section, aside, nav, article
    • セクションの根元: blockquote, body, figure, td
  • ポイント
    • 要素はすべて、単一のセクションに関連する
    • セクションツリーのアルゴリズムは定義されている
    • 既存のHTMLでも、うまくセクションツリーができる
  • サンプル:
    • outline.js: 既存のページの木を表示する→意外と奇麗になる
    • さらに、それを元に目次を作ったり
    • 実装は簡単: 仕様はifとotherwize、変数は斜体で書かれてたり
  • 仕様書を読もう
    • パーサとかも、実装に落とし込める形式で文書化されている
  • まとめ

sugyanさん「全裸でワンライナー(仮)」

このセッションに関しては、gihyo.jpさんで参加レポートを書かせていただきました。gihyo.jpさんの特集記事もあわせてご利用下さい。

nekokakさん「SmokerっていうぷらっがぶるWAFをつくってみたよ!」

junichiro x btoさん「PHP的な何か(仮)」

このセッションに関しては、gihyo.jpさんで参加レポートを書かせていただきました。gihyo.jpさんの特集記事もあわせてご利用下さい。

  • 2名でのセッション
  • 受託開発ではPHPが多い
    • btoさんは、Perlは使えない
  • Perl Is unDead
    • 感動した
    • YAPC 2006 で、Perlに戻って来た
  • PHPの方がユーザが多くないか
    • ユーザ層が違う。PHPは初心者層が多い
    • 遊べる言語で、楽しんでやっている
  • JPA
    • ちゃんとしたサポート団体がある、と言うことが大事
    • Perlの受託案件を増やす
    • 楽しむプログラマが多いことと、矛盾しないか
  • PHPは多い。多いは正義である。
    • 確率論としては、ユーザ数が多ければいい人材も多い
    • 会社で選択される動機になる
  • 初級者層へのアプローチが必要ではないか
  • 非エンジニア視点で、PHPを分析する
    • 関数が多い
      • プログラマとしては気持ち悪いが、目的を達成する手段は多ければ多いほどいい
    • ヘッダの自動出力、$_GET, $_POST
      • アプリを作りたい人だけに、これを求めるのは酷
    • テンプレートエンジン(テンプレート言語)
    • 女子率が高い(非常に重要)
      • 例: 福岡のPHP勉強会の女子率が高い
      • PHPを使う某社の方は、結婚ができた。PHPをすると結婚できる
      • JavaScriptでは結婚できないかもしれない
    • 非エンジニアが、すぐ使える
  • 例: 現在時刻を表示する
    • PHPだと、 print date('Y/m/d') だけ
    • Perlだと、めんどうなので略(日付モジュールに関して、歴史的に変更された経緯もある)
  • PHP最強、Perl最愛
  • Perlへの提案
    • 初心者に選ばれる言語にする
    • プログラマを好きじゃなく仕事でやってる人の方が、人数では多い → PHPの強み
  • headerや$_GET, $_POSTのあるようなキラーフレームワーク
    • Yacafi, MENTA, Nanoa, Catalyst, Ark, Schenker, Smoker
    • Yacafi, MENTA, Nanoa は一時期隆盛だったが・・・メンテナの方は飽きた?
    • Nanoaが好き。ArkはCatalystからの乗り換え
    • Arkをやりたいから、Perlをやる、くらいになるといいかも
    • Shenkerはさっき初めて見たが、面白そう
  • 参考: WordPressポリシー
    • PHP Only、Terminal禁止、URL見たままのファイル、クラスを使わない、ディレクトリ構造はフラットに
    • PHPの上級者は、WordPressは好きではないことがある
  • まとめ

yusukebeさん「エロサイト管理者の憂鬱2」

  • 自分のWEBサイトのノウハウの紹介
    • 普通10 + エロ10 、 60万PV/日
  • なぜ小さなWEBアプリケーションを作るのか
  • Perlを使用
  • Catalystを使う上での、ディレクトリ構造
  • db/update_schema.pl
  • たくさん作って、自分なりのスタイルを作るのが重要
  • フロントエンド
  • HTMLデザイン
    • fshinさんに誉められた!
    • 実は、買っていた($50〜$75、WooThemes)
    • 無料であれば、Open Source Web Designが使える
  • 運用
    • ec2インスタンスが5個(6コア)
    • 自宅は、フロント1、ファイル1、DBが1、Appが2
    • Apache2.2, mod_perl2, MySQL5, gearman, Q4Mなどを利用
    • 自宅の納戸に、ラックを置いている
  • フロント
    • mod_rewriteでバックエンドに飛ばす
    • キャッシュ入れる
  • バックエンド
    • MaxSpareServersなどは低めに(12とか)
  • 収入はどうするか
    • アフィリエイト収入
    • 気楽、成果報酬、継続報酬(会員を継続すると、報酬が入る)
  • チューニングする(台数を減らし、コストを落とす)
    • mod_perlで静的ファイルを扱わない
    • mod_expireさせる
    • Workerの利用 (使うモジュールを減らし、メモリ使用量を押さえる)
    • 他、DBの非正規化
  • Plackを使う → Noeを開発中
  • 「hirataraさん、手を止めて下さい!」な内容なので略
    • ルータの負荷が大きく、ルータを交換
  • まとめ
    • 小さいアプリの開発は面白い
    • 最適化は奥が深いが、個人ならではの工夫ができる
    • この内容は雑誌に載るかも
    • シューマイ食べて下さい!!

懇親会

焼売を3個食べました!

*1:でも、本編じゃないw

*2:これも本編じゃないw

*3:この例は、DOMのツリーとは対応しないが、セクションツリー化される