Upgrade to Pro — share decks privately, control downloads, hide ads and more …

地方公共団体コードを便利に扱うためのGemを作った

ikuma-t
January 20, 2022

 地方公共団体コードを便利に扱うためのGemを作った

K-Ruby#28、LT会の登壇資料です

ikuma-t

January 20, 2022
Tweet

More Decks by ikuma-t

Other Decks in Programming

Transcript

  1. 2022.01.20 ikuma-t
    地方公共団体コードを

    便利に扱うためのGemを作った
    #はじめてのGem
    K-Ruby#28

    View full-size slide

  2. ikuma-t
    ・FJORD BOOT CAMPで学習中です!

    ・趣味:ツール・自動化、ドット絵、作曲家巡り

    ・住んでいるところ:千葉県

    ・今年のお正月は鹿児島黒牛の牛しゃぶを食べました@千葉
    K-Ruby

    初参加です
      
    @ikuma-t ikuma-t セットプチフォッカ
    ikuma-t
     IkumaTadokoro
    自己紹介

    View full-size slide

  3. 地方公共団体コードを

    便利に扱うためのGemを作った話
    今回話すこと

    View full-size slide

  4. つくったもの「jp_local_gov」
    日本の地方公共団体コードと市区町村の情報を変換できるGem
    ・鹿児島県

    ・鹿児島市

    ・県庁あり
    市区町村情報
    jp_local_gov
    4 6 2 0 1 2
    地方公共団体コード
    地方公共団体コード
    市区町村にわりふられた一意のコード
    都道府県 市区町村 検査数字

    View full-size slide

  5. なんで作った?

    View full-size slide

  6. 現在開発中のサービスで

    必要だったから!!

    View full-size slide

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

    View full-size slide

  8. Gemで情報を持てたらよさそう

    →作ってみるか!

    View full-size slide

  9. なにができるの?

    View full-size slide

  10. できること(地方公共団体コードと自治体情報の変換)
    JpLocalGov.find
    id(地方公共団体コード)検索を行う

    @param code[String]

    @return [JpLocalGov::LocalGov]
    JpLocalGov.where
    条件検索(複数の場合AND)を行う

    @param condition[Hash]

    @return [Array]

    View full-size slide

  11. できること(Railsで使用する)
    local_government
    includeされると、引数で指定したカラムに対して、

    local_governmentメソッドが使用可能になる


    このメソッドを経由して、以下の情報を表示できる

    ・都道府県

    ・市区町村

    ・都道府県庁所在地かどうか
    【テーブル定義】

    insurance_fees

    ・id: integer

    ・local_gov_code: string

    View full-size slide

  12. できること(その他)
    【テーブル定義】

    insurance_fees

    ・id: integer

    ・local_gov_code: string
    ・コードが有効かどうかのチェック(バリデーション用)

    ・ランダムな地方自治体情報の生成(テストデータ用)

    ・すべての自治体情報を返す(セレクトボックス用)
    ...詳しくはリポジトリのREADMEを参照
    使いそうなメソッドは順次追加中

    View full-size slide

  13. くふうしたところ

    View full-size slide

  14. データ更新処理の自動化
    このGemで一番重要な、地方公共団体データの更新処理を自動化
    総務省HP
    地方公共団体

    コード
    GitHub Actions(月1)
    ...
    北海道
    青森県
    沖縄県
    sqlite3
    ソートと

    分割
    差分あり

    →PR作成
    チェック

    してマージ

    View full-size slide

  15. RBS対応
    ・デフォルトでもスケルトンを作成するように

    なったのでこのGemでも対応
    ・CIでSteepを実行して、型チェック
    https://bit.ly/3Kec8sB

    View full-size slide

  16. Gemをつくってみた感想

    View full-size slide

  17. 感想:はじめてのGemをつくってみて
    ・作り手になることで、OSSがより身近になった
    ・今まで機能しか見ていなかったところから、それ以外の構成とか、

     その先にいるメンテナの労力が、少しだけわかるようになった
    ・もっと力をつけてOSSに貢献できるよう、今年もがんばりたい

    View full-size slide

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

    View full-size slide