Slide 1

Slide 1 text

2022.01.20 ikuma-t 地方公共団体コードを 便利に扱うためのGemを作った #はじめてのGem K-Ruby#28

Slide 2

Slide 2 text

ikuma-t ・FJORD BOOT CAMPで学習中です! ・趣味:ツール・自動化、ドット絵、作曲家巡り ・住んでいるところ:千葉県 ・今年のお正月は鹿児島黒牛の牛しゃぶを食べました@千葉 K-Ruby 初参加です    @ikuma-t ikuma-t セットプチフォッカ ikuma-t  IkumaTadokoro 自己紹介

Slide 3

Slide 3 text

地方公共団体コードを 便利に扱うためのGemを作った話 今回話すこと

Slide 4

Slide 4 text

つくったもの「jp_local_gov」 日本の地方公共団体コードと市区町村の情報を変換できるGem ・鹿児島県 ・鹿児島市 ・県庁あり 市区町村情報 jp_local_gov 4 6 2 0 1 2 地方公共団体コード 地方公共団体コード 市区町村にわりふられた一意のコード 都道府県 市区町村 検査数字

Slide 5

Slide 5 text

なんで作った?

Slide 6

Slide 6 text

現在開発中のサービスで 必要だったから!!

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

市区町村ごとにレコードを持たないといけない 市区町村情報をメンテするのはダルい

Slide 9

Slide 9 text

Gemで情報を持てたらよさそう →作ってみるか!

Slide 10

Slide 10 text

なにができるの?

Slide 11

Slide 11 text

できること(地方公共団体コードと自治体情報の変換) JpLocalGov.find id(地方公共団体コード)検索を行う @param code[String] @return [JpLocalGov::LocalGov] JpLocalGov.where 条件検索(複数の場合AND)を行う @param condition[Hash] @return [Array]

Slide 12

Slide 12 text

できること(Railsで使用する) local_government includeされると、引数で指定したカラムに対して、 local_governmentメソッドが使用可能になる このメソッドを経由して、以下の情報を表示できる ・都道府県 ・市区町村 ・都道府県庁所在地かどうか 【テーブル定義】 insurance_fees ・id: integer ・local_gov_code: string

Slide 13

Slide 13 text

できること(その他) 【テーブル定義】 insurance_fees ・id: integer ・local_gov_code: string ・コードが有効かどうかのチェック(バリデーション用) ・ランダムな地方自治体情報の生成(テストデータ用) ・すべての自治体情報を返す(セレクトボックス用) ...詳しくはリポジトリのREADMEを参照 使いそうなメソッドは順次追加中

Slide 14

Slide 14 text

くふうしたところ

Slide 15

Slide 15 text

データ更新処理の自動化 このGemで一番重要な、地方公共団体データの更新処理を自動化 総務省HP 地方公共団体 コード GitHub Actions(月1) ... 北海道 青森県 沖縄県 sqlite3 ソートと 分割 差分あり →PR作成 チェック してマージ

Slide 16

Slide 16 text

RBS対応 ・デフォルトでもスケルトンを作成するように なったのでこのGemでも対応 ・CIでSteepを実行して、型チェック https://bit.ly/3Kec8sB

Slide 17

Slide 17 text

Gemをつくってみた感想

Slide 18

Slide 18 text

感想:はじめてのGemをつくってみて ・作り手になることで、OSSがより身近になった ・今まで機能しか見ていなかったところから、それ以外の構成とか、  その先にいるメンテナの労力が、少しだけわかるようになった ・もっと力をつけてOSSに貢献できるよう、今年もがんばりたい

Slide 19

Slide 19 text

ありがとうございました