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

開発生産性向上のためにGo Template Repositoryを作った話

noru
November 20, 2024
5

開発生産性向上のためにGo Template Repositoryを作った話

noru

November 20, 2024
Tweet

Transcript

  1. 自己紹介 - noru - software developer - 普段はBackend (Go) を書いたり、Infra構築したり

    - アプリケーション設計が好き - 最近、ポケポケにハマっています
  2. Go Template Repositoryで悩みを解決する - 似たようなカスタムラーやログ等の実装を再開発している - Template Repositoryに組み込むことで解決 - ライブラリ選定について都度議論している

    - Template Repositoryで使用しているライブラリの選定理由をドキュメント に残して、議論時間を短縮することが狙い - 各プロジェクトによって最適なライブラリは異なるので、参考程度に - 頻度が多いレビュー項目を減らしたい - Template Repositoryにサンプル実装を組み込む
  3. - 共有ライブラリを実装する - 今回は採用しませんでした - 理由としては、メンテナンス工数をどれだけ確保できるか未知数であり、管理責任を負えないため です - Template Repositoryは、あくまで「新規開発の立ち上げを手助けする

    」位置付けにしました - 各プロジェクトで、Template Repositoryを使う or 使わないを意思決定してもらう - 各プロジェクトメンバーごとで、 Template Repositoryのコードを含め責任を持つ - Template Repositoryの改善点があれば、共有していただく Go Template Repository以外の選択肢
  4. Go Template Repositoryで実装したもの一覧 - APIサーバー - 環境変数 - ログ -

    カスタムエラー - DataBase周り - APIドキュメント - CI (GitHub Actions) - Dockerでコンテナ化 - CRUDのサンプル実装 - 便利パッケージ - DI - Lint - Test - …
  5. バリデーション ozzo-validationライブラリを採用 (go-playground/validatorの方がよかったかも...) - ozzo-validation - メリット - コードでバリデーションできるので、コンパイルエラーに引っかかる -

    デメリット - メンテされていない - go-playground/validator - メリット - メンテされている - 構造体タグでバリデーションするので、網羅性の担保がしやすい (後ほど気付きました ) - デメリット - 構造体タグでバリデーションするので、コンパイルエラーにならない