Ruby勉強会@札幌
Rubyist入門講座
日本Rubyの会
島田浩二
snoozer.05@gmail.com
OSC 2007 Hokkaido
2007-06-30(土)
ポジションペーパー
“立場表明書”
I LOVE RUBY
私はRubyが大好きだ
24
引用:Dave Thomas “The Island Of Ruby”
本日お伝えしたいこと
theme of this seminar
http://www.ruby-lang.org/ja/
http://www.ruby-lang.org/ja/
http://www.ruby-lang.org/ja/
ここ
本日
大変緊張して
おりますので
どうぞ
お手柔らかに
お願いします
Agenda
✓ 自己紹介
✓ Ruby Hot Topics
✓ Rubyist 入門講座
✓ 日本Rubyの会について
✓ Ruby札幌について
自己紹介
Self-Introduction
自己紹介
•島田 浩二(しまだ こうじ)
•フリーのソフトウェア技術者
•お仕事は組み込みメイン
•使ってる言語はCだったり
•日本Rubyの会
•Ruby札幌
•るびま、るりま等
•http://iddy.jp/profile/snoozer0...
さいきんのRuby
Ruby Hot Topics
Ruby Hot Topics
✓ RubyKaigi2007 - Key is Love
✓ YARV - “Not” Yet Another Ruby VM
✓ Rails - Ruby’s Killer App
✓ JRuby - Fro...
Ruby Hot Topics
✓ RubyKaigi2007 - Key is Love
✓ YARV - “Not” Yet Another Ruby VM
✓ Rails - Ruby’s Killer App
✓ JRuby - Fro...
http://jp.rubyist.net/RubyKaigi2007/
次回の
勉強会でやる
Ruby Hot Topics
✓ RubyKaigi2007 - Key is Love
✓ YARV - “Not” Yet Another Ruby VM
✓ Rails - Ruby’s Killer App
✓ JRuby - Fro...
Ruby Hot Topics
✓ RubyKaigi2007 - Key is Love
✓ YARV - “Not” Yet Another Ruby VM
✓ Rails - Ruby’s Killer App
✓ JRuby - Fro...
Ruby Hot Topics
✓ RubyKaigi2007 - Key is Love
✓ YARV - “Not” Yet Another Ruby VM
✓ Rails - Ruby’s Killer App
✓ JRuby - Fro...
RubyOnRailsの
面白い話題は
masuidriveさん
のセッションで
Ruby Hot Topics
✓ RubyKaigi2007 - Key is Love
✓ YARV - “Not” Yet Another Ruby VM
✓ Rails - Ruby’s Killer App
✓ JRuby - Fro...
Ruby Hot Topics
✓ RubyKaigi2007 - Key is Love
✓ YARV - “Not” Yet Another Ruby VM
✓ Rails - Ruby’s Killer App
✓ JRuby - Fro...
Ruby Hot Topics
✓ RubyKaigi2007 - Key is Love
✓ YARV - “Not” Yet Another Ruby VM
✓ Rails - Ruby’s Killer App
✓ JRuby - Fro...
Rubyist入門講座
Rubyist Guide
Lesson (1)
Rubyの価値
Values of Ruby
Values Of Ruby
✓ Be nice to developers
✓ Be clear and readable
✓ Be flexible and agile
✓ Be open
Values Of Ruby
✓ Be nice to developers
✓ Be clear and readable
✓ Be flexible and agile
✓ Be open
開発者に優しい
Nice to developers
開発者にやさしい
✓ 開発しやすい環境を提供
• irb, RubyGems, Test::Unit
✓ 手になじんだ環境で開発を
• emacs, vim, eclipse, visual studio
✓ 困ったときには
• メーリングリスト
開発者にやさしい
✓ 開発しやすい環境を提供
• irb, RubyGems, Test::Unit
✓ 手になじんだ環境で開発を
• emacs, vim, eclipse, visual studio
✓ 困ったときには
• メーリングリスト
開発者にやさしい
✓ 開発しやすい環境を提供
• irb, RubyGems, Test::Unit
✓ 手になじんだ環境で開発を
• emacs, vim, eclipse, visual studio
✓ 困ったときには
• メーリングリスト
開発者にやさしい
✓ 開発しやすい環境を提供
• irb, RubyGems, Test::Unit
✓ 手になじんだ環境で開発を
• emacs, vim, eclipse, visual studio
✓ 困ったときには
• メーリングリスト
メーリングリスト
メーリングリスト
メーリングリスト
つくった人が日本語で
答えてくれる :-)
開発者にやさしい
✓ 開発しやすい環境を提供
• irb, RubyGems, Test::Unit
✓ 手になじんだ環境で開発を
• emacs, vim, eclipse, visual studio
✓ 困ったときには
• メーリングリスト
開発者に優しい
Nice to developers
Values Of Ruby
✓ Be nice to developers
✓ Be clear and readable
✓ Be flexible and agile
✓ Be open
Values Of Ruby
✓ Be nice to developers
✓ Be clear and readable
✓ Be flexible and agile
✓ Be open
簡潔であること
Clear and readable
ポール・グラハム
良いデザイン
Say what you mean
and say it briefly
- Paul Graham
言いたいことは簡潔に言え。
- ポール・グラハム『ハッカーと画家』
ためしに言ってみる
言いたいこと
文字列クラスの
メソッド一覧のうち
末尾が”f”で終わるものを
アスキー順にソートして
改行で区切って
出力したい
Javaで言ってみる
import java.lang.reflect.Method;
import java.util.regex.*;
public class sample {
public static void main(String arg[]) {
tr...
import java.lang.reflect.Method;
import java.util.regex.*;
public class sample {
public static void main(String arg[]) {
tr...
import java.lang.reflect.Method;
import java.util.regex.*;
public class sample {
public static void main(String arg[]) {
tr...
import java.lang.reflect.Method;
import java.util.regex.*;
public class sample {
public static void main(String arg[]) {
tr...
import java.lang.reflect.Method;
import java.util.regex.*;
public class sample {
public static void main(String arg[]) {
tr...
import java.lang.reflect.Method;
import java.util.regex.*;
public class sample {
public static void main(String arg[]) {
tr...
import java.lang.reflect.Method;
import java.util.regex.*;
public class sample {
public static void main(String arg[]) {
tr...
import java.lang.reflect.Method;
import java.util.regex.*;
public class sample {
public static void main(String arg[]) {
tr...
import java.lang.reflect.Method;
import java.util.regex.*;
public class sample {
public static void main(String arg[]) {
tr...
import java.lang.reflect.Method;
import java.util.regex.*;
public class sample {
public static void main(String arg[]) {
tr...
import java.lang.reflect.Method;
import java.util.regex.*;
public class sample {
public static void main(String arg[]) {
tr...
import java.lang.reflect.Method;
import java.util.regex.*;
public class sample {
public static void main(String arg[]) {
tr...
Rubyで言ってみる
文字列クラスの
文字列クラスの
“”.
メソッド一覧の
“”.
“”.
methods.
メソッド一覧の
末尾が”f”で
終わるものを“”.
methods.
末尾が”f”で
終わるものを“”.
methods.
grep(/f$/).
アスキー順に
ソートして“”.
methods.
grep(/f$/).
アスキー順に
ソートして“”.
methods.
grep(/f$/).
sort.
改行で区切って
“”.
methods.
grep(/f$/).
sort.
“”.
methods.
grep(/f$/).
sort.
join(“¥n”).
改行で区切って
“”.
methods.
grep(/f$/).
sort.
join(“¥n”).
出力したい
“”.
methods.
grep(/f$/).
sort.
join(“¥n”).
display
出力したい
“”.
methods.
grep(/f$/).
sort.
join(“¥n”).
display
“”.methods.grep(/f$/).sort.join(“¥n”).display
確認
Javaで言うと
import java.lang.reflect.Method;
import java.util.regex.*;
public class sample {
public static void main(String arg[]) {
tr...
Rubyだと
“”.methods.grep(/f$/).sort.join(“¥n”).display
Say what you mean
and say it briefly
- Paul Graham
言いたいことは簡潔に言え。
- ポール・グラハム『ハッカーと画家』
ポイント
目にやさしい
読みやすさ
無駄がない
本質を捉えている
簡潔であること
✓ 処理の本質だけを捉える
✓ 読みやすさ
簡潔であること
✓ 処理の本質だけを捉える
✓ 読みやすさ
開発が楽しくなる
簡潔であること
✓ 処理の本質だけを捉える
✓ 読みやすさ
開発が楽しくなる
開発効率も段違い
簡潔であること
Clear and readable
Values Of Ruby
✓ Be nice to developers
✓ Be clear and readable
✓ Be flexible and agile
✓ Be open
Values Of Ruby
✓ Be nice to developers
✓ Be clear and readable
✓ Be flexible and agile
✓ Be open
柔軟であること
Flexible and agile
Part1
Expressiveness
表現力
This works! Such
finding make me
happy.
- Dave Thomas
これも動くんだ!
こんな発見が僕をハッピーにしてくれる。
- 達人プログラマ
デモ
表現力
いろいろな
表現
が可能
複数の
プログラミング
パラダイムを
許容
✓ オブジェクト指向
✓ 手続き型
✓ 関数型
✓ 単なるスクリプト
✓ etc
マルチパラダイム
マルチパラダイム
✓ 問題解決にあたって最良
のパラダイムを
✓ プログラマは表現者
➡ 表現に自由を!
✓ 新しいパラダイムへの入り
口として
✓ 問題解決にあたって最良
のパラダイムを
✓ プログラマは表現者
➡ 表現に自由を!
✓ 新しいパラダイムへの入り
口として
表現力
柔軟であること
Be flexible and agile
Part2
Dynamic
動的
動的
✓ インタプリタ
✓ 動的型
✓ オープンクラス
インタプリタ
インタプリタ
✓コンパイル不要
• 実行までにかかる時間が短い
✓ぎりぎりまで自分自身を書
き換えることが可能
• 実行中にプログラムを変更
➡ アジャイル開発に最適
インタプリタ
動的型
動的型
✓ 型宣言不要
• コードをシンプルに保つことが可能
➡変更に強く!本質に注力!
✓ 振る舞いにより型を判断
• 大事なのはそのオブジェクトが何を出来
る(どのような振る舞いを持つ)のか
➡Duck Typing!
動的型
オープンクラス
あらゆるクラス
を改変可能
デモ
オープンクラス
✓ あらゆるクラスを改変す
ることが可能
• Rubyはオープンな言語
➡プログラマを信頼!
オープンクラス
動的
✓ インタプリタ
✓ 動的型
✓ オープンクラス
✓ アジャイルな開発を低コ
ストで実現
✓ 変更に強く! 本質に注力!
✓ すべてはプログラマ次第
➡Rubyは信頼してくれている
動的
柔軟であること
Flexible and agile
✓ 問題解決にあたって最良
のパラダイムを
✓ プログラマは表現者
➡ 表現に自由を!
✓ 新しいパラダイムへの入り
口として
表現力
✓ アジャイルな開発を低コ
ストで実現
✓ 変更に強く! 本質に注力!
✓ 決めるのはプログラマ
➡Rubyが信頼してくれている
動的
柔軟であること
Flexible and agile
Values Of Ruby
✓ Be nice to developers
✓ Be clear and readable
✓ Be flexible and agile
✓ Be open
Values Of Ruby
✓ Be nice to developers
✓ Be clear and readable
✓ Be flexible and agile
✓ Be open
開かれていること
Open
開かれていること
✓ オープンソース
• 誰でもRubyを好きなように利用できる
✓ 意思決定のプロセス
• 誰でも意思決定のプロセスに参加できる
✓ コミュニティ
• 大切なのはコミュニティ、そして人
開かれていること
✓ オープンソース
• 誰でもRubyを好きなように利用できる
✓ 意思決定のプロセス
• 誰でも意思決定のプロセスに参加できる
✓ コミュニティ
• 大切なのはコミュニティ、そして人
開かれていること
✓ オープンソース
• 誰でもRubyを好きなように利用できる
✓ 意思決定のプロセス
• 誰でも意思決定のプロセスに参加できる
✓ コミュニティ
• 大切なのはコミュニティ、そして人
開かれていること
✓ オープンソース
• 誰でもRubyを好きなように利用できる
✓ 意思決定のプロセス
• 誰でも意思決定のプロセスに参加できる
✓ コミュニティ
• 大切なのはコミュニティ、そして人
Ruby = コミュニティ、人
開かれていること
✓ オープンソース
• 誰でもRubyを好きなように利用できる
✓ 意思決定のプロセス
• 誰でも意思決定のプロセスに参加できる
✓ コミュニティ
• 大切なのはコミュニティ、そして人
開かれていること
✓ オープンソース
• 誰でもRubyを好きなように利用できる
✓ 意思決定のプロセス
• 誰でも意思決定のプロセスに参加できる
✓ コミュニティ
• 大切なのはコミュニティ、そして人
開かれていること
Open
Values Of Ruby
✓ Be nice to developers
✓ Be clear and readable
✓ Be flexible and agile
✓ Be open
Values Of Ruby
✓ Be nice to developers
✓ Be clear and readable
✓ Be flexible and agile
✓ Be open
Lesson (1)
Rubyの価値
Values of Ruby
Lesson (2)
Lesson (2)
続きは勉強会で
To be continued
ご案内
日本Rubyの会
日本Rubyの会
✓開発者の支援
✓利用者の支援
http://jp.rubyist.net/magazine/
http://doc/loveruby.net/wiki/
メーリングリスト
http://jp.rubyist.net/
Ruby札幌
Ruby札幌
✓Ruby勉強会@札幌
✓Ruby Sapporo Night
Ruby勉強会@札幌
Ruby勉強会@札幌
✓1.5ヶ月に一回くらい
✓平均すると20人くらい
✓Ruby初心者歓迎
✓手伝ってくれる方歓迎
Ruby勉強会@札幌
✓ピッケル本読み合わせ
✓るびま読み合わせ
✓他言語探訪
✓Rails導入事例など
✓次回は 7月21日(土)
✓RubyKaigi2007報告会
✓http://jp.rubyist.net/
Ruby勉強会@札幌
Ruby Sapporo Night
RubySapporoNight
✓7月から開始
✓デモ中心??
✓アップルストアでw
✓初回は7月25日(水)
Ruby札幌
✓Ruby勉強会@札幌
✓Ruby Sapporo Night
Ruby札幌
詳しくは
日本Rubyの会
をご参照ください
以上
謝辞:
• 前田さん、設楽さん
• 千葉さん、菅野さん
• いつも勉強会にご参加くださっているみ
なさん
• OSC-Do運営スタッフのみなさん
• 日本Rubyの会のみなさん
• Ruby開発チームのみなさん
• and Special Th...
ご清聴
ありがとう
ございました
Ruby勉強会@札幌 "Rubyist入門講座"
Ruby勉強会@札幌 "Rubyist入門講座"
Ruby勉強会@札幌 "Rubyist入門講座"
Ruby勉強会@札幌 "Rubyist入門講座"
Upcoming SlideShare
Loading in …5
×

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

8,895 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,895
On SlideShare
0
From Embeds
0
Number of Embeds
56
Actions
Shares
0
Downloads
80
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

  1. 1. Ruby勉強会@札幌 Rubyist入門講座 日本Rubyの会 島田浩二 snoozer.05@gmail.com OSC 2007 Hokkaido 2007-06-30(土)
  2. 2. ポジションペーパー “立場表明書”
  3. 3. I LOVE RUBY 私はRubyが大好きだ 24 引用:Dave Thomas “The Island Of Ruby”
  4. 4. 本日お伝えしたいこと theme of this seminar
  5. 5. http://www.ruby-lang.org/ja/
  6. 6. http://www.ruby-lang.org/ja/
  7. 7. http://www.ruby-lang.org/ja/
  8. 8. ここ
  9. 9. 本日 大変緊張して おりますので
  10. 10. どうぞ お手柔らかに お願いします
  11. 11. Agenda ✓ 自己紹介 ✓ Ruby Hot Topics ✓ Rubyist 入門講座 ✓ 日本Rubyの会について ✓ Ruby札幌について
  12. 12. 自己紹介 Self-Introduction
  13. 13. 自己紹介 •島田 浩二(しまだ こうじ) •フリーのソフトウェア技術者 •お仕事は組み込みメイン •使ってる言語はCだったり •日本Rubyの会 •Ruby札幌 •るびま、るりま等 •http://iddy.jp/profile/snoozer05/
  14. 14. さいきんのRuby Ruby Hot Topics
  15. 15. 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
  16. 16. 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
  17. 17. http://jp.rubyist.net/RubyKaigi2007/
  18. 18. 次回の 勉強会でやる
  19. 19. 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
  20. 20. 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
  21. 21. 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
  22. 22. RubyOnRailsの 面白い話題は masuidriveさん のセッションで
  23. 23. 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
  24. 24. 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
  25. 25. 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
  26. 26. Rubyist入門講座 Rubyist Guide
  27. 27. Lesson (1) Rubyの価値 Values of Ruby
  28. 28. Values Of Ruby ✓ Be nice to developers ✓ Be clear and readable ✓ Be flexible and agile ✓ Be open
  29. 29. Values Of Ruby ✓ Be nice to developers ✓ Be clear and readable ✓ Be flexible and agile ✓ Be open
  30. 30. 開発者に優しい Nice to developers
  31. 31. 開発者にやさしい ✓ 開発しやすい環境を提供 • irb, RubyGems, Test::Unit ✓ 手になじんだ環境で開発を • emacs, vim, eclipse, visual studio ✓ 困ったときには • メーリングリスト
  32. 32. 開発者にやさしい ✓ 開発しやすい環境を提供 • irb, RubyGems, Test::Unit ✓ 手になじんだ環境で開発を • emacs, vim, eclipse, visual studio ✓ 困ったときには • メーリングリスト
  33. 33. 開発者にやさしい ✓ 開発しやすい環境を提供 • irb, RubyGems, Test::Unit ✓ 手になじんだ環境で開発を • emacs, vim, eclipse, visual studio ✓ 困ったときには • メーリングリスト
  34. 34. 開発者にやさしい ✓ 開発しやすい環境を提供 • irb, RubyGems, Test::Unit ✓ 手になじんだ環境で開発を • emacs, vim, eclipse, visual studio ✓ 困ったときには • メーリングリスト
  35. 35. メーリングリスト
  36. 36. メーリングリスト
  37. 37. メーリングリスト
  38. 38. つくった人が日本語で 答えてくれる :-)
  39. 39. 開発者にやさしい ✓ 開発しやすい環境を提供 • irb, RubyGems, Test::Unit ✓ 手になじんだ環境で開発を • emacs, vim, eclipse, visual studio ✓ 困ったときには • メーリングリスト
  40. 40. 開発者に優しい Nice to developers
  41. 41. Values Of Ruby ✓ Be nice to developers ✓ Be clear and readable ✓ Be flexible and agile ✓ Be open
  42. 42. Values Of Ruby ✓ Be nice to developers ✓ Be clear and readable ✓ Be flexible and agile ✓ Be open
  43. 43. 簡潔であること Clear and readable
  44. 44. ポール・グラハム
  45. 45. 良いデザイン
  46. 46. Say what you mean and say it briefly - Paul Graham 言いたいことは簡潔に言え。 - ポール・グラハム『ハッカーと画家』
  47. 47. ためしに言ってみる
  48. 48. 言いたいこと
  49. 49. 文字列クラスの メソッド一覧のうち 末尾が”f”で終わるものを アスキー順にソートして 改行で区切って 出力したい
  50. 50. Javaで言ってみる
  51. 51. 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); } } }
  52. 52. 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); } } } 文字列クラスの
  53. 53. 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); } } } 文字列クラスの
  54. 54. 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); } } } メソッド一覧の
  55. 55. 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); } } } メソッド一覧の
  56. 56. 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”で 終わるものを
  57. 57. 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”で 終わるものを
  58. 58. 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); } } } アスキー順に ソートして
  59. 59. 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); } } } アスキー順に ソートして
  60. 60. 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); } } } 改行で区切って 出力したい
  61. 61. 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); } } } 改行で区切って 出力したい
  62. 62. 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); } } }
  63. 63. Rubyで言ってみる
  64. 64. 文字列クラスの
  65. 65. 文字列クラスの “”.
  66. 66. メソッド一覧の “”.
  67. 67. “”. methods. メソッド一覧の
  68. 68. 末尾が”f”で 終わるものを“”. methods.
  69. 69. 末尾が”f”で 終わるものを“”. methods. grep(/f$/).
  70. 70. アスキー順に ソートして“”. methods. grep(/f$/).
  71. 71. アスキー順に ソートして“”. methods. grep(/f$/). sort.
  72. 72. 改行で区切って “”. methods. grep(/f$/). sort.
  73. 73. “”. methods. grep(/f$/). sort. join(“¥n”). 改行で区切って
  74. 74. “”. methods. grep(/f$/). sort. join(“¥n”). 出力したい
  75. 75. “”. methods. grep(/f$/). sort. join(“¥n”). display 出力したい
  76. 76. “”. methods. grep(/f$/). sort. join(“¥n”). display
  77. 77. “”.methods.grep(/f$/).sort.join(“¥n”).display
  78. 78. 確認
  79. 79. Javaで言うと
  80. 80. 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); } } }
  81. 81. Rubyだと
  82. 82. “”.methods.grep(/f$/).sort.join(“¥n”).display
  83. 83. Say what you mean and say it briefly - Paul Graham 言いたいことは簡潔に言え。 - ポール・グラハム『ハッカーと画家』
  84. 84. ポイント
  85. 85. 目にやさしい
  86. 86. 読みやすさ
  87. 87. 無駄がない
  88. 88. 本質を捉えている
  89. 89. 簡潔であること ✓ 処理の本質だけを捉える ✓ 読みやすさ
  90. 90. 簡潔であること ✓ 処理の本質だけを捉える ✓ 読みやすさ 開発が楽しくなる
  91. 91. 簡潔であること ✓ 処理の本質だけを捉える ✓ 読みやすさ 開発が楽しくなる 開発効率も段違い
  92. 92. 簡潔であること Clear and readable
  93. 93. Values Of Ruby ✓ Be nice to developers ✓ Be clear and readable ✓ Be flexible and agile ✓ Be open
  94. 94. Values Of Ruby ✓ Be nice to developers ✓ Be clear and readable ✓ Be flexible and agile ✓ Be open
  95. 95. 柔軟であること Flexible and agile
  96. 96. Part1
  97. 97. Expressiveness
  98. 98. 表現力
  99. 99. This works! Such finding make me happy. - Dave Thomas これも動くんだ! こんな発見が僕をハッピーにしてくれる。 - 達人プログラマ
  100. 100. デモ
  101. 101. 表現力
  102. 102. いろいろな 表現 が可能
  103. 103. 複数の プログラミング パラダイムを 許容
  104. 104. ✓ オブジェクト指向 ✓ 手続き型 ✓ 関数型 ✓ 単なるスクリプト ✓ etc
  105. 105. マルチパラダイム
  106. 106. マルチパラダイム ✓ 問題解決にあたって最良 のパラダイムを ✓ プログラマは表現者 ➡ 表現に自由を! ✓ 新しいパラダイムへの入り 口として
  107. 107. ✓ 問題解決にあたって最良 のパラダイムを ✓ プログラマは表現者 ➡ 表現に自由を! ✓ 新しいパラダイムへの入り 口として 表現力
  108. 108. 柔軟であること Be flexible and agile
  109. 109. Part2
  110. 110. Dynamic
  111. 111. 動的
  112. 112. 動的 ✓ インタプリタ ✓ 動的型 ✓ オープンクラス
  113. 113. インタプリタ
  114. 114. インタプリタ ✓コンパイル不要 • 実行までにかかる時間が短い ✓ぎりぎりまで自分自身を書 き換えることが可能 • 実行中にプログラムを変更 ➡ アジャイル開発に最適
  115. 115. インタプリタ
  116. 116. 動的型
  117. 117. 動的型 ✓ 型宣言不要 • コードをシンプルに保つことが可能 ➡変更に強く!本質に注力! ✓ 振る舞いにより型を判断 • 大事なのはそのオブジェクトが何を出来 る(どのような振る舞いを持つ)のか ➡Duck Typing!
  118. 118. 動的型
  119. 119. オープンクラス
  120. 120. あらゆるクラス を改変可能
  121. 121. デモ
  122. 122. オープンクラス ✓ あらゆるクラスを改変す ることが可能 • Rubyはオープンな言語 ➡プログラマを信頼!
  123. 123. オープンクラス
  124. 124. 動的 ✓ インタプリタ ✓ 動的型 ✓ オープンクラス
  125. 125. ✓ アジャイルな開発を低コ ストで実現 ✓ 変更に強く! 本質に注力! ✓ すべてはプログラマ次第 ➡Rubyは信頼してくれている 動的
  126. 126. 柔軟であること Flexible and agile
  127. 127. ✓ 問題解決にあたって最良 のパラダイムを ✓ プログラマは表現者 ➡ 表現に自由を! ✓ 新しいパラダイムへの入り 口として 表現力
  128. 128. ✓ アジャイルな開発を低コ ストで実現 ✓ 変更に強く! 本質に注力! ✓ 決めるのはプログラマ ➡Rubyが信頼してくれている 動的
  129. 129. 柔軟であること Flexible and agile
  130. 130. Values Of Ruby ✓ Be nice to developers ✓ Be clear and readable ✓ Be flexible and agile ✓ Be open
  131. 131. Values Of Ruby ✓ Be nice to developers ✓ Be clear and readable ✓ Be flexible and agile ✓ Be open
  132. 132. 開かれていること Open
  133. 133. 開かれていること ✓ オープンソース • 誰でもRubyを好きなように利用できる ✓ 意思決定のプロセス • 誰でも意思決定のプロセスに参加できる ✓ コミュニティ • 大切なのはコミュニティ、そして人
  134. 134. 開かれていること ✓ オープンソース • 誰でもRubyを好きなように利用できる ✓ 意思決定のプロセス • 誰でも意思決定のプロセスに参加できる ✓ コミュニティ • 大切なのはコミュニティ、そして人
  135. 135. 開かれていること ✓ オープンソース • 誰でもRubyを好きなように利用できる ✓ 意思決定のプロセス • 誰でも意思決定のプロセスに参加できる ✓ コミュニティ • 大切なのはコミュニティ、そして人
  136. 136. 開かれていること ✓ オープンソース • 誰でもRubyを好きなように利用できる ✓ 意思決定のプロセス • 誰でも意思決定のプロセスに参加できる ✓ コミュニティ • 大切なのはコミュニティ、そして人
  137. 137. Ruby = コミュニティ、人
  138. 138. 開かれていること ✓ オープンソース • 誰でもRubyを好きなように利用できる ✓ 意思決定のプロセス • 誰でも意思決定のプロセスに参加できる ✓ コミュニティ • 大切なのはコミュニティ、そして人
  139. 139. 開かれていること ✓ オープンソース • 誰でもRubyを好きなように利用できる ✓ 意思決定のプロセス • 誰でも意思決定のプロセスに参加できる ✓ コミュニティ • 大切なのはコミュニティ、そして人
  140. 140. 開かれていること Open
  141. 141. Values Of Ruby ✓ Be nice to developers ✓ Be clear and readable ✓ Be flexible and agile ✓ Be open
  142. 142. Values Of Ruby ✓ Be nice to developers ✓ Be clear and readable ✓ Be flexible and agile ✓ Be open
  143. 143. Lesson (1) Rubyの価値 Values of Ruby
  144. 144. Lesson (2)
  145. 145. Lesson (2) 続きは勉強会で To be continued
  146. 146. ご案内
  147. 147. 日本Rubyの会
  148. 148. 日本Rubyの会 ✓開発者の支援 ✓利用者の支援
  149. 149. http://jp.rubyist.net/magazine/
  150. 150. http://doc/loveruby.net/wiki/
  151. 151. メーリングリスト
  152. 152. http://jp.rubyist.net/
  153. 153. Ruby札幌
  154. 154. Ruby札幌 ✓Ruby勉強会@札幌 ✓Ruby Sapporo Night
  155. 155. Ruby勉強会@札幌
  156. 156. Ruby勉強会@札幌 ✓1.5ヶ月に一回くらい ✓平均すると20人くらい ✓Ruby初心者歓迎 ✓手伝ってくれる方歓迎
  157. 157. Ruby勉強会@札幌 ✓ピッケル本読み合わせ ✓るびま読み合わせ ✓他言語探訪 ✓Rails導入事例など
  158. 158. ✓次回は 7月21日(土) ✓RubyKaigi2007報告会 ✓http://jp.rubyist.net/ Ruby勉強会@札幌
  159. 159. Ruby Sapporo Night
  160. 160. RubySapporoNight ✓7月から開始 ✓デモ中心?? ✓アップルストアでw ✓初回は7月25日(水)
  161. 161. Ruby札幌 ✓Ruby勉強会@札幌 ✓Ruby Sapporo Night
  162. 162. Ruby札幌 詳しくは 日本Rubyの会 をご参照ください
  163. 163. 以上
  164. 164. 謝辞: • 前田さん、設楽さん • 千葉さん、菅野さん • いつも勉強会にご参加くださっているみ なさん • OSC-Do運営スタッフのみなさん • 日本Rubyの会のみなさん • Ruby開発チームのみなさん • and Special Thanks to Dave Thomas
  165. 165. ご清聴 ありがとう ございました

×