タグ「Ruby」が付けられているもの

Ruby東海PP - 研究室

自己紹介

名前
後藤 俊介
twitter ID
@antimon2
住所
名古屋市千種区 (出身 愛知県豊明市)
生年月
1976 年 1 月 (35 歳)
mail
antimon2@mac.com
Web
http://www.antimon2.atnifty.com/
所属
(株) コスモルート

近況報告

gem "enumerable_lz" 公開中。
毎月の Ruby 東海勉強会にもがんばって参加中。
でも来月以降行けなくなるかも (>_<)

Ruby 歴 (?)

  • 学生時代 (199x 年台)。 「Perl (と発音が同じ Pearl =真珠)が 6 月の誕生石だから、7 月の誕生石にちなんで "Ruby" っていう言語が出来たんだって」「へー」
    とかいう会話をしながら Java アプレットや DHTML (JavaScript + レイヤー) で遊んでいた。
  • (一気に飛んで) Web 制作会社勤務時代 (200x 年台後半)。 Ajax が流行りだして、JavaScript ライブラリ MooTools に出会う。とことんオブジェクト指向を追求したライブラリで非常に手に馴染んだ。
    この MooTools が Ruby をかなり意識した設計になっていることを知る。(Ruby との初接点)
  • 2009 年後半 (やっと Ruby との馴れ初め)
    Ruby1.9 が、文字列における国際化や全体のパフォーマンス向上など、「使える」言語になったという噂を聞いて、触り始める。(当時は Ruby1.9.1-p129 だったと思う)
  • 2010 年前半
    Ruby の勉強のために twitter bot を作り始める。
  • 2010/07/09 Ruby 東海 第 11 回勉強会 初参加 (ちょうど 1 周年!)
    実はこのとき、Web 制作会社を辞めて求職中。(8/1 に今の会社に就職)
  • 2010 年後半
    無限リストに map メソッド使ってムキーとなったのをきっかけに、「Enumerable をもっとまともな Enumerable にするには」ということを考え始める。遅延評価の有用性と使い方を知ったのもこの時期。
  • 2011/01/23 enumerable_lz ver.0.1.0 公開!
  • 2011/02/26 名古屋 Ruby 会議 02 参加
    • スタッフとして参加。
    • 「Enumerable はもっと Enumerable になれると思うんだ」発表。
  • 2011/06/12 Rubyist Magazine 0034 号に記事「enumerable_lz による遅延評価のススメ」を寄稿。

Ruby との関わり

  • twitter bot 作り (旧暦 bot、瑞谷女史 bot)
  • gem 作り (enumerable_lz)
  • 簡単な計算やアルゴリズム確認を irb やワンライナーでしたり。
  • 現状、仕事では直接的な関わりなし。

その他

コミッターには余り興味ありません (実は)。
第一言語は JavaScript です。

Ruby東海第15回勉強会 - 研究室

昨日、第15回Ruby東海勉強会に行ってきました。
「メタプログラミングRuby」読書会 第2章「火曜日:メソッド」。
動的メソッドによる動的ディスパッチと、ゴーストメソッドを利用した動的プロキシ。2つの魔法を手に入れたw

さて今回、LTやってきました。
「Freedom Patching の実用例(?)」
前回の勉強会で出てきた「モンキーパッチ」、改め「Freedom Patching」についての実例。
以下に資料を公開しております。

Freedom Patching の実用例(?)

なおスライドは普通のHTML5です。
閲覧には Chrome、Safari、Firefox(できれば4.0β以上)推奨。Operaだと一部Webフォントが正常に表示されないっぽいです。あとIEはChromeFrame必須。

来月の勉強会は、私σ(^-^)がまとめ担当に立候補しました。
第3章「水曜日:ブロック」
内容に絡めたLTも余裕があればやりたいなーと画策中♪

【覚書】[Ruby]続・トップレベルに定義したメソッドと同名のメソッドをクラスで定義した場合 - 研究室

本日(日付が変わっちゃったので正確には昨日)、第14回Ruby東海勉強会に行ってきました。 そこでヒントをもらったので、半年前の記事に補足。

[おさらい]半年前に考えてたこと

def meth(a) p a; end
class Clazz
  def meth
    《トップレベルで定義した同名メソッドを self を引数に渡して呼び出したい!》
  end
end

こんなことしたい場合に、どうすれば良いのか?

↑こんなことを考えていました。

ポイントは以下の通り:

  • トップレベルで定義したメソッド = Kernelモジュールで定義されたprivateメソッド。
  • Kernelモジュールで定義されたメソッドと同名のメソッドを定義 = メソッドのオーバーライド。
  • privateメソッド = レシーバを指定して呼び出すこと(obj.methのように)が出来ない!(Rubyの仕様)

【覚書】[Ruby]トップレベルに定義したメソッドと同名のメソッドをクラスで定義した場合 - 研究室

ちょっとばかしハマったのでメモ。

トップレベルであるメソッドを定義します。
それと同名のメソッドをあるクラスでも定義します。
例えば、

def meth(a) p a; end
class Clazz
    def meth; p self; end
end

こんな感じ。

このとき、クラス Clazz 内で、トップレベルのメソッド meth(a) を呼ぶにはどうしたら良いのか?
もっと言うと、同名のメソッド内で

def meth(a) p a; end
class Clazz
    def meth
        《トップレベルで定義したメソッドを self を引数に渡して呼び出したい!》
    end
end

こんなことしたい場合に、どうすれば良いのか?

...あ、もちろん、
「トップレベルで定義したメソッドと同名のメソッドを定義して、なんてそんな変な設計にしない」
というのが正解なのは分かっています。
仮に、あくまで仮に、そんな事態に陥った時の解決法は? ということですので。

Rubyでちょっと込み入った変数の初期化 - 研究室

JavaScriptだと、1つの変数にちょっと込み入った処理の結果を初期値として定義するとき、わざわざ他のローカル変数や別の関数を導入してスコープを汚したくないときとかに↓

var a = function (x, y) {  
    :(x、yを利用した複雑な処理)  
    return XXX;  // こんな形で最終処理結果を返す  
}(b, c);

みたいに、無名関数(JavaScriptの世界ではこれをクロージャと呼ぶこともある)を定義してその場で実行する、ってよくあります(あると思います)(ありますよね?)。

Rubyで同じようなこと出来ないかな? と思ったときに、こうすれば出来るじゃん、っていう方法を見つけたのですが↓、

a = proc {|x, y|  
   :(x、yを利用した複雑な処理)  
  XXX  # こんな形で最終処理結果を返す  
}.call(b, c)

これって一般的? よく使われる方法? あとこう言った場合に、もっとスマートな方法って何かあるでしょうか?

教えて、えらい人(or Ruby識者)。

Twitter Bot の紹介 - 研究室

ツイッター(http://www.twitter.com/)で活動するボット(Bot)をいくつか作っています。

2010/05/03時点で、2つ。
それらの特設ページを作成しました。

これらのBotの詳しい内容は、各解説ページを参照戴くとして。
ちょっと技術的な話とか、苦労話とか。

ブログ

研究室
書斎

タグクラウド

最近のブログ記事

Ruby東海第15回勉強会
研究室ブログ上
【覚書】[Ruby]続・トップレベルに定義したメソッドと同名のメソッドをクラスで定義した場合
研究室ブログ上
第39回FLOSS桜山勉強会
研究室ブログ上