Sapporo RubyKaigi 2012 スペシャルレポート

札幌Ruby会議2012,2日目レポート[更新終了]

この記事を読むのに必要な時間:およそ 18.5 分

9月14日から16日の3日間,札幌市産業振興センターにて札幌Ruby会議2012が開催されています。3日間に渡り,随時レポートをお届けします。ここでは2日目の内容をレポートしていきます。

昨日とは会場受付等の場所が変更されています。受付は建物入り口すぐに移動しました。

画像

アンカンファレンス形式の,ぬRubyKaigiは,受付場所とは別棟の3Fで本日,明日と開催されます。まだまだ空いている時間帯がありますので,発表したいネタがある方は気軽に検討してみてください!

画像

佐藤竜之介さん「コミュニティのある風景。」⁠

Ruby札幌に所属し,Nothubの開発者である佐藤竜之介さんの発表です(スライド等はこちら)⁠札幌Ruby会議2012のテーマである「We Code.」について,佐藤さん自身が考えることをまとめました。

プログラミングとの出会い

佐藤さんがはじめにプログラミングと出会ったとき,コードを書くことが楽しかったそうです。しかしそのコードは,大きなソフトウェアの一部分であったり,ドキュメントを書くといったことで,オープンソースソフトウェアとの関わりもあまりありませんでした。

「もっとコードを書きたい」から オープンソースへ

もっとコードを書きたいと思い,佐藤さんが現在勤める株式会社えにしテックに入社しました。そこで,今となっては普通に使っている,Mac OS Xや,コマンドライン,GitなどといったOSやツールに触れることになったそうです。その頃からオープンソースのプロダクトを使う機会が増えてきました。

これまではプロダクトというものは,どこからともなく大きいものが出てくるというイメージだったのですが,実際は中に作っている人がいて,日々開発を行なっている。また,読もうと思えばソースコードを読むことができる。佐藤さんは,こうしいった点に「楽しさ,魅力」を感じたと言います。

魅力からGithubへ

オープンソースの「楽しさ,魅力」を感じ,佐藤さんはGithubを用いて気になるプロダクト,気になってる開発者を追いかけ始めました。普段の開発のなかでオープンソースのプロダクトを用いていると,バグを発見する場合が多々あると思います。佐藤さんは手元で直すことができたら本家に送りたいと考えました。

GithubであればPull Requestという機能があるので,この機能を使おうと考えたそうですが,Pull Requestには「怖い」⁠恥ずかしい」⁠気が引ける」といった不安があったと話します。このような恐怖を取り除くためには,安心できるまでチェックして自信をもって送ることだとし,そのために佐藤さんは「本当にバグ?」と疑い,次の観点から本当にバグか調査を行いPull Requestを送っているとのことです。

  • commit logのチェック
  • MLでの議論
  • テストの有無(バグではなく作者の意図ではないだろうか)
  • 作者の意図に合っているだろうか

Pull Requestを送るということ

佐藤さんが初めて送ったPull Requestは簡単なもので,READMEの記述ミスの修正でした。この修正自体は小さなものでしたが,みんなが使うプロダクトに自分のパッチが入ったこと,自分が困り解決したことでみんながよろこぶことに嬉しさを覚えたそうです。

このPull Requestにより,プロダクトというものは「自分ひとりではない開発。嬉しい,もっと書きたい」と強く思うようになったと言います。

佐藤さんが送ったPull Requestの例としては,次のようなものがあります。

  • active admin のマルチバイト対応
  • active admin の日本語ロケールの文言編集
  • CapybaraのスクリーンショットをpublicなAPIにする提案

しかしながら,いつも良いPull Requestを送ることができたわけではなかったとし,例えばhomebrewというプロジェクトに送ったバージョンアップのPull Requestは,同じ内容のものを少し早いタイミングで送った人がいたことを挙げました。このとき,先に送った人は「こっちと同じだよ。でもありがとう」とコメントをくれたようで,この最後のありがとうのおかげで報われた気がしたそうです。

良いPull Requestではなくとも,Pull Requestを送るとプロダクトに対する「作者の意図」「目指すもの」⁠⁠考え方」を教えてくれるので,失敗ではないとのことです。

Nothubの開発へ

パッチを送る量が増えるにしたがい,自分の送ったPull Requestへのフィードバックが気になり,好きなハッカーがどういうことに興味があるのかなど,Githubのタイムラインが気になり始めたそうです。何度もGithubのページを見に行くのもあまり良くないと思い,Githubのタイムラインを通知してくれるサービスを探したが,自分に合うものは見つからなかったとのことです。そこで,無いのなら自分で作ろうと思いたち,Nothubを開発しました。

このNothubは,Githubのイベントを通知してくれるChrome Extensionです。Nothubを使うことで,新しいライブラリに出会うことも多くなり,一層バグなどを発見しやすくなることを示しました。

We Code.

ここまでPull Requestでみんなと開発を行うことについて説明しました。佐藤さんの中では「Pull Request = We Code?」の答えは「No」であるとし,Pull Requestはあくまでコードを通じて会話をする手段なだけだとしました。このPull Requestを使って行なっているのは「とてもふつうの開発」だと言います。

また,テキストベースの開発よりも,もっと身近にパソコン並べて一緒に座って開発したい!という気持ちがあるそうです。そして,その開発を実現できるのが佐藤さんにとって「Ruby札幌」でした。⁠みなさんの周りにそういう場所はありますか?」と会場に問いかけ,佐藤さんはもしなかったら「自分で作ろう!」と語りました。実際に佐藤さんも札幌でJavaScriptの勉強会であるSapporo.jsを立ち上げ活動しています。

まとめ

Pull Requestであっても,最寄りの場所でも,人と一緒にコードを書ける場所があるということは尊いことだとし,このような場所から次のものを得ることができたとのことです。

  • ひとの考え方
  • プロダクトの文化
  • 一緒にコードを書く仲間
  • そして,⁠もっとコードが書きたくなる気持ち」

最後に佐藤さんは,もしかすると「今この場も,そんな場のひとつかもしれません」と締めくくりました。

画像

画像

前田修吾さん「Purely functional programming in Ruby」

Rubyコミッタ,NaCl取締役,Rubyアソシエーション事務局長であり,さらに釣り人でもある前田修吾さんによる発表です(スライド等はこちら)⁠今朝近くの川へ釣りに向かったものの,何も釣れずにがっかりされたそうです。

関数型プログラミングの定義

関数型という言葉はオブジェクト指向と同様に,定義がはっきりしていない部分があります。そこで,前田さんはまず今回のセッションで触れる関数型プログラミングとは何を指し示すのかを定義しました。

今回は「関数型プログラミングとは,副作用を用いないプログラミング」という定義にしたそうです。関数型は定義を書くのに向いていますので,関数型のセッションが関数型の定義から始まるというのもおもしろい構造ですね。

それでは副作用とは何でしょうか。副作用とは同一の変数に以前と異なる状態を保持するというもので,前田さんは例として変数の再代入,オブジェクトの状態変更,入出力を挙げていました。

Rubyは関数型プログラミングか

なぜ関数型プログラミングという技術が着目されているのでしょうか。いくつか技術的な理由もありますが,大きな理由は何かかっこよさそうだからだと話します。

Rubyは関数型でしょうか? ブロックやlambdaがある点,ifが文ではなく式である点などは関数型言語の特徴を受けていますが,基本的なデータ構造は短命データ構造であり,実装としては命令型であるとのことです。

短命データ構造と永続データ構造

短命データ構造とはArrayやHashのような,破壊的な変更を加えると前のデータが失われるデータ構造のことで,変更を加えても元のデータが失われない(破壊的な変更ができない)データ構造のことを永続データ構造と呼ぶそうです。

関数型プログラミングでは永続データ構造を用いるため,破壊的な操作を行えないListというクラスを新たに定義して,関数型プログラミングのトピックである再帰,遅延評価,メモ化,遅延ストリームなどを行えることを示しました。

Rubyの末尾再帰

再帰ではメソッドを呼び出すごとにスタックというものが増えるため,Rubyで行うとすぐにスタック数の上限に達してしまい,StackOverflowというエラーになると言います。

関数型言語では,メソッドを呼び出してもスタックを増やさない末尾再帰という機能があるため,スタックの上限に達しにくいように工夫しているそうです。

実は,Rubyには既に末尾再帰が実装されているのですが,コード内にて明示的に有効化しなければならず,あまり知られていないため利用しているユーザーは少ないのではないかと話していました。もしかすると2.0ではデフォルトで有効化されるかもしれないとのことです。

gem化とベンチマーク

今回のセッションで説明したコードはimmutableというgemにまとめられているとし,このライブラリを用いて,通常のArrayと速度の比較を行ったところ,10-50倍ほど遅いため,通常のプロダクトではまだArrayを利用したほうが良いとのことでした。

質疑応答では,immutableの遅延評価はマルチスレッドに対応しているかという質問があり,していないという回答でした。

画像

画像

著者プロフィール

KaigiFreaks レポート班

KaigiFreaksとは,会場に来れなかった人にも雰囲気や内容を楽しんでもらえることをミッションとする特別編成チーム。配信班とレポート班の2班で構成される。レポート班の作業はエクストリームスポーツとして知られていたが,今回はその評判を覆すべく史上最大規模の編成で臨む。


前鼻毅(まえはなつよし)

Ruby札幌,アジャイル札幌,CLR/Hなど札幌のコミュニティで活動中。RICOH IT SOLUTIONSにてRubyやObjective-Cのコードを書いている。

twitter:http://twitter.com/sandinist


にく

北海道出身で沖縄や東京に住んだ後,今は札幌在住のプログラマ。コンサドーレ札幌が好き。Ruby,Emacsが心のメインツール。最近はHaskellを試している。

twitter:https://twitter.com/niku_name
blog:http://niku.name/


小野寺大地(おのでらだいち)

北海道大学大学院,一般社団法人LOCAL,Ruby札幌あたりで活動中。普段は複雑ネットワークの研究をしていて,肉チャーと二郎系ラーメンをこよなく愛している。

twitter:http://twitter.com/onodes
facebook:https://facebook.com/onodes


H.Hiro

北海道大学大学院在籍。Ruby札幌,札幌C++勉強会などで活動中。コレクションの要素数を数えるのに便利なライブラリ「multiset」などを作っている。Rubyで好きなものは「ブロック付きメソッド呼び出し」「Domain-Specific Languageの文化」。

twitter:http://twitter.com/h_hiro_


小玉直樹(こだまなおき)

生まれも育ちも札幌のプログラマ。RubyにハマってからはWebアプリを作るのが楽しくて日課になっている。1年ほど前からコミュニティ活動にも参加を開始し,素敵な技術者と出会える日々に感謝。

twitter:https://twitter.com/volpe_hd28v
blog:http://d.hatena.ne.jp/koda_hd28v/


うさみけんた

いまをときめく自宅警備員…だったのですが,Ruby会議の半月前に退職して東京に移住しました。Python札幌などでも活動。セキュリティ&プログラミングキャンプ2011言語クラスチューター。函数型言語の浅瀬で溺れる。

twitter:http://twitter.com/zonu_exe
blog:http://d.hatena.ne.jp/zonu_exe


すずきゆうすけ

札幌市に隣接する風の街・江別市で働く自営業。Ruby札幌にときどき顔を出す。Garage Labsにもときどき出没。プリキュアと朝ドラをこよなく愛し,日々変動する体重に怯えるごくごく普通のアラフォー。

twitter:https://twitter.com/yuskesuzki


みぃお

一般社団法人LOCALで主に活動中。お家でRubyをちょくちょく書いている。男の娘。お仕事はPHPでソーシャルゲームを作っている。

twitter:https://twitter.com/ayako119
homepage:http://miio.info/


永沼智比呂(ながぬまちひろ)

首の長いプログラマー。達人プログラマー読書会を主催したりしていた。Ruby札幌やSapporo.js,アジャイル札幌に参加。Ruby界隈の文化って面白い!

twitter:https://twitter.com/onjiro_mohyahya
blog:http://onjiro.blogspot.jp/


わたなべしゅうじ

札幌在住のプログラマ。札幌Javaコミュニティ代表。Java,Ruby,Python,JavaScriptなどを扱い,ユニットテストが好物。

twitter:https://twitter.com/shuji_w6e/
blog:http://d.hatena.ne.jp/shuji_w6e/


菅井祐太朗(すがいゆうたろう)

北海道から上京して一年。ようやく仕事でRubyを使えそう。Ruby札幌,Asakusa.rb,Yokohama.rbなどに顔を出している。

twitter:https://twitter.com/hokkai7go
blog:http://d.hatena.ne.jp/lncr_ct9a

コメント

コメントの記入