YAPC Asia Tokyo 2006 まとめ

トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

YAPC::Asia Tokyo 2006 まとめ

日時・場所

日時
2006 年 3 月 29 日 (水)、3 月 30 日 (木)
場所
大田区産業プラザ(PiO)
URL
http://tokyo.yapcasia.org/blog/ja/
スライド
http://tokyo.yapcasia.org/wiki/?SlidesList
MP3 in Hatena
http://yapc.g.hatena.ne.jp/jkondo/20060330
keynote
http://tobiuokun.jp/photo/20060331-larry/wall.mov
当日のビデオ
http://www.archive.org/search.php?query=subject:%22yapc%22

目的

今回の参加目的は以下のとおり。

  • Larry Wall, Audry Tang など Perl 界のトップがやってくる
  • 文字コードについて、Perl への実装を小飼さんの講演などから聞く
    • Ruby のまつもとさんから Perl とは異なる Ruby の文字コードの実装について聞く
  • コードの書き方の基本を聞く
  • 場慣れ
  • その他
    • 鳳たん、はぁはぁ (w

1 日目

すみません。1 日目の内容が随分抜けてしまっていて、ボロボロですが、許してください。

Welcome -- Tatsuhiko Miyagawa

  • 宮川さんの Welcome スライドですが、最初からこんなに笑わせて大丈夫なのか?

といいつつも、かくして YAPC::Asia Tokyo 2006 が幕を開けました。

Introduction to Pugs -- Audrey Tang

  • 最初はもちろん、今回の目玉、鳳たんです。
  • Pugs の説明と Perl 5 から Perl 6 の変遷を抽象的ではあるが的確に表現した内容でした。(当たり前だって!)
  • 開発の同期、進め方、進み具合、我々との格差などが良く分かる内容。

Module::Compile -- Ingy dot Net

  • Module::Compile と orz.pm (なにそれ) の説明

mightyv -- Leon Brocard

  • mightyv という BBC のコンテストで優勝するまでの話。
  • Catalyst と CPAN の使い方とスケジュールの進み具合が良く分かる。

Ruby on Perl(s) --Yukihiko Matsumoto

  • Perl が UCS で進めているのに対して、Ruby は CSI で進めることも検討
  • 日本語だけなら既に何とかなっている

Plagger - RSS/Atom remixing platform -- Tatsuhiko Miyagawa

  • Plagger と Gmail を有効に活用して整理していく方法の説明

mixi.jp: ChangeLog? -- Batara Kesuma

  • mixi の巨大 SNS の中でどのようなことを行っているか
  • 今後の負荷分散について考えていることの説明
  • OSS 化も検討しているという発言も…。

JSAN and AJAX -- Dave Rolsky

  • CPAN ならぬ JSAN の説明
  • JSAN の組み込みまでの過程や問題点など

Jifty -- Jesse Vincent

  • Perl で作る簡単なフレームワーク Jifty の紹介
  • 簡単に多くのことをこなせそうであるが、まだまだ CPAN 依存の部分もあり、今後の展開が楽しみ

the first postmodern computer language vs the first Babel-17 computer

  • 洗脳言語 Babel-17 を Ruby に例えた話。

Perl Best Practices -- Damian Conway

  • Perl の書く時のお作法であり、いろいろなプログラムにも通じる話

2 日目

Glue: Separate Application Logic from Code -- Atsushi Kato

  • Sprog に刺激されて作成。
  • アプリケーションからロジックの分離を目的
  • Rule を必ず作成し、それに従って実行
  • 小さく作成しているので、バグも少ないだろう

Perl 5.8 and Unicode: Myths, Facts and Changes -- Dan Kogai

  • Unicode で難しいこともサクサクとこなしていく
  • Perl 5.6 から実装していたが、十分ではない
    • 文字列かバイナリデータ化を見分けることができなかった
  • Perl 5.8 は判別可能
    • Encode モジュールを導入
    • レガシーなものと変換する
  1. decode() してから encode() する
    1. Perl に入る方が decode()、出て行くのが encode()
  2. or PerlIO を使って読み込み時で自動 decode() する
    1. 使う前に decode() せよ
  3. or binmode() で既に開いているファイルのコードを変更する
  4. スクリプトの中では UTF-8 を使用する
  5. or open() に任せる
  6. ASCII は世界の一部に過ぎない

Jcode and Encode

  • Jcode.pm は事実上のスタンダード
  • Encode は Perl 全体のスタンダード
  • JEncode.pm を出されたので、Jcode 2.0 を発表
  • Jcode 2.0 の内部は Encode になっている
  • Jcode でも big5 を euc-jp に変換することもできる
  • 文字列を返すのであれば、UTF=8 フラグを付けろ (バイト列との区別)

Perl6

  • Perl 6 ではオブジェクトとして文字を扱うことができるので、.say や .shiftjis.say のように扱うことができる

CPAN 内の対応

  • 大御所は対応
  • 内部モジュールで is_utf_8() で状態を把握できるので確認可能
  • パッチを送れ
  • CPAN にコミットする人は意識している人が多い

use encoding を推奨しない理由

  • モジュール内で使用すると他のモジュールに影響が出る可能性がある
  • あくまで下位互換用
  • Encode Guess を使うと候補を絞ることができる
  • ただし、入力が分かっているのが基本
  • Encode の方が Jcode よりも厳しく decode() を判定
  • ASCII の部分はノータッチ

Kwiki-Kwiki -- Kang-min Liu

  • Perl 自信のサーバーで起動
  • svn / CPAN から直接インストール可能
    • svn からのアップデートも含めて Kwiki 上で行える
    • CPAN からの依存性解決も Kwiki 自身が行う

Indede Net::AJP13 -- Hiroyuki Oyama

  • Apache JServe Protocol version 13 (現在は標準モジュール)
  • IPC 用の HTTP 圧縮通信
    • 文字列ではなくコードとして圧縮したものを用いる

Development of Unified Legacy Encoding handler on Open Source software

  • 毎回コミュニティで同じ問題が出ているので、コミュニティ間を串刺しで開発していきたい
  • 7 bit JIS コードまでサポートする
  • Perl は cp932, euc-jp 含めて対応済み
  1. 1 byte 文字が 2 byte 文字に化ける
    1. "\" を euc-jp から sjis に変換すると全角バックスラッシュになる
  2. WAVE DASH 問題
    1. iconv でも発生
  3. 機種依存文字
    1. 「ハシゴ高」は iconv と Web-DB で euc-jp でも変換が異なる
  • 相互変換から、いったん Unicode にしてから変換するスタイルに変更
  • この際に用いるのは変換表を用いるが、Unicode のマッピングが異なっている
    • 「〜」は cp932 から 7 bit JIS に変換できなくなる
  • 解決方法
    • 解決するために同一の変換表を用いる
    • 機種依存文字も含む MS の Unicode 変換表を用いる
    • NEC 特殊文字は空き領域にマッピングさせる
    • ユーザー定義文字は独自のエスケープシーケンスをm地入
  • Macintosh 用の機種依存文字は表立っていないので対応していない
  • 携帯絵文字は i-mode はユーザー定義文字で置き換え

Learnig Haskell -- Audrey Tang

  • 難しいことを簡単にする言語
  • 変数は普遍であり、定義の順序が関係ない
  • 関数の入力が同じなら出力 (の型) も同じ
  • アクションと変数とは異なる
  • main の {} も必要ない
  • 非常に Lazy である (使わなければ評価しない)

SVK: Version Control without the Headaches -- Chia-liang Kao

  • RCS (1982 年) は 1 人で使うには十分
  • CVS には制限が多い (コードの中に "I HATE YOU" とまで書かれている)
  • Subversion までに 20 年かかった
  • 今までのような苦労をしたくない
  • 内部的には Subversion を使う
  • svn, cvs とも連携 (マージ) できる
  • コンフリクトの解消
  • 操作は svn, cvs に似ている
  • リポジトリのミラーも取れる (最初の目的)

混合語 -- Marty Pauley

  • Perl 6 は多くの言語から取得してものであるが、クリスマスまでおあずけ
  • Ruby があるじゃないか!
  • -> を . にして、全てをオブジェクトにしてしまおう
  • 特に Perl 6 は日本語から学んだ部分も多いので、日本にも受け入れられるであろう

Inside Hatena::Mookmark's Backend -- Naoya Ito

  • マシンが増えていくにつれて発生してきた問題
  • 日本最大のソーシャルブックマークサイト (35000 人)
  • Perl で 15000 コード
  • 全 17 台
  • LAMP (Fedora Core)
  • Senna, MRTG, Nagios, Capistrano (Ruby), Subversion などを利用
  • スクリプトの中にデバッグコードも含めている
  • 負荷原因は I/O と swap
  • Linux の tmpfs にほとんどの MySQL データを保持
  • Fasterfox は .html のみのスタックなので問題ない
  • Fedora のアップデートは yum、CPAN はマニュアル
  • はてダは 100 台以上で分散も考えられている (それでも MySQL の限界が見えてきている)

Catalyst Everything -- Daisuke Murase

  • Catalyst は DRY であるが、自分で plugin を記述することでさらに DRY に
  • 使いまわす部分は plugin 化を行っていく
  • これを CPAN に登録
    • helper と plugin をセットで登録している人も多い

Lightnig Talks

  • まさに Lightnig!
  • 鳳たん、英語早すぎ!
  • 最初の言語は VB かぁ。
  • Ingy さんの失敗 (ネタ?) が良かった。
  • Dave さんは SQL ネタとして MySQL が全くリレーショナルでないことの発表。
  • tokuhirom さんの PadWalker? とデバッグスクリーン
  • CPAN の更新分だけを取得したり、特定の作者だけのものをリストすることが可能
  • Perl のデバッガとしての perl -d の紹介。意外に人気がないが使うと非常に便利。
  • ブラウザ上で動作するデバッガ。統合環境としての IDE もある。CGI 上で変数の値を変更したりすることもできる。内部的には先ほどの PadWalker? を使用している。
  • 進化した ppencode は SJIS, EUC-JP, UTF-8 の文字コード変換も可能。

他…

他にもあったのですが、書き留められない。

Keynote -- Larry Wall

Larry の遅刻の上に OS が落ちて、X の設定が狂ったため、Audrey の PC で急遽プレゼン。

Perl は色々な学問から成立している。また、いろんな文化を全て取り入れて、ポストモダンである。Perl は文化の方が大きいかもしれない。ただし、文化のない言語は滅びるのみ。

横着、急性、自慢といったプログラマの三重苦があるが、この反対の丹念、我慢、恭謙といったことを使っていくことが重要である。特にコミットしたということではなく、プログラマにとっては謙虚さが一番大切である。

といった非常に哲学的なことを示唆していました。深い。

Wrap up -- Miyagawa

無事成功を収めることができました。

また YAPC::Asia を東京でやりましょうということで締めくくり。


総論

Manipulexity & Whipaptitude

日本語だと「キッチリ & サクサク」だそうですが、いい表現ですね。

天才が本気で遊ぶと怖いよね

凄いなぁ。遊び方ですら我々が何人かかっても及ばないのは悔しい。

文字コードの変換仕様はまだまだかな

日本と言うこともあり、文字コードの話題が多かったのですが、どれも 100 % しっくりこないものというのは残念。

Ruby との比較

やはり Ruby との比較で、Object 指向とフレームワークといった内容が多いが、Larry はそれを文化と言う言葉で表現していたのかもしれない。


その他

木村さんと隣席

スクリプティング言語資料室(仮)の木村さんと隣席することができたのは助かりました。やはり一人だと心もとないものです。

まつもとさんと 13 年ぶりの再会

まつもとさんは覚えていなかったが、日経 MIX で最初の Ruby のお披露目で銀座で飲み会をして以来の再会となりました。以前に増して腰が低く (Rubylist は大体腰が低いですね) なってました。

一方、Perler の方々は Rubylist の方々に比べると野心家の方が多いように見えます。

Macintosh が圧倒的に多い

なぜ!?

小飼さんの空気を読めない発言

「正しいプログラムコードを書く方法を会社へ伝える方法は?」という質問に対して、「自分が命令できるだけ偉くなればいいんだよ」。(会場、しーん)

Larry は Fedora Core

しかも、Fedora Core 5 ですよ。gawk の Arnold も Fedora Core なので、文字コードは自然に UTF-8 に統一されていくんでしょうね。

LL 関係者多数来場

小山さん、法林さん、宮田さん、などなど。発表者では小飼さん、まつもとさん、高橋さん、などなど。日本の LL の人気は意外に高いのかもしれません。お疲れ様です。


仕事にどういかそうか

文字コード

RHEL4 からはデフォルトが UTF-8 になってしまうことを考えて、こうした言語の UTF-8 対応状況を考えると、UTF-8 化を徐々にしていってもいいのではないだろうか。デフォルトが UTF-8 である XML への入出力も多くなっているし、UTF-8 対応ということは日本語に関しては問題ないはず。

SVK

Perl Monger が SVK を使うのは分かるが、コアを Subversion でフロントエンドを Perl でやるのは、RHEL4 で両者が使えるのでうまく使えば面白くなるのではないでしょうか?


コメント

Re: - きむら (2006年04月03日 19時05分38秒)

日本以外で、多言語対応を念頭に入れて作られたソフトウェアというのはUTF-8で処理することが主流になると思います。楽だから。ネックはカナや漢字一文字あたりのバイト数が増えることでしょうけど、これはまあ割り切る他ないかと。でもケータイあるからSJISは不滅?(笑)

Re: - hi_saito (2006年04月03日 22時28分09秒)

携帯も UTF-8 を標準とさせていただきますので、
パケ代が 1.5 倍になります。

な〜んてことになると怖いですが、最近の携帯は文字コード判別までできます (うちの携帯は良く間違えています) から、携帯が UTF-8 で問題なくなる日は近いのかもしれません。

NEC 特殊文字とか…私は Windows になった時に滅亡するかと思ってましたけど、いまだに生きているんですよね。(w

Re:文字コード - 名無しさん (2006年04月04日 19時36分04秒)

IBM特殊文字に含まれる文字はUnicodeにありませんでしたっけ?まあ、NEC選定IBM特殊文字と、IBM特殊文字で重複している部分があるのでラウンドトリップ問題の原因になりますが。あとは絵文字ですね。どーすんだよこんなの >ミカカ他

Re: - hi_saito (2006年04月05日 01時21分22秒)

絵文字はどうするんでしょうね。EscapeSJIS.pm というものありますが、SJIS クローズな世界だけのようですね。

Re: - さいとう (2006年05月18日 12時10分44秒)

当日のビデオへのリンクを加えました。ご活用ください。