SlideShare a Scribd company logo
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 organization
Naoka 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#unescape
Tadashi 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 Book
Tadashi Saito
 
詳解! Decimal
詳解! Decimal詳解! Decimal
詳解! Decimal
Tadashi 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

FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
atsushi061452
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 

Recently uploaded (15)

FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 

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