Create  FrontPage  Index  Search  Changes  Login

日本Rubyの会 公式Wiki - KansaiWorkshop23 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

! 第23回 [[Ruby/Rails勉強会@関西|KansaiWorkshop]](運営:[[RubyKansai]])

{{toc}}

!! 勉強会

:日時:2008 年 02 月 16 日 (土) 13:00〜17:00

:場所:[[京都女子大学|http://www.kyoto-wu.ac.jp/]] 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以前の仕様と比較しながら,
これらについて紹介します。
:資料: {{attach_anchor(NewArraySpec.pdf)}}
!!! 純粋関数型言語Ruby(3) 30分でわかるMonad by 氏久(ujihisa)さん
:セッション概要:
純粋関数型言語であるRubyの初級者向けのお話をします。
モナドの簡単な使い方を解説します。[[前回|http://tinyurl.com/2gcwtg]]の簡単な復習を行うかもしれません。
:資料: 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さん
:セッションの概要:
イテレータあるいはブロック付きメソッドと呼ばれるモノについて。
それとるりまの使い方など。
:資料:
{{attach_anchor(print.pdf)}}
{{attach_anchor(slide.pdf)}}
{{attach_anchor(rgb.txt)}}
:解答例:
{{attach_anchor(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さん

//!!参加方法。
//参加を希望される方は、以下の手順で参加表明をお願いします。
//
//1. [[Rubyist SNS|http://jp.rubyist.net/sns/]] にアカウントを作成してログインする。
//
//2.「Ruby関西」というコミュニティに参加する。
//
//3.「Ruby関西」コミュニティに、「第 23 回 Ruby/Rails 勉強会」と「Ruby/Rails勉強会@関西-23 懇親会」という二つのイベントがあるので、それぞれに参加登録をする(勉強会と懇親会は別イベントでの登録です)。
//
//Rubyist SNS への参加や Ruby 関西コミュニティへの参加だけではイベント登録は完了していませんのでご注意ください。
//
//!! 懇親会
/:日時:2008 年 2 月 16 日 (土) 18:30〜
//:場所:[[ビアパラダイス アスレティックス|http://r.gnavi.co.jp/k113807/]]
//:会費:およそ社会人:学生 = 2:1 の比率でご負担ください。前回は 4000 円、2500 円でした。
//:定員:35人としていますが、前後数人はOKです。
//:締切:2008 年 2 月 15 日 (金) 17:00 まで

//!! 会場設備とノートPCの持ち込みについて
//* ノートPC接続のためのACコンセント,LANコンセントは完備しています。
//* 教室の Windows PC 用に Cygwin/Ruby/Meadow をインストールした USB を数個お貸しします。必要な方は SNS で表明してください。
//* ネットワークに接続したい方は、LAN ケーブルをご用意ください。(ネットワーク接続できなくても勉強会には支障ありません)
//

//!! 名札について
//* 初参加の方々もいらっしゃいますので、名札をお持ちの方は是非/持参してください。もちろん名前を大きく書いて。通称もあり。

//!! ロガーおよびTAの募集
//* [[KansaiWorkshopRequestParticipant]]

!! コメント

{{comment}}


!! 反応リンク集

//{{trackback}}

* trackback : [[第23回 Ruby/Rails勉強会@関西に関するメモ (ころころ毬藻転がし(RC))|http://marimofire.blog6.fc2.com/blog-entry-16.html]] (2008-02-20 (Wed) 02:56:11)
""
""Ruby/Rails勉強会@関西(京都女子大)ってところにお邪魔していました.
""第23回 Ruby/Rails勉強会@関西
""
""モナドとかリフレクションの話はコアすぎの..

* [[ RubyKansai23 - Ruby/Rails勉強会@関西に行ってきた - 風産み日記|http://d.hatena.ne.jp/dowhile/20080216/p1]]
* [[Ruby関西勉強会#23参加 - らいとなひび|http://d.hatena.ne.jp/raito3/20080216/1203189688]]
* [[ruby勉強会の演習問題を解いてみた - いつの間にか27歳日記|http://d.hatena.ne.jp/rochefort/20080217/p1]]
* [[ Ruby/Rails勉強会@関西 - チナミニ|http://d.hatena.ne.jp/Sixeight/20080217/1203224024]]
* [[第23回 Ruby/Rails勉強会@関西に参加 - ekurodaの日記|http://d.hatena.ne.jp/e-kuroda/20080217#1203258670]]
* [[rubyneko - 第23回 Ruby/Rails勉強会@関西 参加してきました。|http://ujihisa.nowa.jp/entry/65e83b2908]]
* [[wwwaku  Blog Archive  Ruby関西勉強会#23課題1中身だけワンライナー|http://wwwaku.com/blog_part2/2008/02/17/]]
* [[ブログなんだよもん - Ruby勉強会行ってきたよ!|http://pascal.orz.cn/muse/pascal/80217132658.html]]
* [[第23回 Ruby/Rails勉強会@関西に参加してきた (Kanasansoft Web Lab.)|http://www.kanasansoft.com/weblab/2008/02/23_rubyrails.html]]
* [[Energie|http://www.eigentumswohnung-inserieren-verkaufen-privat.de/Strom-Eine-Alternative-Energie-die-heute-jeder-braucht]]
* trackback : [[[プログラム]第23回 Ruby/Rails勉強会@関西 (巻き込まれ人生)|http://d.hatena.ne.jp/Mazin/20080216#1203245244]] (2008-02-17 (Sun) 19:47:20)
"" 第23回 Ruby/Rails勉強会@関西に行ってきました。 というか、参加の最中にログがてらにはてなに書いてた。 今回は濃い内容が多くて少ししかわからないものもあったが面白かった。 ログの内容はその場で書いてたからよくわからないことになってると思うけどまあいいか。