<< September/2010
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
>>
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){
  // ClassA最適化コード
 } else if (ClassB) {
  // ClassB最適化コード
 } else {
  // 普通のコード
 }

  ・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いじってないからな・・・

[ Web技術 ] comments (0) trackback (0)









http://www.parrot-studio.com/studiwo/tb.php/145
NEW ENTRIES
RECENT COMMENTS
CATEGORIES
ARCHIVES
LINK
PROFILE
POWERED BY
 Script by ⇒ BLOGN+(ぶろぐん+)
 Skin by ⇒ vivid*face
OTHER
SEARCH
LOGIN
現在のモード: ゲストモード
ID:
PASS:
AdSense

<NEXT  PAGETOP  BACK>