Create  FrontPage  Index  Search  Changes  Login

第23回 Ruby/Rails勉強会@関西

第23回 Ruby/Rails勉強会@関西(運営:Ruby関西

勉強会

日時
2008 年 02 月 16 日 (土) 13:00〜17:00
場所
京都女子大学 S109 教室
アクセス
http://www.kyoto-wu.ac.jp/access/index.html , http://www.cs.kyoto-wu.ac.jp/~konami/map/s-tou/
費用
実費(講師の交通費、配布物の印刷代等)の人数割をご負担ください。前回(同じ会場)は500円でした。
定員(注意!!)
56名(今回は会場の都合で定員が設定されています)

プログラム

Ruby1.9 の仕様 − Array 関連の新しい機能 by こなみ さん

セッション概要

Ruby 1.9 では配列まわりの仕様が大きく変更され, これまでにない使い方ができるようになっています。Ruby 初心者の立場にも配慮して,1.8以前の仕様と比較しながら, これらについて紹介します。

資料
NewArraySpec.pdf

純粋関数型言語Ruby(3) 30分でわかるMonad by 氏久(ujihisa)さん

セッション概要

純粋関数型言語であるRubyの初級者向けのお話をします。 モナドの簡単な使い方を解説します。前回の簡単な復習を行うかもしれません。

資料
http://www.slideshare.net/ujihisa/ruby-monad
プロフィール

ふつうの大学院生。研究でRubyを使ってデータマイニングやっています。 Ruby以外にHaskellやJavaScriptなどといった関数型言語を触っています。 最近は並列計算・Cellプログラミングに興味を抱いています。 MacBook Airが大変欲しいです。

Rails以外のWebアプリケーションフレームワーク」 by yhara さん

Rubyのリフレクション by 大林さん

セッション概要

Rubyのリフレクションについて何故そう動くのか、 どう役立つのかについて解説する。 Rubyのリフレクション機能は幅広いが 話をするのはその一部にする予定である。

資料

http://www.kmc.gr.jp/~ohai/ruby-kansai-20080215/reflection.txt http://www.kmc.gr.jp/~ohai/ruby-kansai-20080215/reflection.html

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

セッションの概要

イテレータあるいはブロック付きメソッドと呼ばれるモノについて。 それとるりまの使い方など。

資料

print.pdf slide.pdf rgb.txt

解答例
answer.pdf

ログ

Ruby1.9 の仕様 − Array 関連の新しい機能 by こなみ さん

純粋関数型言語Ruby(3) 30分でわかるMonad by 氏久(ujihisa)さん(logger: kmdsbng)

  • Monadとは
  • Monadの種類
  • Monadの使いかた、応用例
  • おまけ
  • Monadとは
    • モナドを、計算を合成して、より複雑な計算にする戦略
あるいは
    • よりゆるい関数
あるいは
    • 掛算みたいなもの
  • Monadの種類
    • Identity Monad
    • Maybe Monad
    • Error Monad
    • List Monad
    • IO Monad
    • State Monad
    • Reader Monad
    • Writer Monad
    • Continuation Monad
  • Monadの使いかた、応用例
    • Maybe Monad
      • ありがちなコード
g = (f1 && f2 && f3 && f4)
      • ifを使って書き直すと
g = if f1
      if f2
        if f3
          f4
        end
      end
    end
      • nilチェックを加えるとこんな感じになりがち
g = x != nil && x > 10 && x < 12
      • Maibe Monadを書き直すと
 f1 = lambda {|x| x.nil ? nil : x > 10 ? x : nil}
 f2 = lambda {|x| x.nil ? nil : x < 12 ? x : nil}
 g =lambda {|x| (a = f1[x]) && f2[a]}
    • IO Monad, Writer Monad, Reader Monad, State Monad
      • これらのモナドは副作用を扱うために使用する
      • 副作用とは
        • 入出力
        • 引数、戻り値以外の値の更新
    • IO Monad
      • 可換な演算子と、非可換な演算子
        • 1 + 2 == 2 + 1
        • 1 * 2 == 2 * 1
          • ベクトルの計算だと非可換
        • 1 && 2 == 2 && 1
          • 非可換
      • 短絡評価
        • f1 && f2
        • f1 || f2
      • 順序をかえられない、変えたくないときに
        • rubyだと
puts 'a'
puts 'b'
puts 'c'
        • haskellだと
main = putStrLn "a" >> putStrLn "b" >> putStrLn "c"
    • Writer, Reader and State Monad
      • 関数の引数以外に参照できるデータ(=副値)を操作するためのモナド
        • rubyでの副値はインスタンス変数、クラス変数、グローバル変数、定数、ローカル変数、ObjectSpace.id2ref
      • Write Monad
        • 書き込み専用
      • Reader Monad
        • 読み取り専用
      • State Monad
        • 両方
  • Rubyによるモナドの実装
    • RushCheck
      • vim /opt/local/lib/ruby/gems/1.8/gems ... gen.rb
    • Monad Plus
  • モナドに関するニュース
    • 2/22 Haskell勉強会#9
    • 3/1 Haskell Hackathon 2008
    • rubyでも1.9からcurry実装されました
lambda {|x,y,z| x + y + z}.curry

Rails以外のWebアプリケーションフレームワーク」 by yhara さん(logger: kmdsbng)

  • merb
    • stoyanはメルブと読むのでメルブ
    • railsより3倍速い
    • railsのように、MVC, 自動生成 / railsのpluginも使える!
    • new, simple(?)
  • camping
    • whytheluckystuff
    • 超軽量
    • MVC全部1ファイルとか、そういう用途
    • htmlメソッド, headメソッド, pメソッドとか狂ったView
    • Campingの変態的なところ
      • Why氏の作るアプリケーションはどこか必ず変態的なところがある
      • ルーティング
      • 継承の部分でRメソッドが…
    • コアが4キロバイト
      • ゴルフしてたー!!!
  • ramaze
    • ロゴにラマゼと書いてある
    • merbとcampingの中間くらいの軽量化
    • サーバもテンプレートもDBも自由
  • 設定ファイルで切り替え可能
    • ソースコードがキレイ
    • oメソッドwww
  • まとめ
    • それぞれ目的が違う
    • yharaオススメはrails

Rubyのリフレクション by 大林さん(logger: kyara)

  • Rubyの黒魔術の紹介

Ruby1.8.6対象

  • リフレクションの基本的考え方
    • 大半の処理は実行時処理
    • 実行自前の処理は無理w
      • 構文木(AST)は弄れない
      • Lispのマクロはない
    • リフレクションで使用するのはModule/Class, Objectクラスが中心
      • リファレンスを参照(大体出来ることがわかる)
  • 利用法
    • ライブラリ作成
    • Inner DSL
  • リフレクション機能概要
    • 変数、定数関連
      • innstance_variable_{set,get}
      • instance_variable_defined?
      • instance_variables
      • instance_...[etc]
      • ローカル変数
        • local_varialbes
      • グローバル変数
        • global_variables
        • trace_var
    • メソッド関係
      • Module#instance_methods
      • Object#methods
      • Object#singleton_methods
      • Module#method_defined?
      • Object#respond_to?
        • 継承したクラスを含める、含めない、特異メソッドだけ等
      • メソッド定義
        • Module#define_method
        • Module#{remove,undef}_method
        • Module#
    • クラス階層
      • Module#include
      • Object#extend・特異メソッドを追加
      • Classsuperclass
      • Module#include?
      • Module#ancestors
      • Object#is_a?
      • Module#===
    • eval関連
    • hook関連
      • Object#method_missing
      • Module#const_missing
      • Module#method_added
      • Module#method_{removed,undefined}
      • Module#included
      • Module#extended
  •  リフレクション機能概要について大林さんから一言

今までの話は忘れてもいいですw;

  • 特異クラスについて

あるオブジェクト固有のメソッド、クラス

    • 通常?クラス
 class A < Object
 end
 a = A.new
      • 継承図
 superclass↑
 class⇒(参照)

       Object
       ↑
 a ⇒  A
    • 特異クラス
 a = A.new
 class << a
   def x
   end
 end
    • 特異メソッド
 a = A.new
 def a.x
 end
      • 継承図
 superclass↑
 class⇒(参照)

             Object
             ↑
 a⇒  (a) →  A
  • Module#define_method
    • 今回のテーマ(メソッド定義するメソッド)
      • 例題(ここで、実際にプログラムを組んでみる:logger力尽きたので略)
        • メソッドの作成
          • モジュール・クラスにメソッドを定義
        • 更なる課題
          • ・initialize時にインスタンス変数を初期化
    • コツ
      • 必要な情報がどのクラスが持っているか、持たせるかを意識する
        • 小細工をするのにローカル変数が使える(ただメンドクサイ)
      • eval周りは仕様が変わるので注意が必要
  • 質問
    • Q:何所で調べるの?
    • A:リファレンス->IRB->想像力->Rubyハッキングガイド
    • Q:リファレクションを勉強するのに便利なライブラリは?(かずひこさんから)
    • A:特に思いつかない。特にこれといってない

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

/:日時:2008 年 2 月 16 日 (土) 18:30〜

コメント

(comment plugin is disabled).

反応リンク集

Ruby/Rails勉強会@関西(京都女子大)ってところにお邪魔していました. 第23回 Ruby/Rails勉強会@関西

モナドとかリフレクションの話はコアすぎの..

第23回 Ruby/Rails勉強会@関西に行ってきました。 というか、参加の最中にログがてらにはてなに書いてた。 今回は濃い内容が多くて少ししかわからないものもあったが面白かった。 ログの内容はその場で書いてたからよくわからないことになってると思うけどまあいいか。

Last modified:2008/07/18 20:58:16
Keyword(s):
References:[Ruby勉強会@関西]
This page is frozen.