5分で分かる Measure
-
Upload
kenta-murata -
Category
Technology
-
view
3.740 -
download
3
description
Transcript of 5分で分かる Measure
![Page 1: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/1.jpg)
5分で分かるMeasure村田 賢太Kenta Murata
札幌 Ruby 会議‒01; 2008‒10‒25
![Page 2: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/2.jpg)
やるおは偉いからその日のうちに宿題を片付けてしまうんだお!
![Page 3: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/3.jpg)
本日の宿題自分の身長を測ってみよう!
![Page 4: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/4.jpg)
身長を測ってみよう!
![Page 5: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/5.jpg)
だっておwwwwwwwバカにするのもいいかげんにして欲しいおwww
![Page 6: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/6.jpg)
やる夫の身長は11文字
放尿は気持ちイイお!
![Page 7: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/7.jpg)
もう宿題終わったお!今日も YourAVHost でスッキリするお!
エロギーク様々だおっ
![Page 8: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/8.jpg)
やる夫くん、気を付けて
![Page 9: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/9.jpg)
![Page 10: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/10.jpg)
だ、誰だお?
![Page 11: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/11.jpg)
やる夫くん、問題を良く見て
![Page 12: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/12.jpg)
![Page 13: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/13.jpg)
![Page 14: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/14.jpg)
本日の宿題自分の身長を測ってみよう!何フィートかな?
![Page 15: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/15.jpg)
フィートってなんだお・・・さっきは書いてなかった気がするお・・・
![Page 16: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/16.jpg)
11文字が何フィートになるか分かんないおどうしたらいいお?
![Page 17: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/17.jpg)
Measure
![Page 18: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/18.jpg)
Measure ライブラリ
‣ 単位付き数値クラスを提供‣ 異なる単位間の変換を定義可能‣ 単位付き数値の簡易記法を提供
18
![Page 19: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/19.jpg)
単位付き数値とは?
‣ 173 [cm]‣ 63 [kg]‣ 376.730 [Ω]‣ 101,325 [Pa]‣ 1.602×10‒19 [C]
19
![Page 20: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/20.jpg)
インストール方法mrkn-macbook:~ root# gem install -r measure
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed measure-0.1.0
1 gem installed
Installing ri documentation for measure-0.1.0...
Installing RDoc documentation for measure-0.1.0...
mrkn-macbook:~ root#
20
![Page 21: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/21.jpg)
使い方mrkn-macbook:~ root# irb
irb(main):001:0> require 'measure'
irb(main):002:0> Measure.define_unit :m, :length
irb(main):003:0> Measure.define_unit :cm, :length
irb(main):004:0> Measure(1, :m)
=> #<Measure:0x57d8c @unit=:m, @value=1>
irb(main):005:0> Measure(1, :cm).to_s
=> "1 [cm]"
21
![Page 22: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/22.jpg)
単位変換irb(main):006:0> Measure.define_conversion :m, :cm => 100
irb(main):007:0> (Measure(1, :m) + Measure(1, :cm)).to_s
=> "1.01 [m]"
irb(main):008:0> Measure.define_unit :in, :length
irb(main):009:0> Measure.define_conversion :in, :cm => 2.54
irb(main):010:0> Measure.define_unit :mm, :length
irb(main):011:0> Measure.define_conversion :m, :mm => 1000
irb(main):012:0> (Measure(210, :mm) - 2*Measure(1, :in)).to_s
=> "159.2 [mm]"
22
![Page 23: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/23.jpg)
マルチホップ変換[in] [cm]
[mm]
[m]
2.54倍
100倍
1000倍
2.54分の1
100分の1
1000倍連結な単位間での相互変換の経路を幅優先探索で発見
23
![Page 24: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/24.jpg)
簡易記法irb(main):013:0> require 'measure/support'
irb(main):014:0> Measure.form { 1.m - 1.cm }.to_s
=> "0.99 [m]"
24
![Page 25: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/25.jpg)
Proc による単位変換irb(main):015:0> Measure.define_unit :deg_c, :temperature
irb(main):016:0> Measure.define_unit :deg_f, :temperature
irb(main):017:0> Measure.define_conversion :deg_c, :deg_f
=> lambda {|x| 9.0*x/5.0 + 32 }
irb(main):018:0> Measure.define_conversion :deg_f, :deg_c
=> lambda {|x| 5.0*(x - 32)/9.0 }
irb(main):019:0> Measure.form { -40.deg_c.as_deg_f }.to_s
=> "-40.0 [deg_f]"
25
![Page 26: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/26.jpg)
定義済み単位‣ measure/length を require すると次の単位が定義され相互変換可能な状態になる
m, meter pt, point, dp, didot_point in, inchcm, centi_meter bp, big_point ft, feetmm, milli_meter pc, pica yd, yardkm, kilo_meter aa, angstromum, micro_meter au, AU, astronomical_unitnm, nano_meter ly, light_year
26
![Page 27: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/27.jpg)
Future works‣ 定義済み単位を増やす‣ 【急募】地域で定義が違う場合の対応方法‣ 多次元単位への対応‣ 1 [kg m / s2] ⇒ 1.kg.m.s(–2)‣ 複数の単位変換系をサポート‣ スレッドセーフ化
27
![Page 28: 5分で分かる Measure](https://reader030.fdocument.pub/reader030/viewer/2022012401/556a6815d8b42ab0468b4ab6/html5/thumbnails/28.jpg)
2008年10月25日 札幌Ruby会議にて
糸冬 了