第7回Ruby東海に参加

3月 8th, 2010 admin

3月5日に行われた第7回Ruby東海に参加しました。
今回は私のCapistranoについての発表、eitoballさんによるActiveSupportのコードリーディングという内容でした。

Capistranoでデプロイの自動化

僕はとにかく物忘れが激しいので、1ヶ月もするとどんな小規模なWebアプリケーションでもデプロイの手順を忘れてしまいます。そこで、手順をWikiにまとめるだとか、シェルスクリプトを書くだとかするんですが、Ruby on Railsに関していえばCapistranoというツールがとてもよいので紹介させてもらいました。(Railsアプリ以外にも使えます)

ActiveSupportのコードリーディング

Base64, Benchmark, Bigdecimalあたりのコードを読みました。ActiveSupportを知るという意味でも、Rubyの(たぶん)良いコードを読むということでも非常に勉強になります。

途中ででてきた、includeとextendの違いなどについては
Rubyにおけるrequireとincludeとextend - yamazのRails日記 - Rubyist
満足せる豚。眠たげなポチ。:Ruby の include, extend まとめ
のあたりで詳しく解説されているようです。
また、『たのしいRuby』のMix-inの章などに、勉強会中に書いていた継承関係の図などが乗っていました。

まとめ

・Ruby東海で初めて発表ができてよかった
・Capistranoを使うのは制約が多い、rpmで配布するのが便利 <=興味ある
・ベンハーをみたことないやつは見ろ

第5回 Ruby東海で書初めをしてきました。

1月 9th, 2010 admin

1月8日に名古屋市短歌会館で行われたRuby東海の勉強会に参加してきました。

書初め

・Ruby1.9をつかう
・ペアプロ
・40分で終るように
・テストファースト
という条件で、書初め開始。
僕はid:babydaemonsさんと組んで、Ruby東海のRSSの最新1件をTwitterにPOSTするスクリプトを書きました。
必要なコードは10行以下だったのですが、1.9をインストールしたり、gemの環境を整えるのでかなり時間をとられてしまいました。

RUBY:
  1. #!/usr/bin/ruby
  2. # -*- coding: utf-8 -*-
  3.  
  4. require 'rss/1.0'
  5. require 'rss/2.0'
  6. require 'open-uri'
  7.  
  8. require 'rubygems'
  9. require 'twitter'
  10.  
  11.  
  12. source = "http://groups.google.co.jp/group/ruby-tokai/feed/rss_v2_0_msgs.xml"
  13. content = "" # raw content of rss feed will be loaded here
  14. open(source) do |s| content = s.read end
  15. rss = RSS::Parser.parse(content, false)
  16.  
  17. http_auth = Twitter::HTTPAuth.new("toyoshi", "password")
  18. twit = Twitter::Base.new(http_auth)
  19. message = rss.items[0].title + ' ' + rss.items[0].link
  20. twit.update message

バイオインフォマティクス

今回は昨年12月に発売された「Rubyではじめるバイオインフォマティクス」の著者の方が初参加されていました。対象は
・Rubyを知っているバイオインフォマティクス入門者
・バイオインフォマティクスを知っているRuby入門者
とのことです。DNAやたんぱく質の配列とかを扱ってRubyを学ぶって面白い。気になります

rvmという便利なgem

Ruby Version Managerというバージョン違いのRubyを切り替えて使うためのツールを教えていただき、実際に導入してみました。1.8と1.9が切り替えて使えるのでとてもべんり

FFTT : rvmの紹介

まとめ

・2ヶ月ぶりに参加できてとても楽しかった
・次回は発表しようと思う

第14回 RHG読書会@CSNagoya

12月 21st, 2009 admin

img_0829

第14回 RHG読書会を開催しました。
今回は第14章 コンテキストの途中「メソッドの定義」からです

メモ

・Rubyの定数のスコープは見た目優先になっている。
・僕が思っていたRubyが驚き最小の原則を採用しているというのは勘違いだったみたい => 驚き最小の原則 - Wikipedia(用例のところでRubyに触れられている)

まとめ

・和室で勉強会をすると全員が寝てしまう
・プログラマは僕をはじめ姿勢が悪い人が多い気がする。筋肉不足?

懇親会など

・お勧めしあった本(鈴木先生 孤独のグルメ深夜食堂ガダラの豚孤高の人変身魔女の宅急便(小説)
・僕がオススメした本(コンタクト神々の山嶺

第12回 RHG読書会@CSNagoya

11月 17th, 2009 admin

img_0695

第12回 RHG読書会を開催しました。
今回から内容はいよいよ第3部 評価にはいります。
僕はLLの人間のはずなのに、コンパイル型の言語と勘違いしており、勉強会の冒頭から評価ってなんですかという質問をしてしまい会場をなごませました。

メモ

・「評価」の日本語訳は「価にする」というものの方が適切
・評価器はeval.c(9000行ぐらい)
・コアはrb_eval()という関数
・rb_eval()の呼び出し一回がNODE1つを処理し、再帰しながら構文木全体を処理する
・breakやnext実装のためにC言語のライブラリ関数setjump()とlongjmp()を活用
・do~whileが二つのマクロに分かれているため、かならずセットで使用しなければならない

まとめ

・setjump/longjumpが再帰のところで使われていて、僕の頭の中の再帰の「イメージ映像」ではsetjumpするというのは絶対にできないことだったのだけど、イメージ映像が間違っていたのでそっちを変えたら理解できた。
・それでもメモリとかどうなっちゃうんだろうと不安
・あのあたりのコードを「ふんふん」とかって読んでしまう皆はすごい
・Rubyの勉強会のはずなのだが、やっぱりC言語をすらすら読めないと厳しい
・次回は第14章「コンテキスト」から

関西Ruby会議02にいってきました

11月 9th, 2009 admin

img_0666
11月7日に行われた関西Ruby会議02に、名古屋Ruby会議実行委員として参加してきました。当日NAGOYA Ruby KAIGIというTシャツを着ていたのが私です。

以下ざっと感想など

Hacking parse.y (ujihisa)

img_0657
parse.yをハックしようというお話。++演算子を実装したり、:)という顔文字を=>と等価にしたりと、本当のRubyのハックというのを実演してもらえた。僕はRHGを多少読んでいたおかげで、ギリギリ知識として知ってはいたものの、実際にparse.yを書き換えて、makeしてRubyが変更されているのを目の当たりにするのは感動的でした。
発表者のujihisaさんもとても面白そうな方で、特にRubyのコンパイルが成功するたびにとても嬉しそうな顔をされるのが印象的でした。(ランチも一緒にさせてもらいました。有難う御座います)

・1.8も1.9もparse.yはほとんど同じ
・eval.cとparse.yは汚いのではなく、秘伝のたれと呼ぶ
・MRIのparse.yが1万行以上なのに対して、JRuby, Rubiniusは2,000行以下
・Rubyのドキュメントが手元に無ければparse.yを見ればいいじゃない

LT

img_0659
LTは9本ほど行われました。会場が広くないこともあったのですが立ち見でぎゅうぎゅうになるほどの好評でした。

Rubyで始めるGTD (sixeight)

GTDとTDDは似ているという話。そのためのeverythingというツールを開発中とのこと

visualing and proccessing(kyara)

proccessingを使うと簡単にデータのビジュアライズができますよという話

Lang8におけるRuby活用事例(松本一輝)

多言語学習サイトLang8(Rails製)にて、KVSにキャッシュをしたり、InnoDBの圧縮を使うことで高速化やCPUの負荷の低下などに成功されたというお話。Rubyの柔軟さがなければできなかったとのこと。

Web3.0.rb (ストヤン ジェコフ)

Webのデータを使うときに、従来のRSSを定期的に取得するなどのpull方式ではもう間に合わない(twitterなどのせい)ので、webhookを使ってpush式でやろうという話。
発表者が着ていた_whyのTシャツがうらやましかった!あと「pushがほしーやなー」という独特の日本語が素敵

※知らないサービスの名前がいっぱい出てきたので後で調べたい(watercooler, XMPP, googlewave)

日本Rubyの会第6期の活動について(角谷信太郎)

日本Rubyの会の紹介と、まさかの日本Ruby会議2010の開催決定案内+ライブWeb更新
途中で高橋さんの突込みがはいるなど、とても盛り上がりました。

それMiyakoで(ry(サイロス誠)

オリジナルで開発されたゲームライブラリMiyakoの紹介
ゲームの開発などをしたことがないので詳しくはわかりませんが、画像のデータをスプライト化した後の操作がとてもRuby的に書けるのがすごいと思いました。

Rubyで楽しく開発(jugyo)

Rubyで楽して開発するためのRuby製オリジナルツールの紹介。
ifchanged・・・指定したファイルが更新されたら、○○を実行するというのをやってくれるツール
g・・・pでプリントされるように、gを使うとポップアップみたいなのがでてくるようにしてくれるツール(macの機能?)

ifchangedはとても便利そう、デモではファイルが更新されたらテストが走るようにしていました。僕の場合はブラウザを更新とかに設定したら病みつきになりそう。

Ruby Station (yhara)

RubyのWebアプリをデスクトップアプリケーションのように扱うためのツールの紹介。見た目は派手ではないですが、なんかすごい可能性を秘めているんじゃないかという気がしました。

Ruby初級者向けレッスン(okkez)

img_0661
Rubyの初級者を集めて、ハンズオン形式でテスト駆動開発というのを行いました。僕は参加者ではなくTAとして、参加者をフォローする役目でお手伝いさせて頂きました。以下メモ
・最初に全員のレベル確認大事
・Emacs,Vim,Rubyの入ったDebianのライブCDが用意されているのでPCさえあれば始められる!(なぜかirbが入ってなかったが)
・初級者=向上心のある人
・TAがなんの略かまだわからない
Ruby関西ではこういうのを30回以上やられているということで、Ruby東海でもこういうのをやれたらいいなと思います。

GC黄金時代(nari)

img_0665
GC好きとして有名なnariさんの発表。タイトルに対する結論としては、GCの基礎アルゴリズムというのは60~80年代に完成されているので、黄金時代はとっくに終っていたということなのですが、結局のところGCというのはモダンな言語には必須なものであり、言語の数だけGCが必要なので全然やりがいのある楽しい分野だとのことでした。

まとめ

本当は懇親会もいきたかったのですが、次の日にフルマラソンの予定があり、割とタイムを狙っているレースだったので、そのことを考えると17:00ごろからプレッシャーで胃が痛くなってきたため、nariさんの発表の直後に帰らせて頂きました。(ざんねん・・・)
アポなしでの訪問にも関わらず、Ruby関西の人たちには暖かく迎えて頂き、初級者レッスンでもスタッフとして参加させてもらえるなど、とても楽しい時間をすごせました。また、Ruby関西さんを見て、Ruby東海もこんな風に結束がある会になったらいいなーとか、次回の名古屋Ruby会議はこういうこともしたいなーなどいろいろな刺激を受けることもできました。
今回学んだことを東海地方のRubyの活動に活かしたいと思います。

それでは、関西オープンソース2009の皆さん、Ruby関西のみなさん、そして参加者のみなさんお疲れ様でした。