SlideShare una empresa de Scribd logo
1 de 169
Descargar para leer sin conexión
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
ご清聴
ありがとう
ございました

Más contenido relacionado

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

「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
Kentaro Matsui
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
Kazunari Hara
 
Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4
Koji SHIMADA
 

Similar a 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にメソッドを追加して遊ぶ話
 

Más de 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-Ruby
Koji 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-Act
Koji SHIMADA
 
20100526 The Productive Programmer
20100526 The Productive Programmer20100526 The Productive Programmer
20100526 The Productive Programmer
Koji 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 Code
Koji 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-osc2009do
Koji SHIMADA
 
20090124 Pleasantly Programming with Ruby
20090124 Pleasantly Programming with Ruby20090124 Pleasantly Programming with Ruby
20090124 Pleasantly Programming with Ruby
Koji SHIMADA
 
20081220 Rubybonenkai2008 Sapporo
20081220 Rubybonenkai2008 Sapporo20081220 Rubybonenkai2008 Sapporo
20081220 Rubybonenkai2008 Sapporo
Koji SHIMADA
 
20081205 Object Club Reject Talks2008
20081205 Object Club Reject Talks200820081205 Object Club Reject Talks2008
20081205 Object Club Reject Talks2008
Koji 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-MetaCon
Koji SHIMADA
 

Más de 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
 

Último

Último (11)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

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