2011-10-14(金)
今日はYAPC::Asia Tokyo 2011の1日目です
レポート, perl, perl+web, yapcasia
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を小さくするには?
- 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
- まとめ: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」
- アニメのダウンロードサイト
- 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
- すごくイイカンジになっているので使って下さい!
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は・・・?
- 準備が大変なので・・・
- (会場から拍手)
トラックバック - http://d.hatena.ne.jp/hiratara/20111014/p1
リンク元
- 31 http://t.co/3LegH3jy
- 21 http://reader.livedoor.com/reader/
- 19 http://gihyo.jp/news/report/01/yapcasia2011/0001
- 18 https://www.google.co.jp/
- 17 http://app.linknode.net/
- 17 http://gihyo.jp/news/report/01/yapcasia2011/0001?page=4
- 17 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cts=1331262233738&ved=0CCYQFjAA&url=http://d.hatena.ne.jp/hiratara/20111014/p1&ei=FHNZT4eoO6WkiAejlc3BDQ&usg=AFQjCNHy6_QmAfqguW5STgfvZmQ9n0thFg&sig2=Lu7uyO729klcU_9vODcMjQ
- 15 http://pipes.yahoo.com/pipes/pipe.info?_id=8dda7c5265619c2fb368495a3d11b784
- 9 http://www.kt.rim.or.jp/~kbk/zakkicho/
- 9 http://www.kt.rim.or.jp/~kbk/zakkicho/index.html





