SlideShare a Scribd company logo
1 of 98
Download to read offline
matzり、終了!
次世代数値演算
   ライブラリ
    Decimal
という再発明の意義
 筑波大学 斎藤 匡
「Ruby逆引きレシピ」
   by Ruby札幌
「小数の計算」
拙作ライブラリ
Decimalが載っ
 ております
目の前のジュ
ンク堂書店で
売っています
「Ruby逆引きレシピ」
  by Ruby札幌
!買ってね!
Decimal
Decimal??
「任意精度
  小数演算
ライブラリ」
Floatより正確
な小数の計算
でも
今日、俺は宣伝し
に来たんじゃない
   (建前)
前提
ソフトウェア
ウェアソフトウェアソ
フトウェアソフトウェ
アソフトウェアソフト
ウェアソフトウェアソ
フトウェアソフトウェ
アソフトウェアソフト
ウェアソフトウェアソ
フトウェアソフトウェ
コモディティ
みんな「再発明」
より良い「再発
明」のしかた
Decimalは「具
体例」の一つ
一般的な「定
理」を探りたい
  ↑目的
   (建前)
Decimal??
   (2)
標準添付
「BigDecimal」
を作り直した感
  じの何か
BigDecimalの
   再発明
“Better BigDecimal”
          ↓
  Decimal (ヲレヲレ)
何故?
二点
実装がダサい
設計がダサい
133,553
   vs
 38,649
(1)
実装
について。
BigDecimal:
133,553 bytes
     vs
  Decimal:
38,649 bytes
実装量の違い
約 3.5 倍
コンパクト!!
何故?
再利用!
(原理はじめ)
そもそも
小数は
整数の組
で表せる
3.14
(314, 2)
「314」の
「下から2桁」
 に小数点
3.14159265358979
(314159265358979, 14)
(大きい整数, 小さい整数)
小数の計算
  ≒
整数の計算
(原理ここまで)
小さな整数
問題無し
大きな整数
がんばる必要
BigDecimalは
どうしてる?
自前!
133,553 – 38,649 =
 94,904 ←ココ!
Decimalは?
大きな整数
    ↓
 Bignum
他人の褌!
副作用
安定・高速
いいことばっか
定理1
再利用重要
設計について
x.sqrt
BigDecimalで
   平方根
普通
sqrt(x)
だろjk
BigDecimal(”1.1”).to_s
#=> 0.11E1
“1.1” じゃない
      の?
Rails
(ActiveSupport)
“1.1” になるよう上書き
違和感
=
使い辛さ
Decimalでは
sqrt(x) # 予定
x.to_s # => “1.1”
自然
脳の互換性重要
定理2
慣習重要
そのうえで
再発明が受け入れ
 られるには
定理3
シンプル
定理4
速い
必要
シンプル
BigDecimal.instance_methods(false).size
                  vs
 Decimal.instance_methods(false).size
50
vs
37
作る方も
使う方も
  楽
スピード
ほとんどのケース
   で
数割〜数十倍以上
Decimalが高速
ということで
再利用
 慣習
シンプル
 速度
Decimalは
 「再発明」として
十分な価値をもった
再利用
 慣習
シンプル
 速度
Happy
reinvention!
Decimal
プロジェクト歌

More Related Content

Viewers also liked

Service design changes organization
Service design changes organizationService design changes organization
Service design changes organizationNaoka MISAWA
 
正規表現を覚えよう(中級編)
正規表現を覚えよう(中級編)正規表現を覚えよう(中級編)
正規表現を覚えよう(中級編)Kazuo Suzuki
 
『ストーリーテリング ~よい聞き手になるための学習~』第12回 POStudy 〜プロダクトオーナーシップ勉強会〜
『ストーリーテリング ~よい聞き手になるための学習~』第12回 POStudy 〜プロダクトオーナーシップ勉強会〜『ストーリーテリング ~よい聞き手になるための学習~』第12回 POStudy 〜プロダクトオーナーシップ勉強会〜
『ストーリーテリング ~よい聞き手になるための学習~』第12回 POStudy 〜プロダクトオーナーシップ勉強会〜満徳 関
 
デザイン提案の参考資料
デザイン提案の参考資料デザイン提案の参考資料
デザイン提案の参考資料Tsutomu Sogitani
 
マイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景に
マイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景にマイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景に
マイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景にYusuke Suzuki
 

Viewers also liked (6)

Service design changes organization
Service design changes organizationService design changes organization
Service design changes organization
 
Yahoo! JAPANとRiak
Yahoo! JAPANとRiakYahoo! JAPANとRiak
Yahoo! JAPANとRiak
 
正規表現を覚えよう(中級編)
正規表現を覚えよう(中級編)正規表現を覚えよう(中級編)
正規表現を覚えよう(中級編)
 
『ストーリーテリング ~よい聞き手になるための学習~』第12回 POStudy 〜プロダクトオーナーシップ勉強会〜
『ストーリーテリング ~よい聞き手になるための学習~』第12回 POStudy 〜プロダクトオーナーシップ勉強会〜『ストーリーテリング ~よい聞き手になるための学習~』第12回 POStudy 〜プロダクトオーナーシップ勉強会〜
『ストーリーテリング ~よい聞き手になるための学習~』第12回 POStudy 〜プロダクトオーナーシップ勉強会〜
 
デザイン提案の参考資料
デザイン提案の参考資料デザイン提案の参考資料
デザイン提案の参考資料
 
マイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景に
マイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景にマイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景に
マイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景に
 

More from Tadashi Saito

From String#undump to String#unescape
From String#undump to String#unescapeFrom String#undump to String#unescape
From String#undump to String#unescapeTadashi Saito
 
Rationalを(もうちょっと)最適化してみた
Rationalを(もうちょっと)最適化してみたRationalを(もうちょっと)最適化してみた
Rationalを(もうちょっと)最適化してみたTadashi Saito
 
Rationalを最適化してみた
Rationalを最適化してみたRationalを最適化してみた
Rationalを最適化してみたTadashi Saito
 
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby BookRuby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby BookTadashi Saito
 
拡張ライブラリを作るとリア充
拡張ライブラリを作るとリア充拡張ライブラリを作るとリア充
拡張ライブラリを作るとリア充Tadashi Saito
 

More from Tadashi Saito (6)

From String#undump to String#unescape
From String#undump to String#unescapeFrom String#undump to String#unescape
From String#undump to String#unescape
 
Rationalを(もうちょっと)最適化してみた
Rationalを(もうちょっと)最適化してみたRationalを(もうちょっと)最適化してみた
Rationalを(もうちょっと)最適化してみた
 
Rationalを最適化してみた
Rationalを最適化してみたRationalを最適化してみた
Rationalを最適化してみた
 
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby BookRuby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
 
詳解! Decimal
詳解! Decimal詳解! Decimal
詳解! Decimal
 
拡張ライブラリを作るとリア充
拡張ライブラリを作るとリア充拡張ライブラリを作るとリア充
拡張ライブラリを作るとリア充
 

Recently uploaded

情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイントonozaty
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521Satoshi Makita
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )iwashiira2ctf
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計atsushi061452
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdkokinagano2
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルCRI Japan, Inc.
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。iPride Co., Ltd.
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員Sadaomi Nishi
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用KLab Inc. / Tech
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperleger Tokyo Meetup
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑Akihiro Kadohata
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一瑛一 西口
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルCRI Japan, Inc.
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfTakayuki Nakayama
 

Recently uploaded (14)

情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 

次世代数値演算 ライブラリ Decimal という再発明の意義