ラベル YAPC::Asia の投稿を表示しています。 すべての投稿を表示
ラベル YAPC::Asia の投稿を表示しています。 すべての投稿を表示

2008年2月22日金曜日

あなたがYAPC::Asiaでプレゼンテーションをするべき10の理由

YAPC::Asiaのプレゼン締切が近づいているそうです

応募の締切は2月25日の月曜日、あと2日です。応募しようかどうか迷っている人に向けて、背中を押すエントリを書いてみたいと思います。ちなみに私はアメリカのYAPC::NAでPerl業界(って何)にデビューしました。YAPC::Asiaの中の人に断りなく勝手に書いています。

1. YAPC::Asiaに行く目的が増える

YAPC::Asiaに行ってただ座っているのはつまらないものです。参加することに意義がある、と昔の人は言いました。人の講演を聞いて「楽しかった」「なんかすごかった」という感想を持って帰るのもいいですが、20分くらい立ってプレゼンテーションをしてみましょう。得るものが増えること間違いなしです。だいたい、ずっと座っているとエコノミー症候群になります。

2. 解決方法を一緒に考えてもらえる

「こういうものを開発しました」「こういう問題を解決しました」というのがプレゼンテーションのよくあるパターンですが、「ここがまだ未解決です」というスライドを一枚つけ加えましょう。知らない人が「こうやればいいんじゃない?」という提案をしにきてくれます。自分が知っていると思っていたことも、「それ○○でできるよ」と新しいことを教わったりもします。

3. 友達ができる

はっきり言って友達は増えます。カンファレンスのディナーなどに行っても「あなたのプレゼンテーション見ました、握手してください」みたいな人が近づいてきます。「サインしてください」と言われるかもしれないのでぜひサインは練習しておきたいものです。

4. 仕事のスカウトがくるかもしれない

別に転職を目指してプレゼンテーションをするわけではありませんが、「ウチの会社に興味はありませんか」というお誘いはカンファレンスの当日、そして後日、いろいろあります。私がYAPC::NAで発表したときは何を評価されたのか「○○万ドル出すからどうだ!」と極端な迫り方をされました。

5. 飲み会のお誘いがくるかもしれない。勉強会のお誘いもある。

「飲みに行きましょうよ。私のおごりで」と親切な人に誘ってもらえることがあります。真面目なほうでは、「今度こういう勉強会をやるのでしゃべってもらえませんか」と言われたりします。

6. 自慢できる

「YAPCという世界各国で行われている国際会議で発表をしました」というのは友達に自慢できると思います。さらに、履歴書に書くことがなくて困っている人はYAPC::Asiaで発表すると一行くらい書くことが増えます。

7. 練習するには規模が最適

これからの人生、一万人の前で講演する機会がない、とは言い切れません。いきなり一万人の前でスピーチをするよりは、YAPC::Asiaで数百人の前で話しておくほうが気楽というものです。できるだけ少ない人の前で話したいという方は、全参加者が集まるライトニングトークよりも聴衆が二部屋に分かれる(こともある)一般トラックのほうがおすすめです。

8. これから3か月の生活が充実する。

人の欲は尽きないものです。2月に話す内容を決めてプレゼンテーションを完成させたとしても、YAPC::Asiaの行われるまでの3か月はきっとその発表を少しでも良く見せるためにいろいろな改善を加えたくなることでしょう。自分の作ったアプリケーションも自ずと質が向上します。

もっとも、上級者はプレゼンテーションの中身を決めてから発表に合わせて開発を進めるようですが(参考)。

9. やらないで後悔するよりは、やってみてから考えよう

何事においても、やろうかな、やめようかな、どうしようかな、と迷っている場合はとりあえずやってみるのがいいと思います。Fukuoka.pmもできましたし、うかうかしていると次回のYAPC::Asiaは東京で行われないかもしれません。

10. これであなたも有名人

カンファレンスで発表すると本人が思っている以上に有名になります。名前はもとより顔も多くの人に覚えられます。街を歩いていても「あのときの方ですよね」と声をかけられます。あなたの生活が一変します。セレブになれるといっても過言ではないでしょう。

追記

11. 参加費用が無料になる

というコメントをmiyagawaさんからいただきました。

参加費用がタダなのはもとより、YAPC::Asiaのチケットは例年売り切れるのが早いので、2月から座席を確保できるというのは大きなメリットです。

2007年6月3日日曜日

そのあとLarry Wallに謝った

前回の記事には予想以上の反響をいただきお礼を申し上げます。

時間がたった今では笑い話として語れるものの、失敗をした直後はかなり鬱状態。一緒に受付をした好青年のKさんが「ラリーとしゃべれてラッキーでしたね」となぐさめてくれたが、話した内容があれではラッキーもなにもない。

休憩時間に本人にお詫びをしに行こうと思っていたのだが、Larryの周囲に人が多くなかなか近寄れない。会話している最中に割り込んで「えーちょっとすみませんが受付の私です」というのも気がひけ、午前中はコンタクト失敗。

昼ごろからは受付が暇になったため、交替制で受付係を担当した。来客のない受付というのは退屈なもので、洗面所で顔を洗うことにする。

しっかり顔を洗い、顔を拭いて服装を鏡でチェックしていると、なんとそこにLarryがトイレ休憩に登場。Larryに連れがいればまた違ったのだが、運良く(悪く)もLarryと私の一対一。探し求めていた相手が登場したのだから幸運なのだろうが、予期していないタイミングと場所でこちらはドギマギ。緊張最大値。
私「受付ではLarryさんだということに気づかず失礼しました。いきなりLarryさんが登場されたのでびっくりしました」
と言ったら、Larryが笑ってくれた後
Larry「I was surprised about that, too」
自分が招待講演に来たカンファレンスで名前を聞かれたらそりゃ驚くわな。


その夜の懇親会であらためてLarryに握手をお願いしたところ、自分の手をごしごしとシャツで拭いてから握手してくださった。


去年YAPCで受付をしていたらLarry Wallがやってきた件

2007年6月1日金曜日

去年YAPCで受付をしていたらLarry Wallがやってきた件

YAPC::Asia 2006での失敗談。

昨年のYAPCでは会場の受付をさせていただいた。招待客と外人の参加者向け窓口に座っていたため、受付に来る人の数が少なく仕事自体は楽だった。仕事といっても名前を聞いて参加者リストと照合し、名札とノベルティを渡すだけ。それでもみなさん開始時刻の直前にまとめていらっしゃるため、結構いっぱいいっぱいだった。

そういう中、会場の入口から人ごみをかきわけるようにして、私の前に外人のおじさんが到着。以下つたない英会話で。

受付の私「おはようございます。お名前は」
おじさん「ラリー
受付の私「どちらのラリーさんですか」
おじさん「ラリー・ウォール
受付の私「ちょっと待ってください、いまお名前確認します」(まだ気づいてない)

下を見て参加者リストからラリーなる名前の人を探したところ、燦然と輝くLarry Wallの名前。 あちゃー。
……っていうかあなたがPerlを作ったLarry Wallですか。
……で、Perlのカンファレンスというこの会場的には神さまみたいな存在のあなたが来て一般人のふりをして受付に来ている、と。
……私は顔を上げたときどんな顔をするべき?
……あれってラリー・ウォールじゃないの? なんてひそひそしゃべっている人もいますよ!
などなどいろいろな思いが一瞬で去来して、なんとかフォローしようと、名札を渡しつつとっさの一言。

私「みんなあなたを知ってるから別に名札なんてつけなくてもいいじゃないですかあ。ははは」(空笑い)
ラリー「そうでもないかもね」(Well, maybe not)
それは私のことです……。墓穴掘ったorz

そのあとLarry Wallに謝った

2007年5月8日火曜日

YAPC::Asiaメモ(その8)自文書抽出日本的住所

  • Geography::AddressExtract::Japanができるまで
  • 自然文章から住所を抽出したい
    • 日本の住所パターンを研究
    • 郵便番号DBも使える
    • Regexp::Assembleを使って文字列のリストすべてをカバーする正規表現を作る
  • テクニック
    • 都道府県がなくても補完
    • 港区(東京都と名古屋市にある)の場合は街の名前で判別(港区六本木なら東京都)
  • その他問題
    • 人間の書いた住所はゆらぎが多い
    • 異体字問題(Encodeで対応できるらしい)
    • 変わった住所(京都とか):抽出可能
  • Regexp::Trie使えそう
この講演の前身は昨年10月に行われたShibuya Perl Mongersテクニカルトーク#7。個人的にこれがすごく気になっていたのでとうとう見られて幸せ。

アメリカの住所でおなじことをしようと思ったら取り掛かりとしてGeo::StreetAddress::USというのがあるのだが、これは住所フォーマットの解析だけしかしてくれない。

たとえばニューヨーク市シブヤ123番地があったとして、
use Geo::StreetAddress::US;
use Data::Dumper;

$hashref = Geo::StreetAddress::US
->parse_location("123 Shibuya, New York, NY, 10001");
print Dumper($hashref);
はこういう結果を返す。
$VAR1 = {
'number' => '123',
'street' => 'Shibuya',
'state' => 'NY',
'zip' => '10001',
'city' => 'New York',
'suffix' => undef,
'type' => '',
'prefix' => undef
};

ところがYappoさんのモジュールと違って住所の部分を文章から切り出してくれるわけではなく、たとえば住所ではない文字列が混じった
$hashref = Geo::StreetAddress::US
->parse_location("My address is 123 Shibuya, New York, NY, 10001");
print Dumper($hashref);
にすると
$VAR1 = '';
というさびしい結果に。

さて、どうしよう(続く、かも)。

2007年5月6日日曜日

YAPC::Asiaメモ(その7)Virtualization and Package Deployment with EC2 or パッケージ配布と仮想化(Emerson Mills)・Inside Net::Amazon::EC2

今日はAmazon EC2とS3関係の2題のまとめ。

気になる利用料金が出てこなかったため、勝手に調べた。Amazon EC2のページによるとEC2のお値段はこういうことだそうだ。時間単位の課金は1分でも使えば1時間ぶんの課金が発生する。



2007年5月まで6月から
時間課金$0.10/時間/インスタンス
転送料課金
(アップロード)
$0.20/GB$0.10/GB
転送料課金
(ダウンロード)
$0.20/GB$0.18/GB(毎月最初の10TB)
$0.16/GB(次の40TB)
$0.13/GB(それ以上)


S3のお値段はこんなかんじ。





2007年5月まで6月から
容量課金$0.15/GB/月
転送料課金
(アップロード)
$0.20/GB$0.10/GB
転送料課金
(ダウンロード)
$0.20/GB$0.18/GB(毎月最初の10TB)
$0.16/GB(次の40TB)
$0.13/GB(それ以上)
リクエスト単位の課金(アップロード)なし$0.01/1000 PUT/LISTリクエスト
$0.01/10000 GETリクエストなど
DELETEリクエストは無料


安いかどうかは感じ方次第だが、個人的には基本料がかからないのがうれしいところ。個人で会社を始めたくなったときにはお世話になろうかな。

Virtualization and Package Deployment with EC2 or パッケージ配布と仮想化(Emerson Mills)

  • 自己紹介
    • AWS日本担当。実験・講演・サポート。好きなだけPerlを書いていいと言われたので入社
  • 問題
    • モジュールのインストールがなかなか成功しない(これには会場のほとんどが賛成)
    • 開発者の環境を再現するのは難しい
    • モジュールそのものより依存関係のインストールに時間がかかる(初心者はさらに大変)
  • 仮想化
    • ハードウェアの論理化、リソースの最適化
    • パッケージだけではなく環境そのものを配布する
    • ソースも暗黙の知識も同時に納品
  • EC2とは
    • アマゾンの仮想サーバにアクセスするwebサービスAPI
    • いまのところベータ。インスタンス(物理的なサーバに対応)20台まで起動できる。ベータが終われば好きなだけの台数
    • 仮想サーバのスペックは普通のレンタルサーバかそれ以上
    • 起動して、いろいろインストールして、それをイメージ化
    • イメージをサービスに登録。必要なら実行権限を設定できる(Ingyのみ実行できる、など)
    • EmersonはCatalystの環境をいろいろ作ってみている
  • Q&Aより
    • EC2はシステムの拡張が容易なのでwebのトラフィックが急に増えたときにも対応できてよい
    • 環境が似たようなイメージがたくさんできてしまわないか→それ自体は問題ではない。必要だったらインスタンスのリストから隠すことができる
    • EC2はwebアプリケーションだけではなくUDPを使ったネットワークゲームなども問題なく動く
    • ベータ版でなくなる時期についての正式な情報はまだない
Inside Net::Amazon::EC2(Jeff Kim)

  • EC2:Elastic Computing Cloud
    • バーチャルなLinuxレンタルサーバ
    • 従量課金
    • いまのところベータ。サインアップしてから使えるようになるまでやや時間がかかる
    • 複数のマシンイメージを呼び出しひとつで立ち上げ
    • パーミッションやファイアウォールの管理がグループ化したホストに対してできる
  • S3:Simple Storage Service
    • 従量課金(容量と転送料)
    • すぐにサインアップして使える(だからいますぐ使おう)
    • コンテンツは「バケツ」のなかに入れる
    • FUSE経由でマウントできる
    • 実質上、容量無制限のディスク
    • EC2はS3を使ってデータを保存
    • EC2とS3の間は転送料無料
  • Net::Amazon::EC2
    • 「クエリ」ベースのAPIを使っている
      • SOAPベースのAPIはPerlのSOAPライブラリが力不足のため使わなかった
    • 他の言語にはAPIがあったがPerlにはなかったので作った
    • メソッド:いまのところEC2のAPIにあるものはすべて実装
      • *_image(s)
        • register_image:S3上のAMIをEC2に登録
        • describe_images:インスタンス化できるAMIのリストを返す
        • deregister_image:registerの反対
      • *_instances
        • run_instances:一番重要。指定したAMIインスタンスの開始。引数はインスタンスの最小数・最大数、セキュリティグループ、ユーザデータなど
        • describe_instances:便利。走っている(と最近まで走っていた)インスタンスのリストを返す
        • terminate_instances:インスタンスの終了(変更が破棄されるため注意)
      • *_key_pair(s)
        • create_key_pair:初回のみ使う
        • describe_key_pairs:あまり使わないだろう。EC2アカウントに対しての鍵情報のクエリ
        • delete_key_pair:鍵の消去。インスタンスが走っているとアクセスできなくなるので注意
      • *_image_attribute
        • describe_image_attribute:イメージの属性を返す
        • modify_image_attribute:イメージの属性を変更(いまのところlaunch permissionのみ)
        • reset_image_attribute:イメージの属性をリセット
      • *_security_group
        • create_security_group:セキュリティグループをEC2アカウントに追加
        • describe_security_group:EC2アカウントに設定されているセキュリティグループを表示
        • delete_security_group:アカウントからセキュリティグループを削除。インスタンスが走っているときに実行したらどうなるかは不明だがやめたほうがいいだろう
      • その他
        • authorize_security_group_ingress:ネットワークパーミッション(IPアドレス、ポート)をセキュリティグループに追加
        • revoke_security_group_ingress:authorizeの反対
        • get_console_output:とても便利。仮想マシン(インスタンス)のコンソールにアクセス
        • reboot_instances:インスタンスの再起動
  • 開発予定
    • テストを改善したい。テストの自動化は難しいしテストをするたびに課金される
    • もっとOO。モジュールはOOだが返ってくるデータはOOではない
    • もっとメソッドを追加
    • EC2 APIがアップデートされるたびにこちらも変更

2007年5月5日土曜日

YAPC::Asiaメモ(その6)WebAPIで遊び倒す

WebAPIとマッシュアップ
  • WebAPIといえばマッシュアップが中心
  • マッシュアップの流行りは地図系、特にGoogle Maps(次いでFlickrとAmazon)
OpenIDを使ったIP電話のデモ
  • OpenIDはシングルサインオンの認証システム
  • Click to Callを作っている(ユーザがwebで自分の電話番号を入力すると電話がかかってくる)
  • Asterisk(フリーのPBXのソフトウェア)を利用
  • コマンドラインのSIPクライアントも使う(SIP=Session Initiation Protocol)
  • OpenIDで認証
  • デモが動かず。どこかでタイムアウト?
EC2のデモをスクリーンキャストで
  • EC2:バーチャルなサーバをインターネット上で利用できる(詳しくは他の人のプレゼンテーションで)
  • FireFoxのadd-on(Amazon EC2 UI)で同時にアクセス、モニタしてみよう
  • まず秘密鍵をつくる
  • サーバを起動。IPアドレスは動的に振られる。DDNSを使って運用するのが現実的
  • 起動するたびに課金(忘れているとずっと課金)
Net::OpenID::Consumer
  • PODわからない。リンク先はNot Found
  • OpenID guestbookソースコードが見えた(mnメモ:ソースコードは流出ではないらしい
  • なにかをマッシュアップしてみよう→相手がだれだかわからないのに使うものといえば電話
  • 最近の問題:IP電話のSPAM(SPIT=Spam over Internet Telephony)
  • SIPとOpenIDを組み合わせればよい
  • OSPを使えというひともいる(でもOSPは大変)
ほかに使えるもの
実装例
  • muckOS(Amazon EC2、S3、SQSを利用)
  • RightScale(これもEC2、S3、SQSの組み合わせを。無料で何時間か使える。解説記事
台場さんのプレゼンテーションはうまい。内容をしぼってゆっくり話すとここまでわかりやすくなる、といういい例だ。見習わねば。

2007年5月3日木曜日

YAPC::Asiaメモ(その5)Lightning Talksを5題

今日はLightning Talksを5題視聴した。

Perlbal Selector Plugin
  • Perlbalはソフトウェアロードバランサ
  • BigIPもいいけどPerlbalは無料だしPerlだし
  • Pluginで拡張ができる
  • URLによってバックエンドを切り替えたい→Perlbal::Plugin::Vhostsを拡張
  • PerlbalのテストはPerlbal::Testで
  • PerlbalもMogileFSもかなりいい
  • Perlbalはたまに死にます
Perlbalは使ったことがないが、自分で拡張できるインターフェイスがあるのはすごく好み。PerlbalもMogileFSもSix Apart社の外で一般的に使われているんだなあというのが正直な感想。

BabelBee - Collaborative Translation Tool
  • Jifty使ってる
  • Hiveminderのために作った
  • poファイルの翻訳が便利になる
  • すでに翻訳したものに似ていればそこから翻訳を採用
  • AJAXいっぱい
ビデオの画面が小さくて、AJAXでなにをやっているのかが見えなかった。一般公開されたときに要チェックかな。

(ミニ)カンファレンス中継のあれこれ
  • i-revoの紹介:KONAMIとIIJの合弁。ポータルサイトの運営
  • 最近Shibuya.pmのイベントなどでミニカンファレンス中継をやってます
  • お手軽なストリーミング中継は低解像度でのWindows Media。
  • 問題
    • 低解像度だとプレゼンテーションの資料が読みにくい
    • バッファリングが起こるのは気になる
  • 解決策:ストリーミングと静止画(プレゼン画面)の組み合わせ
  • ニコニコ動画みたいにできないかな、と発想
    • ブラウザ画面を3分割。動画、静止画、IRCでのつっこみを同時に見せる
  • Perl使ってます。DBはSQLite
  • ストリーミング中継のトラフィックは100人で40Mbps
(・∀・)イイ!
今回のYAPC::Asiaは遠方ということで会場に行けなかったのだが、中継があればよかったのに。
静止画とIRCの連携だけで構わないので、来年なんとかなりませんですか(おねだり)。
場合によっては静止画だけ中継してもらえればあとは会場に電話をかけて音声をひろって……。

そこまでするなら飛行機に乗って行けって話ではあるのだが。

Device::USB::MissileLanuchers
  • USBランチャというおもちゃがある
  • Device::USB::MissileLanucherはセクシー
  • ただし1台しか使えないので
  • 複数操作するためにDevice::USB::MissileLaunchersというものを作った
  • Web APIで操作できる
    • GET http://.../0/up
    • GET http://.../0/down
    • GET http://.../0/left
  • GET http://.../0/fire
あちこちのwebで取り上げられているので今さらですが、感服です。ほかのUSB toysに応用できないかと思ってみても、ミサイル以上に破壊力のあるものはなさそう。女の子受けを狙ったDevice::USB::ChristmasTreeとかか?

Bytecode for Wikis

バイトコードとはバーチャルマシン業界でよく使う言葉で、平たくいうと中間コードのこと。
  • 「このトークでは真面目なことしか言いません」(会場から笑い声)
  • Document::Formatterというモジュールを作っている
  • 今夜CPANに登場予定(実際はDocument::Toolsになったらしい)
  • Document::Parser(パーサ)、Document::AST(抽象構文木)、Document::Emitter(エミッタ)がベースクラス。サブクラスを自分で書く
  • いろいろな文書フォーマットのパーサが簡単に書ける。例:Wiki、HTML、POD、MS Word、Spork
自分で必要なものができて、それを書き捨てるのではなくてモジュール化してさらに公開をちゃんとする、っていうのはエラい。その上に楽しい人で、私はIngyのファンです。

2007年4月30日月曜日

YAPC::Asiaメモ(その4)Perl Worst Practices

Martyは自分で書いた日本語のプレゼンテーションスライドで講演。日本語を話す「外人」はたくさんいるものの、これだけ読み書きできる外人は貴重であります。

演題はDamian Conwayの著書、Perl Best Practicesのもじり。
  • 私にとってのいいPerlは
    • きれいだ(遠くから見ても)
    • 有用だ
  • 悪いPerlは
    • 読むのが難しい
    • 醜い
    • 有用だ(だからなくしたくてもなくせない)
    • もろい(変更するとバグが出る)
  • Javaが好きじゃない
    • バカでも使えるように設計された言語(会場拍手)
    • バカな人でも危険なコードは書きにくいから
  • Perlが好きだ
    • 頭がいい人のための言語。制限が少ない。言語の挙動まで変えられる
    • バカでも使えるけど(そういう例がたくさんあるCPANってサイトは知ってる?)
  • Javaは成功しPerlはそれほどでもない。なぜ?
    • Slack's Law=会う人の95%はバカだ
    • この会場で、頭がいいと思う人は手をあげてください(二人半)
    • この種のデータのうち95%は捏造だ(落ち)
悪いPerlの問題は3つ。変数、正規表現、オブジェクト指向。
  • 変数
    • バグの95%は変数が原因(バグを見つけたとき変数が関係する場合を数えてごらん)
    • 変数をなくすのが理想だけれど、それは難しいからこういう変数をなくそう
      • グローバル変数
      • パッケージ変数(長い名前のグローバル変数だからね)
      • local変数
    • my変数は小さい範囲で使われるならばだいじょうぶ(スコープが25行以内くらい)
    • $1と$2はグローバル変数
  • 正規表現
    • ちゃんと使わないとあぶない。ユーザの入力をgrep /$input/, @array;としてもだいじょうぶ?
    • Mail::RFC822::AddressやRegexp::Commonを使おう
  • OO
    • OOは害悪、でもOOはエレガントだと思っている人がいるから困る
    • 今朝のMJDはOOを使ってなかったよ
    • Perl Object Orientation=POO=「ウンコ」



この人のユニークなところは冗談にまじえてふと真面目なトピックをいれるところ。野暮だとは思いつつ要点をまとめると

  • コードはきれいに書こう
  • 変数はmyで。スコープは狭く。
  • パターンマッチの際の$1と$2に注意(あと$aと$bも注意ですね)
  • 有用なモジュールはMail::RFC822::AddressやRegexp::Common
  • オブジェクト指向は適材適所で

というところ。

先週NYにいらっしゃったときにお会いしたのですが、とてもいい人でした。

2007年4月29日日曜日

YAPC::Asiaメモ(その3)Building Catalyst Applications

あとで自分で使おうと思ってYAPC::Asia 2007のメモをひとつひとつ書いてみているけれど、どうしても1日あたり1エントリ(かそれ以下)が精一杯。このぶんだと書き終わるころにはYAPC::Asia 2008が始まるのではないだろうか。そうすると一年中YAPCのことを書くことになるな。いやだな。

今回はCatalystを使ってブログのアプリケーションを作ってみましょうというお話。ちなみに、発表者のJonathanは電車男です。

前半はCatalystの基本。
  • MVCの説明
  • Catalystのインストールは時間がかかるからコーヒーでも
  • インストールしたらすぐ立ち上げられる
  • アクションには属性(attribute)がついてdefault :Privateなんて書く。:Localや:Globalもある。これはあまり使われていないPerlの機能を利用したもの。
    • default :Privateは定義されていないアクションに対応したURLのとき呼ばれる
    • sub foo :Localは/fooのURLに対応
    • :Privateは対応するURLがない(例外はdefault、index、begin、end、auto)
    • アクションは正規表現も使える
  • アクションを定義するsubの1行目は必ずmy ($self, $c, @args) = @_;
    • /my/action/foo/bar/bazというURLでactionにアクセスすると、myがパッケージ名、actionがアクション名の場合@argはqw/foo bar baz/に
  • アクションの実行順序はauto->begin->action->end
  • $cのメソッドは省略形が使える。res = response、req = request
ほかのアプリケーションとの連携。

  • TT便利
    • MyApp::C::Root::fooはroot/src/foo.tt2に対応
    • これはいちいち設定しなくてもよい(設定することもできる)
    • [% 変数 %]
    • [% Catalyst.requiest.uri %]
  • DBを使う(DBIC)
    • $ script/blog_create.pl model DBIC DBIC::Schema MyApp::Schema create=static dbi:SQLite:blogdb
    • スキーマファイルをちょっと変えればどのDBにも対応
  • FormBuilder
    • Jonathanのお気に入りモジュール
    • JavaScriptでの入力チェックも自動化。JavaScriptをOFFにしてあってもだいじょうぶ
  • セッション
    • プラグイン使う
    • cookieを使わずにURIでセッション管理もできる(最近の潮流じゃないけど)
    • $c->flashで変数の変化をうまく処理($c->stashのかわり)
  • AJAX
    • 「いまどきAJAXのないweb開発なんてありえない」
    • Jemplate(JavaScriptにおけるTT)
  • その他キャッシュとか認証とか
  • テスト
    • Test::Catalyst qw(MyApp);
会場からの質問が一つもなく気まずくなりそうだったところ、司会者が機転を聞かせて「みなさんすっごくamazedです」と英語でコメントを。amazedは感心した、とかびっくりした、とかいう意味で、だから質問が出ないんです、ということなのだがこれをあのタイミングで言えるとはすごい。今度同じ状況になったときに使わせてもらおう。

2007年4月27日金曜日

YAPC::Asiaメモ(その2)Angerwhale

Lightning talkから。
  • http://angerwhale.org/
  • ブログサーバソフトウェア
  • インストール簡単、設定簡単、使うの簡単
  • 一記事一ファイル、カテゴリはディレクトリ(DBいらない)
  • URLの形式たくさん(Catalyst使ってます)
    • http://localhost:3000/articles/
    • http://localhost:3000/tags/
    • http://localhost:3000/2007/01/01
    • http://localhost:3000/categories/カテゴリ名
  • 記事のファイル形式はいろいろサポート(HTMLとかテキストとか)
  • 出力もいろいろな形式(Atom、JSON、YAML)
  • キャッシュ多用、だから早い
  • PGPで個人を識別
  • PODたくさん
  • IRCもあるよ
記事=ファイル、カテゴリ=ディレクトリだとシェルでいろいろできそう。でもシェルを使えるサーバを持っていないといけない、と考えたら敷居は高いかも。家庭内ブログだとOK? 今日の献立、とか?

2007年4月24日火曜日

YAPC::Asiaメモ(その1)Introduction to DBIx::Class

データベースのプログラミングには苦手意識がある。理由のひとつは$dbh->prepare()だとかfetch()とか、おまじないが多すぎるからで。それを解消してくれるかもしれないモジュール。
  • ORM(Object-relational mapper):オブジェクトからリレーショナルデータベースへのマッパ。最近話題らしい。
  • SQLを書かずにPerlを書こう。
  • MySQLをはじめいろいろなDBに対応。
  • 気に入った書き方をスライドからコピペ。
my $table = $schema->resultset('table');
$table->find(1); # primary key

my $people = $schema->resultset('Person')->
search({ firstname => { like => 'Jon%' } });
悪くない。でも使いたいかと言われれば微妙。クラススキーマをいちいち定義しなければいけなかったり(自動化できるみたいだけど)、結局$table->findにしても新たなおまじないを覚えなくてはいけないし。

個人的にはこういうインターフェイスが理想なんだけど。
@rows = $dbh->select(
from=>"people",
where=>"name =~ /^Joh?n.*Kennedy/i"
);
for my $row (@rows) {
say $row->{name};
say $row->{address};
}
ポイントはPerlの正規表現を使ったSELECTと、列の名前であるnameを$row->{name}として使えるようにすることなんですが、こういうことをやってくれるモジュールはありませんでしょうか。