アクトインディ開発者ブログ

子供とお出かけ情報「いこーよ」を運営する、アクトインディ株式会社の開発者ブログです

RubyKaigi2014 1日目レポート

9/18~20に開催されたRubyKaigi2014に、弊社からはエンジニア4名中3名(kawaguchi, oishi, komatsu)が参加費は会社持ち+期間中は出勤扱いで参加しました。 なお弊社ではおでかけ先探しに悩むパパ・ママを助けてくれるエンジニアを募集しています!

さて、私komatsuからは初日18日のレポートをさせていただきます。

CRuby Committers Who's Who in 2014 [JA]

発表者: Tomoyuki Chikanaga

  • コミッターはbotも含めると84アカウント
  • 今回のKaigiで発表する方15人に絞って紹介
  • 紹介内容はこちらのブログ参照

Building the Ruby interpreter -- What is easy and what is difficult? [JA]

発表者: Koichi Sasada

全て書くと多すぎるので詳細はこちらを見ていただくとして。

個人的にはトレードオフを考えつつ、トレードオフに打ち勝つような道を探すという話が印象に残っています。

Symbol GC [JA]

発表者: Narihiro Nakamura

資料

  • SymbolはGCされないので、ユーザ入力をSymbol化しているとメモリ使用量が増加し続ける脆弱性がある
  • Symbol GC導入後でもGCされるSymbolとGCされないSymbolがある
  • 前者(GCされる)をMortal Symbolと言う。'sym'.to_symなど
  • 後者(GCされない)をImmortal Symbolと言う。メソッド名など
  • Mortal SymbolはImmortal Symbolになりうるが逆は無い
  • ユーザ入力をメソッド名として使っていると上記の脆弱性は解消されないので注意

Continuous Delivery at GitHub [EN]

発表者: Robert Sanheim

会場が超満員だったので入り口付近で音声だけ…。

もちろん資料も見えないし英語も全く聞き取れなかったので、Twitterを見てどんな話をしているか理解しました。

  • Continuous Deliveryやれよ
  • あるブランチが長期間存在してるのは良くない、早めにマージできるようにするべき
  • GithubRailsを3に上げたときは、最初はブランチを切っていたけど長くかかり過ぎたのでmasterで作業した(?)
  • ↑のときはRailsのバージョンでコードを分岐させた(個人的にはそれはそれでつらそうだった)

What's wrong with your app? [EN]

発表者: Keiko Oda

  • Herokuのメンバーいっぱい来てるから見つけたら遠慮なく話しかけてね
  • Herokuでよく見るエラーの対処法とか
  • LoggingとMonitoringしましょう

Non-Linear Pattern Matching against Unfree Data Types in Ruby (Egison Pattern Matching in Ruby) [JA]

発表者: Satoshi Egi

  • Egisonの作者さんの発表で、Egisonパターンマッチの一部をRubyに持ち込んだ話
  • egison-rubyを作った。これによりRubyはnon-linear pattern-matchingの出来る2つ目の言語になった
  • ポーカーの役を判定するパターンマッチ
  • 自分でも書いたことあるけど、明らかに理解しやすいコードになってた
  • 個人プロジェクトで使ってみたいけど、そもそもパターンマッチってどんなところで使うんだろうか、調べてみよう
  • 質疑応答1 Q. 速度は問題ないか A. 大丈夫じゃないかな
  • 質疑応答2 Q. 習熟までに要する時間は A. 東大生で3時間、同僚は3日間

Hypermedia: the Missing Element to Building Adaptable Web APIs in Rails [JA]

発表者: Toru Kawamura

資料: http://www.slideshare.net/tkawa1/rubykaigi2014-hypermedia-the-missing-element

  • 今までのWeb APIは操作とURLが密結合していて変化に弱かった
  • 変化は避けられない、Web APIは変化に適応しなければならない
  • 例: FizzBazzaaS
  • クライアントは、URLとパラメータを用意してAPIをコールするのではなく、レスポンスに含まれるリンクを選ぶ(=Hypermedia)
  • すでにHTMLで実現されている(リンク、フォーム)
  • さらに、検索エンジンのクローラはこの部分がレビューだとどうやって判断しているのか -> Microdata
  • Microdataを使うことでHTMLの意味を表現することが出来る
  • HTMLをWeb APIに使えるのでは
  • でもJSON使いたいよね -> HTMLからJSONに変換するgem作ったよ > Hypermicrodata
  • Microdataだけじゃなく、リンクとフォームもHTMLから抽出する
  • WebアプリとWeb APIを分けて考えない、同じように設計する

"Gem of this Week" - building culture and making gem [JA]

発表者: Takumi Miura

資料: https://speakerdeck.com/mitaku/rubykaigi-2014-gem-of-this-week

  • geminaboxを使ってprivateなGemをホスティングしている
  • 通化出来そうなものはどんどんGemに
  • Gemを作る文化を育てている
  • 今週のGem、という企画があって良かったものを表彰している
  • drecom_gemで社内用Gemの作成を簡単に
  • GemnasiumをインスパイアしたGemicomを使ってgemの更新をチェックしている
  • 最新バージョンのgemを使っているかをランキング化している
  • 社内ツール開発サークルがある

Ruby committers vs the World

まとめきれないので詳しくはToggeterを見てください

  • Q. Ruby3.0に入れたい機能は A. Matz「明日(はぁと」
  • インデント整えるのは別のコミットにわけてほしい、本当にインデントだけを変えたのか確認しないといけない
  • Rubyにマクロは入らない、(neverは使わないで答えて、と言われて) absolutely not.
  • true.! # => false
  • etc...

個人的感想

  • 一日中イスに座って話を聞いてお尻が痛くなったりもしましたが、知見に溢れた講演ばかりでRubyを書きたい欲求が大いに刺激た
  • 今までTwitter上で眺めるだけだったRubyistの皆様と話すことができて、「場」を共有することの大きさを痛感させられた
  • Rubyコミュニティから恩恵を受けるだけでなく、貢献していけるようになりたい

月並みな感想ですが1日目のレポートは以上とさせていただきます。

最後に

繰り返しになりますが弊社ではおでかけ先探しに悩むパパ・ママを助けてくれるエンジニアを募集しています!