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だけではない
- 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はどこでも動く
- 「個人スポンサーの皆さんに感謝します」
- 言語の名前はPerl5で、Perl6は妹
- Perl5を別の名前にしたかったら、テストケースが通る提案を送ってね!
Tatsuhiko Miyagawaさん「Carton: CPAN dependencies manager」
- Managing CPAN Dependencies
- ケーススタディ : CPANアプリを使ったWEBアプリを作る
- 問題点
- 依存するモジュールが明記されてない
- Perlのバージョンも違うかも
- 解決方法 → MyCPAN, DPAN, CPAN::Mini::Inject, OrePAN, Shipwright
- 気に入らなかったので自分で書いた
- Ruby の Bundler にインスパイアを受けたもの
- ローカルのPerlライブラリ環境を使う
- 安全、高速
- 依存ツリーの分析
- 全モジュールのバージョンを固定できる → 簡単に再配備できる
- 1つのjsonファイルに登録 → バージョン管理システムと相性がよい
- デモ
- 注意: まだ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のために設計されている
- 自動的に同期がとられるし、スケールする
- スクリプト言語でのスレッドとは?
- IO::AIO → POSIX のラッパー。現在はさらに複雑なものも実装している
- Coro::AIO → IO::AIをCoroで使えるようにする
- AE → タイピング量を減らした
- AE_DEBUG_WRAP、AE_DEBUG_SHELL によるデバッグ
Kang-min Liuさん「perlbrew」
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 → デフォルトルール
- 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
tokuhiromさん「Amon2 3.0」
hakobeさん「Enhance Anime wathing with programing」
- アニメをTwitterで実況したい
- しょぼいカレンダー
- アニメの完璧な情報
- 豊富なAPI
- リクエストとパースの回数が多くめんどうくさい
- WebService::SyoboiCalendar
- syoboirepl
- アニメを見ている人は、ターミナルを開きながら見ているはず
- デモ:現在放送中のアニメ。キャストまで見れる
- 関東と関西の最速アニメの比較
株式会社カヤックさん
Yappoさん「App::Ikachan」
Kenichi Ishigakiさん「Let's play games」
- Games::Dice
- Games::Sokoban (Lehmannさん)
- パーサ。ゲームはできない
- 倉庫番ゲームを作った
- Games::Sokoban を使い、WEB上に落ちているデータを利用できる
Eikichi Gotohさん「仙台で1年間PMをやってみた」
SKYARC Systemsさん「北海道のIT勉強会事情の紹介」
issmさん「ようやく始まりましたNagoya.pm」
- Nagoya.pm #1
- 県外からも参加者がいた
- Perlを使っている会社が見当たらない
- 名古屋はミソだけではないので、Nagoya.pm #2には安心してお越し下さい
Mayumi Takahashiさん「Perlが決めるwebの未来」
karupaneruraさん「アクセサについての考察」
turuginaさん「日常業務にperlを使おう」
株式会社 リクルートさん「Mashup Awards 7」
岡部恵一さん「登録題5314384号商標 厳密というより分かりやすく解説」
keroyonn_さん「Perlで次世代ゲーム開発」
Kosuke Arisawaさん「ぼくたちのPerl Module管理」
nekokakさん「not ORM - for @kamipo」
- DBIx::Skinny
- 北海道の人には公表
- @kamipoさんには会う度にDISられる
- row object、relation manager は不要
- DBIx::TransactionManager, DBIx::Handler, SQL::Object
- SQL::Object → プレースフォルダやinの管理
- 普通の環境ではDBIx::SkinnyやTengが有用なので、ケースバイケースで