[2013-03-18 02:10]
朝に弱いRubyist達のため、10分押しの開演
Asakusa.rbの200回目!
前回は同じ場所の地下で
生活発表会 いつものミートアップの参加者、近隣の皆様の普段の姿を話す
NinjaTalk 15分ぐらいのライトなトーク
RubyFriendsしましょう!
https://speakerdeck.com/makoto_inoue/a-rubyist-life-in-london
2004年からイギリスへ 社内転勤によるワーキングビザ highly skilled migration program に切り替え spouse visa イギリス人の家族が居る方 2006年からRailsを使い出す 2008年からRailsで受託開発 New Bambooという会社で働いている 2010年からPusherを作る 2011年に、sinsai.infoの開発 2012年に、druby bookの英訳
トピック
-
コミュニティ
-
LRUG - London Ruby User Group
-
月に1回ぐらい集まって話していて、videoもある
-
Pecha Kucha Night 15秒単位で強制的にスライドが切り替わる
-
名立たる人はフリーランスの方が稼ぎがいいので、フリーランスが多いらしい。
-
-
カンパニー
- dragonflyの人居る会社
- 社内勉強会などもやっている
- TrueStory
- Mandays というJob rotationシステム
- 変わったプロジェクトに関わりたい、でもプロジェクトが長くなるとローテーションするようにしている
- Batmanという職種がある。インフラ系担当に近い。CIの導入など
- Keep Calm and Call Batman
- Hotleads 案件のVotingシステム
-
ビジネス
- 好きな仕事
- 新しいクールなテクノロジー
- 高いブランド
- ビジネス的に成功しそう
- 受けたくないもの
- うちがやっていいのか ビジネスとして微妙
- CRM つまらない
- Coding Monkey
- gov.uk
- 好きな仕事
-
RubyistとJapanese
-
日本語のRubyのリソースが豊富
-
るびまの英訳
-
欧米のRubyistsはGoogle Translateより良い情報が手に入ればいいらしい。 直訳っぽい日本語を書いてGoogleに任すのもアリでは?
- No Sorry
- No Sidestory
- No Joke
激動の10月 -> 10月にはコミットが沢山ありました
-
-
Asakusa.rbに参加する前の話
- 2002年 たのしいRubyあたりからRubyに出会う
- 2008年 からRubyが仕事になった
- 自分のために書く
- ruby.hを読んで、CからRubyのインターフェースを呼びだしてFizzBuzzをやったりしてた
-
Asakusa.rbに参加した後の話 Asakusa.rbに初参加して、Ruby本体にコントリビュートできる問題がすぐそこにあることを知って衝撃を受けた。 OSSで活躍している人に出会って、OSSに積極的に関わるようになった。 バグ報告をちゃんとやったり、使ってるツールの不満を直す。 特別な力が無くてもできることがある。
-
最近やっていることについて Cellloid, Sidekiq Misawa.pool
https://speakerdeck.com/katsyoshi/asakusa-dot-rbni-nian-jian-tong-tutarakounatuta
-
mikutter fluentd等を使っている
- mikutter-fluentd mikutter-jubatus
-
mikutter Rubyで書かれたGUI Twitterクライアント GTK2 40分間20000ふぁぼに耐えた実績 gtk2とcairoが入ってればbundlerでなんとかなる
プラグイン
- fav.rb キーワードでふぁぼる
- mikutter-jubatus ふぁぼを学習してTLに表れたツイートを自動でふぁぼ
(特定のキーワードで検索した結果、フィルタリングした結果をfluentで保存して、まとめに出来ないかな?)
-
td-agent BeagleBoard向けの改良 armhfアーキテクチャに対応するためのdpkgを作る
2/26からクックパッドは1.9.3、そして来月には2.0.0に!
1.9.3移行で苦労した事
- マジコメ
- ブロックパラメーターにインスタンス変数を書けたらしい。1.9で消えた
- view のテンプレートに散見
- これは厳しい
- Tempfileのオープンモードがw+に固定されている
- set_encoding BINARYしないと画像が保存できない。
- テストが無くてデプロイ時に気付く
- 1.9からハッシュのオーダーが保存される
- 1.8では一つしか要素が無い配列をto_sするとfirstのto_sが出力される
- ハッシュのto_sの挙動が違う
- Timeのrangeのinclude?が呼べなくなった
- Date#stepがActiveSupport::Durationを拒絶する
- Numericしかstepで受け取れない
- lambdaの引数マッチング
- nextでメソッドから抜けれなくなった chankoから本体に移す時にnextでメソッドから抜けるようなコードが残る
- lambdaの可変長引数の取り方 配列に入るようになった
- 1.8から1.9でSymbol.to_intが無くなった [:foo][:bar]とかでこける
- \wと\Wの挙動が変わった \wがUS-ASCIIになった。\p{Word}と書かなきゃならないが、1.8だとエラーになる \Wに対応する表現が無い
- 独自のString#blank?
- NKF互換メソッド まず互換のメソッドを用意して、そこに変換して直接NKFを呼ばないように kconvのメソッドで警告を出すように設定 警告を出して、開発エンジニアが気付きやすくする
- 1.8はnil.idが4を返す問題 nilのidが呼ばれたらloggerに吐くようにモンキーパッチ
- メール関係 妥当tmail tmail -> mail.gem かなり辛かったらしい
便利だったことができなくなると悲しいDate#stepとか
Rubyのバージョン別にモンキーパッチを整理する initializerでモンキーパッチ群を呼んでから、他のものを呼ぶ
新しいバージョンで増えるメソッドをモンキーパッチで導入する
初期からのAsakusaメンバー Ruby Associ 日本Rubyの会 Heroku Rubyコミッタ
つまらないCRMはこちらにお任せくださいww
ワンダと巨像
VM周りはそんなに変わっていない。1.9.4相当、互換性
デバッガAPI周りを整理 debugger2 ko1/debugger2 · GitHub https://github.com/ko1/debugger2
パフォーマンスを気にする人は、みんなGCにしか興味が無い -> GCをやるとモテる
-
2.0になってGCがどうなったか
- CoWに対応して早くなったりしてる
-
概要 基本的にはMark&Sweep 辿ることのできるオブジェクトをmarkして辿れなかったものをsweepして回収する
- コンサバティブ (元々は)
- lazy sweep from 1.9.3
- bimap marking from 2.0.0
- stack-less marking from 2.0.0
メモリ管理、オブジェクトアロケーションのざっくりとした説明
Root objects(stack, classes global variables)から順二マークしていく
保守的GC
- ベタメモリの中に何があるかは分からない メモリの中を見ない
- ポインタっぽいものは、とりあえずオブジェクタへのポイントとしてあつかう
- 利点
- Cの中で適当にRubyのオブジェクトを作成してもマークしてくれる
- Cのマシンスタックが楽になって、Cで処理が書きやすい
- 欠点 難しいバグを生む可能性がある たまたまポインタっぽいただの数値があって、関係無いメモリ番地をマークしてしまったり
lazy sweep
- sweepを後でやっても問題無いので、sweepを細切れに実行する。 処理系が1回で止まる時間を短くする
- 欠点
- メモリの開放が遅くなる
- スループットは変わらない キャッシュのローカリティが影響するかもしれない
Bitmap Marking
- CoW friendly forkなんてする人いるの?
- GCのたびにMark bitをセットしてたので、RVALUEの領域の値が書き変わってCoWに向かない それをまとめたBitmapを用意してそちらで管理する
- 欠点、markの探索にbitmapを経由するので若干遅くなる可能性
bitmapを画像に置き換えたデモ
-
どういう問題があるか
- 効率が悪い
- compactionがない
- これらに対応するにはライトバリアが必要
- C friendlyさが負債になっている
-
改善案
- 世代別GCとか
- valgringを使って導入支援
-
今後の展望 男坂を登るらしいw
OSDC.twでmrubyのLEDチカチカデモをやる予定
最近していること mrubyで組み込み開発 (macで)
組込みエンジニアあんまり居ない
プログラミングを楽しくする言語と組み込みを合わせたのがmruby rubyへの親近感で組み込みへ
実際にやってみると結構ハマってしまう
組み込みでLEDを光らせるのはHello Worldみたいなものだが、そこまでに結構挫折がある
プログラムを書くまでにハード的な障害に挫折しないために
たのしい開発のためには
- 効率的にコードが書ける
- 知りたいと思った時に知ることができる
ハードで挫折しない 必要なものは最小限にする 早くプログラミングに
STM32F4という一枚の基盤を使う
mrbgemを使ってmrb_ledを作る
Eclipse用のmrubyプラグインを実装中
デモ Eclipseから基盤と連携してデバッグする
mrubyをheapを大量に使ってしまうので、それで落ちたりする
今日はember-js-i18n
誰でも翻訳に参加できるように ローカライズされた情報をどうやってEmberに取り込むのか。
handlebarsが存在しないキーをどうやって処理していくか
最初はlocalappとi18n-jsを使っていた
wycatsさんのrake-pipeline-webfilter rake-pipeline-i18n-filter YAMLをロードしてjsonに変換してアセットパイプラインにほうりこむ
locale bound ember view {{t somekey}}というhelperを定義
サーバーとのやり取りなしで、言語ごとにビューを切り替えられる そしてジョジョネタww
Rubyのコミッタ就任 新米のコミッタはROMってろ
www.ruby-lang.orgをradiant CMSからjekyllに置き換えたい radiant CMSにログインしなくてもgithubで bugs.ruby-lang.orgの独自改良をプラグイン化したい Ruby Application CI よく使われるRubyで書かれているアプリケーションをCIでやる
ペパボにはカスタマーサービス部がある
- カスタマーサービスから開発部に問題を伝えたいが忙しそう
- ツールが使いづらい時は誰に言えば直してもらえるのか
問い合わせの検索が遅くて5分応答が無いとか
solrを使った検索システムを作る
昔の問い合わせDBをRailsに合うように変換してメソッド定義を自動で行うツールを用意した
puppetでsolrをぶちこむマニフェストを用意した rbenvとsolrとsupervisordとnginxが入る
https://speakerdeck.com/a_matsuda/asakusa-dot-rb-vs-the-world
Ruby Commiter Rails Commiter Haml Committer
-
odrkについて Asakusa.rbは毎週火曜日にコード書いたり、コードについて語ったりしている集まり。 odrkは2年に1回ぐらい
大江戸02でdave thomasが来てくれた話 後から02だったことにしたw
-
Railsコミッターになった話 Asakusaのおかげでコミッタになれた ささださんらと1.9でRailsを動かしてみたのが始まり 成瀬さんにM17nについて聞いたり うらべさんにREEについて聞いたり
Rubyコミッタに聞きながらRailsをいじれるという贅沢な環境 Asakusaすごい
-
Railsコミッターの日常 開発風景、campfileで話して、Basecampに積んでいく 後はひたすらissuesに対応する コミットよりもメンテナンスが多いかも 一段高い所で仕事してるコミッターも居ると思う DHHとかjose vadimとかaaronとか
コミッターに必要な能力は英語でのコミュニケーション能力
正攻法では勝てないので日本から参加することの意義を出していきたい
- Asakusaに居る事を活かす
Railsコミッターは化け物集団
-
vs. theWorld Brit Rubyが今日あるはずだった。けどスピーカーが全員白人男性だったとかいう理由で燃えてしまってキャンセルになった。 多様性はgoodどころかneed
日本人スピーカーが空前の売り手市場
Asakusaと世界の情報格差
これらで喋ってくる予定 RubyConf RubyConf Taiwan (招待 RedDot RubyConf (招待 RubyShift (招待
必要なものは
- 勇気
- 根性
- 情熱 なんかではない
- CFPが書けるだけの英語力
- オーディエンスに伝わる英語を喋れる能力
- 必殺技を持つ ネイティブじゃない人間が抽象的な話をするのは難しい。 Codeで話せるようになること
Asakusa.rbでやっていることを世界でやればいい
オープンソースにばりばりコントリビュートしてる同世代の日本人が少ない
コントリビュートしたことない人がコントリビュートしていくには 0 から 1にしていくためには
コントリビュートとは
- バグのレポート
- 新しい機能やバグについての議論
- 修正
- タイポを直す
どこからコントリビュートしているのか
Gem選びからオープンソースとの関係は始まっている
楽しようとしてgemを使おうとしてるのに、それで苦労してる
でも、動かないというサインが大事 これを楽にしていこうという気持ちが貢献のチャンス
アーロン曰く、オープンソースにコントリビュートするのはプログラマーに求められている"スキル"だ
良くないバグレポートがよくある
- 入れたら(外したら)壊れた
- productionだと動かない
- バージョンの記載がない、スタックトレースがない
- 整形されてない
- 英語以外
後で誰かが同じ問題を踏んだ時に英語じゃなかったら読めないかもしれない
良いバグレポート
- バージョン
- コミットが示されている
バグの修正、新しい機能追加をするためにはソースコードを読む必要がある。 コードリーディングはスキル。高めていく必要がある。
良くないpull request
- テストがない、通ってない
- 特定のバージョンで動かない
良いpull request
- シンプルで、必要な変更のみを含んでいる
- 必要十分なテストがある
- 機能追加には使用例を含める
おせっかいなぐらい書いてるのがちょうど良い。
コードで会話できるってのはあるかもしれないけど、そんなのは幻想だ。 言い訳の材料にしない
タクシーに乗るにはどうするか。
- 流し
- 電話する
- 待機場所
アナログ無線とデジタル無線が混在しているが、アナログ無線の帯域は2016年まで
デジタル無線は専用の車載端末や無線網を整備したり
安価なAndroid端末とWebを使った配車システムを作った
Tablet Solution Award 2012受賞
プロトタイプの状態からファーストユーザーと開発
使いものになるサービスを作る必要がある
お客さんと一緒に作り上げていく必要がある。
プロトタイプデモ 開発者がドメインの知識を得るための取材や見学
プロセスや考え方では難しい。
- 動いているアプリに手をつけない文化など
その他のプロダクトから知恵を借りる
受託開発にはQCDのコントロールや案件ごとのばらつきを無くすことが求められる ターゲットを見極める。
Rubyには多彩なバックグラウンドを持つ人が居る そこから学んでいく 色んな知識や経験を持った人との出会いのハブとしても (人との繋がり大事)
SIだからどうのとかではない。
Rails Girls
スピリチュアルな話
Lindaさん天使
Rails Girlsは世界的なイベント Rails Girls Tokyo 1stはyokoletさんがオーガナイザー
Rails Girls Kyotoはpapilo17さんが東京が羨しかったので始めた
そして今年の3月にTokyo 2nd
いつも25人ぐらいの募集に倍以上の応募が届く。 そして20名ぐらいのコーチを揃えている。
興味を持ってもらう。 自分でできるということ、誰かが作っていることを知ってもらう
Rails Girls Moreで継続的に勉強している。 10名ぐらいの参加者と、7名ぐらいのコーチ
コミュニティへの参加にも繋がっている。
-
どうしてRails Girlsを続けたか? きゃっきゃしたい。(女性と) 何故きゃっきゃしたいか、普段きゃっきゃできないのか
Rails Girlsの印象操作すげえww
-
Rails Girlgが求めていること プログラミングをもっとふつうの人の手に 求めているのは多様性と豊かさ
Rails Girlsのはじめかた Open Source Event (鳥居さん命名)
- 詳細なGuideの公開
- Guideの更新追加もpull requestできる
- 誰でも参加している
一人が作るイベントが世界中に広まることはない
Girlsのラベルを貼り替えでも大丈夫。 ex: Rails寺子屋
スポンサー募集中
ふつうの人がふつうにプログラミングする世界に近付いていく
http://www.slideshare.net/authorNari/ruby-17269278
プログラミングへの向き合い方
桐島の設定をRubyに置き換えた話がハイパー面白い
技術力はないが熱心なリーダーに誘われる、リア充のエース
自分は人並以上のコードは書けるけどスゴイ級ではない
perfume-devをRubyで動かしてみたww
githubのスター教 スター数
自分は何者にもなれないかもしれないのに、何故コードを書いているのか (万葉.rbで話すネタとつながりそう)
- 人に使ってもらいたい
- お金
- 有名になりたい
- 日頃の生活を便利に ←←
最高のハックは、作者の日常的な問題に対する個人的な解決策として始まる
始めてコードを書いた時の事
- 日常の問題を解決しようとか思ってない (自分はこっちだった)
- 社会の役にたつとか考えてない
楽しいからやってる GCの改善も楽しいからやってる
mameさんになぜQuineを書いてるんですか?と聞いてみた -> よくわかりません。でも書いてるときが一番楽しい。
スゴイ人は、スゴイ遊んでる。 遊ぶためなら目的を選ばない
狙っても大したもんはできない
遊び方の例 プロコン 目的決定とかない。遊ぶだけでいい。 - ICFPC 毎年NaCLは有志で参加している - AtCoder Atcoderをやる勉強会とかいいんじゃないか
(自分とは違う方面での楽しみ方)
Bad code is better than no code
@kakutani: 閉会のご挨拶など