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
21
和暦 & 漢数字 gem
Tatsuki Sugiura
April 10, 2019
Tweet
Share
More Decks by Tatsuki Sugiura
See All by Tatsuki Sugiura
フロントエンドから触れるHTTPパフォーマンス
sugi_0000
0
1
103 Early Hints
sugi_0000
1
610
No more parser-inserted js - defer / async を今こそ完全に理解する
sugi_0000
0
69
FLOSSむかしばなし
sugi_0000
0
12
FLOSS とフリーカルチャーの流れ
sugi_0000
0
17
Git overview
sugi_0000
0
28
飲む方の茶会
sugi_0000
0
16
Other Decks in Technology
See All in Technology
mruby(PicoRuby)で ファミコン音楽を奏でる
kishima
1
290
人と組織に偏重したEMへのアンチテーゼ──なぜ、EMに設計力が必要なのか/An antithesis to the overemphasis of people and organizations in EM
dskst
6
640
Go で言うところのアレは TypeScript で言うとコレ / Kyoto.なんか #7
susisu
7
1.9k
Goss: New Production-Ready Go Binding for Faiss #coefl_go_jp
bengo4com
0
1.1k
Preferred Networks (PFN) とLLM Post-Training チームの紹介 / 第4回 関東Kaggler会 スポンサーセッション
pfn
PRO
1
250
DuckDB-Wasmを使って ブラウザ上でRDBMSを動かす
hacusk
1
120
Yahoo!広告ビジネス基盤におけるバックエンド開発
lycorptech_jp
PRO
1
280
株式会社ARAV 採用案内
maqui
0
360
ソフトウェア エンジニアとしての 姿勢と心構え
recruitengineers
PRO
8
2.5k
現場が抱える様々な問題は “組織設計上” の問題によって生じていることがある / Team-oriented Organization Design 20250827
mtx2s
6
1.8k
Android Studio の 新しいAI機能を試してみよう / Try out the new AI features in Android Studio
yanzm
0
280
退屈なことはDevinにやらせよう〜〜Devin APIを使ったVisual Regression Testの自動追加〜
kawamataryo
3
750
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
820
Balancing Empowerment & Direction
lara
2
590
Rails Girls Zürich Keynote
gr2m
95
14k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.5k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
Music & Morning Musume
bryan
46
6.7k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.6k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
GraphQLとの向き合い方2022年版
quramy
49
14k
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
和暦で要る部分は外部化 ✓ 事例や情報あればお願いします ✓