Ruby の標準乱数生成器とその改善案
-
Upload
kenta-murata -
Category
Technology
-
view
4.911 -
download
1
description
Transcript of Ruby の標準乱数生成器とその改善案
![Page 1: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/1.jpg)
Ruby の標準乱数生成器とその改良案The standard random number generator of Ruby and the proposal to improve it
村田 賢太Kenta Murata
mrkn
12009年7月18日土曜日
![Page 2: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/2.jpg)
Ruby の標準乱数生成器とその改良案The standard random number generator of Ruby and the proposal to improve it
村田 賢太Kenta Murata
mrkn
22009年7月18日土曜日
![Page 3: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/3.jpg)
Kenta Murata, Ph.D
‣Ph.D (Hokkaido University)‣Department of Information Science.
‣Born on July 20th 【COMING SOON】
‣Membership‣Ruby Sapporo (ruby-sapporo.org)‣KaigiFreaks ‣Nihon Ruby-no kai‣Kosen Conference (kosenconf.jp)
32009年7月18日土曜日
![Page 4: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/4.jpg)
My RubyKaigi 2008
Photo by snoozer05 in Flickr http://www.flickr.com/photos/snoozer/2605952121/4
2009年7月18日土曜日
![Page 5: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/5.jpg)
My RubyKaigi 2008Photo by darashi in Flickr http://www.flickr.com/photos/darashi/2598246980/5
2009年7月18日土曜日
![Page 6: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/6.jpg)
KaigiFreaks 2008
Photo by snoozer05 in Flickr http://www.flickr.com/photos/snoozer/2605971795/6
2009年7月18日土曜日
![Page 7: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/7.jpg)
KaigiFreaks は今年もRuby 会議を
全世界へお届けします!
Photo by snoozer05 in Flickr http://www.flickr.com/photos/snoozer/2605971795/2009年7月18日土曜日
![Page 8: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/8.jpg)
PPHPPHPPHPPPプロが選んだ三ツ星レシピ!!いまさら聞けない・誰も教えてくれない本当に必要な知識と技を一冊に凝縮!!困ったときにすぐ引ける! 実践で即役立つテクニックと開発ノウハウ、つまづきやすい・ハマりやすいポイントを徹底解説。
PHP ★★ ★ ★
★ ★ ★
★ ★ ★
Programmer'sRecipe
逆引きレシピ鈴木憲治/安藤建一/山田直明八木照朗/山本義之/河合勝彦
すぐに美味しい
サンプル&テクニック
261
Windows/Mac対応 PHP5.3対応
・主要レンタルサーバーの設定法と違い
・セキュリティ対策のポイントと実際
著
よくわかる!
すぐに美味しい
サンプル&テクニック yRubyRubyRすぐに美味しい
サンプル&
RR
★
プロが選んだ三ツ星レシピ!!広大なRubyの世界でもう迷わない!開発時の悩みを解決する定番ノウハウ集“やりたいこと”からすぐ引ける! アプリケーション開発時に即役立つ機能・ライブラリ・テクニックを丁寧に解説。
★ ★ ★
★ ★ ★
Programmer'sRecipe★★ ★ ★★ ★ ★
Programmer'sRecipeRuby逆引きレシピ
232
★ ★ ★
島田浩二/設樂洋爾/村田賢太前田智樹/谷口文威
すぐに美味しい
サンプル&
テクニック
★ ★ ★本書について
Rubyの世界はとても広大であり、Rubyに慣れ親しんだ者
でさえ道に迷ってしまうことが多々あります。多くのライブラ
リ、多くの実装手段が存在するため、適切な解決策へたどり
着くまでに迷ってしまうのです。そのため、Rubyを始めたば
かりの人達が適切な解決策へたどり着くことは至難の業と言
えるでしょう。Rubyの入門書の多くは、このための道案内を
してはくれません。
本書は、開発の現場で直面する現実の問題をRubyで解決
する方法や、そのために必要な知識やノウハウを、レシピ形
式で紹介する本です。実際の現場で扱うことの多いレシピ
を関連するカテゴリや目的別にまとめています。技術や概念
の説明は必要最低限にとどめ、「やりたいこと」を実現する
ために「どのようなライブラリや機能をどう使えばよいか」を、
サンプルコードを交えてわかりやすく簡潔に解説しています。
本書のもう1つの目的は、Rubyコミュニティで漠然と共有さ
れているRubyらしい考え方を学ぶことです。リファレンスや
チュートリアルの形ではなく、さまざまなライブラリが実際の
問題をどのように解決しているかを知ることで、Rubyプログラ
マの考え方とその根底にある哲学を学ぶことができます。
そうした考え方さえ身に付けることができれば、あなたは自
然とRubyを使いこなし自力で問題を解けるようになっている
ことでしょう。
本書が、Rubyによる楽しいプログラミングの一助となれば
幸いです。
(「はじめに」より抜粋)
CONTENTS
1 さあ始めよう RubyGemsや実行環境のカスタマイズなど、 Rubyやライブラリを使いこなす環境を整える方法を解説
2 基本オブジェクト 文字列、数値、コレクションなどを扱うための知識・テクニックを解説
3 システム 日付や時刻、標準入出力、ファイルシステムなどを扱うための知識・テクニックを解説
4 オブジェクト指向プログラミング OOPの技法や慣習をRubyで実現する方法、Rubyプログラミングの際の考え方などを解説
5 データベース/永続化 各種データベースの操作やオブジェクトを永続化する方法について解説
6 ネットワーク処理/ Webプログラミング さまざまなプロトコルやWebサーバー/クライアント、並列分散処理を扱う方法を解説
7 各種フォーマット/画像 現場で利用することの多い書式や画像を扱う方法について解説
8 他言語/外部ライブラリ Ruby以外の言語や外部ライブラリを扱う方法について解説
9 エラー処理/ログ アプリケーションを作り込む際に必要なエラー処理やログの記録を行なう方法について解説
10 テスト/最適化 コードの評価を行なう際に必要なテストや各種指標の計測を行なう方法について解説
11 デバッグ デバッガでRubyプログラムをデバッグする方法や各種デバッグ技法などを解説
12 システム管理/自動化 システム管理や作業を自動化する方法を解説
13 ドキュメンテーション/パッケージ化 APIドキュメントを生成する方法やプログラム配布のためにパッケージ化する方法を解説
14 さらに先へ Ruby 1.9の基本やRubyに関する情報収集の方法など、今後の学習に役立つ情報を紹介
232
Ruby逆引きレシピISBN978-4-7981-1988-5
Ruby逆引きレシピ
著
★★ ★ ★★ ★ ★
Programmer'sRecipe Ruby逆引きレシピ
★ ★ ★
★ ★ ★
Programmer'sRecipe
【逆引きレシピシリーズ】
Visual Basic 2008逆引きレシピ[Windowsアプリケーション編]
現場に即効!! 基本+定番+重要テクニック
すぐに美味しい
サンプル&テクニック
267
すぐ
サンテク
26
プロが選んだ三ツ星レシピ!!現場に即効!!基本+定番+重要テクニック実開発に即した“実践見出し”で、困ったときにすぐ引ける!Visual Basicによるアプリケーション構築のノウハウを一冊に凝縮。
★★ ★ ★
★ ★ ★
Programmer'sRecipe
Visual Basic 2008 逆引きレシピ
★ ★ ★
中垣健志+藤田聡 著 Windowsアプリケーション
編[ ]
中垣健志/藤田聡 著定価2,520円(本体2,400円+税5%)ISBN978-4-7981-1780-5
SQL逆引きレシピ即効力のあるレシピを使えばデータ操作が自由自在!!
PHP逆引きレシピ即効力のあるレシピを使えばデータ操作が自由自在!!
西沢直木 著定価2,310円(本体2,200円+税5%)ISBN978-4-7981-1779-9
鈴木憲治/安藤建一/山田直明八木照朗/山本義之/河合勝彦 著定価2,730円(本体2,600円+税5%)ISBN978-4-7981-1986-1
プロが選んだ三ツ星レシピ!!即効力のあるレシピを使えばデータ操作が自由自在!!現場に即した“実践見出し”で引けるので、用途に適した項目をパパっと参照! 具体的なサンプルを使った解説で、複雑なSQL文もラクラク理解!
SQL ★★ ★ ★
★ ★ ★
★ ★ ★
Programmer'sRecipe
逆引きレシピ西沢直木 著
すぐに美味しい
サンプル&テクニック
160
・本当に使えるライブラリとその活用法
・Rubyらしい考え方と書き方
よくわかる!
Ruby 逆引きレシピ7月25日発売!!
8
2009年7月18日土曜日
![Page 9: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/9.jpg)
PPHPPHPPHPPPプロが選んだ三ツ星レシピ!!いまさら聞けない・誰も教えてくれない本当に必要な知識と技を一冊に凝縮!!困ったときにすぐ引ける! 実践で即役立つテクニックと開発ノウハウ、つまづきやすい・ハマりやすいポイントを徹底解説。
PHP ★★ ★ ★
★ ★ ★
★ ★ ★
Programmer'sRecipe
逆引きレシピ鈴木憲治/安藤建一/山田直明八木照朗/山本義之/河合勝彦
すぐに美味しい
サンプル&テクニック
261
Windows/Mac対応 PHP5.3対応
・主要レンタルサーバーの設定法と違い
・セキュリティ対策のポイントと実際
著
よくわかる!
すぐに美味しい
サンプル&テクニック yRubyRubyRすぐに美味しい
サンプル&
RR
★
プロが選んだ三ツ星レシピ!!広大なRubyの世界でもう迷わない!開発時の悩みを解決する定番ノウハウ集“やりたいこと”からすぐ引ける! アプリケーション開発時に即役立つ機能・ライブラリ・テクニックを丁寧に解説。
★ ★ ★
★ ★ ★
Programmer'sRecipe★★ ★ ★★ ★ ★
Programmer'sRecipeRuby逆引きレシピ
232
★ ★ ★
島田浩二/設樂洋爾/村田賢太前田智樹/谷口文威
すぐに美味しい
サンプル&
テクニック
★ ★ ★本書について
Rubyの世界はとても広大であり、Rubyに慣れ親しんだ者
でさえ道に迷ってしまうことが多々あります。多くのライブラ
リ、多くの実装手段が存在するため、適切な解決策へたどり
着くまでに迷ってしまうのです。そのため、Rubyを始めたば
かりの人達が適切な解決策へたどり着くことは至難の業と言
えるでしょう。Rubyの入門書の多くは、このための道案内を
してはくれません。
本書は、開発の現場で直面する現実の問題をRubyで解決
する方法や、そのために必要な知識やノウハウを、レシピ形
式で紹介する本です。実際の現場で扱うことの多いレシピ
を関連するカテゴリや目的別にまとめています。技術や概念
の説明は必要最低限にとどめ、「やりたいこと」を実現する
ために「どのようなライブラリや機能をどう使えばよいか」を、
サンプルコードを交えてわかりやすく簡潔に解説しています。
本書のもう1つの目的は、Rubyコミュニティで漠然と共有さ
れているRubyらしい考え方を学ぶことです。リファレンスや
チュートリアルの形ではなく、さまざまなライブラリが実際の
問題をどのように解決しているかを知ることで、Rubyプログラ
マの考え方とその根底にある哲学を学ぶことができます。
そうした考え方さえ身に付けることができれば、あなたは自
然とRubyを使いこなし自力で問題を解けるようになっている
ことでしょう。
本書が、Rubyによる楽しいプログラミングの一助となれば
幸いです。
(「はじめに」より抜粋)
CONTENTS
1 さあ始めよう RubyGemsや実行環境のカスタマイズなど、 Rubyやライブラリを使いこなす環境を整える方法を解説
2 基本オブジェクト 文字列、数値、コレクションなどを扱うための知識・テクニックを解説
3 システム 日付や時刻、標準入出力、ファイルシステムなどを扱うための知識・テクニックを解説
4 オブジェクト指向プログラミング OOPの技法や慣習をRubyで実現する方法、Rubyプログラミングの際の考え方などを解説
5 データベース/永続化 各種データベースの操作やオブジェクトを永続化する方法について解説
6 ネットワーク処理/ Webプログラミング さまざまなプロトコルやWebサーバー/クライアント、並列分散処理を扱う方法を解説
7 各種フォーマット/画像 現場で利用することの多い書式や画像を扱う方法について解説
8 他言語/外部ライブラリ Ruby以外の言語や外部ライブラリを扱う方法について解説
9 エラー処理/ログ アプリケーションを作り込む際に必要なエラー処理やログの記録を行なう方法について解説
10 テスト/最適化 コードの評価を行なう際に必要なテストや各種指標の計測を行なう方法について解説
11 デバッグ デバッガでRubyプログラムをデバッグする方法や各種デバッグ技法などを解説
12 システム管理/自動化 システム管理や作業を自動化する方法を解説
13 ドキュメンテーション/パッケージ化 APIドキュメントを生成する方法やプログラム配布のためにパッケージ化する方法を解説
14 さらに先へ Ruby 1.9の基本やRubyに関する情報収集の方法など、今後の学習に役立つ情報を紹介
232
Ruby逆引きレシピISBN978-4-7981-1988-5
Ruby逆引きレシピ
著
★★ ★ ★★ ★ ★
Programmer'sRecipe Ruby逆引きレシピ
★ ★ ★
★ ★ ★
Programmer'sRecipe
【逆引きレシピシリーズ】
Visual Basic 2008逆引きレシピ[Windowsアプリケーション編]
現場に即効!! 基本+定番+重要テクニック
すぐに美味しい
サンプル&テクニック
267
すぐ
サンテク
26
プロが選んだ三ツ星レシピ!!現場に即効!!基本+定番+重要テクニック実開発に即した“実践見出し”で、困ったときにすぐ引ける!Visual Basicによるアプリケーション構築のノウハウを一冊に凝縮。
★★ ★ ★
★ ★ ★
Programmer'sRecipe
Visual Basic 2008 逆引きレシピ
★ ★ ★
中垣健志+藤田聡 著 Windowsアプリケーション
編[ ]
中垣健志/藤田聡 著定価2,520円(本体2,400円+税5%)ISBN978-4-7981-1780-5
SQL逆引きレシピ即効力のあるレシピを使えばデータ操作が自由自在!!
PHP逆引きレシピ即効力のあるレシピを使えばデータ操作が自由自在!!
西沢直木 著定価2,310円(本体2,200円+税5%)ISBN978-4-7981-1779-9
鈴木憲治/安藤建一/山田直明八木照朗/山本義之/河合勝彦 著定価2,730円(本体2,600円+税5%)ISBN978-4-7981-1986-1
プロが選んだ三ツ星レシピ!!即効力のあるレシピを使えばデータ操作が自由自在!!現場に即した“実践見出し”で引けるので、用途に適した項目をパパっと参照! 具体的なサンプルを使った解説で、複雑なSQL文もラクラク理解!
SQL ★★ ★ ★
★ ★ ★
★ ★ ★
Programmer'sRecipe
逆引きレシピ西沢直木 著
すぐに美味しい
サンプル&テクニック
160
・本当に使えるライブラリとその活用法
・Rubyらしい考え方と書き方
よくわかる!
Ruby 逆引きレシピ
‣ジュンク堂 Ruby 会議支店にて先行発売中!!
7月25日発売!!
8
2009年7月18日土曜日
![Page 10: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/10.jpg)
PPHPPHPPHPPPプロが選んだ三ツ星レシピ!!いまさら聞けない・誰も教えてくれない本当に必要な知識と技を一冊に凝縮!!困ったときにすぐ引ける! 実践で即役立つテクニックと開発ノウハウ、つまづきやすい・ハマりやすいポイントを徹底解説。
PHP ★★ ★ ★
★ ★ ★
★ ★ ★
Programmer'sRecipe
逆引きレシピ鈴木憲治/安藤建一/山田直明八木照朗/山本義之/河合勝彦
すぐに美味しい
サンプル&テクニック
261
Windows/Mac対応 PHP5.3対応
・主要レンタルサーバーの設定法と違い
・セキュリティ対策のポイントと実際
著
よくわかる!
すぐに美味しい
サンプル&テクニック yRubyRubyRすぐに美味しい
サンプル&
RR
★
プロが選んだ三ツ星レシピ!!広大なRubyの世界でもう迷わない!開発時の悩みを解決する定番ノウハウ集“やりたいこと”からすぐ引ける! アプリケーション開発時に即役立つ機能・ライブラリ・テクニックを丁寧に解説。
★ ★ ★
★ ★ ★
Programmer'sRecipe★★ ★ ★★ ★ ★
Programmer'sRecipeRuby逆引きレシピ
232
★ ★ ★
島田浩二/設樂洋爾/村田賢太前田智樹/谷口文威
すぐに美味しい
サンプル&
テクニック
★ ★ ★本書について
Rubyの世界はとても広大であり、Rubyに慣れ親しんだ者
でさえ道に迷ってしまうことが多々あります。多くのライブラ
リ、多くの実装手段が存在するため、適切な解決策へたどり
着くまでに迷ってしまうのです。そのため、Rubyを始めたば
かりの人達が適切な解決策へたどり着くことは至難の業と言
えるでしょう。Rubyの入門書の多くは、このための道案内を
してはくれません。
本書は、開発の現場で直面する現実の問題をRubyで解決
する方法や、そのために必要な知識やノウハウを、レシピ形
式で紹介する本です。実際の現場で扱うことの多いレシピ
を関連するカテゴリや目的別にまとめています。技術や概念
の説明は必要最低限にとどめ、「やりたいこと」を実現する
ために「どのようなライブラリや機能をどう使えばよいか」を、
サンプルコードを交えてわかりやすく簡潔に解説しています。
本書のもう1つの目的は、Rubyコミュニティで漠然と共有さ
れているRubyらしい考え方を学ぶことです。リファレンスや
チュートリアルの形ではなく、さまざまなライブラリが実際の
問題をどのように解決しているかを知ることで、Rubyプログラ
マの考え方とその根底にある哲学を学ぶことができます。
そうした考え方さえ身に付けることができれば、あなたは自
然とRubyを使いこなし自力で問題を解けるようになっている
ことでしょう。
本書が、Rubyによる楽しいプログラミングの一助となれば
幸いです。
(「はじめに」より抜粋)
CONTENTS
1 さあ始めよう RubyGemsや実行環境のカスタマイズなど、 Rubyやライブラリを使いこなす環境を整える方法を解説
2 基本オブジェクト 文字列、数値、コレクションなどを扱うための知識・テクニックを解説
3 システム 日付や時刻、標準入出力、ファイルシステムなどを扱うための知識・テクニックを解説
4 オブジェクト指向プログラミング OOPの技法や慣習をRubyで実現する方法、Rubyプログラミングの際の考え方などを解説
5 データベース/永続化 各種データベースの操作やオブジェクトを永続化する方法について解説
6 ネットワーク処理/ Webプログラミング さまざまなプロトコルやWebサーバー/クライアント、並列分散処理を扱う方法を解説
7 各種フォーマット/画像 現場で利用することの多い書式や画像を扱う方法について解説
8 他言語/外部ライブラリ Ruby以外の言語や外部ライブラリを扱う方法について解説
9 エラー処理/ログ アプリケーションを作り込む際に必要なエラー処理やログの記録を行なう方法について解説
10 テスト/最適化 コードの評価を行なう際に必要なテストや各種指標の計測を行なう方法について解説
11 デバッグ デバッガでRubyプログラムをデバッグする方法や各種デバッグ技法などを解説
12 システム管理/自動化 システム管理や作業を自動化する方法を解説
13 ドキュメンテーション/パッケージ化 APIドキュメントを生成する方法やプログラム配布のためにパッケージ化する方法を解説
14 さらに先へ Ruby 1.9の基本やRubyに関する情報収集の方法など、今後の学習に役立つ情報を紹介
232
Ruby逆引きレシピISBN978-4-7981-1988-5
Ruby逆引きレシピ
著
★★ ★ ★★ ★ ★
Programmer'sRecipe Ruby逆引きレシピ
★ ★ ★
★ ★ ★
Programmer'sRecipe
【逆引きレシピシリーズ】
Visual Basic 2008逆引きレシピ[Windowsアプリケーション編]
現場に即効!! 基本+定番+重要テクニック
すぐに美味しい
サンプル&テクニック
267
すぐ
サンテク
26
プロが選んだ三ツ星レシピ!!現場に即効!!基本+定番+重要テクニック実開発に即した“実践見出し”で、困ったときにすぐ引ける!Visual Basicによるアプリケーション構築のノウハウを一冊に凝縮。
★★ ★ ★
★ ★ ★
Programmer'sRecipe
Visual Basic 2008 逆引きレシピ
★ ★ ★
中垣健志+藤田聡 著 Windowsアプリケーション
編[ ]
中垣健志/藤田聡 著定価2,520円(本体2,400円+税5%)ISBN978-4-7981-1780-5
SQL逆引きレシピ即効力のあるレシピを使えばデータ操作が自由自在!!
PHP逆引きレシピ即効力のあるレシピを使えばデータ操作が自由自在!!
西沢直木 著定価2,310円(本体2,200円+税5%)ISBN978-4-7981-1779-9
鈴木憲治/安藤建一/山田直明八木照朗/山本義之/河合勝彦 著定価2,730円(本体2,600円+税5%)ISBN978-4-7981-1986-1
プロが選んだ三ツ星レシピ!!即効力のあるレシピを使えばデータ操作が自由自在!!現場に即した“実践見出し”で引けるので、用途に適した項目をパパっと参照! 具体的なサンプルを使った解説で、複雑なSQL文もラクラク理解!
SQL ★★ ★ ★
★ ★ ★
★ ★ ★
Programmer'sRecipe
逆引きレシピ西沢直木 著
すぐに美味しい
サンプル&テクニック
160
・本当に使えるライブラリとその活用法
・Rubyらしい考え方と書き方
よくわかる!
Ruby 逆引きレシピ
‣ジュンク堂 Ruby 会議支店にて先行発売中!!
♥おまけ付き♥
7月25日発売!!
8
2009年7月18日土曜日
![Page 11: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/11.jpg)
PPHPPHPPHPPPプロが選んだ三ツ星レシピ!!いまさら聞けない・誰も教えてくれない本当に必要な知識と技を一冊に凝縮!!困ったときにすぐ引ける! 実践で即役立つテクニックと開発ノウハウ、つまづきやすい・ハマりやすいポイントを徹底解説。
PHP ★★ ★ ★
★ ★ ★
★ ★ ★
Programmer'sRecipe
逆引きレシピ鈴木憲治/安藤建一/山田直明八木照朗/山本義之/河合勝彦
すぐに美味しい
サンプル&テクニック
261
Windows/Mac対応 PHP5.3対応
・主要レンタルサーバーの設定法と違い
・セキュリティ対策のポイントと実際
著
よくわかる!
すぐに美味しい
サンプル&テクニック yRubyRubyRすぐに美味しい
サンプル&
RR
★
プロが選んだ三ツ星レシピ!!広大なRubyの世界でもう迷わない!開発時の悩みを解決する定番ノウハウ集“やりたいこと”からすぐ引ける! アプリケーション開発時に即役立つ機能・ライブラリ・テクニックを丁寧に解説。
★ ★ ★
★ ★ ★
Programmer'sRecipe★★ ★ ★★ ★ ★
Programmer'sRecipeRuby逆引きレシピ
232
★ ★ ★
島田浩二/設樂洋爾/村田賢太前田智樹/谷口文威
すぐに美味しい
サンプル&
テクニック
★ ★ ★本書について
Rubyの世界はとても広大であり、Rubyに慣れ親しんだ者
でさえ道に迷ってしまうことが多々あります。多くのライブラ
リ、多くの実装手段が存在するため、適切な解決策へたどり
着くまでに迷ってしまうのです。そのため、Rubyを始めたば
かりの人達が適切な解決策へたどり着くことは至難の業と言
えるでしょう。Rubyの入門書の多くは、このための道案内を
してはくれません。
本書は、開発の現場で直面する現実の問題をRubyで解決
する方法や、そのために必要な知識やノウハウを、レシピ形
式で紹介する本です。実際の現場で扱うことの多いレシピ
を関連するカテゴリや目的別にまとめています。技術や概念
の説明は必要最低限にとどめ、「やりたいこと」を実現する
ために「どのようなライブラリや機能をどう使えばよいか」を、
サンプルコードを交えてわかりやすく簡潔に解説しています。
本書のもう1つの目的は、Rubyコミュニティで漠然と共有さ
れているRubyらしい考え方を学ぶことです。リファレンスや
チュートリアルの形ではなく、さまざまなライブラリが実際の
問題をどのように解決しているかを知ることで、Rubyプログラ
マの考え方とその根底にある哲学を学ぶことができます。
そうした考え方さえ身に付けることができれば、あなたは自
然とRubyを使いこなし自力で問題を解けるようになっている
ことでしょう。
本書が、Rubyによる楽しいプログラミングの一助となれば
幸いです。
(「はじめに」より抜粋)
CONTENTS
1 さあ始めよう RubyGemsや実行環境のカスタマイズなど、 Rubyやライブラリを使いこなす環境を整える方法を解説
2 基本オブジェクト 文字列、数値、コレクションなどを扱うための知識・テクニックを解説
3 システム 日付や時刻、標準入出力、ファイルシステムなどを扱うための知識・テクニックを解説
4 オブジェクト指向プログラミング OOPの技法や慣習をRubyで実現する方法、Rubyプログラミングの際の考え方などを解説
5 データベース/永続化 各種データベースの操作やオブジェクトを永続化する方法について解説
6 ネットワーク処理/ Webプログラミング さまざまなプロトコルやWebサーバー/クライアント、並列分散処理を扱う方法を解説
7 各種フォーマット/画像 現場で利用することの多い書式や画像を扱う方法について解説
8 他言語/外部ライブラリ Ruby以外の言語や外部ライブラリを扱う方法について解説
9 エラー処理/ログ アプリケーションを作り込む際に必要なエラー処理やログの記録を行なう方法について解説
10 テスト/最適化 コードの評価を行なう際に必要なテストや各種指標の計測を行なう方法について解説
11 デバッグ デバッガでRubyプログラムをデバッグする方法や各種デバッグ技法などを解説
12 システム管理/自動化 システム管理や作業を自動化する方法を解説
13 ドキュメンテーション/パッケージ化 APIドキュメントを生成する方法やプログラム配布のためにパッケージ化する方法を解説
14 さらに先へ Ruby 1.9の基本やRubyに関する情報収集の方法など、今後の学習に役立つ情報を紹介
232
Ruby逆引きレシピISBN978-4-7981-1988-5
Ruby逆引きレシピ
著
★★ ★ ★★ ★ ★
Programmer'sRecipe Ruby逆引きレシピ
★ ★ ★
★ ★ ★
Programmer'sRecipe
【逆引きレシピシリーズ】
Visual Basic 2008逆引きレシピ[Windowsアプリケーション編]
現場に即効!! 基本+定番+重要テクニック
すぐに美味しい
サンプル&テクニック
267
すぐ
サンテク
26
プロが選んだ三ツ星レシピ!!現場に即効!!基本+定番+重要テクニック実開発に即した“実践見出し”で、困ったときにすぐ引ける!Visual Basicによるアプリケーション構築のノウハウを一冊に凝縮。
★★ ★ ★
★ ★ ★
Programmer'sRecipe
Visual Basic 2008 逆引きレシピ
★ ★ ★
中垣健志+藤田聡 著 Windowsアプリケーション
編[ ]
中垣健志/藤田聡 著定価2,520円(本体2,400円+税5%)ISBN978-4-7981-1780-5
SQL逆引きレシピ即効力のあるレシピを使えばデータ操作が自由自在!!
PHP逆引きレシピ即効力のあるレシピを使えばデータ操作が自由自在!!
西沢直木 著定価2,310円(本体2,200円+税5%)ISBN978-4-7981-1779-9
鈴木憲治/安藤建一/山田直明八木照朗/山本義之/河合勝彦 著定価2,730円(本体2,600円+税5%)ISBN978-4-7981-1986-1
プロが選んだ三ツ星レシピ!!即効力のあるレシピを使えばデータ操作が自由自在!!現場に即した“実践見出し”で引けるので、用途に適した項目をパパっと参照! 具体的なサンプルを使った解説で、複雑なSQL文もラクラク理解!
SQL ★★ ★ ★
★ ★ ★
★ ★ ★
Programmer'sRecipe
逆引きレシピ西沢直木 著
すぐに美味しい
サンプル&テクニック
160
・本当に使えるライブラリとその活用法
・Rubyらしい考え方と書き方
よくわかる!
Ruby 逆引きレシピ
‣ジュンク堂 Ruby 会議支店にて先行発売中!!
♥おまけ付き♥
‣19日のお昼にサイン会やります
7月25日発売!!
8
2009年7月18日土曜日
![Page 12: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/12.jpg)
買ってください♥
9
2009年7月18日土曜日
![Page 13: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/13.jpg)
提 供
Ruby札幌From Sapporo, with Love for Ruby
10
2009年7月18日土曜日
![Page 14: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/14.jpg)
どうぞよろしくお願いします
11
2009年7月18日土曜日
![Page 15: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/15.jpg)
Ruby の標準乱数生成器とその改良案The standard random number generator of Ruby and the proposal to improve it
村田 賢太Kenta Murata
122009年7月18日土曜日
![Page 16: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/16.jpg)
今日のまとめ
‣Kernel#rand だけじゃ足りないよ!
‣Math/Random ライブラリを作っているよ
‣目指せ Random クラスの標準添付!
132009年7月18日土曜日
![Page 17: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/17.jpg)
乱数のおさらい
142009年7月18日土曜日
![Page 18: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/18.jpg)
ことばの使い方‣乱数列‣直前までに得られた部分列から次の数を予測できない数列
‣乱数‣乱数列から取り出した数
‣乱数生成器‣乱数列を出力する情報源
152009年7月18日土曜日
![Page 19: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/19.jpg)
乱数列は3種類ある
‣真の乱数列
‣2つの疑似乱数列
‣Monte Carlo 法用疑似乱数列
‣暗号論的疑似乱数列
162009年7月18日土曜日
![Page 20: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/20.jpg)
Monte Carlo 法用疑似乱数列
‣今日の主役‣周期は有限‣できるだけ長いほうが良い
‣一様性‣出力される乱数の分布が偏ってないこと
‣再現性‣できるだけ簡単に乱数列を再現できること
172009年7月18日土曜日
![Page 21: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/21.jpg)
長い周期・一様性・再現性‣長い周期‣周期が長ければ、部分列のパターンが多用になり、無作為性が高まる
‣一様性‣偏りが小さいほど次の乱数が予測しにくい‣一様分布乱数から任意の分布の乱数を作れる
‣再現性‣再現できないとテストができない
182009年7月18日土曜日
![Page 22: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/22.jpg)
例: さいころ‣ srand 13‣1000.times.map { 1 + rand 6 }‣=> [3, 1, 3, 1, 3, 5, 2, 5, 3, 4, 3, 5, 3, 6, 6, 3,
2, 4, 5, 3, 1, 4, 6, 4, 4, 6, 4, 2, 3, 1, 5, 4, 1, 5, 3, 3, 5, 6, 4, 6, 1, 4, 3, 1, 6, 2, 1, 2, 6, 6, 3, 4, 3, 4, 4, 4, 1, 3, 1, 3, 6, 6, 5, 4, 6, 1, 6, 2, 6, 2, 5, 4, 3, 2, 5, 4, 1, 6, 6, 6, 4, 2, 2, 2, 1, 3, 4, 5, 3, 6, 2, 5, 4, 2, 4, 2, 3, 2, 4, 5, 1, 5, 5, 4, 5, 4, 6, 6, 1, 4, 4, 4, 2, 1, 5, 6, 2, 2, 3, 1, 3, 3, 3, 2, 3, 5, 1, 3, 2, 5, 2, 1, 1, 2, 4, 5, 1, 4, 5, 1, ...]
192009年7月18日土曜日
![Page 23: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/23.jpg)
例: マルチスレッドならどうなる?
✓srand 13✓a = Thread.start do
1000.times.map{ 1 + rand(6) }end
✓b = Thread.start do 1000.times.map{ 1 + rand(6) }end
‣=> [3, 1, 3, 1, 3, 5, 2, 5, 3, 4, 3, 5, 3, 6, 6, 3, 2, 4, 5, 3, 1, 4, 6, 4, 4, 6, 4, 2, 3, 1, 5, 4, 1, 5, 3, 3, 5, 6, 4, 6, 1, 4, 3, 1, 6, 2, 1, 2, 6, 6, 3, 4, 3, 4, 4, 4, 1, 3, 1, 3, 6, 6, 5, 4, 6, 1, 6, 2, 6, 2, 5, 4, 3, 2, 5, 4, 1, 6, 6, 6, 4, 2, 2, 2, 1, 3, 4, 5, 3, 6, 2, 5, 4, 2, 4, 2, ...]
202009年7月18日土曜日
![Page 24: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/24.jpg)
例: マルチスレッドならどうなる?
✓srand 13✓a = Thread.start do
1000.times.map{ 1 + rand(6) }end
✓b = Thread.start do 1000.times.map{ 1 + rand(6) }end
‣=> [3, 1, 3, 1, 3, 5, 2, 5, 3, 4, 3, 5, 3, 6, 6, 3, 2, 4, 5, 3, 1, 4, 6, 4, 4, 6, 4, 2, 3, 1, 5, 4, 1, 5, 3, 3, 5, 6, 4, 6, 1, 4, 3, 1, 6, 2, 1, 2, 6, 6, 3, 4, 3, 4, 4, 4, 1, 3, 1, 3, 6, 6, 5, 4, 6, 1, 6, 2, 6, 2, 5, 4, 3, 2, 5, 4, 1, 6, 6, 6, 4, 2, 2, 2, 1, 3, 4, 5, 3, 6, 2, 5, 4, 2, 4, 2, ...]
212009年7月18日土曜日
![Page 25: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/25.jpg)
例: こうならない理由はない!
✓srand 13✓a = Thread.start do
1000.times.map{ 1 + rand(6) }end
✓b = Thread.start do 1000.times.map{ 1 + rand(6) }end
‣=> [3, 1, 3, 1, 3, 5, 2, 5, 3, 4, 3, 5, 3, 6, 6, 3, 2, 4, 5, 3, 1, 4, 6, 4, 4, 6, 4, 2, 3, 1, 5, 4, 1, 5, 3, 3, 5, 6, 4, 6, 1, 4, 3, 1, 6, 2, 1, 2, 6, 6, 3, 4, 3, 4, 4, 4, 1, 3, 1, 3, 6, 6, 5, 4, 6, 1, 6, 2, 6, 2, 5, 4, 3, 2, 5, 4, 1, 6, 6, 6, 4, 2, 2, 2, 1, 3, 4, 5, 3, 6, 2, 5, 4, 2, 4, 2, ...]
222009年7月18日土曜日
![Page 26: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/26.jpg)
乱数はムズイ
‣複数の並行処理でひとつの乱数生成器を共有すると一様性とか色々崩れる ><
‣使い方を間違えると悲惨な結果を招く事例が乱数には幾つもある
‣何度も srand しちゃう人いるよね orz
232009年7月18日土曜日
![Page 27: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/27.jpg)
Ruby の標準乱数生成器
242009年7月18日土曜日
![Page 28: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/28.jpg)
Ruby の標準乱数生成器
252009年7月18日土曜日
![Page 29: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/29.jpg)
Ruby の標準乱数生成器
‣Kernel#rand
‣乱数を出力する
252009年7月18日土曜日
![Page 30: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/30.jpg)
Ruby の標準乱数生成器
‣Kernel#rand
‣乱数を出力する
‣Kernel#srand
‣乱数生成器の状態を初期化する
252009年7月18日土曜日
![Page 31: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/31.jpg)
Ruby の標準乱数生成器
‣Kernel#rand
‣乱数を出力する
‣Kernel#srand
‣乱数生成器の状態を初期化する
‣これだけ!!
252009年7月18日土曜日
![Page 32: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/32.jpg)
不親切!26
2009年7月18日土曜日
![Page 33: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/33.jpg)
Ruby の標準乱数生成器は不親切
‣何が足りないか?
‣複数の生成器への対応
‣状態のシリアライズとリストア
‣一様分布以外の分布関数
‣拡張ライブラリへの御心遣い
272009年7月18日土曜日
![Page 34: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/34.jpg)
Ruby に相応しい乱数生成器とは?
282009年7月18日土曜日
![Page 35: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/35.jpg)
乱数生成器のインタフェース
‣どうせ作るなら
‣野良配布ではなく標準添付がいい
‣【急募】 Ruby 的なインタフェース
292009年7月18日土曜日
![Page 36: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/36.jpg)
Matz says...
‣標準添付する乱数生成アルゴリズムは一つ
‣乱数生成器のオブジェクト化には賛成
‣クラス名は Random
302009年7月18日土曜日
![Page 37: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/37.jpg)
実は既に提案されていた
312009年7月18日土曜日
![Page 38: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/38.jpg)
実は既に提案されていた
‣2007年に ruby-dev で議論された‣ [ruby-dev:31206] に当時の trunk 用 patch
‣Kernel#srand を削除‣Matz がこれに引っかかる
312009年7月18日土曜日
![Page 39: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/39.jpg)
実は既に提案されていた
‣2007年に ruby-dev で議論された‣ [ruby-dev:31206] に当時の trunk 用 patch
‣Kernel#srand を削除‣Matz がこれに引っかかる
‣いつの間にかこの話題も消え・・・
312009年7月18日土曜日
![Page 40: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/40.jpg)
いつの間にか話題が消え・・・
322009年7月18日土曜日
![Page 41: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/41.jpg)
いつの間にか話題が消え・・・
‣ていなかた!
322009年7月18日土曜日
![Page 42: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/42.jpg)
いつの間にか話題が消え・・・
‣ていなかた!
‣昨日の15時頃に Random クラスが trunk にコミットされた!ちょwww
322009年7月18日土曜日
![Page 43: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/43.jpg)
いつの間にか話題が消え・・・
‣ていなかた!
‣昨日の15時頃に Random クラスが trunk にコミットされた!ちょwww
‣昨日の16時頃まで、この講演資料は Random
クラスが無いことを前提に作っていました
322009年7月18日土曜日
![Page 44: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/44.jpg)
最新の Ruby は?
‣何が足りないか?
‣複数の生成器への対応
‣状態のシリアライズとリストア
‣一様分布以外の分布関数
‣拡張ライブラリへの御心遣い
332009年7月18日土曜日
![Page 45: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/45.jpg)
足りない物たち
‣複数の生成器への対応‣Array#shuffle などが使う乱数が
Kernel#rand に固定されている‣分布関数を組み合せた乱数生成器を
Array#sample で使う方法‣分布関数‣正規分布と離散分布は欲しい
342009年7月18日土曜日
![Page 46: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/46.jpg)
Math/Random
352009年7月18日土曜日
![Page 47: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/47.jpg)
Math/Random
‣https://github.com/mrkn/ruby-math-random/tree/master‣間に合いませんでした ><
‣標準乱数生成器では足りない機能を補うことを目的とするライブラリ
‣ASAP で公開します
362009年7月18日土曜日
![Page 48: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/48.jpg)
Math/Random の主な機能
‣実装済み‣2つの生成アルゴリズム‣Mersenne Twister (MT19937AR)‣SFMT (SFMT19937)
‣2つの分布関数‣正規分布‣離散分布
372009年7月18日土曜日
![Page 49: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/49.jpg)
Math/Random の主な機能
‣まだ実装できてないもの‣たくさんの生成アルゴリズム‣ Lagged Fibonacci、Blum-Blum-Shub、線型合同法、などなど
‣たくさんの分布関数‣指数分布、Erlang 分布、などなど
‣拡張ライブラリ対応のインタフェース‣スレッドローカルで Kernel#rand の置き換えるやつ
382009年7月18日土曜日
![Page 50: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/50.jpg)
お前はどうしたいんだ?
‣元々は Random クラスを組み込みで提供させたかった
‣もう叶っちゃった!
‣でも、なんか足りない
‣足りない部分を補強してやろう
392009年7月18日土曜日
![Page 51: Ruby の標準乱数生成器とその改善案](https://reader038.fdocument.pub/reader038/viewer/2022103016/555a8eb3d8b42a991b8b4781/html5/thumbnails/51.jpg)
今日のまとめ
‣ Kernel#rand だけじゃ足りないよ
‣昨日の15時に解決したwww
‣Math/Random ライブラリを作っているよ
‣目指せ Random クラスの標準添付!
‣昨日の15時に解決したwww
‣まだ EXPERIMENTAL なので、少しずつ洗練させよう
402009年7月18日土曜日