ruby勉強会@札幌 "rubyist入門講座"

169
Ruby勉強会@札幌 Rubyist入門講座 日本Rubyの会 島田浩二 [email protected] OSC 2007 Hokkaido 2007-06-30()

Upload: koji-shimada

Post on 19-May-2015

8.564 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby勉強会@札幌

Rubyist入門講座日本Rubyの会島田浩二

[email protected]

OSC 2007 Hokkaido2007-06-30(土)

Page 2: Ruby勉強会@札幌 "Rubyist入門講座"

ポジションペーパー“立場表明書”

Page 3: Ruby勉強会@札幌 "Rubyist入門講座"

I LOVE RUBY

私はRubyが大好きだ

24

引用:Dave Thomas “The Island Of Ruby”

Page 4: Ruby勉強会@札幌 "Rubyist入門講座"

本日お伝えしたいことtheme of this seminar

Page 5: Ruby勉強会@札幌 "Rubyist入門講座"

http://www.ruby-lang.org/ja/

Page 6: Ruby勉強会@札幌 "Rubyist入門講座"

http://www.ruby-lang.org/ja/

Page 7: Ruby勉強会@札幌 "Rubyist入門講座"

http://www.ruby-lang.org/ja/

Page 8: Ruby勉強会@札幌 "Rubyist入門講座"

ここ

Page 9: Ruby勉強会@札幌 "Rubyist入門講座"

本日大変緊張しておりますので

Page 10: Ruby勉強会@札幌 "Rubyist入門講座"

どうぞお手柔らかにお願いします

Page 11: Ruby勉強会@札幌 "Rubyist入門講座"

Agenda✓ 自己紹介✓ Ruby Hot Topics✓ Rubyist 入門講座✓ 日本Rubyの会について✓ Ruby札幌について

Page 12: Ruby勉強会@札幌 "Rubyist入門講座"

自己紹介Self-Introduction

Page 13: Ruby勉強会@札幌 "Rubyist入門講座"

自己紹介•島田 浩二(しまだ こうじ)•フリーのソフトウェア技術者•お仕事は組み込みメイン

•使ってる言語はCだったり•日本Rubyの会• Ruby札幌•るびま、るりま等

• http://iddy.jp/profile/snoozer05/

Page 14: Ruby勉強会@札幌 "Rubyist入門講座"

さいきんのRubyRuby Hot Topics

Page 15: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby Hot Topics✓ RubyKaigi2007 - Key is Love

✓ YARV - “Not” Yet Another Ruby VM

✓ Rails - Ruby’s Killer App

✓ JRuby - From Java to Ruby

✓ RSpec - Behavior Driven Develop

Page 16: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby Hot Topics✓ RubyKaigi2007 - Key is Love

✓ YARV - “Not” Yet Another Ruby VM

✓ Rails - Ruby’s Killer App

✓ JRuby - From Java to Ruby

✓ RSpec - Behavior Driven Develop

Page 17: Ruby勉強会@札幌 "Rubyist入門講座"
Page 18: Ruby勉強会@札幌 "Rubyist入門講座"
Page 19: Ruby勉強会@札幌 "Rubyist入門講座"

http://jp.rubyist.net/RubyKaigi2007/

Page 20: Ruby勉強会@札幌 "Rubyist入門講座"

次回の勉強会でやる

Page 21: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby Hot Topics✓ RubyKaigi2007 - Key is Love

✓ YARV - “Not” Yet Another Ruby VM

✓ Rails - Ruby’s Killer App

✓ JRuby - From Java to Ruby

✓ RSpec - Behavior Driven Develop

Page 22: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby Hot Topics✓ RubyKaigi2007 - Key is Love

✓ YARV - “Not” Yet Another Ruby VM

✓ Rails - Ruby’s Killer App

✓ JRuby - From Java to Ruby

✓ RSpec - Behavior Driven Develop

Page 23: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby Hot Topics✓ RubyKaigi2007 - Key is Love

✓ YARV - “Not” Yet Another Ruby VM

✓ Rails - Ruby’s Killer App

✓ JRuby - From Java to Ruby

✓ RSpec - Behavior Driven Develop

Page 24: Ruby勉強会@札幌 "Rubyist入門講座"

RubyOnRailsの面白い話題は

masuidriveさんのセッションで

Page 25: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby Hot Topics✓ RubyKaigi2007 - Key is Love

✓ YARV - “Not” Yet Another Ruby VM

✓ Rails - Ruby’s Killer App

✓ JRuby - From Java to Ruby

✓ RSpec - Behavior Driven Develop

Page 26: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby Hot Topics✓ RubyKaigi2007 - Key is Love

✓ YARV - “Not” Yet Another Ruby VM

✓ Rails - Ruby’s Killer App

✓ JRuby - From Java to Ruby

✓ RSpec - Behavior Driven Develop

Page 27: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby Hot Topics✓ RubyKaigi2007 - Key is Love

✓ YARV - “Not” Yet Another Ruby VM

✓ Rails - Ruby’s Killer App

✓ JRuby - From Java to Ruby

✓ RSpec - Behavior Driven Develop

Page 28: Ruby勉強会@札幌 "Rubyist入門講座"

Rubyist入門講座Rubyist Guide

Page 29: Ruby勉強会@札幌 "Rubyist入門講座"

Lesson (1)Rubyの価値

Values of Ruby

Page 30: Ruby勉強会@札幌 "Rubyist入門講座"

Values Of Ruby✓ Be nice to developers✓ Be clear and readable✓ Be flexible and agile✓ Be open

Page 31: Ruby勉強会@札幌 "Rubyist入門講座"

Values Of Ruby✓ Be nice to developers✓ Be clear and readable✓ Be flexible and agile✓ Be open

Page 32: Ruby勉強会@札幌 "Rubyist入門講座"

開発者に優しいNice to developers

Page 33: Ruby勉強会@札幌 "Rubyist入門講座"

開発者にやさしい✓ 開発しやすい環境を提供• irb, RubyGems, Test::Unit

✓ 手になじんだ環境で開発を• emacs, vim, eclipse, visual studio

✓ 困ったときには• メーリングリスト

Page 34: Ruby勉強会@札幌 "Rubyist入門講座"

開発者にやさしい✓ 開発しやすい環境を提供• irb, RubyGems, Test::Unit

✓ 手になじんだ環境で開発を• emacs, vim, eclipse, visual studio

✓ 困ったときには• メーリングリスト

Page 35: Ruby勉強会@札幌 "Rubyist入門講座"

開発者にやさしい✓ 開発しやすい環境を提供• irb, RubyGems, Test::Unit

✓ 手になじんだ環境で開発を• emacs, vim, eclipse, visual studio

✓ 困ったときには• メーリングリスト

Page 36: Ruby勉強会@札幌 "Rubyist入門講座"

開発者にやさしい✓ 開発しやすい環境を提供• irb, RubyGems, Test::Unit

✓ 手になじんだ環境で開発を• emacs, vim, eclipse, visual studio

✓ 困ったときには• メーリングリスト

Page 37: Ruby勉強会@札幌 "Rubyist入門講座"

メーリングリスト

Page 38: Ruby勉強会@札幌 "Rubyist入門講座"

メーリングリスト

Page 39: Ruby勉強会@札幌 "Rubyist入門講座"

メーリングリスト

Page 40: Ruby勉強会@札幌 "Rubyist入門講座"

つくった人が日本語で答えてくれる :-)

Page 41: Ruby勉強会@札幌 "Rubyist入門講座"

開発者にやさしい✓ 開発しやすい環境を提供• irb, RubyGems, Test::Unit

✓ 手になじんだ環境で開発を• emacs, vim, eclipse, visual studio

✓ 困ったときには• メーリングリスト

Page 42: Ruby勉強会@札幌 "Rubyist入門講座"

開発者に優しいNice to developers

Page 43: Ruby勉強会@札幌 "Rubyist入門講座"

Values Of Ruby✓ Be nice to developers✓ Be clear and readable✓ Be flexible and agile✓ Be open

Page 44: Ruby勉強会@札幌 "Rubyist入門講座"

Values Of Ruby✓ Be nice to developers✓ Be clear and readable✓ Be flexible and agile✓ Be open

Page 45: Ruby勉強会@札幌 "Rubyist入門講座"

簡潔であることClear and readable

Page 46: Ruby勉強会@札幌 "Rubyist入門講座"
Page 47: Ruby勉強会@札幌 "Rubyist入門講座"

ポール・グラハム

Page 48: Ruby勉強会@札幌 "Rubyist入門講座"

良いデザイン

Page 49: Ruby勉強会@札幌 "Rubyist入門講座"

Say what you mean and say it briefly

- Paul Graham言いたいことは簡潔に言え。

- ポール・グラハム『ハッカーと画家』

Page 50: Ruby勉強会@札幌 "Rubyist入門講座"

ためしに言ってみる

Page 51: Ruby勉強会@札幌 "Rubyist入門講座"

言いたいこと

Page 52: Ruby勉強会@札幌 "Rubyist入門講座"

文字列クラスのメソッド一覧のうち末尾が”f”で終わるものをアスキー順にソートして改行で区切って出力したい

Page 53: Ruby勉強会@札幌 "Rubyist入門講座"

Javaで言ってみる

Page 54: Ruby勉強会@札幌 "Rubyist入門講座"

import java.lang.reflect.Method;import java.util.regex.*;

public class sample { public static void main(String arg[]) { try { Method[] methods = “”.getClass().getMethods(); Array.sort(methods); Pattern pat = Pattern.compile(“.*f$”); for(Method m : methods){ Matcher mat = pat matcher(m.getName()); if (mat.matches()) { System.out.println(m.getName()); } } } catch(Exception e) { System.out.println(e); } }}

Page 55: Ruby勉強会@札幌 "Rubyist入門講座"

import java.lang.reflect.Method;import java.util.regex.*;

public class sample { public static void main(String arg[]) { try { Method[] methods = “”.getClass().getMethods(); Array.sort(methods); Pattern pat = Pattern.compile(“.*f$”); for(Method m : methods){ Matcher mat = pat matcher(m.getName()); if (mat.matches()) { System.out.println(m.getName()); } } } catch(Exception e) { System.out.println(e); } }}

文字列クラスの

Page 56: Ruby勉強会@札幌 "Rubyist入門講座"

import java.lang.reflect.Method;import java.util.regex.*;

public class sample { public static void main(String arg[]) { try { Method[] methods = “”.getClass().getMethods(); Array.sort(methods); Pattern pat = Pattern.compile(“.*f$”); for(Method m : methods){ Matcher mat = pat matcher(m.getName()); if (mat.matches()) { System.out.println(m.getName()); } } } catch(Exception e) { System.out.println(e); } }}

文字列クラスの

Page 57: Ruby勉強会@札幌 "Rubyist入門講座"

import java.lang.reflect.Method;import java.util.regex.*;

public class sample { public static void main(String arg[]) { try { Method[] methods = “”.getClass().getMethods(); Array.sort(methods); Pattern pat = Pattern.compile(“.*f$”); for(Method m : methods){ Matcher mat = pat matcher(m.getName()); if (mat.matches()) { System.out.println(m.getName()); } } } catch(Exception e) { System.out.println(e); } }}

メソッド一覧の

Page 58: Ruby勉強会@札幌 "Rubyist入門講座"

import java.lang.reflect.Method;import java.util.regex.*;

public class sample { public static void main(String arg[]) { try { Method[] methods = “”.getClass().getMethods(); Array.sort(methods); Pattern pat = Pattern.compile(“.*f$”); for(Method m : methods){ Matcher mat = pat matcher(m.getName()); if (mat.matches()) { System.out.println(m.getName()); } } } catch(Exception e) { System.out.println(e); } }}

メソッド一覧の

Page 59: Ruby勉強会@札幌 "Rubyist入門講座"

import java.lang.reflect.Method;import java.util.regex.*;

public class sample { public static void main(String arg[]) { try { Method[] methods = “”.getClass().getMethods(); Array.sort(methods); Pattern pat = Pattern.compile(“.*f$”); for(Method m : methods){ Matcher mat = pat matcher(m.getName()); if (mat.matches()) { System.out.println(m.getName()); } } } catch(Exception e) { System.out.println(e); } }}

末尾が”f”で終わるものを

Page 60: Ruby勉強会@札幌 "Rubyist入門講座"

import java.lang.reflect.Method;import java.util.regex.*;

public class sample { public static void main(String arg[]) { try { Method[] methods = “”.getClass().getMethods(); Array.sort(methods); Pattern pat = Pattern.compile(“.*f$”); for(Method m : methods){ Matcher mat = pat matcher(m.getName()); if (mat.matches()) { System.out.println(m.getName()); } } } catch(Exception e) { System.out.println(e); } }}

末尾が”f”で終わるものを

Page 61: Ruby勉強会@札幌 "Rubyist入門講座"

import java.lang.reflect.Method;import java.util.regex.*;

public class sample { public static void main(String arg[]) { try { Method[] methods = “”.getClass().getMethods(); Array.sort(methods); Pattern pat = Pattern.compile(“.*f$”); for(Method m : methods){ Matcher mat = pat matcher(m.getName()); if (mat.matches()) { System.out.println(m.getName()); } } } catch(Exception e) { System.out.println(e); } }}

アスキー順にソートして

Page 62: Ruby勉強会@札幌 "Rubyist入門講座"

import java.lang.reflect.Method;import java.util.regex.*;

public class sample { public static void main(String arg[]) { try { Method[] methods = “”.getClass().getMethods(); Array.sort(methods); Pattern pat = Pattern.compile(“.*f$”); for(Method m : methods){ Matcher mat = pat matcher(m.getName()); if (mat.matches()) { System.out.println(m.getName()); } } } catch(Exception e) { System.out.println(e); } }}

アスキー順にソートして

Page 63: Ruby勉強会@札幌 "Rubyist入門講座"

import java.lang.reflect.Method;import java.util.regex.*;

public class sample { public static void main(String arg[]) { try { Method[] methods = “”.getClass().getMethods(); Array.sort(methods); Pattern pat = Pattern.compile(“.*f$”); for(Method m : methods){ Matcher mat = pat matcher(m.getName()); if (mat.matches()) { System.out.println(m.getName()); } } } catch(Exception e) { System.out.println(e); } }}

改行で区切って出力したい

Page 64: Ruby勉強会@札幌 "Rubyist入門講座"

import java.lang.reflect.Method;import java.util.regex.*;

public class sample { public static void main(String arg[]) { try { Method[] methods = “”.getClass().getMethods(); Array.sort(methods); Pattern pat = Pattern.compile(“.*f$”); for(Method m : methods){ Matcher mat = pat matcher(m.getName()); if (mat.matches()) { System.out.println(m.getName()); } } } catch(Exception e) { System.out.println(e); } }}

改行で区切って出力したい

Page 65: Ruby勉強会@札幌 "Rubyist入門講座"

import java.lang.reflect.Method;import java.util.regex.*;

public class sample { public static void main(String arg[]) { try { Method[] methods = “”.getClass().getMethods(); Array.sort(methods); Pattern pat = Pattern.compile(“.*f$”); for(Method m : methods){ Matcher mat = pat matcher(m.getName()); if (mat.matches()) { System.out.println(m.getName()); } } } catch(Exception e) { System.out.println(e); } }}

Page 66: Ruby勉強会@札幌 "Rubyist入門講座"

Rubyで言ってみる

Page 67: Ruby勉強会@札幌 "Rubyist入門講座"
Page 68: Ruby勉強会@札幌 "Rubyist入門講座"

文字列クラスの

Page 69: Ruby勉強会@札幌 "Rubyist入門講座"

文字列クラスの“”.

Page 70: Ruby勉強会@札幌 "Rubyist入門講座"

メソッド一覧の“”.

Page 71: Ruby勉強会@札幌 "Rubyist入門講座"

“”.methods.

メソッド一覧の

Page 72: Ruby勉強会@札幌 "Rubyist入門講座"

末尾が”f”で終わるものを“”.

methods.

Page 73: Ruby勉強会@札幌 "Rubyist入門講座"

末尾が”f”で終わるものを“”.

methods.grep(/f$/).

Page 74: Ruby勉強会@札幌 "Rubyist入門講座"

アスキー順にソートして“”.

methods.grep(/f$/).

Page 75: Ruby勉強会@札幌 "Rubyist入門講座"

アスキー順にソートして“”.

methods.grep(/f$/).sort.

Page 76: Ruby勉強会@札幌 "Rubyist入門講座"

改行で区切って“”.methods.grep(/f$/).sort.

Page 77: Ruby勉強会@札幌 "Rubyist入門講座"

“”.methods.grep(/f$/).sort.join(“¥n”).

改行で区切って

Page 78: Ruby勉強会@札幌 "Rubyist入門講座"

“”.methods.grep(/f$/).sort.join(“¥n”).

出力したい

Page 79: Ruby勉強会@札幌 "Rubyist入門講座"

“”.methods.grep(/f$/).sort.join(“¥n”).display

出力したい

Page 80: Ruby勉強会@札幌 "Rubyist入門講座"

“”.methods.grep(/f$/).sort.join(“¥n”).display

Page 81: Ruby勉強会@札幌 "Rubyist入門講座"

“”.methods.grep(/f$/).sort.join(“¥n”).display

Page 82: Ruby勉強会@札幌 "Rubyist入門講座"

確認

Page 83: Ruby勉強会@札幌 "Rubyist入門講座"

Javaで言うと

Page 84: Ruby勉強会@札幌 "Rubyist入門講座"

import java.lang.reflect.Method;import java.util.regex.*;

public class sample { public static void main(String arg[]) { try { Method[] methods = “”.getClass().getMethods(); Array.sort(methods); Pattern pat = Pattern.compile(“.*f$”); for(Method m : methods){ Matcher mat = pat matcher(m.getName()); if (mat.matches()) { System.out.println(m.getName()); } } } catch(Exception e) { System.out.println(e); } }}

Page 85: Ruby勉強会@札幌 "Rubyist入門講座"

Rubyだと

Page 86: Ruby勉強会@札幌 "Rubyist入門講座"

“”.methods.grep(/f$/).sort.join(“¥n”).display

Page 87: Ruby勉強会@札幌 "Rubyist入門講座"

Say what you mean and say it briefly

- Paul Graham言いたいことは簡潔に言え。

- ポール・グラハム『ハッカーと画家』

Page 88: Ruby勉強会@札幌 "Rubyist入門講座"

ポイント

Page 89: Ruby勉強会@札幌 "Rubyist入門講座"

目にやさしい

Page 90: Ruby勉強会@札幌 "Rubyist入門講座"

読みやすさ

Page 91: Ruby勉強会@札幌 "Rubyist入門講座"

無駄がない

Page 92: Ruby勉強会@札幌 "Rubyist入門講座"

本質を捉えている

Page 93: Ruby勉強会@札幌 "Rubyist入門講座"

簡潔であること✓ 処理の本質だけを捉える✓ 読みやすさ

Page 94: Ruby勉強会@札幌 "Rubyist入門講座"

簡潔であること✓ 処理の本質だけを捉える✓ 読みやすさ

開発が楽しくなる

Page 95: Ruby勉強会@札幌 "Rubyist入門講座"

簡潔であること✓ 処理の本質だけを捉える✓ 読みやすさ

開発が楽しくなる開発効率も段違い

Page 96: Ruby勉強会@札幌 "Rubyist入門講座"

簡潔であることClear and readable

Page 97: Ruby勉強会@札幌 "Rubyist入門講座"

Values Of Ruby✓ Be nice to developers✓ Be clear and readable✓ Be flexible and agile✓ Be open

Page 98: Ruby勉強会@札幌 "Rubyist入門講座"

Values Of Ruby✓ Be nice to developers✓ Be clear and readable✓ Be flexible and agile✓ Be open

Page 99: Ruby勉強会@札幌 "Rubyist入門講座"

柔軟であることFlexible and agile

Page 100: Ruby勉強会@札幌 "Rubyist入門講座"

Part1

Page 101: Ruby勉強会@札幌 "Rubyist入門講座"

Expressiveness

Page 102: Ruby勉強会@札幌 "Rubyist入門講座"

表現力

Page 103: Ruby勉強会@札幌 "Rubyist入門講座"

This works! Such finding make me happy.

- Dave Thomasこれも動くんだ!こんな発見が僕をハッピーにしてくれる。

- 達人プログラマ

Page 104: Ruby勉強会@札幌 "Rubyist入門講座"

デモ

Page 105: Ruby勉強会@札幌 "Rubyist入門講座"

表現力

Page 106: Ruby勉強会@札幌 "Rubyist入門講座"

いろいろな表現が可能

Page 107: Ruby勉強会@札幌 "Rubyist入門講座"

複数のプログラミングパラダイムを許容

Page 108: Ruby勉強会@札幌 "Rubyist入門講座"

✓ オブジェクト指向✓ 手続き型✓ 関数型✓ 単なるスクリプト✓ etc

Page 109: Ruby勉強会@札幌 "Rubyist入門講座"

マルチパラダイム

Page 110: Ruby勉強会@札幌 "Rubyist入門講座"

マルチパラダイム✓ 問題解決にあたって最良のパラダイムを✓ プログラマは表現者➡ 表現に自由を!✓ 新しいパラダイムへの入り口として

Page 111: Ruby勉強会@札幌 "Rubyist入門講座"

✓ 問題解決にあたって最良のパラダイムを✓ プログラマは表現者➡ 表現に自由を!✓ 新しいパラダイムへの入り口として

表現力

Page 112: Ruby勉強会@札幌 "Rubyist入門講座"

柔軟であることBe flexible and agile

Page 113: Ruby勉強会@札幌 "Rubyist入門講座"

Part2

Page 114: Ruby勉強会@札幌 "Rubyist入門講座"

Dynamic

Page 115: Ruby勉強会@札幌 "Rubyist入門講座"

動的

Page 116: Ruby勉強会@札幌 "Rubyist入門講座"

動的✓ インタプリタ✓ 動的型✓ オープンクラス

Page 117: Ruby勉強会@札幌 "Rubyist入門講座"

インタプリタ

Page 118: Ruby勉強会@札幌 "Rubyist入門講座"

インタプリタ✓コンパイル不要

• 実行までにかかる時間が短い✓ぎりぎりまで自分自身を書き換えることが可能• 実行中にプログラムを変更➡ アジャイル開発に最適

Page 119: Ruby勉強会@札幌 "Rubyist入門講座"

インタプリタ

Page 120: Ruby勉強会@札幌 "Rubyist入門講座"

動的型

Page 121: Ruby勉強会@札幌 "Rubyist入門講座"

動的型✓ 型宣言不要

• コードをシンプルに保つことが可能➡変更に強く!本質に注力!

✓ 振る舞いにより型を判断• 大事なのはそのオブジェクトが何を出来る(どのような振る舞いを持つ)のか ➡Duck Typing!

Page 122: Ruby勉強会@札幌 "Rubyist入門講座"

動的型

Page 123: Ruby勉強会@札幌 "Rubyist入門講座"

オープンクラス

Page 124: Ruby勉強会@札幌 "Rubyist入門講座"

あらゆるクラスを改変可能

Page 125: Ruby勉強会@札幌 "Rubyist入門講座"

デモ

Page 126: Ruby勉強会@札幌 "Rubyist入門講座"

オープンクラス✓ あらゆるクラスを改変することが可能• Rubyはオープンな言語➡プログラマを信頼!

Page 127: Ruby勉強会@札幌 "Rubyist入門講座"

オープンクラス

Page 128: Ruby勉強会@札幌 "Rubyist入門講座"

動的✓ インタプリタ✓ 動的型✓ オープンクラス

Page 129: Ruby勉強会@札幌 "Rubyist入門講座"

✓ アジャイルな開発を低コストで実現✓ 変更に強く! 本質に注力!✓ すべてはプログラマ次第➡Rubyは信頼してくれている

動的

Page 130: Ruby勉強会@札幌 "Rubyist入門講座"

柔軟であることFlexible and agile

Page 131: Ruby勉強会@札幌 "Rubyist入門講座"

✓ 問題解決にあたって最良のパラダイムを✓ プログラマは表現者➡ 表現に自由を!✓ 新しいパラダイムへの入り口として

表現力

Page 132: Ruby勉強会@札幌 "Rubyist入門講座"

✓ アジャイルな開発を低コストで実現✓ 変更に強く! 本質に注力!✓ 決めるのはプログラマ➡Rubyが信頼してくれている

動的

Page 133: Ruby勉強会@札幌 "Rubyist入門講座"

柔軟であることFlexible and agile

Page 134: Ruby勉強会@札幌 "Rubyist入門講座"

Values Of Ruby✓ Be nice to developers✓ Be clear and readable✓ Be flexible and agile✓ Be open

Page 135: Ruby勉強会@札幌 "Rubyist入門講座"

Values Of Ruby✓ Be nice to developers✓ Be clear and readable✓ Be flexible and agile✓ Be open

Page 136: Ruby勉強会@札幌 "Rubyist入門講座"

開かれていることOpen

Page 137: Ruby勉強会@札幌 "Rubyist入門講座"

開かれていること✓ オープンソース

• 誰でもRubyを好きなように利用できる

✓ 意思決定のプロセス• 誰でも意思決定のプロセスに参加できる✓ コミュニティ

• 大切なのはコミュニティ、そして人

Page 138: Ruby勉強会@札幌 "Rubyist入門講座"

開かれていること✓ オープンソース

• 誰でもRubyを好きなように利用できる

✓ 意思決定のプロセス• 誰でも意思決定のプロセスに参加できる✓ コミュニティ

• 大切なのはコミュニティ、そして人

Page 139: Ruby勉強会@札幌 "Rubyist入門講座"

開かれていること✓ オープンソース

• 誰でもRubyを好きなように利用できる

✓ 意思決定のプロセス• 誰でも意思決定のプロセスに参加できる✓ コミュニティ

• 大切なのはコミュニティ、そして人

Page 140: Ruby勉強会@札幌 "Rubyist入門講座"

開かれていること✓ オープンソース

• 誰でもRubyを好きなように利用できる

✓ 意思決定のプロセス• 誰でも意思決定のプロセスに参加できる✓ コミュニティ

• 大切なのはコミュニティ、そして人

Page 141: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby = コミュニティ、人

Page 142: Ruby勉強会@札幌 "Rubyist入門講座"

開かれていること✓ オープンソース

• 誰でもRubyを好きなように利用できる

✓ 意思決定のプロセス• 誰でも意思決定のプロセスに参加できる✓ コミュニティ

• 大切なのはコミュニティ、そして人

Page 143: Ruby勉強会@札幌 "Rubyist入門講座"

開かれていること✓ オープンソース

• 誰でもRubyを好きなように利用できる

✓ 意思決定のプロセス• 誰でも意思決定のプロセスに参加できる✓ コミュニティ

• 大切なのはコミュニティ、そして人

Page 144: Ruby勉強会@札幌 "Rubyist入門講座"

開かれていることOpen

Page 145: Ruby勉強会@札幌 "Rubyist入門講座"

Values Of Ruby✓ Be nice to developers✓ Be clear and readable✓ Be flexible and agile✓ Be open

Page 146: Ruby勉強会@札幌 "Rubyist入門講座"

Values Of Ruby✓ Be nice to developers✓ Be clear and readable✓ Be flexible and agile✓ Be open

Page 147: Ruby勉強会@札幌 "Rubyist入門講座"

Lesson (1)Rubyの価値

Values of Ruby

Page 148: Ruby勉強会@札幌 "Rubyist入門講座"

Lesson (2)

Page 149: Ruby勉強会@札幌 "Rubyist入門講座"

Lesson (2)続きは勉強会で

To be continued

Page 150: Ruby勉強会@札幌 "Rubyist入門講座"

ご案内

Page 151: Ruby勉強会@札幌 "Rubyist入門講座"

日本Rubyの会

Page 152: Ruby勉強会@札幌 "Rubyist入門講座"

日本Rubyの会

✓開発者の支援✓利用者の支援

Page 153: Ruby勉強会@札幌 "Rubyist入門講座"

http://jp.rubyist.net/magazine/

Page 154: Ruby勉強会@札幌 "Rubyist入門講座"

http://doc/loveruby.net/wiki/

Page 155: Ruby勉強会@札幌 "Rubyist入門講座"

メーリングリスト

Page 156: Ruby勉強会@札幌 "Rubyist入門講座"

http://jp.rubyist.net/

Page 157: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby札幌

Page 158: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby札幌

✓Ruby勉強会@札幌

✓Ruby Sapporo Night

Page 159: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby勉強会@札幌

Page 160: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby勉強会@札幌✓1.5ヶ月に一回くらい✓平均すると20人くらい✓Ruby初心者歓迎✓手伝ってくれる方歓迎

Page 161: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby勉強会@札幌✓ピッケル本読み合わせ✓るびま読み合わせ✓他言語探訪✓Rails導入事例など

Page 162: Ruby勉強会@札幌 "Rubyist入門講座"

✓次回は 7月21日(土)✓RubyKaigi2007報告会✓http://jp.rubyist.net/

Ruby勉強会@札幌

Page 163: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby Sapporo Night

Page 164: Ruby勉強会@札幌 "Rubyist入門講座"

RubySapporoNight

✓7月から開始✓デモ中心??✓アップルストアでw✓初回は7月25日(水)

Page 165: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby札幌

✓Ruby勉強会@札幌

✓Ruby Sapporo Night

Page 166: Ruby勉強会@札幌 "Rubyist入門講座"

Ruby札幌

詳しくは日本Rubyの会をご参照ください

Page 167: Ruby勉強会@札幌 "Rubyist入門講座"

以上

Page 168: Ruby勉強会@札幌 "Rubyist入門講座"

謝辞:• 前田さん、設楽さん• 千葉さん、菅野さん• いつも勉強会にご参加くださっているみなさん

• OSC-Do運営スタッフのみなさん• 日本Rubyの会のみなさん• Ruby開発チームのみなさん• and Special Thanks to Dave Thomas

Page 169: Ruby勉強会@札幌 "Rubyist入門講座"

ご清聴ありがとうございました