Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
和暦 & 漢数字 gem
Search
Tatsuki Sugiura
April 10, 2019
Technology
0
20
和暦 & 漢数字 gem
Tatsuki Sugiura
April 10, 2019
Tweet
Share
More Decks by Tatsuki Sugiura
See All by Tatsuki Sugiura
103 Early Hints
sugi_0000
1
550
No more parser-inserted js - defer / async を今こそ完全に理解する
sugi_0000
0
68
FLOSSむかしばなし
sugi_0000
0
11
FLOSS とフリーカルチャーの流れ
sugi_0000
0
16
Git overview
sugi_0000
0
26
飲む方の茶会
sugi_0000
0
14
Other Decks in Technology
See All in Technology
Model Mondays S2E02: Model Context Protocol
nitya
0
220
Clineを含めたAIエージェントを 大規模組織に導入し、投資対効果を考える / Introducing AI agents into your organization
i35_267
4
1.6k
あなたの声を届けよう! 女性エンジニア登壇の意義とアウトプット実践ガイド #wttjp / Call for Your Voice
kondoyuko
4
440
地図も、未来も、オープンに。 〜OSGeo.JPとFOSS4Gのご紹介〜
wata909
0
110
Amazon Bedrockで実現する 新たな学習体験
kzkmaeda
2
540
標準技術と独自システムで作る「つらくない」SaaS アカウント管理 / Effortless SaaS Account Management with Standard Technologies & Custom Systems
yuyatakeyama
3
1.2k
250627 関西Ruby会議08 前夜祭 RejectKaigi「DJ on Ruby Ver.0.1」
msykd
PRO
2
270
GeminiとNotebookLMによる金融実務の業務革新
abenben
0
230
登壇ネタの見つけ方 / How to find talk topics
pinkumohikan
5
440
AWS CDK 実践的アプローチ N選 / aws-cdk-practical-approaches
gotok365
6
740
エンジニア向け技術スタック情報
kauche
1
250
Javaで作る RAGを活用した Q&Aアプリケーション
recruitengineers
PRO
1
110
Featured
See All Featured
Designing for humans not robots
tammielis
253
25k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Site-Speed That Sticks
csswizardry
10
660
Six Lessons from altMBA
skipperchong
28
3.8k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
How to Ace a Technical Interview
jacobian
277
23k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Transcript
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 和暦&漢数字gem 平成も終わるので和暦gemを紹介+ 杉浦達樹
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 今から話す内容 3年くらい前に作った和暦の gemの紹介
✓ 漢数字処理を分離して新規gem にします ✓ 事例とかあったら是非教えてく ださい ✓
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 - wareki (和暦)
gem http://github.com/sugi/wareki
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 和暦に gem 要るの?
大抵個別案件で適当に書けるが ✓ でも微妙に面倒 全角や漢数字の面倒見たくない ✓ 明治6年より前は困る ✓ ✓ 別に難しくはないけど面倒 → 決定版を作ってもう悩むのをや めよう! ✓ ✓
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 和暦 gem の売り
日本語日付パース出来ます! ✓ 日付を日本語で色々フォーマッ トできます ✓ 日本の旧暦扱えます ✓ 大化から全元号いけます ✓
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 日本語パース 半角全角漢数字スタイル混在 ✓
一文字年号、旧字元号 ✓ Date.parse("平成27年1二月8日") # => 2015-12-8 Date.parse("㍼一〇年5月二十八日") # => 1935-05-28 Date.parse("西暦10年5月3日") # => 10-5-3 Date.parse("紀元前203年12月31日") # => -203-12-31
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 日本語パース 旧暦 ✓
閏月 ✓ Date.parse("明治5年12月2日") # => 1872-12-31 Date.parse("安政7年3月17日") # => 1860-4-7 Date.parse("元仁1年うるう7月1日") # => 1224-8-17
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 日本語パース 元年、正月、元日、元旦 ✓
Date.parse("元仁二年 元日") # => 1225-2-9 Date.parse("平成元年元旦") # => 1989-1-1
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 日本語パース 朔日、 晦日(その月の最終日)
✓ Date.parse("元仁元年閏七月朔日") # => 1224-8-17 Date.parse("寿永三年 五月 晦日") # => 1184-7-9 Date.parse("平成12年十二月晦日") # => 2000-12-31 Date.parse("平成31年2月晦日") # => 2019-02-28
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 日本語パース 月の別名 ✓
Date.parse("安政七年 弥生") # => 1860-03-22 Date.parse("平成30年神無月5日") # => 2018-10-05
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 日本語パース 大字(だいじ) ✓
Date.parse("㍻ 拾年 肆月 陸日") # => 1998-04-06 Date.parse("安政漆年參月廿日") # => 1860-4-10 Date.parse("皇紀貳阡皕卌年") # => 1580-01-17
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 日本語へのフォーマット d =
Date.today d.strftime("%JF") # => "平成三十一年四月十日" d.strftime("%Jf") # => "平成31年4月10日" stftime ラッパーでフォーマット 文字列追加 %JF: 漢字 ✓ %Jf: 半角 ✓ 他にもたくさん ✓ ✓
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 まとめ: 平成も終わるので この機会に内部は標準Dateオ
ブジェクトに ✓ 古い文書を扱う人にはぜひ試し てもらいたい 歴史上の人物の年齢を計算したりす るのが楽です ✓ ✓ 以上和暦 gem の紹介 ✓
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 - 漢数字gem 作ります
http://github.com/sugi/ ya_kansuji
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 漢数字gem要る? 和暦の漢数字処理を分離したい ✓
これもまあ個別に書けるけど ちゃんとパースするのが微妙に面倒 ✓ 色々フォーマットあればまあ便利? ✓ ✓ 別に難しくはないけど面倒 → ライブラリに任せたい ✓ ✓
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 漢数字 gem に必要な機能
漢数字や漢字混じり数字文字列 ⇔ 数値 単にこれだけだけど…… ✓ 網羅しようとすると意外に色々 網羅してあるだけでも意味がありそう ✓ 事例あれば教えて下さい ✓ ✓
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 漢数字文字列 → 数値
漢数字 (千二百, 一二〇〇) ✓ 全角数字 (1234) ✓ 漢字数字混在 (1億30万) 数字コンマ混じり (3億5,000万) ✓ ✓ 位取り (千〇二十八, 5万0030) ✓ 大字 (千皕卅肆) ✓
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 数値 → 漢数字文字列
練習問題にあるパターン: 123456789 => "一億二千三百四十五万六千七百八十九" ✓ シンプルだけど、これ実際に使 うかな? ✓
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 数値 → 漢数字
(実例) 『一橋社会科学』編集委員会: 六億五七八三万七六九一人 a. 約八千万人 / 八百万人 / 八千人 b. 一九四五年 / 二五〇〇枚 c. 十三世紀 / 二十世紀 / 六十五万票 d. ✓ (http://www.soc.hit-u.ac.jp/ journal/hyouki.pdf)
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 数値 → 漢数字
(実例) 「公用文作成の要領」方式: 100億, 30万円 / 5,000 ✓ 行政司法協会方式: 1,200億 / 2億58万6,300円 ✓ 裁判判例縦書き方式: 一二万〇〇五六円 ✓ 最高裁判例横書き方式: 5万0539円 ✓
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 選択式フォーマッタ to_kan(12340005) #
=> "千二百三十四万五" to_kan(12340005, :simple) # => "千二百三十四万五" to_kan(12340005, :gov) # => "1234万, 5" to_kan(12340005, :lawyer) # => "1,234万5" to_kan(12340005, :judic) # => "一二三四万〇〇〇五" to_kan(12340005, :judic_v) # => "1234万0005"
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 ユーザ拡張フォーマッタ YaKansuji.register_formatter :hoge,
-> (num, opts = {}) { if num == 0 ; "" elsif num == 1; "いち" elsif num == 2; "に" else; "たくさん" end } to_kan(2, :hoge) # => "に" to_kan(123, :hoge) # => "たくさん"
和暦&漢数字gem - 平成も終わるので和暦gemを紹介+ Powered by Rabbit 2.2.1 以上 漢数字 gem
和暦で要る部分は外部化 ✓ 事例や情報あればお願いします ✓