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
ikuma-t
January 20, 2022
Programming
1
600
地方公共団体コードを便利に扱うためのGemを作った
K-Ruby#28、LT会の登壇資料です
ikuma-t
January 20, 2022
Tweet
Share
More Decks by ikuma-t
See All by ikuma-t
見た目から始める生産性向上
ikumatadokoro
10
1.5k
ぼくが 美容師さんに伝えたかった バンドの話
ikumatadokoro
0
71
Railsアプリをコスパよく読むための環境整備
ikumatadokoro
1
360
HTTPを手で書いて学ぶ ファイルアップロードの仕組み
ikumatadokoro
54
22k
たどころくん1号を支える技術
ikumatadokoro
0
150
なんだか うまくいっている を 自分たちの いつもどおり に 定着させるためのチーム戦略
ikumatadokoro
3
510
プロダクト開発を支えるペースメーカー
ikumatadokoro
1
190
新登場!PopoverAPIでSide Modal(anai)を作ろう!
ikumatadokoro
0
310
Hasuraってナンダ!?
ikumatadokoro
1
390
Other Decks in Programming
See All in Programming
Code Reviews
bkuhlmann
4
900
Compose-View Interop in Practice (mDevCamp 2024)
stewemetal
0
170
MetricKitで予期せぬ終了を検知する話 / Detect unexpected termination with MetricKit
nekowen
1
200
はてなにおける CSS Modules、及び CSS Modules に足りないもの / CSS Modules in Hatena, and CSS Modules missing parts
mizdra
7
990
Ruby on Fails - effective error handling with Rails conventions
talyssonoc
0
160
PHPはいつから死んでいるかの調査
chiroruxx
2
420
敵対的ポイフル
futabato
0
140
WebGLで始める コンピュータグラフィックス入門
heller77
0
330
パフォーマンスを求めてDBに機能を寄せる戦略
aoyagikouhei
0
110
VS Code をプロダクトにどう取り込むか
onomax
1
770
Snowflakeで眠ったデータを起こそう!
estie
0
160
大規模UIKitベースアプリへのTCAの段階的導入/gradual-adoption-of-tca-in-a-large-scale-uikit-based-app
takehilo
2
210
Featured
See All Featured
BBQ
matthewcrist
80
8.8k
A designer walks into a library…
pauljervisheath
201
23k
Visualization
eitanlees
137
14k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
26
2.3k
Web Components: a chance to create the future
zenorocha
306
41k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
358
22k
Building Better People: How to give real-time feedback that sticks.
wjessup
356
18k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
20
1.8k
Side Projects
sachag
451
41k
Designing for Performance
lara
601
67k
Teambox: Starting and Learning
jrom
128
8.4k
Rebuilding a faster, lazier Slack
samanthasiow
74
8.3k
Transcript
2022.01.20 ikuma-t 地方公共団体コードを 便利に扱うためのGemを作った #はじめてのGem K-Ruby#28
ikuma-t ・FJORD BOOT CAMPで学習中です! ・趣味:ツール・自動化、ドット絵、作曲家巡り ・住んでいるところ:千葉県 ・今年のお正月は鹿児島黒牛の牛しゃぶを食べました@千葉 K-Ruby 初参加です
@ikuma-t ikuma-t セットプチフォッカ ikuma-t IkumaTadokoro 自己紹介
地方公共団体コードを 便利に扱うためのGemを作った話 今回話すこと
つくったもの「jp_local_gov」 日本の地方公共団体コードと市区町村の情報を変換できるGem ・鹿児島県 ・鹿児島市 ・県庁あり 市区町村情報 jp_local_gov 4 6 2
0 1 2 地方公共団体コード 地方公共団体コード 市区町村にわりふられた一意のコード 都道府県 市区町村 検査数字
なんで作った?
現在開発中のサービスで 必要だったから!!
None
市区町村ごとにレコードを持たないといけない 市区町村情報をメンテするのはダルい
Gemで情報を持てたらよさそう →作ってみるか!
なにができるの?
できること(地方公共団体コードと自治体情報の変換) JpLocalGov.find id(地方公共団体コード)検索を行う @param code[String] @return [JpLocalGov::LocalGov] JpLocalGov.where 条件検索(複数の場合AND)を行う @param
condition[Hash] @return [Array]
できること(Railsで使用する) local_government includeされると、引数で指定したカラムに対して、 local_governmentメソッドが使用可能になる このメソッドを経由して、以下の情報を表示できる ・都道府県 ・市区町村 ・都道府県庁所在地かどうか 【テーブル定義】 insurance_fees
・id: integer ・local_gov_code: string
できること(その他) 【テーブル定義】 insurance_fees ・id: integer ・local_gov_code: string ・コードが有効かどうかのチェック(バリデーション用) ・ランダムな地方自治体情報の生成(テストデータ用) ・すべての自治体情報を返す(セレクトボックス用)
...詳しくはリポジトリのREADMEを参照 使いそうなメソッドは順次追加中
くふうしたところ
データ更新処理の自動化 このGemで一番重要な、地方公共団体データの更新処理を自動化 総務省HP 地方公共団体 コード GitHub Actions(月1) ... 北海道 青森県
沖縄県 sqlite3 ソートと 分割 差分あり →PR作成 チェック してマージ
RBS対応 ・デフォルトでもスケルトンを作成するように なったのでこのGemでも対応 ・CIでSteepを実行して、型チェック https://bit.ly/3Kec8sB
Gemをつくってみた感想
感想:はじめてのGemをつくってみて ・作り手になることで、OSSがより身近になった ・今まで機能しか見ていなかったところから、それ以外の構成とか、 その先にいるメンテナの労力が、少しだけわかるようになった ・もっと力をつけてOSSに貢献できるよう、今年もがんばりたい
ありがとうございました