分1234569月14日から16日の3日間,札幌市産業振興センターにて札幌Ruby会議2012が開催されています。3日間に渡り,随時レポートをお届けします。ここでは2日目の内容をレポートしていきます。昨日とは会場受付等の場所が変更されています。受付は建物入り口すぐに移動しました。アンカンファレンス形式の,ぬRubyKaigiは,受付場所とは別棟の3Fで本日,明日と開催されます。空いている時間帯がありますので,発表したいネタがある方は気軽に検討してみてください!佐藤竜之介さん「コミュニティのある風景。⁠」⁠Ruby札幌に所属し,Nothubの開発者である佐藤竜之介さんの発表です(スライド等はこちら⁠)⁠。Code.」について,佐藤さん自身が考えることをまとめました。プログラミングとの出会い佐藤さんがはじめにプログラミングと出会ったとき,コードを書くことが楽しかったそうです。そのコードは,大きなソフトウェアの一部分であったり,ドキュメントを書くといったことで,オープンソースソフトウェアとの関わりもあまりありませんでした。オープンソースへもっとコードを書きたいと思い,佐藤さんが現在勤める株式会社えにしテックに入社しました。Xや,コマンドライン,GitなどといったOSやツールに触れることになったそうです。その頃からオープンソースのプロダクトを使う機会が増えてきました。これまではプロダクトというものは,どこからともなく大きいものが出てくるというイメージだったのですが,実際は中に作っている人がいて,日々開発を行なっている。読もうと思えばソースコードを読むことができる。佐藤さんは,こうしいった点に「楽しさ,魅力」を感じたと言います。魅力からGithubへオープンソースの「楽しさ,魅力」を感じ,佐藤さんはGithubを用いて気になるプロダクト,気になってる開発者を追いかけ始めました。普段の開発のなかでオープンソースのプロダクトを用いていると,バグを発見する場合が多々あると思います。佐藤さんは手元で直すことができたら本家に送りたいと考えました。Requestには「怖い」「⁠恥ずかしい」「⁠気が引ける」といった不安があったと話します。Requestを送っているとのことです。Requestは簡単なもので,READMEの記述ミスの修正でした。この修正自体は小さなものでしたが,みんなが使うプロダクトに自分のパッチが入ったこと,自分が困り解決したことでみんながよろこぶことに嬉しさを覚えたそうです。Requestにより,プロダクトというものは「自分ひとりではない開発。嬉しい,もっと書きたい」と強く思うようになったと言います。Requestの例としては,次のようなものがあります。Requestは,同じ内容のものを少し早いタイミングで送った人がいたことを挙げました。このとき,先に送った人は「こっちと同じだよ。ありがとう」とコメントをくれたようで,この最後のありがとうのおかげで報われた気がしたそうです。Requestを送るとプロダクトに対する「作者の意図」や「目指すもの⁠」⁠,「⁠考え方」を教えてくれるので,失敗ではないとのことです。Requestへのフィードバックが気になり,好きなハッカーがどういうことに興味があるのかなど,Githubのタイムラインが気になり始めたそうです。何度もGithubのページを見に行くのもあまり良くないと思い,Githubのタイムラインを通知してくれるサービスを探したが,自分に合うものは見つからなかったとのことです。そこで,無いのなら自分で作ろうと思いたち,Nothubを開発しました。Extensionです。Nothubを使うことで,新しいライブラリに出会うことも多くなり,一層バグなどを発見しやすくなることを示しました。Requestでみんなと開発を行うことについて説明しました。Requestはあくまでコードを通じて会話をする手段なだけだとしました。Requestを使って行なっているのは「とてもふつうの開発」だと言います。テキストベースの開発よりも,もっと身近にパソコン並べて一緒に座って開発したい!という気持ちがあるそうです。その開発を実現できるのが佐藤さんにとって「Ruby札幌」でした。「⁠みなさんの周りにそういう場所はありますか?」と会場に問いかけ,佐藤さんはもしなかったら「自分で作ろう!」と語りました。実際に佐藤さんも札幌でJavaScriptの勉強会であるSapporo.jsを立ち上げ活動しています。Requestであっても,最寄りの場所でも,人と一緒にコードを書ける場所があるということは尊いことだとし,このような場所から次のものを得ることができたとのことです。最後に佐藤さんは,もしかすると「今この場も,そんな場のひとつかもしれません」と締めくくりました。Ruby」Rubyコミッタ,NaCl取締役,Rubyアソシエーション事務局長であり,さらに釣り人でもある前田修吾さんによる発表です(スライド等はこちら⁠)⁠。今朝近くの川へ釣りに向かったものの,何も釣れずにがっかりされたそうです。関数型という言葉はオブジェクト指向と同様に,定義がはっきりしていない部分があります。そこで,前田さんはまず今回のセッションで触れる関数型プログラミングとは何を指し示すのかを定義しました。今回は「関数型プログラミングとは,副作用を用いないプログラミング」という定義にしたそうです。関数型は定義を書くのに向いていますので,関数型のセッションが関数型の定義から始まるというのもおもしろい構造ですね。それでは副作用とは何でしょうか。副作用とは同一の変数に以前と異なる状態を保持するというもので,前田さんは例として変数の再代入,オブジェクトの状態変更,入出力を挙げていました。Rubyは関数型プログラミングかなぜ関数型プログラミングという技術が着目されているのでしょうか。いくつか技術的な理由もありますが,大きな理由は何かかっこよさそうだからだと話します。ブロックやlambdaがある点,ifが文ではなく式である点などは関数型言語の特徴を受けていますが,基本的なデータ構造は短命データ構造であり,実装としては命令型であるとのことです。短命データ構造とはArrayやHashのような,破壊的な変更を加えると前のデータが失われるデータ構造のことで,変更を加えても元のデータが失われない(破壊的な変更ができない)データ構造のことを永続データ構造と呼ぶそうです。関数型プログラミングでは永続データ構造を用いるため,破壊的な操作を行えないListというクラスを新たに定義して,関数型プログラミングのトピックである再帰,遅延評価,メモ化,遅延ストリームなどを行えることを示しました。再帰ではメソッドを呼び出すごとにスタックというものが増えるため,Rubyで行うとすぐにスタック数の上限に達してしまい,StackOverflowというエラーになると言います。関数型言語では,メソッドを呼び出してもスタックを増やさない末尾再帰という機能があるため,スタックの上限に達しにくいように工夫しているそうです。実は,Rubyには既に末尾再帰が実装されているのですが,コード内にて明示的に有効化しなければならず,あまり知られていないため利用しているユーザーは少ないのではないかと話していました。すると2.0ではデフォルトで有効化されるかもしれないとのことです。gem化とベンチマーク今回のセッションで説明したコードはimmutableというgemにまとめられているとし,このライブラリを用いて,通常のArrayと速度の比較を行ったところ,10-50倍ほど遅いため,通常のプロダクトではまだArrayを利用したほうが良いとのことでした。質疑応答では,immutableの遅延評価はマルチスレッドに対応しているかという質問があり,していないという回答でした。レポート班KaigiFreaksとは,会場に来れなかった人にも雰囲気や内容を楽しんでもらえることをミッションとする特別編成チーム。配信班とレポート班の2班で構成される。レポート班の作業はエクストリームスポーツとして知られていたが,今回はその評判を覆すべく史上最大規模の編成で臨む。前鼻毅(まえはなつよし)Ruby札幌,アジャイル札幌,CLR/Hなど札幌のコミュニティで活動中。SOLUTIONSにてRubyやObjective-Cのコードを書いている。twitter:http://twitter.com/sandinistにく北海道出身で沖縄や東京に住んだ後,今は札幌在住のプログラマ。コンサドーレ札幌が好き。Ruby,Emacsが心のメインツール。最近はHaskellを試している。twitter:https://twitter.com/niku_nameblog:http://niku.name/小野寺大地(おのでらだいち)北海道大学大学院,一般社団法人LOCAL,Ruby札幌あたりで活動中。普段は複雑ネットワークの研究をしていて,肉チャーと二郎系ラーメンをこよなく愛している。Ruby札幌,札幌C++勉強会などで活動中。コレクションの要素数を数えるのに便利なライブラリ「multiset」などを作っている。Languageの文化」。twitter:http://twitter.com/h_hiro_小玉直樹(こだまなおき)生まれも育ちも札幌のプログラマ。RubyにハマってからはWebアプリを作るのが楽しくて日課になっている。1年ほど前からコミュニティ活動にも参加を開始し,素敵な技術者と出会える日々に感謝。twitter:https://twitter.com/volpe_hd28vblog:http://d.hatena.ne.jp/koda_hd28v/うさみけんたいまをときめく自宅警備員...だったのですが,Ruby会議の半月前に退職して東京に移住しました。Python札幌などでも活動。セキュリティ&プログラミングキャンプ2011言語クラスチューター。函数型言語の浅瀬で溺れる。twitter:http://twitter.com/zonu_exeblog:http://d.hatena.ne.jp/zonu_exeすずきゆうすけ札幌市に隣接する風の街・江別市で働く自営業。Ruby札幌にときどき顔を出す。Labsにもときどき出没。プリキュアと朝ドラをこよなく愛し,日々変動する体重に怯えるごくごく普通のアラフォー。twitter:https://twitter.com/yuskesuzkiみぃお一般社団法人LOCALで主に活動中。お家でRubyをちょくちょく書いている。お仕事はPHPでソーシャルゲームを作っている。twitter:https://twitter.com/ayako119homepage:http://miio.info/永沼智比呂(ながぬまちひろ)首の長いプログラマー。達人プログラマー読書会を主催したりしていた。Ruby札幌やSapporo.js,アジャイル札幌に参加。Ruby界隈の文化って面白い!twitter:https://twitter.com/onjiro_mohyahyablog: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などに顔を出している。Valim,Rubyにおける並行プログラミングのためのいくつかのアイデアを提案。2日目まつもとゆきひろさん,Rubyに影響を与えた言語とRuby開発初期を語る。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。