ひがきの日記

2013-09-18

関西Ruby会議05でカヌレを配布してみた

去る 2013年8月31日、関西Ruby会議05 が開催された。

今年もスタッフとして参加し、おやつ係を担当した。


なぜおやつが必要なのか

f:id:mas-higa:20130918221729j:image:medium:right

1日中、会議に集中していては頭が回らなくなる。糖分が必要。

Minami.rb勉強会では、毎回おやつの時間があって楽しい。美味しい。

そこで関西Ruby会議でも、おやつ配布することにした。

おやつはカヌレ堂カヌレに決めた。


カヌレとは

フランスボルドー女子修道院で古くから作られていた菓子。蜜蝋を入れることと、カヌレ型と呼ばれる小さな型で焼くことが特徴である。そもそもカヌレとは、「溝のついた」という意味である。外側は黒めの焼き色が付いており固く香ばしいが、内側はしっとりとして柔らかい食感を持つ。 ─── Wikipedia より

カヌレ堂とは

大阪桜川にあるカヌレ専門店。

フランス産まれのカヌレ日本風にアレンジ。

6種類のレギュラーメニューに加え、月替わりの 2種類、計 8種類のカヌレが楽しめる。

関西の IT系勉強会では、カヌレ堂のカヌレがよく食されている。


カヌレを 3個ずつ配布

全種類を一人で食べるのは多すぎる。しかし 1個だと物足りない。

多すぎず少なすぎず、3個がちょうどよいのではないか。

カヌレの種類を選べなくすることでワクワク感を演出。

どうしても違う味のカヌレが食べたければ、他の参加者と交換してもらう。

何が当たったか見せ合ったり、トレードしたりで、コミュニケーションの助けにもなったのではないか。

80人余りの参加者がカヌレの袋を除き込んでニコニコしている光景が、個人的にはとても楽しかった。


反省点

  • Ruby や関西Ruby会議カヌレは、まったく無関係。
  • ドタキャンした人が 30人近くいて、カヌレが余った。
    • 余分に貰ってくれる人がいて無駄にならずに済んだ。
  • この企画に夢中になりすぎて、他の仕事がおろそかになった。*1

謝辞

ありがとうございました。

*1:すみません。実行委員の皆さん、すみません。

*2カヌレ堂さんもツイートを見ていたらしい

2010-12-04

第47回 Ruby/Rails勉強会@関西に行ってきた

第47回 Ruby/Rails勉強会@関西でいつものように京都女子大学へ。

おけいはんで七条駅に着くと、いつもと違って女子大生がいない。*1
女子大生いないよー」と tweet しかけて止めた。*2

Rubyist のための HTML5 入門 - Content models - by Sixeight さん

HTML5 ややこしい。
こんなにややこしいなら XHTML でも良かったんじゃ?

あと、HTML を手書きする人が減ってる現状を考えれば、ブラウザがもっと strict になってもいいと思うよ。

redminegit建築プロジェクトに使ってみた by waku さん

これは非常に興味深い事例紹介。

  • バックアップになる
  • 公開鍵でアクセス制御
  • コマンドを 5つに絞る

↑だけで git できるのうらやましい。

RailsDevCon2010の報告 by アジャイルかわばた さん

cucumber の話が面白かった。

シナリオがちゃんと動かなくても気にしないとか。
単に仕様書かいたと思えば動かなくてもなんてことないなww

フリートークセッション by むりょうい さん

もうちょっと活発に議論っぽくなれば、もっとよかった。

何回かやれば、みんな慣れてくる?

Ruby初級者向けレッスン by こなみ先生

アシスタントの女子大生ドタキャン (>_<)

練習問題の詳細は配布資料を参照。

メソッドに可変長引数を渡したりする話
  • 練習1-1

こんな感じ?

def sum_all(*ary)ary.inject(&:+)end

sum_all 1, 2, 3, 4, 5   # => 15
  • 練習2-2

計算結果を型変換するのか、型変換した値で計算するのかが不明。

とりあえず後者でいく。

Ruby1.9 なら簡単

def sum_all(type = :float, ary)
  ary.map{|i|__send__(type == :int ? :Integer : :Float, i)}.inject(&:+)
end

sum_all [1, 2.5, 3, 4.5, 5]           # => 16.0
sum_all :int, [1, 2.5, 3, 4.5, 5]     # => 15

Ruby1.8 だと、どうすれば?

def sum_all(*ary)
  type = ary.first == :int ? :Integer : :Float
  ary.last.map{|i|__send__(type, i)}.inject(&:+)
end

sum_all [1, 2.5, 3, 4.5, 5]           # => 16.0
sum_all :int, [1, 2.5, 3, 4.5, 5]     # => 15

正規表現の話
  • 練習2-1

属性って ' で囲んでも良いんだっけ?

%r|<a\s.*?href=(["'])(.*?)\1.*?>(.*?)</a>|m

$2 が URL で、$3 が名前になる。

    • \s が改行にもマッチして便利*3
    • href 以外の属性は無視
    • "url" または 'url' (開始、終了のクオートが一致していること)
    • .*? は本当に便利
  • 練習2-2

前回も同じような練習問題あったなw

require 'open-uri'

def anchors(url, encode = Encoding::UTF_8)
  open(url, &:read).
    scan(%r|<a\s.*?href="(.*?)".*?>(.*?)</a>|m).
    map{|url,title|[url, title.encode(encode)]}
end

url = 'http://www.google.com'
open('google.utf8',  'wb'){|f|f.puts anchors(url)}
open('google.eucjp', 'wb'){|f|f.puts anchors(url, Encoding::EUC_JP)}
open('google.cp932', 'wb'){|f|f.puts anchors(url, Encoding::CP932)}

*1:休講だったらしい。

*2ドタキャンが増えると困るから。

*3:あれ? バックスラッシュが入力できない。