RegionalRubyKaigi レポート (35) 東京 Ruby 会議 10 中断後の 3 日目

RegionalRubyKaigi レポート東京 Ruby 会議 10 中断後の 3 日目

開催概要

: centre_ohwada.png

開催日
2013/2/10(日)
開催場所
渋谷区文化総合センター大和田さくらホール
主催
東京 Ruby 会議 10 実行委員会
公式ページ
http://tokyo10.rubykaigi.info
公式ハッシュタグ
#tkrk10

はじめに

1 月に「東京 Ruby 会議 10」 が開催されましたが、 1 日目は無事開催されたものの、2 日目には東京地方の降雪により交通機関の乱れがあり、 1 月 14 日の 14 時時点で 8 セッションを残し中断することになりました。 今回のレポートでは、別日程で開催された東京 Ruby 会議 10 の 3 日目の様子をお伝えします。

大和田 Ruby 会議

Ruby cruising Love

大和田純(@june29)

: june29.jpg

東京 Ruby 会議 10 の 3日目最初のセッションは会場の渋谷区文化総合センター大和田にちなんで、大和田純さんによる大和田 Ruby 会議からスタートしました! 大和田純さんが、Ruby を通して学んだこと、Rubyist やエンジニアとしてどう生きているかについて発表しました。

この日、大和田純さんは赤いリストバンドをつけていました。これには、acts_as_rubyist と書かれていて、Rubyist として背筋を正すためにつけていると紹介しました。 カンファレンスの場で、友人や後輩の前で胸を張れるように日々を過ごしたいという気持ちからつけていると紹介しました。

Ruby を勉強するために読んだ本のうち、三冊を選んで紹介しました。

  • たのしい Ruby
  • はじめての Ruby
  • メタプログラミング Ruby

この本のチョイスは、大和田純さんが Ruby を理解していった順に並んでいて、「たのしい Ruby」で Ruby の構文を知り、「はじめての Ruby」で Ruby ではこう書くという Ruby の文化に馴染み、「メタプログラミング Ruby」を再読して Ruby の仕様がわかってきたと話しました。

Web アプリケーションの開発では、Ruby 以外にも CSS や JavaScript を書くことが多くありますが、JavaScript では Ruby と同じ感覚では書けないので、Ruby と JavaScript の間を行き来しているうちに、Ruby の理解が深まったと言います。

一般講演 (3 日目)

Rails プログラマーの日常

joker1007 (@joker1007)

: joker1007.jpg

株式会社ウサギィの joker1007 さんが、プログラマになり Rails で受託開発を行ってきた一年間の中で考えてきたこと、学んできたことを発表しました。

システム開発の中でやらなくてはいけないことはとても多いと言い、その中でも大事なこととして、メンタルモデルと実装の一致について話しました。 頭のなかで考えているシステム像であるメンタルモデルと、実装をできる限り一致させることが大事であり、システムの価値を高めるためにシステムが担当する知識を拡大して実装に反映させ続ける作業が必要だと話しました。

他にも、開発がスタートした時点で環境構築を自動化することが時間節約の効果を最大化するために大事であることや、プログラマの仕事の半分くらいは名前付けだと思うくらい名前付けは大事だと話しました。

これまで読んできた本として以下の 5 冊を挙げました。

  • Ruby によるデザインパターン
  • リファクタリング: Ruby エディション
  • ドメイン駆動設計
  • 実践テスト駆動開発
  • 継続的デリバリー

一年間プログラマとして仕事をする中で、読んできた本の知識がリンクしてきたと言います。 しかし、まだまだやることは多く、経験が少ない中でどうやって仕事をしていこうか考えたときに、「大事なのは真実に向かおうとする意思」というジョジョの奇妙な冒険の中の言葉に勇気づけられると話しました。 昨日より今日をよくしようとするのがエンジニアの基本姿勢であり、自分自身の成長にも同じ事が言える。まともな自分に一歩ずつ進んでいきたい。と締めくくりました。

沖縄に集まって Rails Hackathon をやってみた。

安川要平 (@yasulab)

: yasulab.jpg

okinawa.rb から来た安川さんは、沖縄で行っているハッカソンを紹介しました。

okinawa.rb では毎週水曜日に「ギークハウス沖縄」で集まってコーディングをしています。沖縄といえば海なので、天気がいいと外でコーディングすることもあるそうです。ユニークなのが「台風そん」と呼んでいるハッカソン。沖縄では台風が多いため、台風が来たら室内にこもり、台風が過ぎるまでハッカソンを行うというものです。台風さえもエンジニアリングのモチベーションにしてしまう!という独特の発想に、会場からは笑いが起こりました。

okinawa.rb では、2012 年 11 月 24 日に shibuya.rb、minami.rb と合同でハッカソンを沖縄で行いました。会場は格安で、参加者からはたくさんのお土産も振る舞われたそう。そんな合同ハッカソンの上位 3 作品を紹介しました。

第 3 位は GISTAR と呼ばれるサービス。たくさんある Gist の中で興味があるものを探したい!という思いから作られたそうです。GISTAR は http://gist-mail.herokuapp.com でアクセスできます。

第 2 位は minami.rb から来た Team benten。スカイプのようなチャットアプリをブラウザだけで完結させようとしたそうですが、実装の難しさから完成には至らなかったそうです。しかしプロセスのロック機構などでつまづいた点などを共有しました。「僕たちは良いプロダクトを作りたいんじゃない。最新の技術を触りたいんだ」という、エンジニアらしい名言を残したと言って会場に笑いを誘いました。

第 1 位は ScreenX TV。ターミナルのブロードキャスティングサービスです。ローカルのターミナル画面を他人とブラウザ上で共有で共有できるサービスで、gem が公開されています。http://screenx.tv からもアクセスできます。ScreenX TV はその後も好評を博し、RubyConf Taiwan でも発表したそうです。最近ではプライベート機能も付け、URL を知っている人しかアクセスできないようにしたそうです。

懇親会は沖縄らしく三味線を聞いたり、弾き方を教わったりしたそうです。翌日は自由時間とし、参加者には沖縄を満喫してもらったと語ります。最近は JetStar で安く沖縄に来れるので、ぜひ気軽に来てほしい!と伝えてくれました。

Introduction to Ember.js

ursm(@ursm)

: ursm.jpg

株式会社永和システムマネジメントで普段は Ruby を書いていらっしゃる ursm さんはクライアント MVC フレームワークの一つである Ember.js に関する発表をされました。

従来の Web アプリケーションはシンプルで、クライアントの仕事はサーバに適切なリクエストを投げ、レスポンスを表示するものでした。しかし最近の Web アプリケーションはその垣根を越えつつあり、GMail のようにネイティブのアプリケーションと変わらずストレス無く開いてくれるものも出てきました。

今後もこのようなブラウザ側にリッチなことをさせようとするアプリケーションは増えるが、そうなったとき jQuery でどうにかしようとするのはとても大変で、そんなとき MVC に基づくデータと表現の分離を主な目的とする、クライアントサイドのフレーム Ember.js を使うというのも一つの手であるそうです。

ちょっとしたデモをということで Model、Controller、そして View の順に実装し、何か値を入れ submit したらすぐに表示され、またそれがカウントアップされるといったものを披露されました。このライブコーディングを通して Ember.js の特徴として DOM を操作するコードが 1 行も入ってないことを挙げると会場からは凄い!という声が上がっていました。

また、我々にもわかりやすく Rails の Model/Controller/View それぞれと比較して Ember.js を解説してくださり

  • Template
    • Rails が View と呼んでいるものに近い
  • View
    • プレゼンテーションロジックを持っている
  • Controller
    • Rails の Controller とはだいぶ違い、Action という概念はなく、Model の wrapper のように振る舞う
  • Model
    • ただのオブジェクトで永続化が必要な場合は別途ライブラリが必要
  • Router
    • Rails でいうところの Router+Action

とのことでした。

また Ember.js とは別に IRC に変わるチャットシステムを作られているとのことで、一般公開はできないがこのようなことに興味がある方は声をかけて下さいと締めくくられていました。

RubyMotion ではじめる!楽しい iOS アプリ開発

海老沢聡(@satococoa)

: satococoa.jpg

Yokohama.rb の海老沢さんは P4D や RubyMotion JP の二つの勉強会も主催されています。

RubyMotion を知っている人と会場に問いかけると開場内に知ってる人は多数。しかし有料なこともあって使っている人は少ない状態でした。 Ruby20 周年パーティに向け rubyfrends タグを付けて投稿できる iPhone カメラアプリ制作中でもうほとんど完成しているとのことで壇上で客席に向けてデモ撮影をされていました(その場ですぐに投稿の予定でしたが電波の関係で LT 終了後すぐの投稿となりました)。

また、RubyMotion の購入に踏み切れない人に対して、RubyMotion を試した気分になってもらいたいとライブコーディングをしました。 内容は Rails で scaffold したサーバサイドのデータを CRUD するクライアントアプリを RubyMotion で作るというもので、使う gem は bubble-wrap と formup の 2 つ。Cocoa Touch を使うので長いメソッド名は仕方ないとのことでしたが、その長いメソッドを壇上のプレッシャーの中打ち込み次々と出来上がっていく様子に会場からは「すごい」と感嘆の声が上がっていました。

Ruby を知っていて RubyMotion があれば iPhone アプリが作れるかというと、それだけでは書けずやはり iOS の知識も必要の事で、海老沢さんも RubyMotion を書き始めた当初は iOS の知識がなく、1 年もやってたら仕事で使えるレベルになれるんじゃないかとのことです。 Ruby らしくかけるような wrapper もリリースされだしたので、Ruby らしく iOS を書けるようにな状態になってきたそうでどうぞみなさん買って下さいと薦められていました。

巻き込まれ型人間のボッチ脱出計画

すがまさお (@sugamasao)

: sugamasao.jpg

すがまさおさんは、Ruby で自社サービスの開発を一人で行っています。そんなすがまさおさんが、どのように「ぼっち」の状態を解決してきたかを話しました。

はじまりは、Ruby 会議のレポート班に誘ってもらったことだと話します。ある日突然「レポート班をやらないか?」というメールが届き、そこには Ruby 会議を通じて Ruby に貢献できる、と書いてありました。すがまさおさんは、自身が Ruby を使って楽しく生活ができていたので、やるしかないと思い、深夜特有のノリでつい返事をしてしまったそうです。

これをきっかけに知らない人と仲良くなり、「ぼっち」を脱出する契機になりました。

どうしたら「ぼっち」を脱出できるのかについて、他人からきっかけを与えてもらう「待ちガイル」をするにはどうしたらよいかを 3 点挙げました。1 点目は、コードを書くこと。自分の必要な物を自分で作り、それを gem として公開すると他人にも使ってもらえるので、とてもやる気になるそうです。2 点目は勉強会に行くこと。大きい勉強会ではなく小さい勉強会で、参加者と話しやすい環境がよいのではないかと話します。3 点目はブログを書くこと。ストック型コンテンツであるブログは自分のメモとなる以上に、他人の助けになることも多いだろうと語ります。初対面では相手の興味がブログを通じて分かるので、勉強会の懇親会で話しのきっかけにも出来ると言います。

「自分のために書いてきたコードやブログ等を通じて、普段の自分の生活の中から漏れ出たものが巡って人との出会いになる。」と語るすがまさおさん。「ぼっち」の脱出から、そろそろ新しい人を迎え入れる立場になるのでは?との質問に対して、30 歳の抱負として考えていきたいと答えていました。

自分の道具を知る

@ryopeko (@ryopeko)

: ryopeko.jpg

株式会社ディー・エヌ・エーの ryopeko さんが、「自分の道具を知る」と題してソースコードを読むことの大事さについて話しました。

極論すれば、Rails と gem だけでアプリケーションが作れてしまうくらい、 Rails のエコシステムは強力だと話しました。しかし、技術的に一歩踏み込むと、 Rails によらない技術や知識が必要になってきます。アプリケーションをハイパフォーマンスなものにするために、低レベルな実装についての技術や知識が必要不可欠です。果たして、アプリケーションを作ることで得た技術だけで低レベル実装に立ち向かえるでしょうか? 低レベル実装に立ち向かうために、ryopeko さんは以下を認識することが大事だと話しました。

  • 何ができるのか
  • 何を知っているのか
  • 何がたりないのか

技術的に踏み込むために、ドキュメントを読まないという解答に行き着いたと話しました。 信用に足るものは、自動的に生成されたドキュメントと、コードだけで、動作がわからないときは敬意を評してコードを読むのがよいと話しました。コードを読むと、ドキュメントにない使い方や引数について知ることができるだけでなく、スーパーハカーが書いた生きたコードに触れ、コードを読む力もつけられるでしょう。

ソーシャルコーディングを実践するにも、コードを読むことが必要です。

social coding って、ソースを読まないとできないよ

コードを読むことで何ができるのかがわかります。もっとコードを読みましょう。バグを追うときなどにペアでコードを読むペアコードリーディングもおすすめだと話しました。

写真の提供

@igaiga555 さん撮影 http://www.flickr.com/photos/igaiga/sets/72157632741076174/ http://www.flickr.com/photos/igaiga/sets/72157632731638559/

書いた人たち

津田均 (@tendon0)

株式会社ブレインパッド所属。レポート班はもとより、Ruby コミュニティへの参加も初めてで緊張しましたが、メンバーのお陰で楽しく取り組めました!

小芝美由紀 (@chobishiba)

株式会社万葉所属。初レポート業楽しかったです。素敵な機会ありがとうございました。

菅井祐太朗 (@hokkai7go)

株式会社万葉所属。今回を持って二回に分けてお送りした東京 Ruby 会議 10 のレポートも終わりです。気がつけばもう RubyKaigi の季節ですね。今回もガッツリ楽しみます。