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
18
和暦 & 漢数字 gem
Tatsuki Sugiura
April 10, 2019
Tweet
Share
More Decks by Tatsuki Sugiura
See All by Tatsuki Sugiura
103 Early Hints
sugi_0000
1
390
No more parser-inserted js - defer / async を今こそ完全に理解する
sugi_0000
0
62
FLOSSむかしばなし
sugi_0000
0
11
FLOSS とフリーカルチャーの流れ
sugi_0000
0
15
Git overview
sugi_0000
0
25
飲む方の茶会
sugi_0000
0
13
Other Decks in Technology
See All in Technology
利用終了したドメイン名の最強終活〜観測環境を育てて、分析・供養している件〜 / The Ultimate End-of-Life Preparation for Discontinued Domain Names
nttcom
2
180
Platform Engineeringは自由のめまい
nwiizo
4
2.1k
ビジネスモデリング道場 目的と背景
masuda220
PRO
9
490
目の前の仕事と向き合うことで成長できる - 仕事とスキルを広げる / Every little bit counts
soudai
24
7k
10分で紹介するAmazon Bedrock利用時のセキュリティ対策 / 10-minutes introduction to security measures when using Amazon Bedrock
hideakiaoyagi
0
180
エンジニアの育成を支える爆速フィードバック文化
sansantech
PRO
3
1k
飲食店予約台帳を支えるインタラクティブ UI 設計と実装
siropaca
7
1.7k
君も受託系GISエンジニアにならないか
sudataka
2
420
Building Products in the LLM Era
ymatsuwitter
10
5.3k
AndroidデバイスにFTPサーバを建立する
e10dokup
0
250
Developer Summit 2025 [14-D-1] Yuki Hattori
yuhattor
19
6.1k
データの品質が低いと何が困るのか
kzykmyzw
6
1.1k
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
Site-Speed That Sticks
csswizardry
4
380
Building Flexible Design Systems
yeseniaperezcruz
328
38k
The World Runs on Bad Software
bkeepers
PRO
67
11k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
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
和暦で要る部分は外部化 ✓ 事例や情報あればお願いします ✓