コンピュータやソフトウェアのあれこれ@道民(&元道民)
yapcasia
[yapcasia]YAPC Asia 2011を終えて
10月 16th
YAPC Asia 2011が終わりました。まず、今年もYAPC::Asia Tokyo 2011 スペシャルレポートのレポーターをする機会を与えて下さったgihyo.jpさん、そして担当の@k_takaさんとレポーターの@ytnobodyさん、本当にどうもありがとうございました。前夜祭で体調を崩して迷惑をおかけしてしまいましたが、サポートしていただいたお陰でなんとかなりました。
また、毎年のことながらYAPCを支えて下さっている@941さん、@lestrratさんを始めとしたスタッフのみなさん、本当にお疲れさまでした。今年もおかげさまで楽しませていただきました。
さて、今年のトークでは、@akiymさんのトークが一番面白かったです。小学生のころにらくだ本を買ったというのには頭が下がりますし、その訳者さんと会場で交流できたということがさらにすごいことだなーと思いました。
DevOps系のトークは@kazeburoさんと@nakokakuさんの2本を聞いたのですが、どちらも実践的な話でためになりました。特にアプリ系のログを、Ops側の人たちにも理解できるように吐くのは有効だなーと思いました。
@kazuhoさんさんのお話は毎度のことながら的確に要点を突いたもので、どうやったらこういう知識が身に付くのかなあと今回も感心させられました。興味深く聞かせていただきました。
後、今年初めてスピーカーをやったのですが、体調不良とレポーターでいっぱいいっぱいだったせいで全然緊張しませんでした(笑。感じたのは、やっぱり時間内に納めるのは大変だなーってことです。なんとなくだらだらしゃべっていて長引いているってのもあるんで、しゃべることを全部書いとくってのはありかなーと思いました。
[perl][yapcasia][perl+web][math]YAPCで話さなかったこと
10月 16th
今回のトークでは「斜めの矢印」とか「合成」とかそういう言葉を説明に含める必要があったので圏論のことばや記法を前半で色々紹介しましたが、泥沼詳細には踏み込み過ぎないように気をつけました。その泥沼詳細にあえて踏み込んでみたい人のために、このトークに出てきた話と圏論の言葉の対応表を与えておきます。
| スライド内の言葉 | 圏論的な性質 |
|---|---|
| Type(型) | 対象 |
| Arrow(矢印)、または、関数 | 射 |
| id | 恒等射 |
| M() | 関手の対象関数 |
| モナド = M(), unit, flat_map | Kleisli triple*1 |
| 斜めの矢印、または、Kleisli射 | Kleisli圏の射 |
| map | 関手の射関数 |
| unit | 自然変換 |
| flatten | 自然変換 |
| M()+map, unit, flatten | モナド |
さらにM(), unit, flat_mapによって高階関数の成す圏のKleisli圏が構成されるとみなすと、unitはそのKleisli圏の恒等射、flat_mapを介した2つのKleisli射の合成がそのKleisli圏での合成と言えます。
勉強する順番としては、圏(対象、射、恒等射)→関手→自然変換→モナド、が最速です。
*1:プログラミング言語のモナドは、数学ではKleisli tripleと呼ばれています。数学のモナドは、後述されている3つ組をいいます。ただし、数学のモナドと数学のKleisli tripleは同値です
[perl][yapcasia][perl+web][math]YAPCで話したことと
10月 16th
今回のYAPCでスピーカーデビューしてきました。スライドは以下にあります。
応募した当初は、十数名聞きにくればいいかなーと思っていたのですが、蓋を開けてみると結構な人数に聞いていただき、ほんとうにありがとうございました。
今回発表したライブラリについてはCPANやgithub上にありますので、先日書いたエントリを参照して下さい。
[perl][yapcasia][perl+web][math]YAPCで話したこと
10月 16th
今回のYAPCでスピーカーデビューしてきました。スライドは以下にあります。
応募した当初は、十数名聞きにくればいいかなーと思っていたのですが、蓋を開けてみると結構な人数に聞いていただき、ほんとうにありがとうございました。
今回発表したライブラリについてはCPANやgithub上にありますので、先日書いたエントリを参照して下さい。
[レポート][perl][perl+web][yapcasia]今日はYAPC::Asia Tokyo 2011の2日目です
10月 15th
あいにくの雨ですが、今日も時間通り会場に到着しています。
本日もgihyo.jpさんの特集のレポーターをやってます。参加されているみなさんと一緒に楽しみながらレポートしようと思っています。
Kazuho Okuさん「Unix Programming with Perl 2」
- 昨年のトークでは、エラーやファイルハンドル、シグナルについて話した
- 今年はプロセス間通信と、シグナル周りのレースコンディション
- IPC::Open3 : open3がロックする場合がある。いつ?
- A). STDIN を読むコードの場合、$cinを待ち続けるのでロック
- close $cin する
- B). 子プロセスがSTDOUTとSTDERRに大量にデータを吐いた場合、バッファがいっぱいとなる
- 試すと、16384byte (16KB)でブロックする。これがバッファサイズ。OSによって異なる--close $cout, close $cerr では解決しない → エラーにより戻り値が変わる
- while (<$cout>) + while (<$cerr>) では? → <$cerr> の読み込みに処理が移らないので駄目
- 答え: $cerrにundefを渡し、while (<$cout>)する。
- ADVICE). パイプを使わずに、tempファイルを使うとよい
- |- cmd > tmp とかじゃだめ? → shell の解釈が入る分遅くなる。また危険にもなる
- open3を使うとよい
- レースコンディションについて : while して signal するプログラムで、間にSIGHUPが割り込むと想定通りに受信できないことがある
- POSIX::pselect を使うといいはず・・・しかし、この実装に不具合のあるケースがある
- evalとdieでsigprocmaskをしても問題は解決できない
- シグナルにsyswriteを呼ぶとよい
- まとめ
- バッファーサイズは有限なのでデッドロックに注意
- shellの呼び出しには問題があるので、@argsやIPC::Open3を利用
- シグナルのレースコンディションには注意する
- 質疑応答
- Q. UNIXの仕組みでなくAnyEventで何か違う考え方ができる?
- A. ラップされてるはず。なので、これらは問題にならない
masahiro naganoさん「運用しやすいWebアプリケーションの構築方法」
- 旧職での経験 : 1億PVから10億PVへの増加、2000台のサーバ、数十のサービス
- 運用しやすい = 「障害を起こさない」「早く復旧する」「スケーラビリティ」
- ログ → アプリケーションからの情報発信
- 障害発生の際に最初に見る
- ログがないと調査に時間がかかる
- straceしたり、アクセスログやバイナリログを見たり
- 結果、椅子が飛ぶ
- Log::* はたくさんある。どれを選ぶべきなのか
- ログが含むべき情報
- 時間、ログレベル、環境、caller、メッセージ(主語+目的語、述語)
- Log::Dispatch は機能不足ではないか
- ログレベル
- DEBUG、INFO、WARN、CRITICAL
- Log::Minimal
- ログレベルごとにXXXXfとXXXXff が用意されている
- fとffの違いはスタックとレースの有無
- LM_DEBUG を環境変数を指定すると、debugレベルが表示される
- $Log::Minimal::PRINT を上書きすると、出力方法を変えられる
- $Log::Minimal::COLOR を有効にすると、カラーリングできる
- Log::Minimalの設計思想
- WAFともModelとも粗結合。環境の情報はPSGIのMiddlewareで行う
- Plack::Middleware::Log::Minimal はREQUEST_URI情報をログへ付け足す
- worker の中では、$Log::Minimal::PRINTを上書きして負荷情報を足せばよい
- DBが重いとき
- show processlist、slow_log、などを確認
- アプリケーションのコードからなんのクエリか確認。killしていいのか?
- チューニングで解決できるのか
- → ORM大っ嫌い
- SQLとコードがマッチしない → grepで該当箇所が見つからない
- ORMを使うときの注意
- SQLの生成個所が散らばらないようにする → 特にViewで生成しない
- クエリコメントを加える
- DBIx::Sunny → DBIのサブクラス。caller情報をSQLコメントへ埋め込む
- 他、select_oneやselect_rowなど、便利なショートカット
- SQL::Makerとの組み合わせなど
- DBIの接続をキャッシュすると、接続時間が長くなる
- 最大接続数に達しやすくなる
- DNSの書き換えが浸透しなくなる(メンテしにくい)
- SHOW INNODB STATUS が見れなくなる (欲しい情報が末尾にあるので)
- Scope::Container でDB接続管理をする
- local と似たような機能。処理単位で接続を切るようにする
- Scope::Container::DBI
- Scope::Container + DBI を楽に実現
- 他、DBIのクラスを変更できたり、slaveのランダム接続など
- Plack::Middleware::Scope::Container
- コントローラとモデルにまたがる処理単位を、まとめる
- memcachedの課題
- 永続化されない
- 特定のキャッシュへアクセスが集中すると、特定のサーバ負荷が高くなる
- キャッシュが切れるタイミングで、DB負荷が一気に上がる
- Cache::Memcached::IronPlate (CPANにない)
- memcachedのラッパー
- cacheを複数に保存する。過半数が生きていれば有効と見なす
- Cache::Isolator
- graceful expire → expire 時間の違うキャッシュを二つ作成し、9:1の割合で分岐
- concurrency controled get_or_set → 同期をとってDBへの同時アクセス数を制御
- Plack::Middleware::ServerStatus::Lite
- Apacheのmod_statusに相当
- Parallel::Scoreboard
- update->('.')、update->('A') などで、ジョブのワーカーなどから状態通知させる
nekokakuさん「watch your log」
- 使ってないモジュールのトークばっかじゃん→今日のアプリは業務で使ってます
- DevOps → DevとOpsは仲良くすべき
- Opsのことを考えられるDev
- Opsの人が1次対応をする → Opsの人へ情報を送る
- 運用したことがないミドルウェアの情報をDevでも調べて共有
- 新機能のリリースはOpsへ伝達
- Devに依頼ができるOps
- アーキテクチャ、対応すべき問題を理解する。
- 必要な情報はDevに提出させる
- DevとOpsのコミュニケーションに関して作ったモジュールのお話
- 監視
- 死活監視、リソース監視、ログ監視
- ログ監視のソリューションでいいソリューションがないのではないか
- DevとOpsは、ログの出力方法を取り決めるべき
- Opsの一時対応が早くなる → WEB+DBのkazeburoさんの記事を参考
- 監視すべきログ
- access_log, error_log, application log(syslog), mysql slow log
- access_logやerror_logは外部からのリクエストへのレスポンス
- 500系 → アプリのバグ
- 404 → HTMLの記述の不具合
- error_log はゴミが多かったりする
- error_logのundef のwarning などは緊急性が低いので、1日に一回見ればよさげ
- application logはDevとOpsの取り決めが生きる
- ビジネス的な深刻度をログに吐き、対応フローを決めておくとよい
- mysql slow log : ほとんどの場合、DBがボトルネック
- 数十GB溜まっていたりする・・・
- ログファイルのローテーション
- mysql slow log は日単位でローテーション → 圧縮したり
- ログの収集方法 → Komainu
- accesslog, applicatio log, slow log の集計を設定により集計
- fork model で動く。fork数は制御される。結果はDBへ
- 親プロセスはDBから収集する
- DBにいれるメリット
- 過去のデータと比較できる
- グラフ化しやすい
- 子プロセスと親プロセスのやりとりが楽
- 最低でも5分に1回サーバを巡回して結果通知したい
- 時間でgrep × ステータスでgrep して集計
- 実行は、昨日のpfperlにて各サーバで
- Application LogはDevとOpsで決めた文言をgrepするだけ
- deployすると、時間が自動的に記録される
- mysqlで実行に時間がかかっているものをリアルタイムであれrつぃたい
- show full processlist でしきい値を見れば
- 自動でKILLかは微妙
- 実際の監視対象
- 100台以上。access_log ベースで億単位。
- fork modelで2.5分で処理完了
- 監視用の専用サーバも必要
- 重要なこと → サービスのクオリティーの維持
- 利用者からの問い合わせで障害に気がつくのは情けない
- ログ情報を通知し、以外にエラーが出てることに向き合う
- Shut the fuck up and write some code
- DevもOpsもエンジニア。行動すべき
- コードの善し悪しは二の次。問題意識を持った人が行動することが重要
- まとめ
- DevとOpsは密なコミュニケーションが必要
- 監視を軸にコミュニケーションを深められる
- 監視を仕様化する
- ログも監視しよう
- 質疑応答
- Q. syslogサーバは何台? ストレージの容量は?
- A. 2台とか。ディスクも特別ではない。貯めるよりも、出たことに気がつくこと。過去の記録が残ればいいだけで、全てを残す必要はない。
- Q. アクセスログ1時間で何GB?
- A. 結構なサイズ。forkも何もしないと、5分では収まらない
- Q. daemontools のマルチログをうまく使うには?
- A. 使いにくいので副次的に使う程度でいいのでは。
hiratara「Monads in Perl」
こちらはgihyo.jpさんの特集へ掲載しています。
SKYARC System presents 招待 LT
papixさん「Cコンパイラ用テストスイート自動生成システム」
- testgen2 は Perlで書かれている
- テスト生成、出力の解析などをPerlで解析
- Cコンパイラ用のテストスイートの自動生成
- K&RとC89コンパイラ開発の初期。9000本。テンプレの追加。開発進行中
- コンパイラ作ってる方に知らせて下さい
hkataokaさん「僕とPerlとYAPCAsia」
- 2002年正月Perlと出会った
- モダンPerl入門、Perl CPANモジュールガイド が方向性を教えてくれた
- 2005年12月YAPCを知った
- スカイアークシステムさんのお陰で5年越しでこれた
- 臨場感や熱気が違う。他のPerl Mongerとのコミュニケーション
- miyagawaさんからPlack::Middleware::ExceptionNotice のアドバイスを頂いた
- YAPCは東京でやっていて、すごい
- 地元も、メンバーを増やせばすごいはず
- 地元からもすごい人が出るかも
shinpei_cmykさん「プレNiigata.pm活動報告」
- ゆのっちはunicodeで書ける - YUNOCODE と呼ぶべk(すべった
- Hachioji.pmに出席していた
- Niigata.pmをやりたい
- Perlをメインで使っている会社内
- めっちゃ少ない。学生も居ない。
- Perl = CGIと思われている
- NDS、技大LT
- Perlの宣伝をして、新潟にPerlの仲間を増やしたい
- 勉強会とかがない人は、やるといい
- 司会「Twitterで白眼鏡が公表でした」
lapis_twさん「Perl meets C++」
- Sapporo.cppのコアメンバ
- libperl++が動かない
- perlembed : C言語からPerlを呼び出す方法
- XS使用モジュールを呼ぶのは大変
- perl_parse 周りのグルーコードが必要
- xs_init
- C++11のVariadicTemplatesやBoost.MPL、Boost.Preprocessor, Boost.CallTraits などが使える
1VQ9さん「Plack::Middleware::Auth::SAML2」
- 蜘蛛の遺伝子の解析をPerlでしている
- システム全体ではRubyとPerlが半々
- SingleSignOn → SAML
- pingIdentity, oneloginなど
- Perlのモジュールがなかったので、作った
- Plack::Middleware::Auth::SAML2
- SSOにのみ対応。SLOに未対応
- デモ
Eikichi Gotohさん「仙台で1年間 PM をやってみた」
- YAPC::Asia 2010 PMディスカッションに触発された
- YAPC::Asia の出席は5回目
- 東北の人にあったことがない
- Twitterでも東北のperlの人を見てない
- Sendai.pm #1 → 7名。
- 震災で町の半分がなくなった
- デベロッパーによって、様々なサービスが立ち上がった
- こんなときこそPM → id:naoyaさんやid:typesterさんの応援
- Sendai.pm #2 → 10名。
- pm.org登録
- Perlの話ができる場
- 牛タン食べたいPerl Hackerはメンションを
- 喜久福 → 仙台でしか食べれない
- *.pmの作り方
- charsbarさんの解説がよい
- 英文が必要なのはサーバとメーリングリストどうするかだけ
- 頑張って英文で問い合わせたら、ネイティブOops!をもらえた!
akiyamaさん「なぜ、高校生がPerlを使うのか?」
- 高校生
- Perlメイン、たまにPythonとJS
- Hokkaido.pmの支援で出席している
- 小学生のとき趣味でHTMLをいじっていた
- レンタル掲示板を設置した
- 学校の先生にも教えた
- 広告が小学生に相応しくない! → 閉鎖 → 自分で作りたい
- Kent Webに出会った
- 気に入らない。自分で作りたい
- プログラミングPerlをamazonで買った(内容見ずに)
- 厚さに仰天して読なかった → Perlに数年間触れなかった
- 中学生になってyusukebeさんのサイトをみて衝撃を受けた
- 大量に画像をダウンロードしてくるスクリプト
- 楽しそう、「夢」がある
- CPANモジュールに出会った
- なんでもそろっている、ドキュメントがしっかりしている、SYNOPSISがいい
- CPANの問題 → モジュールが多すぎてモジュールを選ぶのが難しい
- CPANモジュールを読むようになった → のめり込んだ
- Hokkaido.pm を見つける
- 懇親会に参加するとみんなやさしい → モチベーションが上がる
- 空気読まずに行くことが大切
- Hokkaido.pm #5 でLT
- Twitter での反応が嬉しい
- @nekokakuさんから誘われてYAPCに来た
- 単純な理由 = 行動力がある
- なぜPerlを使うのか
- Perlに出会ってそのまま使い続けている
- PythonやRubyもあるのに?
- 理由1. 手軽さ
- Plackの登場、たくさんのWebフレームワーク、plackupするだけで動く
- 複雑なことをしなくても、先人のお陰で単純にできる
- 理由2. コミュニティ
- CPAN Authorへのあこがれ → 互いに支え合っているのがすごい
- 理由3. 書きたいから
- すべてが奇麗である必要はない。書きたくなる気持ちが大事
- Perlハッカーへの憧れ、コミュニティへ貢献したい気持ち
- Perlが好き
- 質疑応答
- Q. 小学生が買うとは非常に驚いた(らくだ本の訳者さんより*1 )
- A. お世話になってます
- Q. 今夢中になっているプログラミングは? (yusukebeさんより)
- A. ニコ動のダウンロードページ。他、あるサイトの動画のダウンロード。
sartakさん「DTrace: printf debugging for seventh-level wizards」
- 「来年日本語で話してくれるので期待!」
- DTrace
- コーンピュータが何をしているか知る
- iotopで使われている
- OS XやSolaris、Linuxで使える
- プロファイラ、デバッガ、カーネルモジュール
- XcodeのプロファイラもDTrace
- dtruss → 全システムコールの表示
- iotop, opensnoop, iosnoop
- コーディングも可能 → corpusというプログラムの例
- mod_perlのテストを失敗してた → 日本語設定していたので、「公開鍵が見つかりません」がマッチしなかった
- DTraceの言語にはifがないので注意
- Perlの5.14.1 以降で、DTraceで拾える項目が増えている
Kazuhiro Osawaさん「Perl Hackers Hub の舞台裏」
- Web+DB Press の連載周りで起こったことの話
- 伝えたいこと
- 苦労した話は皆聞きたい
- 読みたいと思うネタは読みたいと思っている
- 雑誌で記事を書く、スピーカーをする、なんて特別な人ではない
- 連載での立ち位置 → 企画を思うついて、人を見つけてやってもらう
- Twitter でWeb+DBに記事載せたい → 決まった
- 今は亡きCodeRepos → まだあります!
- 元々のコンセプト
- 機構経験がないけど面白い人を持ち上げる
- 自分が読みたい人の原稿
- Perl Hackers Hubはバトン企画
- AdventCalendarが面白かった
- JPAの代表理事によるハンドリング (金銭面でトラブるので)
- 【会場を歩き回りながらしゃべる】
- 【ここで想定内のBコースのスライドへ】
- 【執筆陣を片っ端から壇上へ呼び出してしゃべらせる。】
- @inaoさん「Yappoさんが主催者です」
- @xaicronさん「ひどいプレゼンですね」
- @dankogaiさん「昔のYAPCは宿だったし大変だった。今のYAPCは余裕があって、iPhone4Sも変えた」
- @nekokakさん「いい経験をした。発売されてるので見て下さい」
- 全員別会社にする予定が、次々とDeNAとなってしまった
- そろそろ後1分なのでm「まだkazeburoさんが!」
- @kazeburoさん「22日発売なのでお願いします。mixiの頃1年連載して久々だった」
- (登壇者へ拍手っ)
- 技術系の原稿書いてみたい人は?
- 特別なことではないので、参加してみて下さい
- AdventCalendarにも
Lightning Talks
kiwanamiさん「Perl, Emacs and Async」
- Rubyを書く人
- Emacsで絵を書く
- マルチプレイヤーFPSまで
- ぼくのかんがえたさいきょうのてきすとえでぃた
- バックエンドは苦手
- Perl → どこでも入っている、非同期に強い
- Perl側はAnyEvent, Emacs側はdeferred.el
- デモ動かず・・・
- セッション中にデバグするのはよくあること
- 復旧
- echo、足し算
- SQLの実行
深町英太郎さん「Perl → Common Lisp → Perl」
- clackup を作った
- Perlは駱駝、Common Lisp はカオス
- マクロによってコンパイル時に変換
- 例えば、Plack::Builder はマクロで書くのが自然
- PerlはCommon Lispに比べると十分小さい
- 困ったこと
- コアで入っていないと、積極的に使わない
- Modern Perl → "最新のModern Perl"
- おうのが大変
- 時間があるので京都の話
- 住みやすい
- (ゴーン、時間切れ)
株式会社ガイアックスさん「Sponcered Session」
- 福岡のお国自慢の話
- 日本の西海岸
- 「祭」
- 電車が混んでない → Perl Hackerはラッシュを避けるから関係ない
- 家賃が安い
- 以外と都会
- 車で30分行けば海も山も
- 世界で住みやすい都市14位
- Fukuoka.pmは開催数が多い
- エンジニアにとって最高の町
- 現在は東京だけど、福岡に開発拠点を作りたい
- 立ち上げてくれる人募集
azuma kuniyukiさん「bounceHammerその後、導入、これから」
- bounceHammerとは
- Perlで書かれている
- 戻ってくるメールの解析のみ行うツール
- 去年のYAPCで発表する予定だった
- ケーブルを忘れた
- 猫神様に救っていただいた
- 今年はJPA会長のPCを借りた
- SMTPのSはSimpletonのS
- ケーススタディ : @type。40万通/日。「私の年収低すぎ」で有名
- 来月、新バージョンをリリース
- (ここでマイク交換)
- 将来 : Coro使ったりPlack対応したり
- 続きは大阪で話します。関西オープンソース2011
株式会社ライブドアさん「ロケタッチ」
- 半分以上の人がYAPC::Asia 2011へタッチしているようだ
- タッチするとシールがもらえる
- ロケタッチ
- Perlで書かれたアプリ
- チェックインができるアプリ
- カジュアルに使えるライフログツール
- ロケタッチAPI
- ロケタッチ Developers
- OAuth2で認証
- 基本機能をほぼ網羅
- サンプルコードも公開予定
- 大カテゴリ、小カテゴリによる分類
- API Explorer を使って、色々ブラウザから試せる
- わからないことはfacebookで質問
- MASHUP AWARDSにもAPIを提供している
Yappoさん「folkatdevs」
- 昨日のIkachanの詳しい人ははてなの人に聞いて下さい
- 開発環境の整え方
- IRCに片っ端から入って情報収集
- gyazoサーバはあったけど、専用Macクライアントがない
- Win版を作った
- ikachanをベースに通知ツールの整備
- ちょっとしたツールで、大きな改善
- 非エンジニア向けの改修など
- 小さなツールを作る
Naoki Tomitaさん「This session is funny modules」
- CPAN毎日チェックしている人は暇な人
- Tomitaさんは毎日見ている
- akefile → -Makefile=PL できるように
- AAAAAAAAA
- クロアチア語として認識される
- rate5がついている
- Moose → Mouse → Moo → Mo → M
- 何もしてない
- Sakai::Nakamura → SakaiのNakamuraバージョン
- Devel::Comments
- 熊 全熊に捧ぐ
tokuhiromさん「File::Zglob」
- lib/**/*.pm
- File::Find がめんどくさい
- File::Find::Rule perldoc みないと書けない
- File::Zglob
- zglob('lib/**/*.pm') と書ける
- 時間があるのでmore 20 modules
- FCGI::Client
- php-fcgiをPlackの上で動かせる
- DBIx::Inspector → DBIのものより使いやすい
- Daiku → Rake for Perl
- App::watcher → アップデートされたらなんか実行する
- autobox::Encode → "ほげ"->encode("cp932")
- cpan-outdated → とにかく新しいモジュールを使う。cpanmに渡せる
- Cache::KyotoTycoon → クライアント
- Furl → 去年のLTのせいか物。モバゲーで使われている。
- ・・・(ゴーン、時間切れ)
ミクシィさん「たんぽぽチームリーダー」
- 静的解析
- コードレビュー自動化、ソフトウェアの検査
- 技術的夫妻の防止
- 計測できない者は改善できない
- 分岐、ループなど関数をグラフ構造として捉えて、その複雑さを測定
- 差分が極端に多いモジュールを調べる → 王様モジュール
- より多くと依存されているコンポーネント
- inspect-package → 解析を行う
- 働きたい人が居たら、話しかけて下さい
Kenichi Ishigakiさん「Top Ten 2011」
- cpants.perl.org → いろいろあってとまってる
- cpants.charsbar.orgをたてた
- DBIC のwarningsが
- アンオフィシャルな記録で
- 全日本最強CPANAuthor選手権2011
- 10位 KAZEBURO さん
- 9位 LUSHE さん
- 8位 Takeshi Miki さん
- 7位 TYPESTER さん
- 6位 CHIBA さん
- 5位 TOMITA さん
- 4位 SATOH さん
- 3位 MORIYA さん
- 2位 BAYASHI さん
- 1位 XAICRON さん
- acme.cpanauthors.org → 様々な角度で分析
- 日本が多い
- モジュール率だとイギリス
- 1年間で40個以上モジュール更新されている方もいる
kamipoさん「MySQLでMessagePackの中身を検索」
- msgpackはjsonよりちょっと速い
- 空間効率も良い
- 人間が読めない
- MySQLに突っ込むと検索しにくい
- MySQL上でのjsonの検索はkazuhoさんが作った
- messagePack用のmsgpack_getを作った → デモ
YUSUKEBEさん「ぼくのかんがえたさいきょうのえろさいとの舞台裏」
- 一時はてブのトップに乗ったエロサイト
- ver1 → 12万PV
- 負荷軽減 → staticファイルをAppserverでサーブしていた
- Front-endへ
- キャッシュ
- ver2 → UI刷新、埋め込み再生、関連動画表示
- 複数サイトに対応
- 関連辞書をモジュール化 → Acme::Porn::JP
- 15PV/1user
- ver3 → Mojolicious + DBIx::Skinny
- とにかくキャッシュする構成 → 3倍速くなった
- 20PV/1user
TAKESAKOさん「Perlで無理ゲー攻略2」
- Acme::MineChan
- マインスイーパーを自動で解く
- デモ→高速でマインスイーパーが解かれた!
makamakaさんによる割込
カードゲーム6セットの抽選!
Hideo Kimura「Managing A Band Of Hackers」
- POSIX timeで計算できる
- ISP → 独立 → Server hosting → DeNA
- マネージャーとして、将来の姿のお話
- マネージャーが必要なのは?
- 規模の限界がある → 集団でWEBサービスを作るのはすごいこと
- 集団の場合は、指揮者が必要
- 1+1を2より大きくする (Aristotleの言葉より)
- Perlは歴史が長いので、マネージャーをやっている人は増えている
- マネージャーの仕事 → プロジェクトマネージメント、人事、その他
- プロダクトマネージメント → ライフサイクルの維持
- 期間やリソースを確認する
- 進捗を管理
- システムを健全に動かす
- タスクを見積もる必要がある
- 人事
- 面接、評価 → エンジニアの能力を見抜く必要がある。
- その他 ≒ 事務
- 稟議などはしんどい。最近ヘルプチームはできて楽になった
- 会議 → 必要。メールや電話会議では話が伝わりにくい。ホワイトボードを前にすると数分で終わる
- 無駄な会議はある
- プロジェクトマネージメントや人事には、エンジニアの経験が必要
- 始めは1人、今のチームは20人
- 6人CPANAuthor → CPAN Author率が一番高い
- DeNAでYAPCに登壇した9人中、7人がこのチームのメンバー
- ハッカーのマネージャーは、少し特殊
- 一人だと寂しくて死んでしまう → 声を上げても1人だと声が弱い
- 飽きっぽい。運用を誰かに押し付ける → 餌を与え続ける「変えていいよ」
- 優先度<興味 → さらにレベルが高いと、興味があるものをやりたいがために今のことを早く終わらせるので、大丈夫
- 朝遅く夜遅い → 相談したいときにいつ来るかわからない
- KY → 仕事には影響しないから、まあいい
- どうマネージメントするか
- 「任せる」 → 10人以上のチームになったところで、コードを書くのをやめた
- サービスの作成に専念できる
- 人が成長する
- 任せると丸投げは違う。失敗をリカバリするプランまで見越しておく
- 悪いニュースは、先に
- TMTOWTDI → 多様性を許容する
- 「Being Geek」O REILLY' → マネージャーになる上でいい本
- マネージャーは優秀なエンジニアがなるべき
- 選択肢として、マネージャーを考えて欲しい
- マネージャーが少ない会社は少ない
- I ♡ PERL
- エンジニアとして成長できる
- マネージャーとなれば人脈と鳴る
- 若い人には、積極的にコミュニティに参加して欲しい
- (テキーラで〆)
牧さん「Closing」
- 結果発表!
- 3位 徳丸 浩さん「Webアプリでパスワード保護はどこまでやればいいか」
- (未カウント)闇のEmail伝説、Carton、Perl 5.16 and beyond
- 2位 TAKESAKOさん「Perlで無理ゲーム攻略」
- 1位 FUJIWARA Shunichiroさん「Perlで構築された中規模サイトのDC引っ越し記録」
- 抽選 → 1369
- 記録破りのYAPC
- 30社 (前は20社最高)
- スタッフ42人 (前は30人以下)
- トーク71 (前は40~50)
- 個人スポンサー91名
- 672(去年は518)
- 今年のテーマは進化
- よかった偶然
- スペシャルゲストが揃った
- 941さん
- スタッフ
- 来年はどうする? → 来年はどうなるのか不明
- やってみたい人は連絡を
- ブログを書くまでがYAPCです!
- See you next time!
[レポート][perl][perl+web][yapcasia]今日はYAPC::Asia Tokyo 2011の1日目です
10月 14th
YAPC::Asiaの季節がやってまいりました。昨日は寝込んでいましたが、今日は朝から出席します。場所は東京工業大学大岡山キャンパスです。
なお、今年もgihyo.jpさんの特集のレポーターをやってます。会場の熱気を伝えられるよう、頑張ります。
なお、機材トラブルの影響で、開始時間は10:40となる見込みです。
(追記: なんか今日は英語のセッションばっか聞いてたので、メモの内容はあんま正確じゃないです。もしも内容をあてにしている方がいらしたら、ごめんなさい!)
941さん「Opening」
- 会場の照明がLED電球になった!
- プロジェクタ12万で手配したけど無駄になった→機材トラブルで使うことになった
- 新たな試み
- 遠方からの参加者支援 → SKYARC Systemさんに拍手
- 個人スポンサー → 90名
- スイーツエリア → 交流の場
- Jesse Vincent さんの旅費は、個人スポンサーでまかなわれている
- 例年の1.5倍のトーク応募数 → 濃密なトーク満載
- スポンサーの方は「talk to me!」と書かれたシールを貼っている → 人事権とかある人なので話しかけてね
- Sweets Areaのコーヒーはエクセルシオールのコーヒー
- 投票は → 2票/日。商品は椅子。
- タグは#yapcasia
- 会場が1日目と2日目で変更するので注意
- 懇親会無料! mixiさんとDeNAさん
Jesse Vincentさん「Perl 5.16 and beyond」
- Perl5のPumpking
- Pumpkingとは?
- 決断をする人
- 仕事を依頼する人
- 文書を書く人
- メンター
- Perlを実際に作るのは、他の皆さん。"You make Perl"
- PerlのRule
- 1: Larry が全て正しい
- 2: Larry が考えを変えても
- Larryだけではない
- 1. Perlはいつでも正しい
- 2. Perl が考えを変えても・・・?
- Perl5の今後は?
- 正規表現はよりcrazyになった
- スマートマッチはサイコマッチと呼ぶべき
- 以前のPerl5は、ビジョンはあってもリリースできなかった
- 今の最新版は5.14.2
- リリースの準備は昔は3週間かかったが、今は1日以下
- リリースエンジニアがいる(新しいコミッタが担当)
- リリースが簡単になったことで、ビジョンを話せるようになった
- 既存のソフトウェアはなるべく動くようにすべき
- しかし、成長をとめてはいけない
- 成長過程では誤ることもある
- 肥大化したランタイムを小さくしたい
- Perl5はPerl5で書けるようになるべき
- use v5.14 → 「5.14.0 より新しいPerlならなんでもいいです」
- use v5.16 → 「5.16 のように動いて下さい」
- 5.16より新しい機能は動かないようにする
- 機能の廃止のサイクル
- 5.16.0 で警告が出たら、5.18.0で除かれる → 1年単位
- 短すぎる。
- モジュールについても同じ
- コアにしか依存しないモジュールを書いている人が困る
- Perlは多きい言語 → 管理が大変
- 言語習得のコストも大きい
- Perlを小さくするには?
- CPANのコミュニティーはすごい
- 言語レベルで提供する必要がないものがある
- Socket, Unix user/group, network, format, smartmatch など
- Perl 5.18, Perl 5.20 でも、5.16のコードは壊れないようにする
- 新機能については慎重になる
- 内部的、意味論的におかしい部分を正す
- use v5.12 をすると、use strict になる → 今後はuse warningsも
- 1,2引数のopen はなくす
- 「'」というパッケージ区切りもなくす
- utf8のデフォルトか、オブジェクトシステムの導入
- Perlを単純なものにする
- ユーザにとって嬉しい
- 実装者にとって嬉しい
- Perlはどこでも動く
- ハード、OSだけでなく、VM、ブラウザ、Phone
- 仕様がないので、他のプラットフォームで作れない
- Perl5 を解釈できるのはPerlだけ
- Perl5 の再実装ができるようにしておく必要がある
- 「個人スポンサーの皆さんに感謝します」
- 言語の名前はPerl5で、Perl6は妹
- Perl5を別の名前にしたかったら、テストケースが通る提案を送ってね!
Tatsuhiko Miyagawaさん「Carton: CPAN dependencies manager」
- Managing CPAN Dependencies
- ケーススタディ : CPANアプリを使ったWEBアプリを作る
- 開発して動いた! → デプロイする(エラーが出るので、CPANモジュールは手でいれる)--数週間後、WEBサーバを追加
- フレームワークのバージョンが変わっていて動かない
- Backpanから落とさなければならない。他の依存も合わないかも
- 問題点
- 依存するモジュールが明記されてない
- Perlのバージョンも違うかも
- 解決方法 → MyCPAN, DPAN, CPAN::Mini::Inject, OrePAN, Shipwright
- 気に入らなかったので自分で書いた
- Ruby の Bundler にインスパイアを受けたもの
- ローカルのPerlライブラリ環境を使う
- 安全、高速
- 依存ツリーの分析
- 全モジュールのバージョンを固定できる → 簡単に再配備できる
- 1つのjsonファイルに登録 → バージョン管理システムと相性がよい
- デモ
- Dancerでアプリを作る
- git initしておく
- carton install → local という名前のディレクトリへインストールされる
- carton.lock へ情報を記録
- carton list → モジュールの一覧を表示
- carton tree → モジュールの依存を表示
- carton exec perl ... → local のライブラリのみでperlを実行する
- carton check → Makefile.PL の記述を調べてくれる
- carton install --deployment → デプロイ先で構成を復元する
- 注意: まだ1.0
- エッヂケースでCarton側だけで解決できない問題がある
- 途中のモジュールだけのアップロードがまだ
- ロックファイルの仕様も変える予定
- 質疑応答
- Q. CPANから消えてたらどうするの?
- A. BackPAN を見ている。tarボールを保存するようにもしたい
Naoya Itoさん「Perlプログラマのためのスマートフォン開発ガイド」
- 最近facebookとスマートフォンサイトとスマートフォンアプリの構造が近づいている
- WebViewを使っているため
- HTML5をネイティブで補う or ネイティブをWEB技術で補う
- PhoneGap
- HTML + JS でアプリを作る
- UIKit の制御はキックできない
- UIWebViewは遅いので注意が必要
- TitaniumMobile
- CoffeeScript や CommonJS を使える
- JSでネイティブアプリを書く
- ネイティブの速度にはかなわない
- SL4A
- use Android
- JavaアプリのAPIとJSON-RPCで通信するもの
- おもちゃ
- まとめ:Perlでクライアントサイドは、さすがにきつい
- Perl VS Node.js
- サーバもクライアントサイドもJSという流れは止められない
- Node.js → シングルプロセスでイベントドリブン
- Perlでできないことをやるわけではない
- 手軽
- search.npmjs.org
- require 'underscore'
- WAF → Express
- テスト → vows
- 他, xml2js, aws-lib
- Socket.IO → WebSocket-like の API を提供する
- pocketio → Plackのアプリ
- Perlの莫大な資産を生かしつつ、JSと共存させたい
Marc Lehmannさん「AnyEvent, Coro, IO::AIO」
- アニメのダウンロードサイト
- Apache, boa, thttpd を試したが、満足できなかった
- myhttpd を作った
- Event, Coro, IO::AIO, AnyEvent + EV
- readaheadがボトルネック
- なぜCoroが必要か
- Inversion of Control のため (ネストが深くなるのを防ぐ)
- rouse_cb と rouse_wait
- Coro::Channel によるスレッドプール
- Coro::Debug によるデバグ
- 「Coro はPerlの唯一のスレッド」
- ithreadはオーバーヘッドが大きく、スケールしない
- スレッドは1CPUのために設計されている
- 自動的に同期がとられるし、スケールする
- スクリプト言語でのスレッドとは?
- 資源全てを共有するということは、資源全てにロックが必要だということ
- この問題は解決されていない。RubyもPythonも並列ではない
- IO::AIO → POSIX のラッパー。現在はさらに複雑なものも実装している
- Coro::AIO → IO::AIをCoroで使えるようにする
- AE → タイピング量を減らした
- AE_DEBUG_WRAP、AE_DEBUG_SHELL によるデバッグ
Kang-min Liuさん「perlbrew」
- perlをアップグレードすると@INCはドンドン長くなる
- 後方互換があるので、たいていはアップグレードしても動く
- XSはコンパイルが必要
- cpanでアップグレードすると最新のバージョンになる
- エラーはruntimeに起きる
- Perlを先にupdateする必要があり、トラブっても戻すのは難しい
- perlbrew
- Rubyのrvmみたいなの
- perlbrew install, use, switch, off
- perlbrew lib → CPANモジュールだけが違うものが作れる
- bin, site_lib, local::lib が導入される。
- @INCは各perlで独立する
- メリット
- 古いバージョンのモジュールを試せる
- 新しいバージョンのPerlを試せる
- モジュールを様々なバージョンのperlでテストできる
- perlのコンパイルオプションを変えてテストできる
- 今後の展望
- External perlへのuse/switchをやめる
- コミュニティーを発展させる
- シンプルにする
Ricardo Signesさん「Perl 5.14 For Pragmatists」
- 5.10はEndOfLife → セキュリティfixの保証は3年
- 5.14 は後方互換。新しい振る舞いが追加されている。
- 一部はfeature.pmで提供されるが、5.14ではない
- 5.12でDeprecatedとなっていたモジュールは、削除された → CPANから入れてね
- Class::ISA、Pod::Plainer、Switch
- Deprecatedとなるもの
- Devel::DProf、bigrat.pl, ftp.pl, Perl4CoreLibsなど
- s///r → 置換結果をreturnする
- /l → ローカルルールでのマッチ、/u → Unicodeルールでのマッチ、/a → Unicode ルールなんだけどASCIIのみ、/aa → さらにnon-asciiにマッチしない、/d → デフォルトルール
- use re '/aa'
- 「もっともっとUTF-8のことを学ぼう」
- PerlはUnicodeをとてもよく扱えている
- eachがarray-refに使える → 配列にeachは使わないこと
- package ブロック
- IO::Fileをuseしなくてよくなった
- $@の評価順が変わった
- IPv6サポート
Marc Lehmannさん「App::staticperl」
- staticperl → モジュールを1つのバイナリに詰める
- staticperl instcpan EV
- staticperl mkperl -MEV -MAnyEvent → バイナリができる
- --usepacklists で依存モジュールも含まれる
- バイナリ1つを配るだけで動くので配布が楽
- mkapp にて、スクリプトをひとつのバイナリにできる
- CDブートでperlを走らせることもできる
- need_perl() → perlが初期化されてなければ初期化をして、XSを呼べる状態にする
- 今のとこWindowsでは動かない → 不可能ではないはず
- PPIはホワイトスペースの削除のために入っている
- XSを静的リンクするにはPerlのバイナリを作り直す必要がある → 1回ずつ作り直すのをコツコツ続ける
- 色々パッチをあてて作り直す
Lightning Talks
makamakaさん「Perl同人活動」
- 「Acme大全2011」 → 2011/7/7 時点の全てのAcmeモジュール
- 用語集が詳しくなった
- 逆引き時点もついた
- さあ、どうでしょう ≒ 3rd edition
- 売れないと印刷代が・・・
- 「ぱあるもじゅるの失笑目録(読んでクスッ)」
- ボクと握メ
- 「Perl Mongerなりきりカードゲーム」
- 「ぱあるPlackの超散弾銃(ショットガン)」
tokuhiromさん「Amon2 3.0」
- Amon2 とは
- WEBアプリケーションフレームワーク
- ぼくのかんがえたさいきょうのふれーむわーく
- flavorが大きく変わった
- ブートストラップの時間を短くする
- 仕事にはLargeFlavorがちょうどよい
- MobileJPフレーバーで日本のモバイル対応
- ::Auth
- SNSに対応した認証 Facebook, Twitter, github, ロケタッチ
- すごくイイカンジになっているので使って下さい!
hakobeさん「Enhance Anime wathing with programing」
- アニメをTwitterで実況したい
- しょぼいカレンダー
- アニメの完璧な情報
- 豊富なAPI
- リクエストとパースの回数が多くめんどうくさい
- WebService::SyoboiCalendar
- syoboirepl
- アニメを見ている人は、ターミナルを開きながら見ているはず
- デモ:現在放送中のアニメ。キャストまで見れる
- 関東と関西の最速アニメの比較
株式会社カヤックさん
- 元PHP、Perlに入門、今JS
- 「クイズ好きですか?」「平日にYAPCに来るくらいですから」
- ランキングがあると燃える
- ISCON優勝者もいる
- Perlのクイズを作ってランキングをすると燃えますよね
- 「Perl道場」を先ほどリリース
- perldojo.org
- サイトから問題に挑戦できる
- github経由で問題を出題できる
Yappoさん「App::Ikachan」
- 優秀なエンジニアならIRCを使っているはず
- ikachan
- AnyEventベースのIRCボットフレームワーク
- ikachan -S サーバ名
- WEB API経由で、IRCの操作ができる
- 明日のLTに続く(ゴーン、時間切れ)
Kenichi Ishigakiさん「Let's play games」
- Games::Dice
- Games::Sokoban (Lehmannさん)
- パーサ。ゲームはできない
- 倉庫番ゲームを作った
- Games::Sokoban を使い、WEB上に落ちているデータを利用できる
Eikichi Gotohさん「仙台で1年間PMをやってみた」
- Sendai.pm が登録されました
- 昨年のPMグループディスカッションに触発された
- Sendai.pm #1 → 7名
- id:naoyaさん公認、id:typesterさん公認、@sugyanさんおすすめ
- Sendai.pm #2 → 10名
- コンセプト「仙台でperlの話を思いっきりできる場所」
SKYARC Systemsさん「北海道のIT勉強会事情の紹介」
- 北海道に転職しても大丈夫だよという話
- スカイアークシステム
- MTでの開発。帯広、東京、札幌に拠点。
- 遠方の参加支援
- スイーツエリアにうまい棒を設置
- ゴールドスポンサー
- 北海道でもIT勉強会はある
- 土曜日が多い
- 言語はほとんどある
- ただし、札幌開催がほとんど
- 北海道でミニYAPCを開催したい
issmさん「ようやく始まりましたNagoya.pm」
- Nagoya.pm #1
- 県外からも参加者がいた
- Perlを使っている会社が見当たらない
- 名古屋はミソだけではないので、Nagoya.pm #2には安心してお越し下さい
Mayumi Takahashiさん「Perlが決めるwebの未来」
- Movable Typeは10/8で10歳
- スポンサー企業ですが、個人で来てます(社長にも言ってない)
- Perlは先週から始めた
- iPhone4S にはジョブズ氏の魂が宿っている(by 虚構新聞)
- Perlで実装したiSteaveのデモ
- 音声での質問に答える
- Twitterとの連携機能をライブコーディング
- コードはgithubに上がっている(YAPCが終わり次第削除予定)
karupaneruraさん「アクセサについての考察」
- アクセサの利点
- typoしたらわかる、readonlyにできる、型制約できる
- アクセサの問題
- 速度
- 直接キーを触られたら意味がない
- Class::VirtualAccessor
- キーへのアクセス時に、制約をかける
- githubで解説中
- オチは(ゴーン、時間切れ)
turuginaさん「日常業務にperlを使おう」
- 日常業務をperlを使ってなんとかしたい
- 勤怠管理をPerlでなんとかしたい
- lwp-request で、勤怠管理システムへGETリクエストを投げる
- さらにPOSTでリクエストを投げる
- Basic認証を超える
- WWW::Mechanize でフォームからログイン
- FlashとかをWin32::GuiTestで
株式会社 リクルートさん「Mashup Awards 7」
- 今年で7回目。日本最大級の開発コンテスト
- 協賛63社
- 賞は80以上 → 1人7作品応募すれば、多分受賞できる
- MUP48 のメンバー募集(現在30名)
- 現在90作品。男性比率99.7%。Perlは6人。
- 締め切り直前の36時間耐久ハッカソンもやるので応募してね!
岡部恵一さん「登録題5314384号商標 厳密というより分かりやすく解説」
- dankogaiさんが召還されたのが始まり
- TPFに連絡した
- MatzさんがRubyは異議申し立てすることを表明
- Perlは商標がとれていないし、とれないと思っていたが取れた人が出たってことが判明
- 異議申し立ての話は、公共の場で話すことはできなかったので、今日が初公開
- (ゴーン、時間切れ)「無視!」
- JPAはプロジェクト、コミュニティ、ビジネスのサポートをするところ。今後も邪魔をする勢力は実力で排除する
keroyonn_さん「Perlで次世代ゲーム開発」
- 最近、スマフォのゲーム開発がすごいことになっている
- Games::ByLike::EightBeat
- CUIゲーム、ファミコンに立ち戻る
- デモ
- Putty から起動
- 「Pelerdius」
- セガサターンのコントローラーで操作
- (ゴーン、時間切れ)
Kosuke Arisawaさん「ぼくたちのPerl Module管理」
- RPMで管理していた
- いろんなプロダクトがあるのでバージョンを挙げにくい
- perlbrew + darkpan + Orepan
- pfperl というラッパーを作っている
- モジュールの管理や、スクリプトの起動など
nekokakさん「not ORM - for @kamipo」
- DBIx::Skinny
- 北海道の人には公表
- @kamipoさんには会う度にDISられる
- row object、relation manager は不要
- DBIx::TransactionManager, DBIx::Handler, SQL::Object
- DBIには便利なAPIが多い
- SQL::Object → プレースフォルダやinの管理
- 普通の環境ではDBIx::SkinnyやTengが有用なので、ケースバイケースで
tagomorisさん「ISUCONやった話 by livedoor」
- ISUCONとは?
- Webアプリケーションの高速化コンテスト。基本的に何でもあり
- 10時間で満員御礼
- Perl、Ruby、Node.js の3種を用意した
- しかし、全チームPerlを利用
- 優勝はfujiwara組。10 req/sec → 1,500 req/sec
- コードやデータはlivedoor のtechblogにある
- ISUCON2は・・・?
- 準備が大変なので・・・
- (会場から拍手)
[yapcasia]勉強会をメモして公開するということ
10月 17th
@yappoさんがいいことを言っていたので、思うとこを書いておきます。
あのレポートのクオリティは相当なものだけど、あなたがYAPCに参加して何を思ったのかまではレポートされていない、なぜならそっれはあなたにしか表現できないから
勉強会のメモは、読むことより書くことに意義があります。勉強会の内容を写経すれば、ただ漠然と聞くよりも内容が頭に入りやすくなります。人が書いたメモを読むだけでは、この効果は得られません。このブログのエントリのようなただ書きなぐっただけの内容を読むのであれば、なおさらです:p セッション内でスライドに映されたモジュール名を自分の手でタイプすると、そのことによって記憶が助けられ、いざというときにモジュールの存在を思い出すことができるようになります。また、終わった後に感想文を書くだけでも、見て来た内容を改めて整理することができ、知識として吸収しやすくなります。
書いたメモは、ブログに載せるには最高のネタです。ソースコードだと、ある程度面白みのある内容でなければネタにはなりにくいですが、イベントのメモは特に労せずともそれだけでネタになってくれます。ブログを書く大切さは、@yusukebeさんがYAPC Asia 2010の最終日のLTで述べた通り。エンジニアにとってブログは名刺の代わりに使えるコミュニケーションツールであり、「ああ、あのブログ見たことあります」とそれだけで初めての人とも話すことができます。
このように、メモを書いて公開することで、学習効果とコミュニケーションの手助けという効果の2つの効果が同時に得られます。他の人が読んでも楽しくないんじゃないかとか、誰かがすでに書いてしまっているんじゃないかとか、そういうことはまったく気にする必要はありません。メモを書いて公開するのは、自分のためにすることです。他人のためにすることではありません。
このブログでやってる実況レポートも、元は「イベントで寝たらもったいないから、手を動かして寝ないようにする」という考えがきっかけで初めています。読んだ人々から評価をもらえることはありがたいですが、それ以上に、手を動かすことで「これらのメモの内容が自分の頭に入る」というのが続けている一番大きな理由です。また、ブログでのアウトプットを続けているお陰で、懇親会でコミュニケーションをとるときのネタにも使えるようになりました。
YAPC Asia 2010に参加された皆さんも、手元にメモがありましたらぜひそのまま公開してみて下さい。感想を持ちましたら、どんどん公開して下さい。ブログはエンジニアにとって名刺になります。有効活用して、色々な人々とコミュニケーションをとるといいと思います。
[yapcasia]今年のYAPCも楽しかった
10月 16th
今年も怒濤の三日間が終わりましたので、感想を書いておこうと思います。
まず、スタッフとスピーカーのみなさんは本当にお疲れ様でした。お陰で今年も目一杯YAPCを楽しむことができました。素晴らしい三日間でした。
今回、個人的に一番印象深かったのは、charsbarさんが「ある連載の舞台裏 - History tells us ...」のトークで最初にアナウンスしたひとこと。「20分後*1に地方.pmのセッションがあるので、地方からいらしている方を優先して応援しにいってあげて下さい。」 同じ道産子として、とても嬉しい一言でした*2。トークの内容も、Perlを大切に考えていることが伝わる素晴らしい内容でした。
Jesseさんの話もmiyagawaさんの話もそうですが、今回のYAPCはコミュニティの温かさを感じるシーンが多かった気がします。いいYAPCでした。
他、箇条書きではありますが、気になったトークの一覧です。
- Larry Wallさん「That Goes Without Saying (or Does It?)」
- 日本の参加者を楽しませようとしてくれる、その温かさに感激
- 峰松 浩樹さん「基幹システムがperlでどうしてこうなった」
- 長崎でこんなディープなことをされているそのパワーに驚くばかり。うらやましい。
- Karen Pauleyさん「10 Things to Do with a conference T-shirt」
- PCに向かうだけがハックじゃない。技術者にも見習うべき点は多い。
- TAKESAKOさん「all your base16 are belong to us.」
- これだけ毎回聞いてもまだ楽しい、不動のLT王
- Kaoさん「AnyMQ, Hippie and the real-time web」
- これは触れてみたい
- Yappoさん「Ajax Application Testing」
- これはぜひ使ってみたい
- Jesseさん「Perl5 is Alive!」
- 実際に行動して物事を成し遂げた人の話は説得力がある
- xaicronさん「let's database testing!!」
- これはぜひ参考にしたい
- yusukebeさん「Facebookを流行らせたのはボクです」
- 技術者はブログを書くべき、に同意
- miyagawaさん「The Tale of Plack」
- たくさんの写真がmiyagawaさんの築いたものを物語っていた
最後に、今年もレポートを好き勝手にやらせて頂いたgihyo.jpさん、本当にありがとうございました!
[perl][yapcasia]今日はYAPC::Asia Tokyo 2010の最終日です
10月 16th
今日はYAPCの2日目です。昨日と同様に、gihyo.jpさんの特集にもレポートを掲載しますので、完成をお楽しみに!
Chia-liang Kaoさん「AnyMQ, Hippie and the real-time web」
電車遅延のため、開始が10分遅れるそうです。
- Plack/PSGI → アロンアルファ
- Streaming Interface がある
- CGI.pm は使うべきでない
- AnyEvent
- 様々なイベントループのサポート
- POEは面倒
- AnyMQ - Tatsumaki::MessageQueueをインスパイア
- Mooseを利用
- topicを作り、 new_listener でリスナを作り、pollで監視。publishで発火。
- キューバインディングを増やしてくれる人募集
- Comet
- 色々なとこで使われている
- 色んなハックで成り立っている → MXHR, iframe, スピナー, 接続数制限
- WebSocket
- ws://とかwss://とか
- Upgrade: WebSocket などのヘッダを追加して実現
- \x{00} \x{ff} で囲む
- Origin と Sec-WebSocket-Origin ヘッダ
- Web::Hippie
- Commetはロンゲの彗星、Hippieもロンゲ
- 永続接続を抽象化 → $env の hippie.args, hippie.handle
- ミドルウェア enable "+Web::Hippie"
- psgi.nonblocking インタフェースサポートがあるサーバを使わなければならない
- Web::Hippie::Pipe
- 双方向通信の抽象化 (MXHR, poll, Websocket, AnyMQ)
- これもミドルウェア(bus として AnyMQを指定)
- $env に hippie.listener, hippie.bus hippie.message のサポート
- JS側でもnew Hippie.Pipeをして、メッセージを受け取る
- デモ → 株価とチャット
Yappoさん「Ajax Application Testing」
- FICIA → Flash を使っていない写真共有サービス
- 既存のツール → JSUnit, Selenium, QUnit, Test::QUnit
- Test::QUnit はやりたいことに近い → MozReplだとIEで動く?
- QUnit-TAP : @t_wada さんの実装
- JSTAPd
- JavaScriptエンジンを通す、Ajaxコードのテスト、CLI(make test)
- Ajaxアプリテストツール、Tap対応、JSDeferred-ish
- モックアップを*.tに書ける
- テストサーバup、ブラウザ立ち上げ、テスト実行、ブラウザ終了(Fxは無理)
- ユーザが利用する可能性のある
- インストールはcpanmかgithubから
- 使い方
- jstapd -n プロジェクト名 で作成、--jstapd -d プロジェクト名 でサーバ起動
- 自動作成されるファイル。
- index はブラウザ用。触らなくてよい
- conf.pl JSTAPdが使うURLの変更、JSのディレクトリのマッピング、CLIの設定
- CLIの設定 → conf.pl 内の auto_open_command または JSTAP_AUTO_OPEN_COMMAND 環境変数
- 01_base.t
- includeがテスト対象、include_exはライブラリ
- 01_base.js テストコード
- 01_base.html テスト用html
- テストコードの記法
- Test::More-ish
- tap$ で jQueryのようにDOMがとれる
- jQueryプラグイン → is_likeやis_text、is_visible。
- include_ex に \'jquery-jstapd.js' (リファレンス)を渡す
- テストケースを増やす
- .tを増やし、 JSTAPd::Suiteをuse, tests {...} を指定
- .jsと.htmlも追加するとよい
- Ajaxのテスト
- JSDeferred 的な記法 → jstapDeferred
- wait, next は JSDeferred と同様
- 非同期となるため、jstapDeferredを使わないとすぐテストが終了してしまう
- pop_request で$.ajax 時のwaitが可能
- .tファイルには、server_api関数。戻り値はJSONとしてブラウザに戻る
- Makefile.PL → prove -vr で代用できる
- JSTAPdの実装
- Twiggy → テストが終わるまでlong polling
- 今後 → 他言語でのサーバ実装、開発者募集
- おまけ(時間がないのでまとめだけ) → 必要なデータだけを処理、ユーザ操作の邪魔にならないように
- 質疑応答
- Q. Ajaxじゃない部分のテストは?
- A. 普通に書けばいい。Ajax以外の部分も書きやすくなっている
- Q. ブラウザを複数試したければ?
- A. 環境変数を切り替える
Jesse Vincentさん「Perl5 is Alive!」
- @obra にtweetしましょう
- パンプキンとは? → 後で
- Perl5は16歳
- Perlは死んだっていうひとは、時代についていけてない
- CPANは今でも活発 → Moose, Plack, cpanm, AnyEvent, Devel::NYTProf
- 5.12.0をリリースするのは恐かった → 今ではPerlの安定板は 5.12.0
- Perl6は? → 別の言語。7/29にrakudo.orgがリリース済
- これからは Perl6 の時代でも Perl5 の時代でもある
- 5、6はバージョンではない。別の言語。6は妹。
- 作者はどちらもLarry Wall氏だが、Larry氏の脳のバージョンが違う
- 5.12系のいいことは?
- 5.10系の昨日を安心して使える
- use 5.12.0 で自動でuse strict
- package Foo::Bar 1.0;
- 2038年問題対応
- Unicode 5.2
- Pluggable Keywords
- Overridable Function Lookup
- Dtraceサポート
- コアからのモジュールの削除 → Class::ISA, Pod::Plainer, Shell, Switch (CPANにはすべてある)
- やだやだオペレータ
- pumpking → Pumpkin King, Patch pumpking
- 変なパッチを当てない、リリースをきちんとする
- 5.10系には5年がかかり、二人のpumpkingが変わっている
- 5.10.1はメンテナンスリリースだが、大量の修正があった(2,800 commits)
- →とてもメンテナンスじゃない
- pumpking を燃え尽きさせてはいけない
- 現在は @obra さん
- 今までのpumpkingはPerlを愛する、強烈な責任感を持つCハッカー
- Larry以降、2つ以上のメジャーバージョンのpumkingをやっている人はいない
- 「このシステムには問題がある」 → スクラッチから作り直す (Perl6)
- リファクタリングをする
- @obraさんは、Cハッカーではない → 誰かにお願いする
- Patch の適用 → 誰かにお願いする
- Release → 誰かにお願いする
- Language Designer → 一部をやる
- 好みの調停、論争の解決、人事、PM → @obraさんがやる
- 5.10に比べて、5.12以降の開発は非常にスムーズ。毎月20日前後にマイナーバージョンを出す
- 手順の明文化 → 今では、開発版は数時間でリリースできる
- pumpkingがリリースする必要はない
- メンテナンス版のポリシー
- 昔はなるべく多くの機能を入れていた → なるべく機能を入れない(不具合修正のみ)
- 5.12.1, 5.12.2 ではbugfixしかしていない。3ヶ月置きに出している。
- 2011-04-20 には、5.14系 が出る。
- ASTラウンドとリップの改善をしたい
- CPANモジュールインストールを簡単にしたい
- 他、HTTP Client, IPv6, SSL なども欲しい → パッチを送って
- perl5.12の試し方 → perlbrew
- 質問
- Q. unicode6はサポートするか?
- A. サポートしたいが、今のPerl実装と互換性に問題がある
- Q. 早いリリースはいいが、パッケージングされているバージョンの対応は?
- A. 10月のUbuntuには新しいバージョンは載るのでは。最新が載らなくても新しめなものを載せたい。大きいサイトではいきなりバージョンアップするのは進めない
- Q. JSON::PP がコアに入る。JSON::XS がなぜコアモジュールではないのか
- A. コアには最低限なものだけが入るべき。PPが安定しているので十分。
Kenichi Ishigakiさん「ある連載の舞台裏 - History tells us ...」
- 次の原稿はまだできていない(!)
- 「なぜ連載スタイルを変えないのか」
- 連載が始まった経緯 → Mojoliciousの連載
- モダンPerl連載の誘い → 条件: 隔週連載、数ヶ月
- 「モダン」の定義では? → 21世紀に産まれたもの。
- 古いPerlを打ち切るためのbuzz word → our, use warnings, Unicode
- 先進的な人は、5.6.xや5.8.x も捨てたい → 5.10も選択肢
- いいPerlを使って欲しい。更新をして欲しい
- コミュニティに注目している → Larry氏の言葉「Perl6はコミュニティに作って欲しい」
- modernism(ギークのため?機能美)とpostmodernism(スーツのため?)
- モダンPerlは、流行って意味だけではない
- strawbery perl → Perlを普及させるならWindowsは大事
- 取り上げたかったもの → Moose, Rakudo, Sub::*, Devel::*, Catalyst
- 動向が早過ぎるので、落ち着いてから
- 隔週 → 最新の情報を配布するには遅い(早いメディアの例: tokuhirom氏のブログ)
- 陳腐化しない内容
- 読者層 → ギークは飽きっぽい
- No Moose, no Catalyst, no DBIC
- YAPC::NA では、上の三つを扱っている。日本はいい意味で飽きっぽい
- ギーク向けにすると寿命が短くなる
- How Toをやるには人的リソースに限りがある
- WEB+DB PressやSoftware Designなどの雑誌や書籍に任せる
- perl-users.jp や perl-mongers.org
- 日本人が関与するものは改めて紹介は不要
- モダンPerlは「ビジネスツール」
- Perlは赤ちゃん言葉から大人の言葉まで話せる
- 仕事を終わらせる、仕事を得るツール
- やるべきこと → 偏見を無くす「遅い、醜い」
- history.perl.org - Perl Timeline
- perlには4つの時代がある
- 「Perl/CGI、Windows、PHP」の時代の人々は、今ある程度のポストにある
- →彼らに好かれないとPerlは使われない
- メインターゲットは、これらの人々。
- 「10年前」がテーマ
- いいことも悪いことも書く
- どのようにネタを仕入れているのか
- 20年の歴史。インタネットが始まったばかりの時代から。
- Googleはあまり使いたくない(正しい情報かが疑問)
- CPANから探すのがよい
- CPANのインデックスファイル → authors/00shois.xmlなど
- 検索サイトは、 search.cpan.org が有名
- search.cpan.org/dist/Foo-Bar, search.cpan.org/perldoc?Foo::Bar
- 「CHANGES」を初めに見る → 登場した日がわかる。最新更新日が古ければ使われてない。開きが大きい時期はメンテナが変わってるかも
- モジュールができた年代に、モジュールができた理由がある
- CHANGESにない場合 → MANIFESTを見る
- MANIFESTからテストの中身をそのまま見られる
- その他、AUTHORSやSYNONIPS
- CPANになければ・・・BackPANも利用
- さらに、ソース, DIFF, CPANTSも情報
- モジュールの情報が集まったら → ソース, Wikipedia, 過去のYAPC
- perlfoundation でお金の流れから注視しているとこがわかる
- ほか、youtubeやスライド、各プロジェクトのサイト(noc.perl.orgにも情報有り)
- www.perl.org/community.html
- lists.perl.org MLの一覧 → ただし、GMANE, MarkMailの方が見やすい
- IRCのログ irc.perl.org にチャネルがある → ただし、secretのチャネルもある。ブログに張り付けたりするのはマナー違反
- www.perl.comの記事 → 編集者さんのついている記事
- 雑誌類 → Perl Review, $foo(de)
- Advent calendar や use.perl.org(→ blogs.perl.org)
- これらは一部で、他にもたくさん読んでいる。1つの記事に1〜2日、1週間以上かかる
- 歴史を調べてると、色々なことがわかる → the futureやa future。
- 記事を読んで、今のPerlの姿を見て欲しい。
xaicronさん「let's database testing!!」
- DBのテスト → insert, update, trigger などの事故を未然に防げる
- 今日の話は、MySQL(ORMの話はなし。自社ではDBIをそのまま使うことが多いため)
- 鉄則 → ローカルでテストできること
- ステージング環境や自分PCで立ち上げっぱなしのDB → 毎回結果が変わるのでNG
- SQLiteはNG → 環境が違って意味がない
- Test::mysqld (@kazuhoさん作)
- mysqldの自動起動、終了。$mysqld->dsn で接続情報がもらえるのでそこにつなぐ
- デモ
- Text::Fixture::DBI を使ってデータ投入
- テーブル作成、triger や procedure、既存のDBからschema定義の取得など。YAML出力も。
- デモ
- これらを直接使うのは面倒。テスト用モジュールを作るのがオススメ。
- DBIと親和性が高いモジュール
- SQL::Abstract (SALの抽象化)
- DBIx::DBHResolver (複数のDBの切り替え)
- DBIx::Connector (DBハンドルの局所化、fixupによる再接続、トランザクション)
- テストの流れ
- mysqldを立ち上げ、 fixtureでデータを入れ、値を取得してそれが正しいかをチェック
- fixtureには接続情報を渡し、yamlで初期化
- Test::mysqldの問題点 → make test が遅い
- Maketestの変更にて対応可能 → Module::Install::ExtendsMakeTest を使うと簡単
- → replace_default_make_test がMakefile.PLから使えるようになる
- 高速化!
Dan Kogaiさん「use LLEval;」
- x86を話す予定だったが、カジュアルな内容に変更
- LLEvalは23言語のサポート(実際は26言語)
- 実は適当につけた名前だが、確定してしまった
- iPadは便利だが、Perlがない。なぜ? → Jobs「stay foolish!」
- LLEval経由なら動く → RMSの例
- デモ → LWP::Simpleを使う例
- 「1 while 1」 → 1秒後に終了する
- perl6のデモ -> 約3秒。Perl6だけ4秒ルールとなっている
- Haskell, JS, POST SCRIPT, Python, BF, iota, のデモ
- JS はspider monkeyを使っているが、 ary.reduce はデフォルトでは入ってない
- Mathmatica はLLEvalでは非対応。
- 「fork while 1」 システムコールは禁止
- LLEvalはライブドアの研究用のサーバで動いている
- LLEvalはMASHUP AWARDS 6の対象となっている
- 質疑応答
- Q. x86は?
- A. コメントアウトすればすぐ。セキュリティ的にちょっと恐かっただけ
- Q. 出力はSTDOUTのみ?
- A. 今はSTDOUTとSTDERR。他の出力方法もサポートしたい。
Toru Yamaguchiさん「Inside Mobage Platform」
- Open Social Container
- JS API, Gadget XML パースとレンダリング
- 画面、Activityフィード、Gadget管理ツール
- 用語
- Container(SNS本体)
- Gadget Server(Sindig担当)
- JS API(Social DataにアクセスするAPI)
- Core, Social API (JSON-RPCはバックエンド。RESTful APIはモバイル用)
- View: canvas, home, profile, mobile(ガラケー向け。Extension)
- ZOOKEEPERでのcanvasの例
- Apache Shindig とは
- オープンソース実装
- MySpaceは使っていないらしい
- DeNA, mixiはJava、GREEはPHP
- 認証部は自前で結合する必要がある
- JS APIは手直しが必要。RESTful + JSON-RPCのデータ取得部はJavaかPHPで実装が必要
- よくSpec違反がある → Shindigを真とする
- Gadget Parsing, Rendering は仕様が煩雑なので自分で実装しない方がいい
- Applicationは直接外に出れない(XHRの制約)ので、Gadgetサーバに代理してもらう
- 認証 - Security Token or OAuth
- Security Token をJSで使えるコードとして埋め込む
- Shindig::Authen::Java::XXXX のようなクラスを自作 → Javaとも互換性有。そのうち公開
- /social/* のリクエストだけ、リバースプロクシでShindigではなく自前のアプリに送る
- 他、config/container.js の更新、lockedDomain、features以下のJSの修正(Specに忠実になるよう直す)
- SocialAPIの作り方
- Spec準拠、テスト作成、シンプルかつ速く、可読性を高く
- 既存のWAFは不要
- lighttpd → 今ならApacheを使うが、最初のチョイスを利用
- Plack + FastCGI → 今ならStarman/Starletかも?(未検証)
- rpmでCPANモジュールを管理している → 今ならlocal::lib
- Dispatcher → 設定はすべて *.pl 。Router::Simpleの利用。
- Intercepting Filterパターンを利用
- モデル
- APIで必要なロジックの記載。戻り値はFormatterにてArrayRefやHashRefなどに整形
- オブジェクトは利用しない
- Object::Container にすべて突っ込む。fork前にやる(Copy on Write)。Configで制御
- DB, Memcachedへのアクセス
- DBIx::DBHResolver, DBIx::Connector
- SQL::Abstract, DBIx::AbstractSequence(社内)
- 接続情報はマスタとなるmemcachedに集中。Cache::Fileにキャッシュ。
- DBIx::DBHResolver
- オブジェクトとしてもクラスとしても動作
- 各種設定ファイルでの記述(Config::Any)
- DBIサブクラス、DBIx::Connectorでも接続可能
- ShardingしたDBの管理機能(予め分割方法は決めておく。JOINは適材適所)
- resolve_node_keys()
- DBIx::Connector → レキシカルなハンドル、txn + commit
- SQL::Abstract
- JOINやGROUP BY が複雑だと、ヒアドキュメント
- 表現力が足りない部分もある。新しいSQL作成モジュールがあってもいいかも
- Plugin::InsertMulti バルクインサート。ただし、1000件くらいを上限にすべき
- MySQLのパーティショニング → 日時の Range Partitioning が主
- トレードオフ → 意図するUNIQUE KEY制約が必要になったり
- EXPLAIN PARTITIONS でパーティションの選択が見られる
- MySQLのTRIGGER
- アプリケーションを変更しなくても特定の処理が可能 (逆にそれが気持ち悪いかも)
- スキーマ変更時に、トリガーを使って自動で親子関係の日付を入れたりできる
- TRIGGER + Q4M (検証中。古いテーブルにinsertがあった場合に必要なジョブをあげる)
- Worker
- Q4M, Gearman。原則すべてのサーバに同じコンテンツ。
- ラウンドロビンでは負荷分散しきれないことがある
- 最近の事例: Cache::Memcached::Fast に no_wait がなかった
- Q4Mは実績があり、十分信用できる。ただし、初めて経験するような動作も起きるので覚悟は必要
- 質疑応答
- Q. ShindigはJava? JavaからPerlを呼ぶ?
- A. いいえ。JSから呼ばれる口のみ
Lightning Talks
charsbarさん「Top tens of 2009-2010」
- (今年も)輝け全日本最強CPAN選手権
- HIROSEさんがTOP、MORIYAさんが2位。4名新しい人が!
- 他、台湾、ノルウェイ、オーストリア、イスラエル等のトップ10を集計
- 日本は264人(多い。ただし人口比の問題)。オランダ人は0。
- 面積比で考えるとIcelandic
ふしはらかんさん「opts.pm」
- 後夜祭来てね! 以上!!
- えーー(ブーイング)
- opts.pm → コマンドラインオプション
- Getopt::Long はまだまだ使いにくい
- 型、デフォルト値の指定、usage、オブジェクトへの変換
Cornelius (c9s)さん「vim & perl」
- PerlOmni -> Vim の保管
- Perl文法は複雑
- 動的言語。補完が遅い
- VimLは汚い
- クラス名、オブジェクトメソッド等の補完
- AutoComplPopとの組み合わせのデモ
- Moose のAtribute にもスマートに対応
- git から持って来てインストール。Windowsなら @mattn_jp さんのパッチを利用
- CPANモジュールの検索、インストール
- ゴーーン!(時間切れ)
上田智さん「もっとMySQL」
- WAFの目的「小規模」「大規模」
- リソース制限が厳しくなると、3層でやる必要はない
- MySQLだけでいいじゃないか! → HTTP Plugin
- HTTPをリスンするプラグイン
- 今後の目標
- ストアドプロシージャによるO/Rマッパ、キャッシュ機構、UDF-ng (MySQLでPerl(Catalyst)まで動かす)
Koichi Taniguchi (a.k.a. nipotan)さん「There are so many ways to shuffle it」
- 他の人が他の人のコミット履歴を見て説明する
- シャッフルが必要
- rand関数の利用を監視
- MD5を利用
- 可能な組み合わせを対象人数より多く
- Perl6では Z オペレータが可能
- TIME TRIAL → 6題目王者まで紹介
- 毎週使用する文字が禁止されて行く
- Livedoor では shuffleの名人を募集しています!
hakobeさん「ページャ実装マニアックス」
- ページャとは? → Googleとかで検索すればわかる
- 108のページャ実装を紹介
- Hatena::Bookmark::Pager (Data::Pageベース)
- Hatena::Diary::PagerMaker (HTMLを直接生成)
- Hatena::UgoMemo::Pager (データ生成までページャにやらせる)
- app->pager があったりする
- ページャとは → SQL結果、件数、日付、キャッシュ等の要素
- 残り105個
- Hatena::UgoMemo::Pager::Merged (SQLから)
- Hatena::UgoMemo::Pager::ArrayRef (ArrayRefから)
- CachedqueryOffset, Binary, Lite・・・
- ゴーーン!(時間切れ)
Tokuhiro Matsunoさん「液晶が割れたためスライドなしでトーク(仮名)」
- 速いHTTPクライアントが欲しい
- LWPは遅い。特にRPCで欲しい。Curlも遅い。
- WWW::Curlより25%以上速い → もっと速くなるはず
- 日本に色々な能力を持った人がいる → ブラウザが作れる人、ネットワークが強いkazuhoさん、XSのgfxさん、win32担当のmattn_jp, charsbar, xaicronさん
- 日本には素晴らしい能力を持った人が居るので、作りたいものがあったらどんどんハッカー達に伝えよう
Canada, Masakatzさん「岡山.pm。都会.pm。」
- 岡山.pmを主催した
- 岡山とは? → 中国地方、政令指定都市
- 参加者の推移 → 8倍以上に!(1名から8名)
- 問題点 → 人が集まらない。問題点すら集まらない
- mixiや知らない人の掲示板等にかいて怒られた
- 7/50人。本人+知人Yさん+その知人7名+牧さん
- 今後の展開 → 人を増やす。増やす方法をtwitterで募集する(した)
- ・・・TLには特に反応無し
まかまかさん「Perl同人誌の宣伝」
- (飛び込みのLT)
- Acmeモジュール
- 全部空でいうのは難しい → Acme大全2010
- Acme::CPANAuthors::Douchも
- バージョンアップ
- ダラク(キャラクター)が大きくなった
- 用語集
- デコシール付き → 貼って剥がせる
dameninngennさん「草とPerl」
- 草"植"系 「wの多用www」
- キーボードまで全部「w」に
- Glassでは物足りない
- Werlの実装
- 予約語が草 → print は WWwwWW
- 誰得? 俺得
- TAKESAKOさんの予約語プログラミングとの合体
- wwencode のデモ
大西康裕さん「Test::Apache::RewriteRules で mod_rewrite のテストを書こう」
- はてなでページャーをたくさん作った
- mod_rewrite → スイス製アーミーナイフ
- はてなではreverse proxy として活用
- Squidから同一URLで異なるコンテンツを返す時に変換しておく
- Rewrite定義が、179行も
- RewriteRule → テストツール。
- HTTPリクエストを投げ、どのURLにマップされるかをテスト
- Apacheが実際に起動される
- 本番のconfをテスト用に置換をしてテストできる
- is_redirect, with_request_method, with_docomo_browser, with_http_cookie など
- 自信を持ってhttpd.confに1行追加できるようになります
Yusuke Wadaさん「Facebookを流行らせたのはボクです」
- Facebookがすごい? → ブームを起こせるBlogがすごい
- HNS(ハイパーニッキシステム)でブログを始めた。BLOG HACKS。
- Perlを書き始めるきっかけに
- dankogaiさんの勝手に添削 → 一瞬腹が立つ → けど、納得
- 晒すのは大事
- YACP Asia 2009 → casual なPerlのエントリ
- miyagawaさん「On module writers and users」
- PerlCasualを興すきっかけになった
- ブログを書いているkoba04さんに声をかけたらやってくれた
- TwitterやSNSのmixi、Facebook ではそういうことはできない
- ブログは情報発信の場。まず、YAPC Asia 2010の感想を書いて下さい!
miyagawaさん「The Tale of Plack」
- 2本しか飲んでないそうです
- しばらくはSan Franciscoに住むが、日本には定期的に帰ってきたい
- six apartはSAY: (SAYMEDIA.COM)
- six apartの名前の由来 → 創業者2人の誕生日が6日離れていたから
- SAY: は ビルトイン関数だから、まあいい名前
- PSGI/Plack
- PSGIが仕様、Plackが実装。Wikipediaにも載ってる。
- コードの見本。(今日のコードはここまで。)
- Plackは受け入れられている
- 今回のPlackに関係するトーク → 10以上。
- 利用している企業も増えている → 11社の例
- なんでPlackが成功したのか?
- 1) 借りるより、盗む → HTTP::Engineは借りるだけで既存の部分は残っていた
- Plackは、RackとWebOb.py からほとんどを盗んだ。
- 2) 後発の利点
- WSGIは2003年、Rackは2009年
- 遅れていくと、いいものができている(鍋の例)
- RackやWSGIの成功、失敗がわかる
- 3) JFDI → Just F*cking Do IT
- やるしかない。やりたい人が勝手にやってよい「Don't ask us do it.」
- 4). stfuawsc "Shut the fuck up and write some code."
- 喋っている暇があればとにかくコードを書く
- 5). TIMTOWTDI (TimTowdy)
- BSCINABTE (But sometimes consistency is not a bad thing either) = bicarbonate?
- →流行っている。Moose などのコンテキストで使うことが多い。
- PSGI → サーバとクライアントで共通のインタフェースができた
- TIMTOWTDI かつ BSCINABTE
- 6). KISS(keep it si
nmple*1 and stupid) (UNIXの標語)- なぜOOにしないのか? → シンプルにしたほうがよい
- 7)Perl: a glue language
- PSGIも糊。
- 色んなフレームワークの間で共通APIを作るのは大変。
- HTTP::Engine → 既存のフレームワークが合わせるのは面倒
- インタフェースをシンプルにすると、糊を書くだけで既存のフレームワークは合わせやすい
- 8). 名前の付け方を変えている
- 今までの名前空間は長過ぎる(::が多い)
- タイプが面倒。会話もめんどくさい。省略形で書く。
- Rubyのやり方を真似る → トップレベルを積極的に使う
- Starman(Net::Server::HTTP::Prefork::PSGI、にはしない)
- トップレベルの名前を付けるのは、大変。しかし、愛着も沸く。
- 9). People
- たくさんの参加者との交流 → 世界各地で撮ったPerl Mongersの写真を次々と公開(何十枚?)
- 色んな人とチャット、プレゼン、ビールで交流
- 今日はなぜ集まっているのか?
- 仕事も出身もやってることも違う
- みんなPerlを使っている。Perlが人々を糊付けしている
- YAPC::Asia → 毎年大きくなって来ている
- 2回目以降の開催は大変
- 開催が大変であれば、Jesse氏のように適切な仕組みを整備し、みんなで続けて欲しい
- 次回以降も(日本か、どこかで)話ができることを楽しみにしている
941さん「クロージング」
- YAPCでのダメージ → 足と愛機(S90)が壊れた
- 開発チームだが開発はしない → ブログ、イベント担当
- YAPCが成功するより先に @941++ と言われて脅されて頑張ってるw
- YAPC 2010の某日
- 今夜開いてるか上司に呼ばれた。ただ酒を飲みにいくとJPA理事会だった
- 「今年のYAPCは厳しい」 → 誰もお酒を飲まない状態
- 「俺やりますよ」 → そのまま丸投げ
- Twitterで要望を聞いた → 0件
- Tシャツ変更タイム(何枚来てるの?)
- たくさんのスポンサー、東工大さんに感謝 → 東工大Tシャツ
- メインスピーカー、スピーカー、会場の人々、に感謝
- ボランティアスタッフは壇上に
- エンターテイナー賞の発表(SQL文で集計)
- cho45さん「映画に出てくるハッカーになりたい」 (iPad 16GB)
- ベストトーク賞 次点
- nekokakさん「省サーバ運用」 (Mac mini メモリ8GB)
- 抽選タイム
- LUFB9GXEの人 → iPod nano (use strict; の刻印入り)
- ベストトーク賞
- tokuhiromさん「モダンな Perl5 開発環境について」 → MacBook Pro 8GB
- 「頑張ってこれでみなさんの役にたつモジュールを書きます」
- 「来年のスピーカーはあなたです」 (c) yusukebe
- 最後に @941 さんに拍手 → 来年もお願いします
合わせて読みたい
- もう一人のgihyo.jpレポーター → YAPC::Asia Tokyo 2010にgihyo.jpさんのレポータとして参加させていただいた
- 動画 → YouTube
- スピーカのアカウントの一覧 → YAPC::Asia2010スピーカーの(Twitter/Blog/github/cpan)アカウント
- スピーカのスライドの一覧 → YAPC::Asia 2010
*1:Thanks to @techno_neko