Ruby ビジネス・コモンズ(RBC) および主催勉強会の紹介

はじめに

るびま読者の皆様、はじめまして!Ruby ビジネス・コモンズ(以下、RBC)です。 私達は福岡を拠点として全国で活動しているRubyのコミュニティです。 今回ご縁があって、るびま誌上にて RBC の概要と活動内容の一部(イケテル勉強会)をご紹介させて頂けることになりました。 少し長文ではありますが、運営委員が共同で執筆を行い、 RBC の魅力がタップリ詰まった内容となっております。 本稿が、 RBC をご存じではない方、また RBC の名前くらいは知っているけど活動内容はご存じではない方にとっての RBC の活動に加わってくださるキッカケとなれば幸いです。

(Ruby ビジネス・コモンズ 運営委員一同)

0. RBC の概要

RBC は 2007 年 7 月、Ruby を実際のビジネスに利用するノウハウをコモンズとし、ビジネス利用における生産性を高めあうことを目的としたオープンなコミュニティを目指して設立されました。

イケテル"Rails"勉強会とイケテル"ビジネス"勉強会を中心に、福岡、東京、名古屋、新潟などで活動しています。

イケテル"Rails"勉強会 or イケテル"JRuby"勉強会

わかってしまえば簡単なことは、世の中に一杯ある。知っているか、知らないか。難しさって、その程度の差だったりする。だったら、難しい理論は後回しにして、とりあえず行動して理解してしまおう。行動すれば、難しいが簡単に変わることがある。

こんな想いを参加者の皆さんと共有するべく、Rails や JRuby とその時々の最新技術を使って、一日かけてアプリケーションを作っていきます。

例えば、2009 年 1 月は「マッシュアップ×地図」というテーマで、食べログで公開されている API を使った Rails アプリケーションと、Adobe AIR を使ったデスクトップ・アプリケーションを作りました。

イケテル"ビジネス"勉強会

誰かが先生で、誰かが生徒という訳ではなく、集まった人達との交流によって、参加者全員がインスパイアされ、何かを掴み取って頂く。それが「イケテル"ビジネス"勉強会」です。

参加者の皆さんにチームを組んで頂き、チーム毎にある役割を演じて頂きます。チームで作戦を考え、相手との交渉を繰り返しながら、作戦を明確にしていきます。 こうして問題を疑似体験することで、考えを深め、可能性を感じ取って頂き、そして最後に、その分野で経験豊富なゲストのお話を聞き、さらに考えを深めて頂いています。

例えば、2008 年 8 月は「フリーペーパー」というテーマで、参加者の皆さんには「大手出版社」と「地方のフリーペーパー出版社」の役割を演じて頂き、最後に福岡で最大の発行部数を誇るフリーペーパーの編集長をゲストにお迎えしてご講演頂きました。

rbc-incubator

ちなみに、RBC では「rbc-incubator」というQ&A窓口を設けております。 勉強会に参加して学び合ったメンバーが実体験に基づき、優しく丁寧に。皆で悩んで、皆で解決しちゃおう。という ML です。 rbc-incubator@googlegroups.com にてご質問を受け付けております。

Rubeus

また、RBC には、Rubeus(るびうす)というオープンソースのプロジェクトもあります。

Rubeus@google group

Rubeus(るびうす)とは、JRuby だと Java の API が使えるけれど、そのままじゃなんだか Java っぽい。もっとRubyらしくシンプルに記述できるようにしよう!というプロジェクトです。
※Rubeusは、ラテン語で「赤く」という意味。 Java を Ruby 色に。という想いが込められています。

(秋間武志 根之木礼司)

設立趣意

Webのビジネス価値が高まるなか、もっと短いサイクルでサービスを展開することが求められています。こうしたニーズに対応する技術として、国産プログラミング言語「Ruby」とアプリケーション・フレームワーク「Ruby on Rails」が世界的に注目されています。コミュニティが育て上げたこれらの技術は、企業がノウハウを内部留保するのではなく、共有知(コモンズ)化することによりクリエイティビティを増幅させていきました。私たちは、Ruby を実際のビジネスに利用するノウハウをコモンズとし、ビジネス利用における生産性を高めあうことを目的としたオープンなコミュニティ「Ruby ビジネス・コモンズ」をスタートさせます。 「Ruby ビジネス・コモンズ」は単なる開発者コミュニティではなく、現実にコモンズが形作られるための幅広い活動を推進します。よって、コミュニティへの参加は、個人、コミュニティ、企業。そしてソフトウェア会社だけでなく、ユーザー企業・教育機関・行政といった幅広い組織の参加、連携を目指します。そのためにもスタートの地は、九州とします。地域の連帯感は、活動を現実のものにします。地域の情熱は、活動に生きた力を与えます。 さらに活動に生きた力を与えるためには、仕事につなげていくことは重要なことです。しかし「Ruby ビジネス・コモンズ」は仕事の斡旋・紹介など、メンバーが直接仕事を獲得することに関与する団体ではありません。「Ruby ビジネス・コモンズ」に積極的に関与し、生きた力を獲得し、自立的に仕事の獲得を行い、さらに生きた力をコモンズとして「Ruby ビジネス・コモンズ」にフィードバックしてください。コモンズによりクリエイティビティを増幅し、大きなムーブメントを起こしていきましょう。 「Ruby ビジネス・コモンズ」は九州からスタートしますが、日本全国、世界に開いたコミュニティとします。「Ruby ビジネス・コモンズ」が、ソフトウェア業界の問題を、地方の問題を解決し、よりよい社会が作られることを願っています。

http://rubybizcommons.blogspot.com/2009/01/blog-post_28.html より引用

1. 告知

RBC の勉強会は、主に4つの告知媒体を利用しています。

  1. RBC のメンバー専用のメーリングリスト
  2. RBC の公式ブログ(http://rubybizcommons.blogspot.com/
  3. SDC(Sun Developer Connection)のメンバー専用のメーリングリスト (http://sdc.sun.co.jp/portal/index.html)
  4. @IT のイベントカレンダー (http://www.atmarkit.co.jp/event/)

告知は上から順番にはじまり、遅くとも勉強会開催の2週間前には告知されます。

※ RBC のメンバー専用メーリングリストには、ログインが必要です。RBC の入会・退会のご案内から入会をしてください。

(片山智咲子)

2. 申込みの流れ

告知文内に記載されている内容をご覧頂き、リンクされている参加申込フォームより応募いただくと、当日勉強会に参加することができます。尚、当日参加も受け付けていますが、申込者が大勢いらっしゃる場合には、立ち見や混雑した場所での参加となってしまう場合もあります。ご容赦ください。また、当日参加できなくなった場合は、お手数ですが RBC のインフォメーション ML か勉強会参加申込フォームでご連絡を頂けると助かります。

(片山智咲子)

3. 参加前の準備

勉強会に参加する前に参加者の皆さんに準備してきてほしいのは開発環境です。開催告知にはどんなものをインストールすれば良いのかが書かれていますので、ちゃんとチェックしてくださいね。 これまでの勉強会には大体以下のようなものが開発環境として必要でした。

Ruby or JRuby (+Java), RubyGems, Rails

Ruby と JRuby のどちらが要るのかはその回によって違いますのでご注意を!イケテル"Rails"勉強会なのか、イケテル"JRuby"勉強会なのかで異なります。 今後は Ruby は 1.8.7 もしくは 1.9 系を使っていくことになるでしょう。Rails は基本的に最新版、RubyGems はそれに依存することが多いですが、基本的にこれも最新版。 JRuby は ruby-processing などの回に使いましたが、できるだけ最新版を使いますが、Java は JRuby が動く 5 系か 6 系ですね、6 の最新安定板を推奨しています。

バージョンの確認の確認方法は以下の通りです。コマンドプロンプト、ターミナルで実行してください。

ruby、rubygems、rails の場合

 > ruby -v
 ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9]
 > gem -v
 1.3.1
 > rails -v
 Rails 2.2.2

JRuby、rubygems、rails の場合

 > jruby -v
 jruby 1.1.5 (ruby 1.8.6 patchlevel 114) (2008-11-03 rev 7996) [i386-java]
 > jruby -S gem -v
 1.3.1
 > jruby -S rails -v
 Rails 2.2.2

MySQL 5.0

いまのところ、最新の 5.1 系ではなく 5.0 系をお勧めしています。 すでにインストールしてある場合は root でログインできるかどうかを確認してください。もし root のパスワードを忘れてしまったという方は、特に重要なデータがなければ、インストールしなおすことをお勧めします。

また DBMS については基本的に MySQL 独自の機能は使わないので、Rails に精通している人なら別の DBMS でも構いませんが、チームのみんなと見せあって確認するためにも同じものを使ってほしいです。知っている人が分からない人を助けてくれるとすごく助かります!

バージョンの確認の確認方法は以下の通りです。コマンドプロンプト、ターミナルで実行してください。

 > mysql --version
 mysql  Ver 14.12 Distrib 5.0.51a, for apple-darwin9.2.2 (i686) using  EditLine wrapper

エディタ

エディタは遠足で言うなら「履き慣れた靴」みたいなもので、書きやすいものがあればそれを使ってください。資料を作っているメンバーでもエディタは統一していません(TextMate、Emacs、Eclipse、NetBeans など人それぞれです)。書いている側でも補完機能などの高度な機能を使う人は少ないので、IDE が必須というわけではありません。逆に使い慣れたエディタがないという方は開催告知に書いてあるものを使ってみてください。

その他

AIR の SDK などが必要な回もあります。

細かいバージョン

ものによりますが、JRuby を使う場合はバージョンの違いは重要です。逆に Ruby も勉強会に参加するだけなら、Java は5 系でも 6 系でも構いません。また Ruby も 1.8.6 と 1.8.7 はあんまり変わりませんが、1.9 系は違いも多いので注意が必要です。MySQL は 5.0 推奨。それ以外だといろいろトラブルもあります…

準備してないと行っちゃダメ?

皆さん平日は忙しくインストールする時間がない場合もあると思うので、準備が間に合わなかったからと言って参加しちゃ困るということは全くありません。ただその場合は、できたら当日 30 分くらい早めに会場にお越しいただいて、スタッフやサポートメンバーにお声をかけてください。

(秋間武志)

4. 環境構築

RBC の勉強会は環境構築さえちゃんとできれば、後は大船に乗ったつもりで参加できます。逆に言えば環境構築関係で躓いて進めないという参加者も結構いらっしゃいます。 スタッフやサポートメンバーはそういうトラブルと数多く向き合ってきました。環境構築が終わらないと勉強会は進められません。少ない時間の中で原因究明よりも暫定対処を優先するしかない状況でメンバーが集めたノウハウの一部を挙げてみます。

[全般] ディレクトリ名

親あるいはそれ自身が全角文字、スペースを含んだディレクトリに Ruby や勉強会で作成するプロジェクトを作成すると、だいたいトラブルが起きます。これは使わない方が無難でしょう。 Windows の Program Files にデフォルトでインストールされるもの (MySQL や Java など) は別ですが。

[MySQL][Windows] 再インストール方法

こんなこと言うとタダで使わせてもらっているのに申し訳ないのですが、これまでに一番トラブルが多かったのは MySQL です。ちゃんとインストールできれば後は全く問題ないのですが、インストールが正常に終わっているのに、ちゃんとログインできないということが結構ありました。問題を調査している時間はないので、MySQLについては大事なデータがなければ、とにかく再インストールするのが一番効きます。それもただ再インストールするのではなく…

  1. MySQLをアンインストール
  2. インストールしてあったフォルダをエクスプローラで削除
  3. マシンを再起動
  4. インストーラを起動

これでほとんど問題は解決してきました。

[MySQL] skip-networking

上の再インストールでもうまく動かなかった場合に、my.ini(あるいは my.cnf) に下記のように skip-networking という記述を有効にするとうまくいったことが何度かありました。原因はよくわかりません。誰か教えてください〜

 [mysqld]
 skip-networking

[ruby] gemの バージョン

Rails 2.2 から RubyGems のバージョンを 1.3.1 に更新する必要があります。これを知らないと結構ハマります。更新手順は次の通りです。

 > gems update --system
 > gem install rubygems-update
 > update_rubygems

[Mac][rails] localhost でアクセスできない

Mac Book Pro ではおこらないが Mac Book でたまに見かける現象ですが、Rails のサーバーを起動してブラウザで http://localhost:3000 にアクセスできないことがあります。この場合、標準出力に書かれているURL (大抵 http://0.0.0.0:3000 ) にアクセスするとちゃんと表示されます。

(秋間武志)

半自動インストーラの利用

新しい技術を学ぶためには環境構築が必要で、それができないと勉強できないというのは、何かがおかしい気がします。なにより RBC の勉強会ではそもそもアプリケーションを作ることが目的なのに、環境でつまずいては、良いアイディア、良いセンスも技術の壁で挫けてしまいます。

余りにもったいないので、どうしても環境を作れなかった参加者の為に、半自動のインストーラを用意しました。まだ広くは利用できていないので、今後は徐々に活躍の機会を増やしていきたいと思っています。

インストーラは、勉強会に応じた環境をセットアップするようにしています。特にバージョンなんかは、すぐに上がりますし、2 ヶ月に 1 回の開催では、何かのバージョンが必ず上がっています。なので、毎回作ります。ちなみにアイコンはねこび〜んだったりもします。

今のバージョンでは、Ruby、JRuby、Ruby on Rails、JDK、NetBeans、MySQL、Glassfish、Warbler、cygwin までは標準系にして、後は必要となったアプリを+アルファーって具合です。

将来的には、どこかに VM を立てられる環境を用意して、アプライアンスの配布みたいな感じにしていきたいと考えています。勉強会の参加者が環境構築から開放されて、本来のクリエイティブな作業に集中できるようにしたいのですが、現在人手が足りません。メンテナンスしてくれる人を募集しています。

(伊東稔)

5. 勉強会の概要

2007 年 10 月に始まった RBC のイケテル勉強会ですが、現在福岡では奇数月に技術系の勉強会、偶数月にビジネス勉強会を行うという形が定着してきました。

今回は技術系の勉強会について紹介したいと思います。紹介するのは 2008 年の 9 月に福岡、11 月に東京で行った ruby-processing を使った勉強会です。

5-1. テーマを ruby-processing にした理由

まず、なぜ ruby-processing を勉強会のネタとして採用したのか?

従来の技術系の勉強会では主に Ruby + Rails + MySQL( + iPod Touch 等)を使用したアプリの実装を参加者全員で行うという形をとっていました。

数回にわたり技術系の勉強会を行う中で、改めて Ruby の語彙 (文法) について学びたいという要望が参加者の方から出ました。

そんな中、2007 年 6 月に RBC のイケテル JRuby 勉強会に来てくれた Charles Nutter さんが Processing のデモを行っていたのを思い出しました。アプレットに表示されている画像がマイクで拾った音に反応して動くやつです。他にも action-coding にも Processing の技術が使われているのを知りました。こんなことが出来るんだったら、参加者の方々にも喜んでもらえるものができるかもしれない、と思ったのがきっかけでした。

その Processing を Ruby で書くことが出来る ruby-processing は、環境構築が比較的簡単で、アプリを簡単に実装しながら、Ruby の語彙 (文法) についても学びやすいという要望にうってつけのものだと思い採用しました。

5-2. 基礎編

まず、環境面の説明です。

- JDK 1.5 以上をインストール - JRuby 1.1.3 以上をインストール - ruby-processing をダウンロードして解凍しておく - 環境変数の設定(JAVA_HOME、JRUBY_HOME、それぞれの bin を PATH に設定)

以上の 4 つです。

勉強会は、先ず「各人のノートパソコンの中に開発スペースを作ってもらう」ところから始まります。 その開発スペースで、コードを書いては実行し、結果を見る、そしてコードについての解説を聞く、という 3 つのステップをくるくると回しながら基礎編は進んでいきます。 また、改行コードや全角スペースなどの誰もが引っかかりやすい箇所については、別途解説を入れることで、置いてけぼりを作らずに、最後まで「全員参加」のまま進んでいけるようにしています。

※ 文章中のソースコードは iketeru-benkyokai-src.zip をダウンロードしたファイルを解凍することでご覧になれます。

5-2-1. 9行で出来る四角形の表示

先ずは script/genrate で土台となるファイルを用意し、そこに四角形を表示するコードを付け加えていきます。ここで書き加えるコードはたったの9行です。

require 'ruby-processing'

class RotateRectangles < Processing::App

  def setup
    color_mode HSB, 100
  background 0
  no_stroke
  end
  
  def draw
    5.times do |i|
    i += 1
    fill 30, i*20, 99
    sz = 60 - i*10
    rect 0, 0, sz, sz
  end
  end
  
end

RotateRectangles.new :title => "Rotate Rectangles", :width => 400, :height => 400

この先も本当に「少しずつ」コードを書いては、実行して、結果が出たら解説をしていくことで、参加された方に、先ずは「楽しい!」を実感してもらえるようにしています。

5-2-2. 四角形の場所や角度を変えてみる

さらに、四角形の場所を動かして実行、角度を変えて実行、というようにコードを少しずつ足しては実行を繰り返していきます。コードの量は決して多くありませんが、Math モジュールを使って、ラジアンを求めるメソッドも作ります。

require 'ruby-processing'

class RotateRectangles < Processing::App
  include Math
  
  def radians(x)
    return x*(PI/180)
  end

  def setup
    color_mode HSB, 100
  background 0
  no_stroke
  end
  
  def draw
    translate width/2, height/2
  rotate radians(45)
    5.times do |i|
    i += 1
    fill 30, i*20, 99
    sz = 60 - i*10
    rect 0, 0, sz, sz
  end
  end
  
end

RotateRectangles.new :title => "Rotate Rectangles", :width => 400, :height => 400

これにより、左上に表示されていた四角形が、中央に位置を変え、45 度回転して表示されるようになります。

5-2-3. たった 2 時間で動く風車が作れる

午前中の基礎編、最後は times メソッドや each メソッドを使うことで四角を大量に増やし、動きを持たせて風車のようにします。

require 'ruby-processing'

class RotateRectangles < Processing::App
  include Math
  
  def radians(x)
    return x*(PI/180)
  end

  def setup
    color_mode HSB, 100
  background 0
  no_stroke
  end
  
  def draw
    translate width/2, height/2
  ary = (0..11).map{|a| a*30}
  ary.each do|r1|
    push_matrix
    rotate radians(r1)
    translate 100, 0
    h = random 100
    ary.each do|r2|
      push_matrix
      rotate radians(r2)
      translate 50, 0
        5.times do |i|
        i += 1
        fill h, i*20, 99, 80
        sz = 60 - i*10
        rect 0, 0, sz, sz
      end
      pop_matrix
    end
    pop_matrix
  end
  end
  
end

RotateRectangles.new :title => "Rotate Rectangles", :width => 400, :height => 400

特に基礎編では、「楽しい!を実感すること」に重きを置いているため、サンプルを参考にしながら手を動かしてコードを書き、殆どの人が実行出来てから最後に解説をするようにしています。 この頃になると「上手くいったら拍手をする」という RBC 特有のルールにも段々慣れてきて、遅れているチームのメンバーを自然と助けながら、全員で勉強会を進めていく雰囲気が出来てきます。

そしてお昼の休憩を挟んで、イケテル勉強会は午後の応用編へと続きます。

5-3. 応用

午前中に基礎編で学んだ内容を基に、午後には応用編として

  • 表示する図形をオブジェクトとして表現
  • マウスイベントで画像を動かす

ということに参加者全員で挑戦してみました。

実際には各項目を説明しながら進めたのですが、完成版のコードは以下のようになります。

require 'ruby-processing'

class LoopQueue
  def initialize(*items)
    @items = items
  @index = 0
  end
  
  def next
    @index += 1
  @index = 0 if @index == @items.length
  current
  end
  
  def current
    @items[@index]
  end
end

class Position
  attr_accessor :x, :y
  
  def initialize(x = 0, y = 0, &block)
    move_to(x, y, &block)
  end
  
  def move_to(x, y)
    @x = block_given? ? yield(x, :x, @x) : x
    @y = block_given? ? yield(y, :y, @y) : y
  end
  
  def move_by(dx, dy)
    @x += block_given? ? yield(dx, :x, @x) : dx
    @y += block_given? ? yield(dy, :y, @y) : dy
  end
end

class Rectangle < Position
  attr_accessor :width, :height
  def initialize(x, y, width, height)
    super(x, y)
  @width, @height = width, height
  end
  
  def to_a
    [@x, @y, @width, @height]
  end
end

class Dot
  include Math
  
  DEFAULT_SIZE = 10
  DEFAULT_MARGIN = 2
  
  def initialize(position, w = DEFAULT_SIZE, h = DEFAULT_SIZE)
    @app = Processing::App.current
  @rect = Rectangle.new(position.x, position.y, w, h)
  @original_position = position.dup
  @@dot_count ||= 0
  @dot_num = (@@dot_count += 1)
  @speed = 0.05
  @next = Position.new
  end
  
  def move
    case @app.patterns.current
    when :line
    @next.move_to(@original_position.x, @original_position.y)
  when :circle
    @next.move_to(@app.width, @app.height) do |wh_value, attr|
    val, sin_or_cos = (attr == :x) ? [10, 'sin'] : [20, 'cos']
    (wh_value/2 - val) * self.__send__(sin_or_cos, radians(@dot_num * 360 / @@dot_count)) + wh_value / 2
  end
  when :center
    @next.move_to(@app.width/2, @app.height/2)
  when :random
    @next.move_by(@app.width/8, @app.height/8) do |value, attr|
      @app.random(-value, value)
      end
  else
    raise NameError, "Unsupported pattern: #{@app.patterns.current.inspect}"
  end
  @rect.move_by(@rect.x - @next.x, @rect.y - @next.y) do |value, attr| - (value * @speed)
  end
  end
  
  def radians(x)
    x * (PI / 180)
  end
  
  def display
    c1 = @app.color(*(0..3).map{rand(255)})
  @app.fill c1
  @app.stroke c1
  @app.rect(*@rect.to_a)
  end
end

class MovableDot < Processing::App

  attr_accessor :patterns
  THE_NUM_OF_DOT = 20

  def setup
    frame_rate 5
  @patterns = LoopQueue.new(:line, :circle, :center, :random)
    @dots = []
  dot_size, dot_margin = Dot::DEFAULT_SIZE, Dot::DEFAULT_MARGIN
  
  THE_NUM_OF_DOT.times do
    THE_NUM_OF_DOT.times do |i|
      initial_position = Position.new(width, height) do |wh_value, attr|
        i * (dot_size + dot_margin) + wh_value / 2 - THE_NUM_OF_DOT * ((dot_size + dot_margin) /2)
      end
      @dots << Dot.new(initial_position)
    end
    end
  end
  
  def draw
    background 0
  @dots.each{|dot| dot.display; dot.move} 
  end
  
  def mouse_pressed
    @patterns.next
  end
end

MovableDot.new :title => "Movable Dot", :width => 300, :height => 300

Processing::App を継承したクラス MovableDot から Dot と LoopQueue のインスタンスを生成し、マウスクリックでの挙動変化を LoopQueue クラスで表現しています。このコードで説明したかったのは以下の 3 点です

(1) Symbol について アクセッサに記述されている :width、:height などが Symbol であることを説明するために、「Symbol は文字列と違ってプログラム中で一度作られたら、同じ意味のものは二度と作られません」というのを irb で動作を確認してもらいながら説明しました。

 irb(main):001:0> "foo".object_id
 => 285710
 irb(main):002:0> "foo".object_id
 => 278950
 # さっきと違う番号、つまり違うオブジェクト
 irb(main):003:0> :foo.object_id
 => 145858
 irb(main):004:0> :foo.object_id
 => 145858

(2) initializeについて Position クラス( 23 行目)、Rectangle クラス( 40 行目)で実装しています。これらの initializer を実際に呼び出す( 58 行目、 113 行目)ことで、基本的な Ruby オブジェクトのインスタンス生成方法を勉強しました。

(3) yield について Position クラスの 28、29 行目にある

 @x = block_given? ? yield(x, :x, @x) : x

を題材に yeild について、これも irb で動作確認してもらいながら説明しました。

こんな感じでアプレット上に図形を描画し、座標を変換したり、マウスクリックに反応させたりして Ruby のコーディングを行いました。

発表資料については SlideShare の 11月8日イケテルjruby勉強会@東京 で公開していますのでご覧ください。

5-4. これからのイケテル勉強会

では、最後に今後の勉強会(補習を含めて)でやりたいことを書いてみたいと思います。

参加者それぞれに、色んな要望があると思いますが、Rails や Merb、AIR 等を使ったアプリの実装等…

それらもやりつつ、個人的には今回の主旨にもあった、改めて Ruby の語彙(文法)を学びたい、とかもっと深く Ruby について知りたいという要望に応える勉強会も併せて継続したいと思ってます。

例えば私は、Ruby でコーディングすることは楽しいと感じています。しかし、なぜ Ruby が楽しいのか?なぜ Ruby を使うことで生産性なり保守性を高めることになるのか?

これらの問いに対して、Ruby をまだ知らない人たちに説明するすべを、現在の私は持ち合わせてはいません。

他にも Ruby はなぜ純粋なオブジェクト指向言語と呼ばれるのか?、Ruby の、例えば特異メソッドというような機能は、なぜ存在するのか?どういう仕組みになっているのか? その辺りを理解し、共有することが Ruby とこれから付き合っていく、また多くの人に興味を持ってもらうための鍵になるのではないかと思っています。

勉強会を通して、みんなでコーディングしながら Ruby の楽しさを共有する、さらにはエンジニアとしての生活をよりよいものにするための活動を継続していきたいと思っています。

(渕上泰豪 佐藤洋三 林良子)

6. 懇親会

懇親会に参加しないなんて!

RBC の場合、懇親会はデリバリーを取ったりして、そのまま勉強会の会場で行う事が多いです。なぜって?

1つは、参加しやすいようにです。移動の必要もなく参加費も安くなりますからね。参加費は、だいたい 1,500 〜 2,500 円位かな?

2つ目。懇親会には参加者の持ち込みプレゼンが恒例となっているので発表のための機器がないと困るのです。飲食しながら和気あいあいとした雰囲気の中でのプレゼンは、発表する方も見る方も楽しいものです。技術関係はもちろん、ネタプレゼンもアリ。懇親会の醍醐味の一つです。

勉強会に行ったのに、懇親会に参加しないなんてもったいない! 途中で抜けても全然 OK なので時間に余裕があったら気楽に参加してみませんか?

実際、私は長崎からの参加なので福岡の勉強会での懇親会は大抵途中で抜けることになってしまいますが、楽しんでますよ。二次会以降にも参加できる方々が羨ましいですけどね。

(村部淳也)

7. 勉強会参加者の感想

第 2 回イケテル Ruby 勉強会@新潟 に参加して

冒頭、講師の秋間さんから「(環境設定が)不安な人いますか?」との質問を、「(今日の勉強会についていけるか)不安な人いますか?」と聞かれたと勘違いして、迷わず手を上げた PHP 歴 1 年のみの塩澤です。

そんな私でも、本当に楽しむことができたのが第 2 回イケテル Ruby 勉強会@新潟でした。書けば、動く。その手応えを実感して楽しむことができる内容。例えつまづいても皆で助けてくれる体制。「体感⇒理論」の道順で教えてくださるので、理論の小難しさに挫折せずついていけました。

実際、たったこれだけ?の印象のうちに、入力、確認、修正、変更までが整ってしまう Ruby の凄さには、時間をかけて苦労したことがあるぶん、うならずにはいられないものがあります。

そして、もう一つの要素となったミニビジネス勉強会。「仕掛ける側」に立って市場を揺り動かしてやろう!という意識はあんなに人を熱くさせるものなんですね(笑)。寡黙に PC に向かうだけでは育たないであろうビジネス意識に、大きな刺激をいただきました。

この勉強会に参加することで、Ruby の世界と、その隣にあるビジネスの世界を、意識する感覚が少なからず広がったのではないかと感じています。

(塩澤幸恵さん)

勉強会に参加した感想

RBC の Rails 勉強会などに参加して一番素晴らしいと感じたのは、プログラミングを楽むために全員で目標達成しよう!という意識をみんなが持っていることです。特に「ついて行けない人が出ないようにしよう」という姿勢を強く感じました。

また Ruby でのアプリ開発を実務でされてい方もいるので、懇親会などで実際の現場ではどんなことを注意しているのかを聞くことができることも非常に勉強になりました。

今「IT 勉強会カレンダー」をチェックすると、非常に多くの勉強会が各地で行われており、空前の勉強会ブームが来ているように思いますが、同じ業界や同じ職種の横の繋がりができ、参加して本当によかったと思います。

最初は勇気がいりましたが、仕事とは全く違った気分で非常に楽しく、一度行くと病み付きになってしまって、今月のが終わると来月はまだかなぁという気持ちになってしまいます(笑)

(高橋弘樹さん)

8. スタッフの感想

イケテル勉強会の醍醐味

スタッフとして RBC のイケテル勉強会の運営に携わり、そこで感じた勉強会の醍醐味について語ってみたいと思います。

当初、参加者として RBC の勉強会に参加してきた私が、イケテル勉強会夏補習、ruby-processing を題材にした勉強会では縁あって発表者として参加させていただきました。

私自身、 RBC の勉強会に参加するようになって初めて Ruby を触りだした、いわば駆け出しの身であり、仕事ではメインは Java で開発を行っております。こっそりと Ruby でツールを作ったりしてますが。

そんな私が、勉強会の発表を通して改めて気づかされたことは、「できるようになったから、やる」んじゃなくて、「やってみたら、できるようになる」ということが大事なんだ、それが楽しさを感じる瞬間であるということです。

勉強会の準備、発表、懇親会といった過程を経るうちに、Ruby の技術面のみならず、以前の自分とは違った自分になっていく、変わり行く自分を感じました。

楽しいんです。またやってみたいと思いました。次はもっといいものをと。これが勉強会のひとつめの醍醐味です。

蛇足ですが、サッカーのリフティングを例を挙げますと(私は今でも気持ちはサッカー選手なので)リフティングは、やってるうちにいつのまにか出来るようになって、出来る回数もやっているうちに増えていきます。

そのような経験は皆さんにもありませんか?やっているときは楽しくて、夢中になってやりますよね。さらに、出来なかった以前の自分に戻ることは出来ません。んー。あまりいいたとえではないかも。

発表者としては拙い面もあったと思いますし、協力していただいたスタッフの方々の力なしには成立し得ないものであったことを改めて感じています。

実はここに、もうひとつの醍醐味があります。

発表資料の準備を例にあげますと、Google Docs に資料をアップして、スタッフの方々と同時編集しながら資料を作り上げました。

勉強会に参加していただける方々にとって、より充実した内容のものを作り上げたい、参加者、運営側双方が愉しんで学べる場にしたいという、スタッフ全員の思いが結集した資料作りができました。

関わって頂いた全ての皆さんに感謝します。

(渕上泰豪)

9. さいごに

RBC の活動と勉強会についての説明はいかがでしたか?
それでは、締めに RBC 発起人の最首さんからのメッセージです。

Ruby の楽しさをどのように「味わう」のか。それは人それぞれかもしれない。プログラミングの楽しさは、使って役に立ち、作って楽しいシステムを、僅かな時間で完成させてしまうことで味わえるかもしれない。そして、一人で作るんじゃなくて、チームを作って、行き詰まった人を助けながら進む。人に教えることで、自分の理解が深まるのだとしたら、教えられた人だけじゃなくて、教えた人も学ぶことができる。

RBC の勉強会は、Ruby の楽しさを、こんな形で味わいながら進んでいます。

誰かが先生で、誰かが生徒というのは決まっていない。学んだことを教え合う。但し、「勉強のための勉強」ではなくて、実践に役立つ魅力的なコンテンツ。学んだことを、仕事に活かせるような内容。だから、気がつくと思います。プログラミングは楽しい。そして、ビジネスも楽しい。

そんな想いを込めて勉強会が開始される前には、全員で肩を組んで円陣を作り大声で「しまっていこーぜ」「おー」と気合いをいれます。RBC が体育会コミュニティと呼ばれる所以はこんなところにもあるかもしれません。

(最首英裕)

※ 勉強会の円陣ではありませんが、1周年記念のときに撮影した約 50 人での円陣の映像です。

動画@Youtube

更新日時:2009/02/02 22:52:58
キーワード:[RBC]
参照:[Rubyist Magazine 0025 号] [0025 号 巻頭言] [Rubyist Magazine 五周年] [分野別目次] [各号目次] [prep-0025]