SlideShare a Scribd company logo
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/snoozer05/
さいきんのRuby
Ruby Hot Topics
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
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
http://jp.rubyist.net/RubyKaigi2007/
次回の
勉強会でやる
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
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
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
RubyOnRailsの
面白い話題は
masuidriveさん
のセッションで
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
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
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
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[]) {
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);
}
}
}
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);
}
}
}
文字列クラスの
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);
}
}
}
文字列クラスの
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);
}
}
}
メソッド一覧の
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);
}
}
}
メソッド一覧の
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”で
終わるものを
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”で
終わるものを
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);
}
}
}
アスキー順に
ソートして
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);
}
}
}
アスキー順に
ソートして
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);
}
}
}
改行で区切って
出力したい
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);
}
}
}
改行で区切って
出力したい
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);
}
}
}
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[]) {
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);
}
}
}
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 Thanks to Dave Thomas
ご清聴
ありがとう
ございました

More Related Content

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

Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみようKentaro Matsui
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
Shumpei Shiraishi
 
pecl-AOPの紹介
pecl-AOPの紹介pecl-AOPの紹介
pecl-AOPの紹介
Hiraku Nakano
 
第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで
Mugen Fujii
 
JDK 10 へようこそ
JDK 10 へようこそJDK 10 へようこそ
JDK 10 へようこそ
David Buck
 
from old java to java8 - KanJava Edition
from old java to java8 - KanJava Editionfrom old java to java8 - KanJava Edition
from old java to java8 - KanJava Edition
心 谷本
 
Testman
TestmanTestman
Java8から17へ
Java8から17へJava8から17へ
Java8から17へ
onozaty
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
Takuma Watabiki
 
The Why and How of Java8 at LINE Fukuoka
The Why and How of Java8 at LINE FukuokaThe Why and How of Java8 at LINE Fukuoka
The Why and How of Java8 at LINE Fukuoka
Youhei Nitta
 
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方絶対落ちないアプリの作り方
絶対落ちないアプリの作り方
Fumihiko Shiroyama
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
 
named_scope more detail
named_scope more detailnamed_scope more detail
named_scope more detail
Kyosuke MOROHASHI
 
第5回勉強会
第5回勉強会第5回勉強会
第5回勉強会
Mugen Fujii
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-Kazunari Hara
 
Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Koji SHIMADA
 
Ruby 同好会宣言
Ruby 同好会宣言Ruby 同好会宣言
Ruby 同好会宣言
Yuya Takeyama
 
JavaのGenericsとは?
JavaのGenericsとは?JavaのGenericsとは?
JavaのGenericsとは?
Kenji Nakamura
 
Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話
Masaya Konishi
 

Similar to Ruby勉強会@札幌 "Rubyist入門講座" (20)

Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
 
pecl-AOPの紹介
pecl-AOPの紹介pecl-AOPの紹介
pecl-AOPの紹介
 
第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで
 
JDK 10 へようこそ
JDK 10 へようこそJDK 10 へようこそ
JDK 10 へようこそ
 
from old java to java8 - KanJava Edition
from old java to java8 - KanJava Editionfrom old java to java8 - KanJava Edition
from old java to java8 - KanJava Edition
 
Testman
TestmanTestman
Testman
 
Java8から17へ
Java8から17へJava8から17へ
Java8から17へ
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
 
The Why and How of Java8 at LINE Fukuoka
The Why and How of Java8 at LINE FukuokaThe Why and How of Java8 at LINE Fukuoka
The Why and How of Java8 at LINE Fukuoka
 
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方絶対落ちないアプリの作り方
絶対落ちないアプリの作り方
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
 
named_scope more detail
named_scope more detailnamed_scope more detail
named_scope more detail
 
第5回勉強会
第5回勉強会第5回勉強会
第5回勉強会
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
 
Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4
 
Ruby 同好会宣言
Ruby 同好会宣言Ruby 同好会宣言
Ruby 同好会宣言
 
JavaのGenericsとは?
JavaのGenericsとは?JavaのGenericsとは?
JavaのGenericsとは?
 
Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話
 

More from Koji SHIMADA

Next Generation Web Application Architecture
Next Generation Web Application ArchitectureNext Generation Web Application Architecture
Next Generation Web Application Architecture
Koji SHIMADA
 
20110614 hmcc-enishitech
20110614 hmcc-enishitech20110614 hmcc-enishitech
20110614 hmcc-enishitech
Koji SHIMADA
 
20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisited20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisited
Koji SHIMADA
 
20110602 osc2011do-rubysapporo-public
20110602 osc2011do-rubysapporo-public20110602 osc2011do-rubysapporo-public
20110602 osc2011do-rubysapporo-public
Koji SHIMADA
 
20110129 organizational-reform -that-is-a-fairy-tail
20110129 organizational-reform -that-is-a-fairy-tail20110129 organizational-reform -that-is-a-fairy-tail
20110129 organizational-reform -that-is-a-fairy-tail
Koji SHIMADA
 
20101204 you-must-unlearn-what-you-have-learned
20101204 you-must-unlearn-what-you-have-learned20101204 you-must-unlearn-what-you-have-learned
20101204 you-must-unlearn-what-you-have-learned
Koji SHIMADA
 
20101001-Introduction-to-Developer-Testing-With-Ruby
20101001-Introduction-to-Developer-Testing-With-Ruby20101001-Introduction-to-Developer-Testing-With-Ruby
20101001-Introduction-to-Developer-Testing-With-RubyKoji SHIMADA
 
20100626-OSC2010do-RubySapporo
20100626-OSC2010do-RubySapporo20100626-OSC2010do-RubySapporo
20100626-OSC2010do-RubySapporo
Koji SHIMADA
 
20100626-We-Think-We-Act
20100626-We-Think-We-Act20100626-We-Think-We-Act
20100626-We-Think-We-ActKoji SHIMADA
 
20100526 The Productive Programmer
20100526 The Productive Programmer20100526 The Productive Programmer
20100526 The Productive ProgrammerKoji SHIMADA
 
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
Koji SHIMADA
 
20100213 Where The Street Has No Name
20100213 Where The Street Has No Name20100213 Where The Street Has No Name
20100213 Where The Street Has No Name
Koji SHIMADA
 
20091030 Uncle Bob Said You Should Be A Professional With Clean Code
20091030 Uncle Bob Said You Should Be A Professional With Clean Code20091030 Uncle Bob Said You Should Be A Professional With Clean Code
20091030 Uncle Bob Said You Should Be A Professional With Clean CodeKoji SHIMADA
 
Our Strategy To Survive In This Hard World(tochigirubykaigi02)
Our Strategy To Survive In This Hard World(tochigirubykaigi02)Our Strategy To Survive In This Hard World(tochigirubykaigi02)
Our Strategy To Survive In This Hard World(tochigirubykaigi02)Koji SHIMADA
 
RubySapporoDigestAndMore-osc2009do
RubySapporoDigestAndMore-osc2009doRubySapporoDigestAndMore-osc2009do
RubySapporoDigestAndMore-osc2009doKoji SHIMADA
 
20090124 Pleasantly Programming with Ruby
20090124 Pleasantly Programming with Ruby20090124 Pleasantly Programming with Ruby
20090124 Pleasantly Programming with RubyKoji SHIMADA
 
20081220 Rubybonenkai2008 Sapporo
20081220 Rubybonenkai2008 Sapporo20081220 Rubybonenkai2008 Sapporo
20081220 Rubybonenkai2008 SapporoKoji SHIMADA
 
20081205 Object Club Reject Talks2008
20081205 Object Club Reject Talks200820081205 Object Club Reject Talks2008
20081205 Object Club Reject Talks2008Koji SHIMADA
 
Talking About Fluent Interface
Talking About Fluent InterfaceTalking About Fluent Interface
Talking About Fluent Interface
Koji SHIMADA
 
20081004-OSC2008Tokyo/Fall-MetaCon
20081004-OSC2008Tokyo/Fall-MetaCon20081004-OSC2008Tokyo/Fall-MetaCon
20081004-OSC2008Tokyo/Fall-MetaConKoji SHIMADA
 

More from Koji SHIMADA (20)

Next Generation Web Application Architecture
Next Generation Web Application ArchitectureNext Generation Web Application Architecture
Next Generation Web Application Architecture
 
20110614 hmcc-enishitech
20110614 hmcc-enishitech20110614 hmcc-enishitech
20110614 hmcc-enishitech
 
20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisited20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisited
 
20110602 osc2011do-rubysapporo-public
20110602 osc2011do-rubysapporo-public20110602 osc2011do-rubysapporo-public
20110602 osc2011do-rubysapporo-public
 
20110129 organizational-reform -that-is-a-fairy-tail
20110129 organizational-reform -that-is-a-fairy-tail20110129 organizational-reform -that-is-a-fairy-tail
20110129 organizational-reform -that-is-a-fairy-tail
 
20101204 you-must-unlearn-what-you-have-learned
20101204 you-must-unlearn-what-you-have-learned20101204 you-must-unlearn-what-you-have-learned
20101204 you-must-unlearn-what-you-have-learned
 
20101001-Introduction-to-Developer-Testing-With-Ruby
20101001-Introduction-to-Developer-Testing-With-Ruby20101001-Introduction-to-Developer-Testing-With-Ruby
20101001-Introduction-to-Developer-Testing-With-Ruby
 
20100626-OSC2010do-RubySapporo
20100626-OSC2010do-RubySapporo20100626-OSC2010do-RubySapporo
20100626-OSC2010do-RubySapporo
 
20100626-We-Think-We-Act
20100626-We-Think-We-Act20100626-We-Think-We-Act
20100626-We-Think-We-Act
 
20100526 The Productive Programmer
20100526 The Productive Programmer20100526 The Productive Programmer
20100526 The Productive Programmer
 
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
20100226 Jim Coplien Said You Should Foster Generative Scheme In Your System
 
20100213 Where The Street Has No Name
20100213 Where The Street Has No Name20100213 Where The Street Has No Name
20100213 Where The Street Has No Name
 
20091030 Uncle Bob Said You Should Be A Professional With Clean Code
20091030 Uncle Bob Said You Should Be A Professional With Clean Code20091030 Uncle Bob Said You Should Be A Professional With Clean Code
20091030 Uncle Bob Said You Should Be A Professional With Clean Code
 
Our Strategy To Survive In This Hard World(tochigirubykaigi02)
Our Strategy To Survive In This Hard World(tochigirubykaigi02)Our Strategy To Survive In This Hard World(tochigirubykaigi02)
Our Strategy To Survive In This Hard World(tochigirubykaigi02)
 
RubySapporoDigestAndMore-osc2009do
RubySapporoDigestAndMore-osc2009doRubySapporoDigestAndMore-osc2009do
RubySapporoDigestAndMore-osc2009do
 
20090124 Pleasantly Programming with Ruby
20090124 Pleasantly Programming with Ruby20090124 Pleasantly Programming with Ruby
20090124 Pleasantly Programming with Ruby
 
20081220 Rubybonenkai2008 Sapporo
20081220 Rubybonenkai2008 Sapporo20081220 Rubybonenkai2008 Sapporo
20081220 Rubybonenkai2008 Sapporo
 
20081205 Object Club Reject Talks2008
20081205 Object Club Reject Talks200820081205 Object Club Reject Talks2008
20081205 Object Club Reject Talks2008
 
Talking About Fluent Interface
Talking About Fluent InterfaceTalking About Fluent Interface
Talking About Fluent Interface
 
20081004-OSC2008Tokyo/Fall-MetaCon
20081004-OSC2008Tokyo/Fall-MetaCon20081004-OSC2008Tokyo/Fall-MetaCon
20081004-OSC2008Tokyo/Fall-MetaCon
 

Recently uploaded

Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 

Recently uploaded (12)

Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 

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