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

第28回 Ruby/Rails勉強会@関西に行ってきました.テスト前だけどなー.

ひととおり感想をば,

エラトステネスの嵐―Rubyの集合演算を活用する by こなみ先生

テーマになった,エラトステネスの篩というと,ある数以下の素数を発見するためのアルゴリズムですね.

エラトステネスの篩の実装をテーマにコードの最適化やRubyのArrayについてのはなしやベンチマークの方法などがあがっていて,網羅的でおもしろい発表でした.ちょっと,発表資料の字がみえにくかったのが残念.

エラトステネスの篩とは微妙に違うのだけど,素数判定だとid:otsune「なんでこれで素数判定できるかは、読者の宿題」 - otsune's SnakeOil - subtechがおもしろくて好きです.素数判定が正規表現だけでできるのですよ.Rubyだとirbで

'X' * n !~ /\A(XX+)\1+\z/

とやると,nが素数かどうかが判定できます.Xの部分は正規表現のメタ文字でなければなんでもOK.n以下の素数を全部見つけるわけではないのでエラトステネスではないですが,考え方は一緒ですね.nがn以下の数字の倍数でなければtrueです.

うーむ,正規表現は奥が深い.

git - 分散バージョン管理システム by 舘野祐一さん

gitかわいいよgit.github厨ことid:secondlifeさんのgitの発表でした.gitの概略の説明 + init branch tag mergeのお話.gitの良いところがまとめられていて,わかりやすい発表ですが.

gitですが,うちも最近は自分のリポジトリは全部gitで管理してます.だって,

$ git init
$ git add
$ git commit -a

でいきなりバージョン管理がはじめられて,手軽すぎるのだもの!

svn importとかめんどくさいし,気を遣う*1ので,ものぐさなうちにはぴったりです.

branch機能の紹介は,うちもあまり使いこなしてないので,非常に選考になりました.

$ git branch branch_name   # branch作成
$ git checkout branch_name # branch切替

とするだけで,ちょー高速にbranchを切り替えられたりします.動くかわかんない機能を実装するときや,コードが動かない状態でもコミットしたいときは,とりあえずbranchを作っておいて,ちゃんとしたコードになったら

$ git checkout master   # branch切替
$ git merge branch_name # 現在のbranch(master)にbranch_nameをmerge

でマージするのが,今のはてな流らしいです.id:secondlifeさんのデモを見た方は体験されたと思いますが,branchの作成やcheckoutやmergeが非常に高速に動作していました.branch - mergeのオーバーヘッドが少ないのでこういう開発のしかたができるのですね.

今回,紹介されていたtigというCUIツール*2はgitにちょっとリッチなUIを与えてくれるので,git入門には良いのでは,という話でした.これはわかりやすくていいな.

他にもgitはlogとかdiffとかgrepの機能が充実しているらしいので,便利に使うためにいろいろ勉強しがいがありそうです.

githubについての紹介もありました.丁寧な説明があるので((英語ですが),gitの入門には非常によさそうです.コードスニペットの管理もできるgistもできたりして,盛り上がってきてますね.

とりあえずgitを使いたい人はid:motemenさんが,
やる夫で学ぶgitを執筆中らしいので要watchです.[あとで印刷する]

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

まいどおなじみ初心者向けレッスンです.テーマはirb.

TAだったのですが,irbって殆どカスタマイズせずに使っていたので役立たずTAになってしまいました.すみません>

うちも問題*3を解いてみたのですが,時間がなくてちゅうとはんぱになってしまいました.途中までしか書いてないのですが,とりあえず,gistにあげました.Problemクラスかいてだいたい満足してしまった.

まとめ

ちょっとひさびさのRuby勉強会だったのですが,やはり,こういうところでいろんな人と交流するのは刺激になっておもしろいですね.本日,お会いしたみなさん,また,よろしくおねがいします.

今回は,テスト期間中ということもあり,懇親会には参加せず,ラーメン食べてからそうそうに帰宅しました.次は懇親会にも顔を出したいところです.

*1:ディレクトリじゃなくてディレクトリの中のファイルが一気にimportされないか…とかね

*2:tig.rbじゃないよ!

*3:問題は勉強会サイトのPDFにあり