5分で分かる Measure

Kenta Murata
Kenta MurataCRO at Xica Co., Ltd.
札幌 Ruby 会議‒01; 2008‒10‒25




5分で分かる
Measure
村田 賢太
Kenta Murata
やるおは偉いから
その日のうちに宿題を
片付けてしまうんだお!
本日の宿題
自分の身長を
測ってみよう!
身長を測ってみよう!
だっておwwwwwww
バカにするのもいいかげ
んにして欲しいおwww
やる夫の身長は11文字


     放尿は気持ちイイお!
もう宿題終わったお!
今日も YourAVHost で
スッキリするお!


       エロギーク様々だおっ
やる夫くん、気を付けて
5分で分かる Measure
だ、誰だお?
やる夫くん、問題を良く見て
5分で分かる Measure
5分で分かる Measure
本日の宿題
 自分の身長を
 測ってみよう!
何フィートかな?
フィートってなんだお・・・
さっきは書いてなかった
気がするお・・・
11文字が何フィートになる
か分かんないお
どうしたらいいお?
Measure
Measure ライブラリ


‣ 単位付き数値クラスを提供
‣ 異なる単位間の変換を定義可能
‣ 単位付き数値の簡易記法を提供

           18
単位付き数値とは?

‣ 173 [cm]
‣ 63 [kg]
‣ 376.730 [Ω]
‣ 101,325 [Pa]
‣ 1.602 10 [C]
         ‒19


                 19
インストール方法
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
使い方
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
単位変換
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
マルチホップ変換
    [in]   2.54倍    [cm]
                           100分の1

       2.54分の1
                   100倍
                               [m]
                   1000倍

連結な単位間での                   1000倍
相互変換の経路を            [mm]
幅優先探索で発見
                     23
簡易記法
irb(main):013:0> require 'measure/support'
irb(main):014:0> Measure.form { 1.m - 1.cm }.to_s
=> "0.99 [m]"




                            24
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
定義済み単位
‣ measure/length を require すると次の単位
  が定義され相互変換可能な状態になる
m, meter          pt, point, dp, didot_point   in, inch
cm, centi_meter   bp, big_point                ft, feet
mm, milli_meter   pc, pica                     yd, yard
km, kilo_meter    aa, angstrom
um, micro_meter   au, AU, astronomical_unit
nm, nano_meter    ly, light_year
                          26
Future works
‣ 定義済み単位を増やす
 ‣ 【急募】地域で定義が違う場合の対応方法
‣ 多次元単位への対応
 ‣ 1 [kg m / s ] 1.kg.m.s(–2)
          2



‣ 複数の単位変換系をサポート
‣ スレッドセーフ化
               27
糸冬 了




2008年10月25日 札幌Ruby会議にて
1 of 28

Recommended

Measure 単位付き数値ライブラリ by
Measure 単位付き数値ライブラリMeasure 単位付き数値ライブラリ
Measure 単位付き数値ライブラリKenta Murata
1.5K views15 slides
校内勉強会のススメ An encouragement to hold workshops In your school by
校内勉強会のススメ An encouragement to hold workshops In your school校内勉強会のススメ An encouragement to hold workshops In your school
校内勉強会のススメ An encouragement to hold workshops In your schoolKenta Murata
1.6K views50 slides
History by
HistoryHistory
Historyguest234cf6
540 views25 slides
Rubykaigi2010mrkn bigdecimal by
Rubykaigi2010mrkn bigdecimalRubykaigi2010mrkn bigdecimal
Rubykaigi2010mrkn bigdecimalKenta Murata
1K views52 slides
Ruby 1.9.3 の新機能と変更点 by
Ruby 1.9.3 の新機能と変更点Ruby 1.9.3 の新機能と変更点
Ruby 1.9.3 の新機能と変更点Kenta Murata
3.6K views65 slides
北海道関数型言語勉強会@札幌#2のお知らせ by
北海道関数型言語勉強会@札幌#2のお知らせ北海道関数型言語勉強会@札幌#2のお知らせ
北海道関数型言語勉強会@札幌#2のお知らせKenta Murata
770 views20 slides

More Related Content

More from Kenta Murata

The world without the literal notation for floating-point numbers by
The world without the literal notation for floating-point numbersThe world without the literal notation for floating-point numbers
The world without the literal notation for floating-point numbersKenta Murata
1.2K views38 slides
The world without float literal by
The world without float literalThe world without float literal
The world without float literalKenta Murata
1K views38 slides
関数型プログラミングの世界 by
関数型プログラミングの世界関数型プログラミングの世界
関数型プログラミングの世界Kenta Murata
3.7K views64 slides
Let's begin Behavior Driven Development using RSpec by
Let's begin Behavior Driven Development using RSpecLet's begin Behavior Driven Development using RSpec
Let's begin Behavior Driven Development using RSpecKenta Murata
1.6K views87 slides
Rubyをたのしくするために私が考えていること by
Rubyをたのしくするために私が考えていることRubyをたのしくするために私が考えていること
Rubyをたのしくするために私が考えていることKenta Murata
1.9K views97 slides
Ruby の懸案事項 by
Ruby の懸案事項Ruby の懸案事項
Ruby の懸案事項Kenta Murata
2.6K views38 slides

More from Kenta Murata(12)

The world without the literal notation for floating-point numbers by Kenta Murata
The world without the literal notation for floating-point numbersThe world without the literal notation for floating-point numbers
The world without the literal notation for floating-point numbers
Kenta Murata1.2K views
The world without float literal by Kenta Murata
The world without float literalThe world without float literal
The world without float literal
Kenta Murata1K views
関数型プログラミングの世界 by Kenta Murata
関数型プログラミングの世界関数型プログラミングの世界
関数型プログラミングの世界
Kenta Murata3.7K views
Let's begin Behavior Driven Development using RSpec by Kenta Murata
Let's begin Behavior Driven Development using RSpecLet's begin Behavior Driven Development using RSpec
Let's begin Behavior Driven Development using RSpec
Kenta Murata1.6K views
Rubyをたのしくするために私が考えていること by Kenta Murata
Rubyをたのしくするために私が考えていることRubyをたのしくするために私が考えていること
Rubyをたのしくするために私が考えていること
Kenta Murata1.9K views
Ruby の懸案事項 by Kenta Murata
Ruby の懸案事項Ruby の懸案事項
Ruby の懸案事項
Kenta Murata2.6K views
5分弱で分かる量子ビット by Kenta Murata
5分弱で分かる量子ビット5分弱で分かる量子ビット
5分弱で分かる量子ビット
Kenta Murata6.8K views
Ruby における絵文字エンコーディング間の相互変換ダイアグラム (案) by Kenta Murata
Ruby における絵文字エンコーディング間の相互変換ダイアグラム (案)Ruby における絵文字エンコーディング間の相互変換ダイアグラム (案)
Ruby における絵文字エンコーディング間の相互変換ダイアグラム (案)
Kenta Murata801 views
Ruby の標準乱数生成器とその改善案 by Kenta Murata
Ruby の標準乱数生成器とその改善案Ruby の標準乱数生成器とその改善案
Ruby の標準乱数生成器とその改善案
Kenta Murata4K views
Ruby 拡張モジュール入門 by Kenta Murata
Ruby 拡張モジュール入門Ruby 拡張モジュール入門
Ruby 拡張モジュール入門
Kenta Murata3.6K views

Recently uploaded

パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可 by
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可Hitachi, Ltd. OSS Solution Center.
13 views22 slides
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 by
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PC Cluster Consortium
68 views12 slides
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PC Cluster Consortium
29 views36 slides
私のMicrosoft Azure 2023 by
私のMicrosoft Azure 2023私のMicrosoft Azure 2023
私のMicrosoft Azure 2023Ryuji Iwata
5 views36 slides
光コラボは契約してはいけない by
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけないTakuya Matsunaga
30 views17 slides
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 by
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
110 views26 slides

Recently uploaded(6)

PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 by PC Cluster Consortium
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by PC Cluster Consortium
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
私のMicrosoft Azure 2023 by Ryuji Iwata
私のMicrosoft Azure 2023私のMicrosoft Azure 2023
私のMicrosoft Azure 2023
Ryuji Iwata5 views
光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga30 views

5分で分かる Measure