Ruby札幌
2014年02月20日
2月8日の札幌市中央区Ruby会議01に参加してきた。
会議のコンセプト
今まで開催された「札幌Ruby会議」とは異なり、「札幌市中央区Ruby会議」というエリアの絞られたタイトルになっているのだが、これについて主催の佐藤竜之介(@tricknotes)さんがメーリングリストで述べていたのは
今回の札幌市中央区Ruby会議01では、
こんな方々をメインターゲットとして考えています:
- 今まであまりコミュニティに参加してなかったけど、趣味や仕事を通じて普段から Rubyと関わりがある方
- 改善のヒントを探している、もっと Ruby を楽しく書きたい、という方
そして暗黙の内に仮定してましたが、札幌に住んでいる方々をメインターゲットと考えています。
札幌市中央区Ruby会議01のご案内 - qwik.jp/RubySapporo
なので、道外からの Rubyist を再優先におもてなしするための設計にはなっていません。
(メインターゲットではない方々が楽しめない会議にしたいというつもりではないです!ねんのため。)
とのことであった。
会場もそこまで大規模なものではなく、普段の勉強会の2倍程度の部屋で、雰囲気は普段の勉強会に近いけれども、選び抜かれた発表者による発表で濃密な時間を過ごせた。
また、最近IT系勉強会への参加頻度が下がっていたので、自身のモチベーションを上げるいいきっかけになった。というか、会場内でモチベーションが高まりすぎて、以前書いて一般公開してなかった「単語集合を与えて、その中で最大単語数のしりとりを求めるプログラム」を会場からgithubに上げていた。
各発表
- 佐藤竜之介さん「Rails あるある」
- Railsにおける、現場での悩みとアンチパターン。「退社した社員をデータベースからの論理削除で表現すると、退社した社員も対象とする処理とそうでない処理が混在したときに困った」など、この機能使ったらいいんじゃない?って思って使ってみても、あとで機能拡張するときに困った、などという事例を紹介されていた。
Rails、というかRubyに限らず、「よいやり方を知らないと、知っている方法で解決してしまおうとする」というのはプログラミングではよくあることであり、それを実例とともに聞けたのがよかったこと。「これ読んどけ!」というデファクトスタンダードなあるある集が各言語・各環境にあるといいんだろうけど、分量がすごいことになってしまうのかも。 - 肉さん「ひでお(仮)」
- 「ひとりDevOps」、つまり一人で開発(development)と運用(operation)を行うという話。この話では運用とそのための環境構築に重点が置かれていた。
まず最初に出た話が、「ソースコードをGithubに置けるなら、自分でCI環境(Continuous Integration、ビルドやテスト実行などのタスクを一定の条件のもとで頻繁に行えるようにすべく、自動的にこれらを行うためのソフトウェア)を作らなくとも、Travis CIやCircle CIを使って楽できる」というもの。肉さんは実際「Jenkins導入は手間がかかる」と感じていたようで、運用の手間を減らすために運用するものを増やすことになる、と述べていた。その後、Linuxマシンの環境構築を楽にするVagrant・Packer・Chefといったツールの解説をサンプル付きで解説されていた。
自分の場合、gitでソースコードの管理をしてもコミットをこまめにやる癖がどうしてもつかないので、CI環境で自動化することで例えば「テストを走らせたいからコミットする」という意識が付くかもしれない。本来のコミットの意義とは違うんだろうけど。 - 浦嶌啓太さん「なるはや Ruby on Rails」
- Railsアプリの動作を「なるべく速く」する方法について。
まず最初に、複数のリクエストを同時に処理する方法として「マルチプロセス」「マルチスレッド」「Reactorパターン」の3つを挙げ、それぞれの違いを示されていた。この3つはこの順にコードを書くときに気を払う部分が大きくなっていく一方、メモリ消費の面ではこの3つの順に少なくなっていく、とのことであった。
次に「Background Worker」という、ユーザにレスポンスを返すのとは関係ない後で行えばよい処理(例:メールを送る)を後で行うという対応法を紹介されていた。これにはライブラリが多数あるとのことであった。
マルチプロセスとマルチスレッドの違い自体は理解していたものの、「複数のリクエストを同時に処理する方法はアプリケーションサーバによって決まっているので、速くしたいなら場合によってアプリケーションサーバ自体を使い分ける」ということを知らなかったので、そこが勉強になったところであった。 - 小玉直樹さん「趣味プロダクト開発で楽しいコードライフワークを送る」
- 趣味でソフトウェア開発をするのは楽しいということ、そしてよくつきまとう「何を作ったらいいかわからない」「作れる気がしない」「モチベーションが続かない」といった状況にどう付き合うか、という話。
- 「今日疲れてる… → 簡単なissueだけ対応する、1コミットぶんだけでも書く」(→時には2〜3時間書いてしまう)
- 「自分が使いたいものだけまず作る」
- 「作りたいものがない… → テスト書いたり、リファクタリングしたり、別のフレームワークを試したりしてみよう」
- 「技術的にハマった → Geek達に会いに行く」
- 「飽きてきた → 一つにこだわらずいろいろ作る」
- 「刺激が足りない → 仕事のチームや家族に投入してみる」
私は最近、作りたいものがあっても忙しいと言って作り上げられないことが多いのだが、やるべきことを分割して短時間でできるようにするのが大事なのかな。 - 横山昌史さん「高架下のRuby」
- 将棋アマ三段の横山昌史さん。「高架下」=「Rails使ってない」という意味で、コマンドラインツールやデスクトップアプリの制作について述べられていた。
Rubyを使う利点に「OSの差をかなり吸収してくれる」というものを挙げられていた。このことには私もかなりお世話になっている。またRubyにおけるGUI生成の方法の一つであるRuby-Gnome2は、Rubyらしい記法をしっかり取り入れているのがよいところだと述べていた。
コマンドラインツールはRubyですでに多数作っているのだが、デスクトップアプリを作るときの面倒な点は「配置を考えて数字で表現しないとならないこと」なので、そこが何かRuby向けでよいものないのかな…と思うところではある。 - 梅本祥平さん「Ruby in Project-Based Learning」
- 大学のプロジェクト学習において、Rubyを用いたアジャイル開発を導入した話。梅本さんは、最初アジャイル開発に取り組んで開発する楽しさを感じつつも、もっとちゃんとアジャイル開発をしている方の話を聞いて自身の勉強不足を感じたとのことであった。それでも「楽しかった」という気持ちが強かったためにさらに勉強し、他人に魅力を伝えられるようになったとのことであった。
私にとっての「まだ勉強不足かもしれないけど、最初の感動が大きくて忘れまいと感じたこと」は、テスト駆動開発を学んだことだろうか。まずは単に「テストを書いておくことで後での修正に強くなる」というくらいの認識であったが、そのことがすごく新鮮であった。ただ実際に使っているうちに「この場合どんなテスト書けばいいの?」と壁にぶつかるようになり、さらに勉強してよいやり方ができるようになっていった。 - 前田智樹さん「それNArrayでできるよ」
- 数値を要素とする配列や行列を高速に処理できる「NArray」についての紹介。最初来場者に「NArray知ってますか」などを問うたところ、nArray自体初耳という人が5〜6割くらい、nArrayの名前くらいは…という人が3〜4割くらい、nArray使ったことある人が3人、nArrayよく使うという人は0であった。そこで前田さんは「御社のビジネスでご活用いただけるNArrayを紹介します」と述べて機能の紹介へ。
NArrayは「"列ごとに和を計算する"などの、表計算でよく行う処理がRuby上で一発でできる」「表計算ソフトと異なり、3次元以上の配列も扱える」ということを利点として挙げられていた。
私がNArrayを使う機会がなかった理由としては、配列に数値しか入れないようなときはたいてい配列中の計算も面倒なので、NArrayでは対応しきれないというものだと思う。ただ、2次元配列でも扱いやすいのは利点であり、覚えておく価値はあると感じた。 - ライトニングトーク
- 一人5分の短時間発表。
- 矢部剛嗣さん「How to enjoy Padrino」:Sinatraをベースに置いたWebフレームワーク「Padrino」について。よいところとして、ジェネレータ(あとからORマッパやテンプレートエンジンなどの機能を追加する機構)、recipes(プラグイン)を挙げられていた。また、まだコードが少なく貢献できる点が多いという点を楽しんでおられるとのことだった。
- うさみけんたさん「近況の報告と自宅警備員が失職した話」:「自宅警備員が失職」=就職した話。東京に出て行ったのを契機に自宅警備員を失職する→自宅警備員に復職する→また東京に出て行ったのを契機に自宅警備員を失職して現在は東京で仕事中。
- 島田浩二さん「一般社団法人日本Rubyの会のほうから来ました」:「上司の角谷の行方が分からない」とのことで島田さんから様々な告知。まずRubyKaigi2014(9月18日-20日)とRubyKaigi2015(4月9日-11日)の開催について。続いて日本Rubyの会の支援活動について。最後に「活動支援についての相談・依頼はgithubで受け付けている」と紹介されていた。
- 早坂亮佑さん「Rubyを始めてみて得たこと」:Sinatra札幌の人と会ってRubyを始め、そしてそれによってプログラミング好きな人と交流する機会ができたとのこと。Lingrボットを作成されているとのことで、Sinatra札幌のLingrで活躍しているということが次のよねざわさんによって紹介されていた。
- よねざわさん「Sinatra x Ajax」:Sinatra札幌のLingrで動く多数のボット紹介が中心でした。「アイデアをボットとしてアウトプットしよう」と締めくくられていた。私もTwitterボット作りでいろいろ学んだなあ。
- 小林せかいさん「惚れちゃうコード」:コードをきれいにした事例をいくつか紹介。締めくくりは季節感のある「惚れさせるコードを書いてチョコレートをたくさんゲットしよう」。
- 小岩秀和さん「我が家を支える技術2014冬」:夫婦でITのお仕事をされている二人がなす家庭環境は、家で様々なフリーソフトウェアが動き、OSはUNIX系OSばかりでWindowsは動作確認用の仮想マシンのみ。仮想化・ファイルサーバ・監視ソフト・SNS・クラウドストレージなど導入済み。しかも家庭運営についても「Kissの原則」「アジャイル」というもの。徹底しすぎである。
- 阿部智紀さん「Make a Fun Work 〜楽しく仕事をしよう〜」:DevHub(上記の小玉さん作の、ソフトウェア開発支援機能付きチャットツール)に、チャットに中の人がいたりするとかの、遊び心がどんどん加わっていった話。
- mrknさん(アナウンス):昨年末に出たRuby2.1.0について。2月22日発売のWEB+DB PRESSに特集が出ますとのこと。そういえばまだ自分Ruby2.1.0導入してない…。
2012年09月23日
札幌Ruby会議 過去の参加記録
- 2008年10月 → 札幌Ruby会議01に一般参加した
- 2009年12月 → 札幌Ruby会議02にスタッフとして参加&LTで発表
- 2010年12月 → 札幌Ruby会議03にスタッフとして参加&LTで発表
[会場となった札幌市産業振興センターの案内]
去る9月14日(土)〜9月16日(月祝)、札幌Ruby会議2012でスタッフとして活動していた。札幌Ruby会議は今回が4度目で、自分は現在のところすべて参加、うち初回を除く3回にてスタッフとして活動している。
【今回参加して感じたこと】
当日レポート担当という貴重な経験ができたのはよかった。聴講できた講演の数はかなり限られていたのだが、一つ一つの講演をかなり真剣に聴講し内容を感じ取れたのはよかった。
(当日レポートの担当に関係なく)参加時に精神的な余裕がなく、懇親会とかでもあまり突っ込んで話をするということが出来なかった。普段なら自分が積極的に話したがる技術的な話もあまり出来なかったし。忙しい時期だったというのはあるのだが、大きなイベントに向けて精神的に余裕を作る、というのを忘れてはならないな、と感じた。
今回は海外からの来場者が多いということで、英語をそこそこ使うことになるかなと意気込んでいたのだが、まともに話したのは1回だけだった。でも案内ができてよかった。講演の英語を聞き取るのはさっぱりでした…。
スポンサーさんからはWebアプリケーションのホスティングサービスについての告知が多く(Herokuさん、Engine Yardさん、paperboy&co.さんの「Sqale」など)、何か作りたくなってきました。
【今回の仕事】
私の役割は、技術評論社さんによる事前レポート・当日レポートとなった。これは事前に発表内容を紹介して参加者に興味を持ってもらうこと、また当日に速報を出すことで会議の雰囲気をすぐに知ってもらうというものである。なおメンバーは、札幌Ruby会議2012のスタッフ11名+技術評論社の担当者さんで12名となっていた。
スタッフの顔ぶれが決まってきてから、私がレポート班に入るという提案を頂いたのだが、その理由としては2011年6月のオープンソースカンファレンス2011Hokkaidoで公式レポートを担当したというのがあったように思われる。また私は、2011年7月のRubyKaigi2011に参加した際に当日レポートを楽しませて頂いたということもあり、この仕事を快諾した。
一方、この当日レポートの仕事は非常に大変なものということが知られていて(当日の仕事の量が多い)、実際に当日レポートを実施するのが決定するまでには紆余曲折もあった。この辺については機会があったら書きます。
実際にレポートの文章を書いてみて感じたのは、「要約しながら伝わるようにするのは難しい」ということ。例えば、発表内容を全部書いていると長くなりすぎる場合に、一部を割愛することになるのだが、そのときに内容が除外されたことで伝わりにくくなった部分がないか確かめるということは頭を使った。これは上記のオープンソースカンファレンスのときにも感じてはいたのだが、今回は「早いうちに書き上げる」という使命があったため、その難しさがより強く感じられた。
[当日レポート作成の作業風景]
[翻訳用IRC。外国人の来訪者も多かったため、英語講演の日本語訳やその逆を流せるようにしていた。レポート作成においても参考にさせていただきました。]
【おまけ】(写真)
[Herokuによるお弁当配布]
[どこから来たか貼ることができる地図。日本各地からの来場があった。世界地図も置いてあり、こちらにもいろいろな場所に付箋があった。]
[レッドブル完売]
[アンカンファレンス「ぬRubyKaigi」]
札幌で何度か実施された「ぬRuby」の名前を冠して実施。仕組みはRubyKaigi2011の!RubyKaigi(NotRubyKaigi)と同じで、タイムテーブルの上に「この時間帯に●●したい」という付箋を貼って、その時間に発表したり小さなイベントを開いたりできるというもの。
私は!RubyKaigiで発表していたこともあって、発表しようかとも考えていたのだが、スタッフ活動の方が忙しくて断念。
[Ruby Kaja。コミュニティごとに貢献の大きい人を表彰していく会。]
【追記】(21:40)
この報告を忘れてました。
[懇親会2次会において、HerokuさんのTシャツ・カップ争奪じゃんけん大会が行われ、最後まで勝ち残って獲得しました。でもまだ私Heroku使ってないです…近いうち使います!]
2009年12月07日
【まえがき】
12/5(土)の札幌Ruby会議02に参加した。
前回(札幌Ruby会議01)は修論が忙しい時期だったこともあり、スタッフにならずに参加するだけだったのだが、今回はその熱気を作るのをサポートする側に立ちたかったこと、そして札幌Ruby会議の本当の楽しさは会議本体だけでは分からない(*1)と思ったこともあり、スタッフとして参加した。
また、Ruby札幌勉強会で島田さんに何度か「LTで発表しない?」とお声をかけられていたこと、Ruby札幌のイベント参加歴が長くなってきたのでもうそろそろ一度発表すべきかなと思っていたこともあり、LTで発表することにした。
続きを読む2009年01月18日
時間は2時間で、進行としては、集まった人で話したり、各自が行いたい作業をするという感じであった。
でよく考えてみると、これは現地でしていること自体は北海道開発オフに近いのかなと。ただ北海道開発オフと違って、開発するものがなくても楽しめるし、2時間なので北海道開発オフ(その日の日中ずっと行っている)に比べると気軽に行きやすいのはいいかな、と感じた(もちろん、時間が限られるので出来る作業に限りはあるが)。
そして、札幌近辺でRubyに興味のある人が集まりやすい場が出来たことはいいことだな、と感じた。
これからもちょこちょこ参加します。
(余談)
今回Sapporo.rbで利用させていただいた北海道カフェは、北海道版の「リナカフェ」(注:首都圏のTwitter-erがよく集まる店)に出来るかも、と感じてしまった。ちなみに北海道カフェのことは今日(1/17)のTwitter北海道新年会でも少々宣伝してきた。
2008年10月28日
去る10月25日、札幌Ruby会議01に行ってきた。
6月のRuby会議と比べるともちろん小規模なものであったが、同じような熱気が感じられた。
しかし自分の気力があまり上がらず(何でだろう?)、話もしっかり聞いていないところが多かった。その上、他の方になかなか話しかけられず、名刺を渡した方は1人だけだった。猛省。
個々の話についての感想など
※数名、当日にタイトル変更をされていた方がいましたが、ここでは全てプログラムに記載のタイトルで書きます。
- arton氏「WindowsだからRubyなのだ」
- 前々からWindowsだとRubyの利用が不便なこともしばしばあると感じていたが、このようにWindowsでRubyを使いやすくするための努力をしている方もいるのだなと思った。
自分も(多少だが)Win32APIを使ったことがあるので、Windowsで不便なことがあったら何かライブラリを書いてしまえばいいのか(ぉ - hsbt氏「わたしとtDiary」
- tDiaryの話自体よりも、オープンソースソフトウェア(OSS)の開発、およびその際の開発者同士のやりとりという点に興味を持って聴いていた。今のところOSSに積極的に関わりたいとまでは考えていないが、将来そういったところに参加する可能性もあるので。
- 関将俊氏「dRuby and Rinda - その実装と応用を札幌で」
- dRubyは少し遊び程度に利用したことしかないが、この講演で、便利に使えるようにするためにライブラリでは色々と工夫がなされていることが分かった(method_missingの有効利用など)。参考にできるかも。
- Lightening Talks
- どれも興味深い話であったが、特に今後も注目したいと感じたのは、まいむぞう氏によるRubygemsのライブラリの情報サイト・桑田誠氏による軽量O/R Mapper「Kwery」・mrkn氏による単位付き数値(10cm、60kgなど)ライブラリか。
ドラ娘が初音ミクコスで来るとの噂があったが、実現しなかった。 - 角谷信太郎氏「Working Effectively with Legacy tDiary Code using Cucumber and RSpec」
- テストコードを書かないことが前提のコードでも、うまくやればテストコードを付与できるという話。今からでもTwitter Botライブラリをテストコード付きにしようか…(ぁ
最後に。
運営スタッフになりたい気持ちはあったのだが、修論近い忙しい時期ということで今回は残念ながら断念した。次回は是非スタッフとしてお手伝いしたいです!
2008年04月26日
本日、Ruby勉強会@札幌-8に行ってきた。私は初めての勉強会参加だった。
本日のトピックは上記リンクを参照いただくとして、今日扱われた言語はRubyのみならずPythonやSmalltalkなどにも及び、濃密な1日になった。
特に気に入ったのは、島田さんによる、RubyでDSLを作成するというもの。DSL(Domain Specific Language:ドメイン特化言語)とは、特定の用途の文言を容易に記述するための言語であり、RubyではRSpecやRuby on Railsがこれに当てはまるようである。さてRSpecを例にとると、RSpecのスペックファイルには、実際に使われるプログラムが満たすべき条件が記述される。その際にスペックファイルには例えば
# multiset.rbに対するスペックファイルより lambda{ Multiset.parse("hoge\npiyo\n") }.should raise_error(ArgumentError)
のような書き方をする。これは見ての通りなのだが、「lambda{ ... }の内容がエラーを起こすべき(should raise_error)」という内容を示している。Rubyはこのような「見ての通り」の書き方が出来るようにクラスやメソッドを定義するのが得意なので、それを利用してDSLを作るというものであった。
さて、そのようなRubyの性質が面白いと思い、試しに世界のナベアツプログラムをDSL的に書いてみた。
require "nabeatsu" # 後述
nabeatsu = Nabeatsu.new
nabeatsu.status "アホ", :rule => [3.no_baisu_no_toki, 3.no_tsuku_toki]
nabeatsu.status "犬", :rule => 5.no_baisu_no_toki
nabeatsu.say 1..40 do |number, status|
if status
print "#{number}(#{status.join(' ')})"
else
print number
end
print " "
end
puts
これを実行すると
1 2 3(アホ) 4 5(犬) 6(アホ) 7 8 9(アホ) 10(犬) 11 12(アホ) 13(アホ) 14 15(アホ 犬) 16 17 18(アホ) 19 20(犬) 21(アホ) 22 23(アホ) 24(アホ) 25(犬) 26 27(アホ) 28 29 30(アホ 犬) 31(アホ) 32(アホ) 33(アホ) 34(アホ) 35(アホ 犬) 36(アホ) 37(アホ) 38(アホ) 39(アホ) 40(犬)
のように、上記のプログラムで指定した通り「3の倍数と3のつくときは"アホ"」「5の倍数のときは"犬"」が表示される。
このnabeatsu.rbの内容はここで公開しています。 世界のナベアツプログラム on Ruby
※この手の問題、一般にはFizzBuzzと言われているそう。