|
2/12~13まで行われていた「Developers Summit 2009」
今回はレポート第2弾として、 ソフトウェアに関するレポートをまとめました (ラストは実体のない概念的な話のレポート3つの予定) 前回同様、メモした内容と記憶から起こしているので、 必ずしも話の内容について正確ではないかもしれません 特に、ブラウザの話に関しては、 私のメモが相当わかりづらいので、 ぜひ実際の発表資料で確認を ブラウザJavaScript高速化JITバトル最終決戦 by 森田創 氏 <開始前> ・会場は広いわりに、人はあまり多くない ・どうしても実務寄りのセッションに人が集まる模様 <内容> ・このセッションは資料が良くできていたので、 資料を見ながらが望ましい・・・というか、 見ながらでないと説明が難しい ・AjaxをきっかけにJavaScriptの高速化が本格化 ・Chromeで完全に火がついた ・登場人物は3つ ・V8(Chrome) ・SquirrelFish Extreme(Safari) ※以下SFX ・TraceMonkey(Firefox3.1以降) ※以下TM ・高速化のポイントは3つ ・言語固有の面倒な問題を解決 ・既存の他VMから高速化手法を取り入れる ・Web固有のツボを利用する ・これらを踏まえて今回の説明ポイント ・クラスがないという問題 ・メソッドの呼び出し ・正規表現 ・クラスについて ・クラスの利点は構造があらかじめわかっていること ・わかっているから、プロパティアクセスが配列的にできる ・このあたりはJavaのメモリ管理周りとかを参考にするとわかるはず ・あるいは発表資料の図参照 ・一方、JSは自由に構造を変えられる ・普通にやるとハッシュでプロパティを検索することになり、遅い ・でも、普通は同じ構造を使うよね・・・? ・だったら仮のクラスを裏で定義してしまおう(`・ω・´) b ・それでもプロパティが増えたらどうする? ・元のクラスを継承して拡張すればいいね ・要するに、各エンジンは裏でクラス構造を定義し、高速化している ・メソッドの呼び出し ・このあたり、説明しづらいので、発表資料を参照のこと ・たぶん、その方が10倍わかりやすい ・JIT = Just In Time ・実行時にコンパイルする手法 ・JavaVMで行われている ・問題は引数となるプロパティのアクセス ・クラスがわからないと、プロパティを探せない ・つまり、クラスを探すためにまたハッシュを使うことになる ・これではまた同じことの繰り返し ・でも、だいたい渡されるクラスって同じだよね・・・? ・だったら、よく使われるクラスに最適化しちゃおう(`・ω・´) b ・if (よく使うクラス){ 最適化コード } else { ハッシュアクセス } ・それでも予測が外れたら? ・最適化コードを作り直す ・V8とTMでやり方に差がある ・V8のやり方は・・・ if (ClassA){ ・TMは直に値を書き込んでしまう ・差が出るのは、引数のパターンが複数ある場合 ・V8は単体クラスでも多少遅いかわりに、複数でも遅くならない ・TMは単体クラスだと最速だが、複数パターンあると一気に遅くなる ・正規表現 ・状態遷移モデル ・インタプリタ ・JSで使われるのは後者 ・正規表現もJITで処理 ・SFX>=V8>TM ・TMは正規表現にあまり力を入れてない? ・他の高速化要素もいろいろある ・今後の展開 ・ブラウザによるベンチマーク ・PCの一般的なベンチから、Webサービスのベンチへ ・モバイルでの性能 ・省電力なのはどれ? ・蚊帳の外のIEがどう動くのか <感想> ・面白かったけど、話は難しい ・そもそも、業務レベルだと「速くなればOK」が現実 ・発表資料が良くできていて、サンプル的なコードもわかりやすい ・逆に、それゆえにこのメモだと内容が全然伝わらない(´・ω・`) ・そこは私の腕の問題か・・・ Hudson によるインクリメンタルな開発 by 李剰熙 氏 <開始前> ・開発手法が絡むセッションのためか、多少年齢層高め ・申し込んだ時点ではタイトル不明だったので、 実は「Hudson」がなんなのか調べてなかったΣ(・ω・ノ)ノ ・ ・すっかりiPhoneで有名になって・・・(つД`) <内容> ・インクリメンタルな開発の話 ・CI = 継続的インテグレーション ・Hudson = CIサポートツール ・「XP」とかアジャイルプロセスとか ・CIでは頻繁にビルドとテストを繰り返す ・そのメリット ・早い段階でバグ発見 ・テストを毎回通すのでデグレ防止できる ・手戻りの減少 ・まあ、このあたりはみんな知ってるよね・・・? ・でも、これを手動でやるのは大変だ ・だから普及しない ・よろしい、ならば自動化だ( ゚Д゚)y─┛~~ ・「Hudson」とは何か? ・Javaで書かれたWebツール ・開発者がコミットすると、自動でチェックアウト→ビルド→テスト→通知 ・Hudson自体にDB不要 ・テストするプロジェクトがDBに依存している可能性はある ・設定もWebだけでよく、ファイルをいじらなくていい ・内部でサーバを持っているので、warをjavaで叩くだけで起動 ・コンテナにデプロイももちろんできる ・プラグインでいろいろ自由に拡張できる ・使われているプロジェクトいっぱい ・JRuby/Jiemamy/Apache/Seaser etc... ・JiemamyはER図とか書けるツール ・ソース管理システムは何でもいい ・これもプラグインで拡張できる ・ビルド ・Ant/Maven/Rake/sh/bat etc... ・要はたいていの言語に対応できる ・通知 ・Mail/RSS/Twitter etc... ・機能追加 ・TaskScanner ・BTS連携 ・TracLightingには組み込み済みらしい ・使ってるくせに知らんかった・・・Σ(・ω・ノ)ノ ・実際の活用例 ・Jiemamyの場合 ・3つのプロジェクトに別れている ・他のプロジェクトへの影響が確認できる ・とりあえずコミットして、エラーレポートから対応して・・・ ・そのためにもテストを書くようになる ・エラーを無視しなくなる ・ビジュアル的にエラーがあるとわかるので、気になるから ・Seaserの場合 ・5つのプロジェクトでテスト運用中 ・LDAP認証を使用 ・複数DBでテストしたいので、独自プラグインを開発 ・プラグインで自由に拡張できるのが大きい ・品質が安定したらしく、本番運用を開始するらしい ・使用上の注意 ・犯人探しをしない! ・そのためのツールではない ・導入して終わりにしない! ・継続的にメンテしないと意味がない ・エラーを放置しない! ・せっかくエラーの通知があるのに、無視したら意味ない <感想> ・かなりよさそう ・ソース管理システムとは独立してるので、導入しやすい ・問題はRuby/Perlでどう使うか・・・ ・わかっていはいたけど、やはりMaven2なのか・・・ ・最近Javaいじってないからな・・・ |
|
コメント
|
|
この記事のトラックバックURL
http://www.parrot-studio.com/studiwo/tb.php/145
トラックバック
|








