2014年04月19日(Sat) 大江戸Ruby会議04 [長年日記]
● 以前おいしい朝食のついてきたホテルのチェーンに泊まったら朝食の劣化がひどくてがっかり。まあコストの削減が必要なんだろうね。気を取り直して江戸東京博物館まで歩きました。
● [Ruby][oedo04] 大江戸Ruby会議04
(ここ以下の記事は2014年7月になってから書いてます。遅い。メモからの再録ですので、抜けがあるほか、zundaによる誤りが含まれている可能性が高いです。ご了承ご指摘ください。)
かくたにさんによると、- asakusa.rb
- 世界中のどこかのアサクサに集まる
- 大江戸Ruby会議
- 生活発表会
とのこと、皆さんの様々な生活について勉強させていただきました。
● From Legacy to Edge
@hsbtさんによる発表。Speker Deck、YouTube
やっていること
- 30d.jp - 450TB、1TB/day、250GBのデータベース
- IRC - お金をはらうユーザーが居たらスシを並べる
- 4 deploy/day (Hubot)
- 不要なコードを消すのがお仕事
2年前に入社した時のRuby 1.8.6/Rails 2.0.2からRuby 2.1.1/Rails 4.0.4への移行。 「動いてるんだから放っておけよ」と「バージョン入れるだけで速くなる」との戦い。 使えるRubyのバージョンと使えるRailsのバージョンには相関がある。 Rubyはバージョンが上がるにつれて速くなり、 Railsはバージョンが上がるにつれて遅くなる。 cookpad/kage (シャドウプロキシ) によるテスト。 本番環境へのリクエストをテスト環境にコピーしてくれる。
まずRails 2.3へ。Rails 3.0と同様に使えるようにバックポートし、 bundlerやrackを使えるようにした。
次にRubyを1.9.3から2.1.1へ。毎日trunkを追いながら。
Ruby 2.0から2.1へ。CPU負荷とレスポンスタイムが下がり、メモリ使用量は上がった。 Hash#rejectにregressionがあるので注意が必要(Rails 3.2は走らない、Rails 4.0なら走る)。
Rails 3.2を4.0へ。遅くなった。
Rails 4.0から4.1へ。ちょっと速くなった。 バージョンアップに追随しなかった期間と追随するのに必要な期間との関係:
放置期間 | 作業時間 |
---|---|
1ヶ月 | 3時間 |
1年 | 2年 |
Ruby 2.1から2.2へ。いろいろ入りこむと、自分のやりたいことが自分でできるようになって、おすすめです。
● Infrataster
「大場派の若者」あらいさん。Speaker Deck、YouTube
GitHbu trends - RSSで見られるようになった。
git-commit-autouser - リモートのURLによってauthorが変化する。
Infratester - 外側からサーバのふるまいをテストする。 Infrastructre as a code。
- サーバースペックでテストを書く
- chef cook book等を書く
- 十分になるまで最初から繰り返す
- できる
サーバースペックでできない項目もある。
● Random Ruby Tips
香港からWinstonさん。rubyasia.com。 Speker Deck、 YouTube。
● Nobody Knows Nobu
@_zzakさん。Speker Deck、YouTube。
わたしたちはみんなノブのように
いっしょうんめいになるべきですよみなさんのRubyをよくするために
Q&Aより:
- 1缶で2-3個バグをまわす
- 長いのは1ヶ月
- シラフでもコードを書ける
● 私は如何にして異国でエンジニアとして生き抜いてきたか
レオさん。YouTube。
異国で働くことの問題 - 言語、仕事に就くこと。
言語の問題は、単に住むだけでは解決しない。 学校に行ったり資格を取るのもいまいち。 99%実践、1%勉強。
仕事に就くには、paijob.com、gaijinpot.com、リクナビなどはいまいち。 ネットワークを作るのが大切。Tokyo Rails Meetupとか。
それ以外に、文化も大切。スラング、ジョーク、画像、何が好きか。
encounter→enbrace→learnの繰り返し。
語彙がわからない、ネタがわからない、英語に触れる機会がない→ ネット文化を活用する。Redditを活用する。 ネタ、コミュニティのコミュニティ、生きている英語。 subredditから自分の興味のあるところを探す。
- AMA
- Ask Me Anything
- TIL
- Today I Learned
- ELI5
- Explain Like I'm Five
● 画像を壊すこと、OSS 活動をすること、その他
@makimotoさん。YouTube。
OSSを使う→なおす、かく。
Glitched string。"ねむい".glitch。
自分の好きなものを作って公開する、壊れているもの、中途半端なものを直す。 グリッチ駆動開発。
● RubyVM読んでみた
kawamotoさん。Speaker Deck。
RHGの翻訳なども。Ruby Hacking Guide Translation。
RHGは第二部が好き。これがなかったらVMは読めなかっただろう。
今のおすすめは、Rubyとmrubyを同時に読んでいくこと。
● あたらしいジェイソンのはなし
うらべさん。YouTube。https://rubygems.org/gems/RFC7159
JSONのRFCの新しいのが出た。RFC7159。
raccでRFCのBNFをだいたい対応するように翻訳できる。
テストケースは言語に依存しないようにした。これがウリ。
不正なUTF-8バイト列を受け取るようにすると遅くなる。 規格では受け取れないようにしてもいいのではないだろうか。
● A Histroy of Fetching Specs
@hone02さん。YouTube。
bundler core - history of dpendency specs。
名前とバージョンのタプルのアレイだった。 依存性の記述はない。が、gemspecには依存性がある。 すべてのgemspecの情報が入っていてメモリに乗っているので遅い。
Dependency API。gemの名前、バージョン、直接の依存性。 しかし、キャッシュできない、ツリー構造のデータを解かないといけない。
New Index Format。names.list、versions.list、deps/* (例えば、deps/nokogiri)。 lMarshallより小さくなった。興味のない情報は読まなくてよい。
● Object Bouquet ~ 幸せの花束・RValue のきらめきを添えて ~
ささださんご夫妻。YouTube。
オブジェクトの関係を観察するツール。ブラウザー、d3.jsのSVGキャンパス。 ObjectSpace.reachable_objects_from(obj)。 子クラスを作ったりすると、Internal objectが見えることがある。 Ruby Under a Microscope (oreilly.com)。
● Another Language You Should Learn
西村さん。YouTube。
たくさん読んでたくさん聴く。
たくさんやらなきゃできるようにならない。
ちょっとずつちょっとずつやるんだ。
● mruby hacking guide
@_ksss_さん。Speaker Deck、YouTube。
「Contributeすることはvery easyだ」(@_zzakさん)。 「好き勝手やっていいんだ」
Rubyの実装は宝の山。考えぬかれたアルゴリズム。
良いプログラマはデータ構造を気にする。
● Hacking (My) Home
松田さん。Speaker Deck、YouTube。
家の売却 - 資産計画書の見積り。
借金するのにサラリーマンじゃないと、銀行はインターネットを調べる。 担当の人がるびまを読んでるとか、2つの世界は地続きだった。
設計図リーディング。 建築業界は進んでいて、ウォーターフォールとアジャイルがうまくバランスしている。
● Ruby会議でSQLの話
青木さん。slideshare、YouTube。
1998年からRuby、2007年からTeradata (1983年からある会社だ!)、 2014年からCookpadでAmazon Redshift。ビッグデータの人。
100TBのデータを並列RDBにつっこむ。
2005年のHadoop (MapReduce)
Hive SQL interface MapReduce (Java) HDFS (分散ファイルシステム)
コストの高いMapReduceは捨たれて、Impala/Stingerに。 何でも書けるHadoopと速い並列RDBとのハリブリッドに。
MapReduceは並列処理にJavaやCをはさみこめる。
「よいものはよい」しかし知識が偏在している。境界を越えていく必要。
エンタープライズ | OSS | |
Aster | Ruby |
「新たな壁を発見して、そこを越えていったらいいんじゃないでしょうか」 日本語/英語。Ruby/Python/PHP。
最近のツッコまれどころ