第 30 回 Ruby/Rails 勉強会に行ってきた

第 30 回 Ruby/Rails 勉強会

今回はスペシャルゲストにキリン本でお馴染みの Yugui さんをお迎えして行なわれました。

なのに参加者が少ない。なぜ?

  • 台風が近畿に上陸する恐れがあったから?
  • 学生は、まだ夏休みだから?
  • 給料日前だから?

信長の野望 on Rails by 石川せんせい

石川せんせいの発表は、いつも「何如にして学生に教えるか?」というのがテーマ。

学生に興味を持たせるためにゲームがよく出てくる。

MVC の C が教えにくいらしい。
M と C がくっついちゃってるのは論外だけど、V と C がくっついちゃってても気づかないのかもね。
一度動くものを作ってから V だけ仕様変更したりすると MVC の有難味が解ると思う。

(うちの職場のコードは MVC が全て絡み合ってるけど ;_;)

ニコニコ技術部関西勉強会でネギを振らせてみた by サイロスさん

Miyako でネギを振らせる話。

ホーム (Ruby 関西) での発表なのに、ネタが通じなくてアウェー感が漂う。

石川せんせいに続いてコントローラの話題が。
と言っても MVC の C じゃなくて、ファミコンのコントローラだけど。

Ruby 関西はサイロスさんをニコ技に取られないように注意しないとな。

はじめての Ruby の一歩横 by Yugui さん

発表に先立って「Ruby プログラマのレベル 10」で参加者のレベルを測定。
私は level 5 でした。

会場の参加者も level 5 の割合が高くて、level 5 向けの講演をしていただく。

黒板を使って、普通のコードとその舞台裏、それを使った黒魔術など、楽しく教えたもらった。

キリン本の 8 章 + α を習得しないと次のレベルには行けないみたいだ。頑張ろう。

あと古代のライブラリも探索してみよう。

初級者向けレッスン by okkez さん

TDD な話。

夏休み中なので、今回もアシスタントの女子大生はいない。

まず、test first で Stack を作る。
その Stack を使って逆ポーランド記法の電卓を作る。

エラー処理は省略したい。
keep it simple, stupid

電卓 その壱

エラーが起きたら、その時点の Stack の一番上の値を返す。

require 'stack'

def rpn(exp)
  val = 0
  begin
    num = Stack.new
    exp.each do |i|
      if /\D/ =~ i
        val = num.pop  # エラーが起きたら、これを返すよ
        num.push(val.__send__(i, num.pop))
      else
        num.push i.to_i
      end
    end

    num.pop
  rescue
    val
  end
end

if $0 == __FILE__
  puts "#{ARGV.join(' ')} = #{rpn(ARGV)}"
end
電卓 その弍

RPN がおかしかったら例外を投げる。

require 'stack'

def rpn(exp)
  num = Stack.new
  exp.each do |i|
    if /\D/ =~ i
      num.push(num.pop.__send__(i, num.pop))
    else
      num.push i.to_i
    end
  end
  raise ArgumentError  if num.size > 1  # 数が残ってるがな
  num.pop
end

if $0 == __FILE__
  puts "#{ARGV.join(' ')} = #{rpn(ARGV)}"
end