僕のYak Shavingは終わらない

車輪の再発明をやめたらそこには壮大なYakの群れが

YAPC::Asia Day 1

YAPC Day 1
■日付:2011年10月14日
ということで1日目です!
f:id:kazuph1986:20111014102255j:image:w640
f:id:kazuph1986:20111014102507j:image:w640
f:id:kazuph1986:20111014102519j:image:w640
f:id:kazuph1986:20111014105503j:image:w640
f:id:kazuph1986:20111014105512j:image:w640

Perl 5.16 and beyond(Jesse Vincent)

  • 資料
  • メモ
    • 最初はPerl 5.16を開発しているマネージャーの方
    • パンプキンを焼くぜ!
    • Perlを開発するときのルール
    1. いつでもLarryが正しいぜ!
    2. Larryの気が変わっても気にするな!
    • このルールはPerl自体にも適用されるぜ(つまりPerlいつでも正しいのさ)
    • Perl is Dead!→最近聞かないね
      • 最近良く聴くのは
      • 「これからは?」
      • 「もっと遅く変化しましょうよ」
      • 正規表現の変態ぶりに磨きがかかりましたね」
      • Perlのスマートマッチはサイコマッチと呼ぶべきw
    • 私にはヴィジョンが足りないと言われてきましたが本当に足りないのは防火服なんです。
    • 以前はPerlのリリースにも時間がかかりました
      • 最近ではPerlをリリースするのに一日かかりません。
      • 43の項目からなる手順書
      • リリースエンジニアもいる
      • (今はgitなんだね)
    • リリースが簡単になったいまなら言える。
      • Perl 5のビジョン
      • Perl5は既存のソフトを壊さない
      • ただし古いものを守るために進化を諦めることはない
      • 間違ったこともあったけどそれは正せるようにすればいい
    • Perl5はもっとPerl5で書けるようにするべき
    • use v5.14(こう書けばいつでも以前のバージョンのPerlが使えます)
      • Perlのバージョンを指定すればそのバージョンのPerlを使うことができる・・・。
      • 「既存のコードを破壊するのは最後の手段」
      • これを守れることによって、新しいPerlを開発し続けることができる。
    • Perlをもっとクリーンでシンプルにするために...

途中で自分は力尽きたのですが、しょっぱなからPerlの文法力じゃなくて英語力を試されました(まあほとんど聞き取れませんでしたが!!)。

エンジニアとしてもっと英語力を上げたいと思いました。

Carton: CPAN dependencies manager(@miyagawaさん)

  • 資料
  • メモ
    • CPAN管理「carton」を作ったよ
    • デブロイどうしてます?
        • 開発版でCPAN入れて開発して…
        • できたソースを本番サーバーにいれて
        • エラーが出るからその都度入れてw
        • 動いた!
        • 数週間後→CPANのバージョンが変わってるともう大変
        • まあここまではひどい開発はしてないでしょうがw
    • CPANにも再現性がほしいよね。他の環境でも開発版と同じバージョンが欲しい。
    • (基本的にカンファレンスで発表するために開発している)
    • RubyのBundlerからインスパイアされている
    • cpanmも使っているから早くて安全だよ
    • JSON使ってる
    • どのタイミングでどのヴァージョンのどのモジュールが入れられたかがわかる
    • いつでも、何ヶ月、何年経っても同じ環境を構築出る
    • もう使える
cpanm Carton

このあとデモでした。プロンプトがかっこよかったです。さすがロックスター。

SmartPhone development guide with Node/CoffeeScript and HTML5 technologies, for Perl programmers(伊藤直也さん)

  • 資料
  • メモ
    • ザ・スマートフォンの話
    • Facebookアプリとそのフマフォ版が一致してきている!
    • アプリの中身はWebビューにしてることが多い。
    • ネイティブとして書かなくて良くなってうれしい!
    • PhoneGapあるよ。
      • 全部Coffeeスクリプトで書いている。
      • SL4AならPerlでも書けるぜ!
    • まあPerlでもいいけど…
      • クライアントをJSで書いたら、サーバーでもJSで書きたい!
      • 手軽さと、JSとの相性が良い。
      • node++
    • nodeきてる
      • 必然性はないが、JS/Coffeeで書けるのは便利!
      • npm++
      • CommonJSすごい

もはやPerl側の人でないということがわかりました。
ただJSがやっぱキテるってことがわかってよかったです。

YAPCなのに話を聞いていると結構RubyとかJSとか勉強したくなるのはなんででしょう?

Webアプリでパスワード保護はどこまでやればいいか

  • 資料
  • メモ
    • まずは本の宣伝から
    • 次にソニーの話
      • パス平文祭り
      • ハッシュで保存されていた
      • じゃあ大丈夫か
    • パスの漏洩=情報漏洩ではない
      • なりすまし、他のサイトでログイン可能になるなど
    • オンラインならそうあたりはほぼやられない
      • brute force attack
      • Dictionary attack
      • Reverse brute force attack→ユーザーを変える
    • Twitterはそのそも簡単なパスは指定できないようにできている。
    • どうして暗号化でなくハッシュなのか?
      • ハッシュ化には鍵がない
      • ハッシュ化してても4桁の暗証番号だったら結局総当りは出来る。
    • オフラインなら高速だね
      • 最近はGPUもあるし
    • レインボーテーブルの話
      • Saltはやっておくべき
      • Stretchingも
    • 本ではPHPだったけど今回はPerlでソルトとStretchする方法が載っていた
    • 暗号鍵を安全に保存する装置(Hardware Security Module:HSM)
      • →復号化できるなら意味ない、暗号化だけして暗号化した者どうしで比較?

俺、勉強不足。本は買ったので今度読みたいですね。

他言語から見たPerlのテスト(@ikasam_aさん)

  • 資料
  • メモ
    • 「僕はAKB派です。チームB組押しです。」(´Д`)
    • テストの分類
      • Unit Test or Integration Test
      • Black box test or white box test(中身がわかっている状態かそうでないか)
      • 機能のテスト or 非機能テスト(パフォーマンスとか)
    • 効率良くテストするにはテストもフレームワーク
      • テストの支援をしてくれる
      • 自動化してくれる
      • テストの結果をちゃんと記録してくれる
    • RubyではRSpecが主流
      • 記述的・シナリオ的に書ける
    • Perlの場合
      • Test::More, Test::Class Test::Base, Test::Spec
      • prove
      • TAP(Perl has TAP!!)
        • Perl初期の頃から成長してきた
    • Railsのテストってありますよね
      • CatalystにもTestあるよ
      • PlackにもTestあるよ
    • Test::Double書いたよ
      • Mock
      • Stub
      • 結構Rubyから取り入れました
      • (宮川さんのCartonもRubyから取り入れていた)

テストに関しては自分は詳しくないので参考になりました。
でもテストの是非の部分ついては論じてなかったので、
そもそもやって当然ってことでしょうか?

とにかくテストは書かないとと思いました。

あとRubyPerl的な流れは多いみたいです。
Rubyも勉強ですね。

Apporoで類似文字列検索

  • 資料
  • メモ
    • 要素技術は試作が重要
      • 発見→デモ→判断→開発 or 封印
    • Perlでプロトタイプを作ること
      • 柔軟(やわらかい)
      • 高い互換性
      • 再利用
    • Perlだけでは生きられない
      • パフォは悪いよね
      • 先進的なのもを作る

発表に夢中で全然メモってませんでしたが、一日目で自分は一番好きな発表でした。
アカデミック系はやっぱいいですね。

興味深いはPerlで作ったらあとは当然のように別言語に置き直すこと。
Perlだけではやっぱりだめだという意識を持つのと、
いろんな可能性を保つためにたくさん言語を学ぶ必要があるなと思いました。

LTも面白かったです。

懇親会写真

kazuhoさんと話せてよかった(ノ´∀`*)
f:id:kazuph1986:20111014205855j:image:w640
f:id:kazuph1986:20111014191824j:image:w640

Day2へ続く!!!