<< 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)
2/12~13まで行われていた「Developers Summit 2009

とりあえずレポート第1弾として、
Rubyに関連する(というより関係が深い)セッションについてまとめました

なお、メモした内容と記憶から起こしているので、
必ずしも話の内容について正確ではないかもしれません
また、一部順序を入れ替えているところもあります

ですので、他の方のレポもぜひ参考に



未来へつながる言語~ある言語おたくの視点から
by まつもとゆきひろ 氏

<開始前>
・わりと年配の方も多い
・もらった資料によるとRubyの資格制度がある?
 →Ruby1.9のセッションで理由判明

<内容>
・最初に触ったのはBASIC
・Pascal→LISPと学んでいく
 ・本を読んだだけで「わかった気になった」
 ・そもそも、BASIC以外の実行環境がなかった
・BASICに限界を感じる
・言語を作ることが夢に
・大学の卒論で言語を作る
 ・多重継承とかあったらしい

・今日はRubyの話・・・と見せかけて、その話ではない
 ・(言語の進化に関する話)

・世界最初の言語はFORTRAN(1954~)
・と見せかけて、「Plankalkül」(1948~)
 ・ドイツ
  ・ドイツの技術は(ry
   ・JOJOネタだっけ?
   ・こういうネタが講演随所に
    ・ノリノリね(`・ω・´) b
 ・なんと例外機構がある
 ・でも、仕様が複雑すぎて実装不能
  ・実装できたのは2001年になってからΣ(・ω・ノ)ノ

・なので、初期の言語はこれ
 ・FORTRAN/COBOL/LISP
  ・1950年代
 ・まつもと氏の会社の半分はRubyだが、残りはCOBOL
  ・レセプトのシステムをフルOSSでCOBOLで実装
  ・コンパイラまで全部自作
  ・6000もの病院で採用済み

  ・たぶん、COBOLだって用途があって作られたのだから、
   その技術や技術者を捨てるのはもったいないという発想だと思う
   ・言語にはそれぞれ作られた理由があるって発想が、
    まさに「言語おたく」なんだろう

・FORTRAN:数値計算/ベクトル計算/HPC
・COBOL:オフコン/汎用機/レコード処理
 ・事務系では最も楽に書ける@COBOL技術者
・LISP:人工知能/大学・研究

・BLISS/C/C++→C/C++ Java Perl/Python/Rubyへ
 ・PHPはあえて入れなかった@まつもと氏
  ・会場大うけ
   ・やっぱりPHPは認めたくないのね(´・ω・`)
    ・気持ちはとてもよくわかる

・進化の要因とは?
 ・簡潔さ
 ・新パラダイム
 ・外的要因
 ・「温故知新」
 
 ・生物の進化論と似たようなもの
 ・その時代にマッチしたものが主流となって生き残っていく

・簡潔さは力なり
 ・前の問題を解決するために次が現れる
 ・より少ない記述へ抽象化が進む

 ・Brooksの法則(生産性の法則) → 「人月の神話」の人
  ・「PGが1日に書けるコード量は、言語にかかわらず一定である」

・パラダイム
 ・構造化(70年代)
 ・オブジェクト指向(80~90年代)
  →これらはもう当たり前

 ・論理型プログラミング => 行方不明
  ・Prolog
 ・関数型プログラミング => Hot!!

・外的要因
 ・昔はマシンコスト>>>>>>人的コスト
 ・今は逆転
 ・開発費は変わらないのに、やることは複雑化

 ・ムーアの法則
  ・以前は勝手に環境の方で処理が加速していった
   ・ムーアの法則は限界
 ・マルチコア・メニーコアへ
  →PGのレベルで対応がまた必要な時代へ

・温故知新
 ・Javaで普及した技術:VM/GC/例外
 ・これらは全部昔からある技術
 ・Javaで普及しただけ

 ・普及の過程:冒険→改良→普及
  ・Simula→Smalltalk/LISP→Ruby(オブジェクト)
  ・FP→StandardML→Haskell/OCaml(関数型)

・メインストリーム
 ・Java/Ruby(オブジェクト)→Haskell/Erlang(関数型)→APL?
  ・Rubyも関数型を取り込みつつある
   ・宣言的
   ・並列

APL
 ・ベクトル/行列・配列が得意
 ・書けないし読めない
  ・まつもと氏も読めない
 ・でも生産性は高いらしい

<終了後>
・オライリーのRuby本を買うとサインしてもらえた

<感想>
・マニアックではあったけど、話自体がとても面白かった
・まつもと氏のキーワードは、どうも「温故知新」らしい
・ぶっちゃけ、この話を聞くまで「関数型プログラミング」を軽視していた(´・ω・`)
 ・現在高速に情報収集中



Ruby 1.9の現状と導入ポイント
by Yugui 氏

<開始前>
・まつもと氏のセッションより年齢層低めの印象
 ・実務担当の集まりっぽい

<内容>
・前提:今日帰ったら即1.9.1へ移行せよ

・Ruby2.0がひとつのゴールである
 ・1.8→1.9はJava1→2くらいの進化
 ・1.9→2.0へはJava2→5.0くらいの飛躍が必要

・1.8.8も出る予定
 ・1.9のコードが「パースできる」だけで、動くとは限らない
 ・1.9へ移行しやすいようにリリースされるもの

・やはり「温故知新」という言葉が

・1.9のTopic
 ・改善された開発体制からリリースされた
 ・「Rubyらしさ」を追求
  ・(RubyでできることはぶっちゃけLISPでできる、と言っていた)
  ・今後はRubyへ移行するのにだけ必要だった要素を徐々に切り捨てていく

・開発体制

 ・Redmine
  ・Ruby開発のトラッキングシステム
   ・現状は「とりあえずMatzに聞け!」
   ・メーリングリストと連動するおかげで、かなり利用されるように
  ・RoRで実装
   ・Rubyの中の人たち曰く「Railsもただのアプリだろ( ゚Д゚)y─┛~~」
   ・とはいえ、普及に貢献しているのは間違いない
   ・開発体制をRoRで構築した以上、RoRがこけるとRubyもこける
    ・一蓮托生
     ・でも、たぶんRuby自体はこけないと思う・・・
  ・細かいRuby関連の情報はこれのWikiを見てほしい

 ・branch
  ・メンテポリシーを定めた
  ・1.8系は2つ
  ・1.8.8で1.8.6が切られるかは不明
   ・「自分は1.9担当だから知らん( ゚Д゚)y─┛~~」
  ・1.9は一つだけ
   ・でも、1.9.2の後も、場合によっては1.9.1も・・・?

 ・support
  ・サポートレベルを4段階定義
   ・サポート
    ・継続的なメンテがある
    ・全テストにPASSしている
   ・大体動く
   ・たぶん動く
   ・知らんがな( ゚Д゚)y─┛~~

 ・ドキュメント
  ・有志がメンテ中

 ・標準化
  ・進めてはいる
  ・でも、自由な進化の妨げにもなるので微妙な面も
  ・一方で、お役所の調達には必須だったりとか・・・

 ・RubySpec
  ・いろいろなRubyの間で互換性を保持するテストの仕組み

・仕様の安定性
 ・もうかっちり仕様が固まった
  ・ブロックの仕様
  ・lambda
 ・大きなレベルでの変更はもうない
 ・なので、安心して移行していい
 ・1.9.0はすべてのテストをPASSできなかった
 ・1.9.1は100%
 ・Railsはまだ対応しきれてない
 ・Gemを標準で取り込んだ
  ・そのためモジュール起動が高速化
  ・以前はワンテンポ待たされたが、もう待たされない

・YARV
 ・中間コードを生成するようになったことが大きい
 ・つまり、他のVMで動かせるということ
 ・いろいろ進行中だが、まだ中間コード自体の仕様が固まってない
  ・Ruby1.9が固まってない、ということではないと思う

・M17N
 ・エンコードを内部で保持
 ・違うもの同士で処理しようとすると、自動で変換
  ・それがバグの温床になりそうだな・・・
 ・エンコーディングを間違って処理しようとすると例外があがる
 ・String#each廃止

・Rubyアソシエーション
 ・いくつかの企業が協業してRubyの普及を進めていく
  ・この一環がRuby認定試験と推測
   ・つまり、お墨付きがあるわけか
    ・なら受けてみるか・・・

・移行手順
 ・$KCODEからマジックコメントへ
 ・ライブラリの対応確認
 ・文字列周り確認
 ・消されたメソッドはすでに使われてないか、他に手段があるもの
  ・それぞれ対応を探す

・最後に
 ・さっさと1.9に移行汁( ゚Д゚)y─┛~~

<感想>
・この人もかなり個性的
 ・微妙に火の星座っぽい
 ・たぶん牡羊座か射手座あたり
 ・そういえばまつもと氏も牡羊座+天秤座か
  ・そんなのどうでもいいね(´・ω・`)
・Gem関連の起動が高速化されたのはかなり大きい
 ・今のシステムのネックがそこだけに
・さっさと移行はしたいけども、今のシステムはARを使っているので、
 ARが1.9.1に対応してくれないと・・・
・なお、「( ゚Д゚)y─┛~~」を多用したのは、本当にそんな雰囲気だったから
 ・やっぱり牡羊座っぽいな・・・

[ Web技術 ] comments (0) trackback (0)
今日まで行われていた「Developers Summit 2009」

昨日に引き続き、今日も2セッションだけ参加してきたので、
ざっくりとした内容の紹介と感想を

各セッションのメモした範囲での詳細内容は、
明日以降にまとめて順次UPします


○Hudson によるインクリメンタルな開発 by 李剰熙 氏

 ・インクリメンタルな開発を支援するツール「Hudson」の紹介
 ・コミットをトリガーにして、ビルド・テスト・そのレポートの通知までを自動で

 ・HudsonはJavaで書かれたツール
 ・ツール自体はDBを使わない
 ・設定もWebで全てできる
 ・好きなコンテナにデプロイできるし、単体でWebサーバ機能を持っている

 ・GUIが非常に良くできている
 ・レポートをグラフで表示してくれるのでわかりやすい
 ・プラグインにより、機能追加や対応言語を増やすことも
 ・つまり、Java専門のツールではない

 ・非常に良さそうだが、LLでの開発でどう使うかが知りたい


○「レガシーコード」とはいったい!? ~あなたも書いてるかもしれないレガシーコード~

 ・スピーカーは4名だが、メインで進める人がいて、他の人が補足する感じ
 ・基本はこの本の紹介

 ・レガシーコードとは「(自動)テストのないコード」のこと
 ・実装を変更するために、まず通るテストを書き、実装を変更し、それをテストに通す
 ・まあ、要はXPとかアジャイルプロセスの基本的な考え方

 ・とはいえ、ここまでは事前に調査済み
 ・実際のコードの紹介はあったが、プレゼンとしてはちょっとわかりづらい

 ・むしろ、中谷氏の「Developer's 川柳」が秀逸すぎる
 ・PDF資料が公開されたらぜひとも読むべき
 ・正直、これだけでこの本を読みたくなるレベル

 ・名言:「レガシーコードとは、コードで説明されていないコード」


○その他

 ・まつもと氏のサイン本が売られていた
 ・昨日に比べると参加者は少なめか?

[ Web技術 ] comments (0) trackback (0)
今日明日と行われている「Developers Summit 2009」

今日はそこに参加して話を聞いてきたのですが、
まだ明日もあるし、細かい話は週末にまとめるとして、
とりあえずは参加したセッションの概要と軽い感想を


○未来へつながる言語~ある言語おたくの視点から by まつもとゆきひろ 氏

 ・いわずと知れた「Ruby」の開発者
 ・しかし、今日の話の内容はRubyとあまり関係ない
 ・言語のこれまでとこれからのお話

 ・間違いなくこの人、「言語おたく」です
 ・楽しそうに話していたので、こちらも楽しく最後まで聞けた感じで

 ・相変わらずPHPは認めたくないらしい(´・ω・`)


○Ruby 1.9の現状と導入ポイント by Yugui 氏

 ・事前にわかっていたとはいえ、女性ということに軽く驚く
 ・とても「とがった」感じの人
 ・たぶん、こういう人でないと、Rubyのまとめ役なんてできないのだと思う

 ・多くはRuby1.9を勧める理由について
 ・大雑把に言って「真面目なプロセスで作られ」、
  「余計なものを切り捨てた」のがポイント
 ・YARVの展望についてもいろいろと

 ・個人的に聞きたかった1.8からの移行については、やっぱり文字列周り
 ・Gemがネイティブ?に取り込まれ、起動が高速化されたらしいので、
  これだけのために1.9に移行する価値はありそう


○美しいソースコードのための考え方 by こみゅぷらす

 ・このタイトルに惹かれたのか、狭い会場に133人集結
 ・講演者も運営も、10~20人程度を想定していたらしい

 ・肝心の内容はちょっと抽象的過ぎるか
 ・言ってることは結局「オブジェクト的に書くと綺麗に見える」ってことじゃない?
 ・コメントの是非も、「書かないのも書きすぎるのも良くない」という当たり前の結論

 ・そもそも、「参加者との討論」を想定していたらしい
 ・それにしちゃスライド多すぎないかい・・・?

 ・reject:しりぞける、拒絶する、冷遇する
 ・実際運営の人も全然いなくて、まさに「Reject Live」


○ブラウザJavaScript高速化JITバトル最終決戦 by 森田創 氏

 ・本当はこの時間の「Reject Live」を聞くつもりだった
 ・でも、前のセッションで閉口したので、急遽こちらに参加

 ・JavaScriptの内部実装のお話
 ・高速化するためにどんな工夫をしているか、ということ

 ・普段余り気にしない部分ではあるものの、なかなか面白かった
 ・でも、ちょっと難しいね(´・ω・`)
 ・そもそも、業務レベルだと「速くなればOK」が現実だし・・・

 ・むしろ、この人の本業は「オンラインゲームの開発」なのに、
  なんでVMの評論をしているのかが気になる


○飛行船萌え障害キタ━━━━ (;´Д`) ━━━━ !!!!
 ~テスト嫌いエンジニアに贈るテストのすすめ~ by 山根ゆりえ 氏 他

 ・このタイトルの前半もインパクトがあるが、もちろん後半が気になった
 ・このセッションもメインスピーカーは女性
 ・冒頭では「テストを簡潔に行うための手法」という話のはずだったのだが・・・

 ・飛行船のシミュレータのデモがなかなか
 ・スプーンを叩いて、その衝撃を信号に変換し、PCで受け取って操作
 ・で、このシミュレータのバグが話のメイン・・・だったのだが・・・

 ・ここから妙に素人っぽいというか、内容が一気に低レベル化Σ(・ω・ノ)ノ
 ・バグの原因が「設計ミス」「インターフェースの打ち合わせ不足」はともかく、
  「境界値テストしてない」とかなんなのよ・・・
 ・で、結論が「単体テストしましょー」とか、「納期とコストに見合ったテスト」とか、
  当たり前の話に収束して、それに対する手法の話がない

 ・一通り女性が話した後、ベテランの人が突っ込みを入れる時間に
 ・でも、その話も有益かといわれるとちょっと・・・
 ・正直期待はずれ(´・ω・`)


○その他

 ・Rubyの本を買うと、まつもと氏がサインしてくれる時間があった
 ・私服で来ていた人の8割はiPhone持ってたと思う
 ・やっぱりNetbookはこの手の講演のまとめには便利そう
 ・女性の参加者もかなり多かったのがちょっと意外


ちなみに、明日は午後の2セッションに参加予定

[ Web技術 ] comments (0) trackback (0)
メルティランサーRPG・リプレイ

経緯とか解説的なものはあっちで書いたので、補足的なことだけ

再公開にあたり、各シナリオの補足的なことを書こうかと思いましたが、
「当時の私」が結構まとめていたので、いじりませんでした

「用語集」に関してもいろいろ抜けがあるのですが、
これも直さない・・・というか、直せません
何を書こうとしてたかなんて覚えてないし・・・

ちなみに、「魔獣編」は第2話まで終わっていたはずなのですが、
リプレイとしてはまとまってません
ログはどこか探せばあると思いますが、あったとしても編集しないと思います

どうせ続きをやる気はないので、
覚えている範囲でネタバレを書こうかとも思いましたが、
皆さんのご想像にお任せします

あと、当時作った曲ですが・・・
再公開するなら手を入れないとちょっと厳しいかな・・・

ミクに歌わせるにしても、試しに歌わせた曲と違って、
英語の歌詞が存在するので、ちょっと難しいかなと
気が向いたら再調整してみます

[ 何か ] comments (0) trackback (0)
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>