Golang(Gin)によるシステム構築を始めました
当社では、高速・高効率なWeb開発を可能にするGo言語(Golang)を本格導入し、軽量WebフレームワークであるGinを用いたシステム開発を開始しました。

現在は主に管理画面の構築において、GinによるMVCアーキテクチャに則った開発を進めております。

主な技術スタックと構成
MVC構成:明確な責務分離により、保守性と拡張性を担保

GORMを活用したModel層:データベース操作を簡潔かつ堅牢に実装

JWT(JSON Web Token)による認証機能:セキュアなログイン認証を実現

Ginのミドルウェア機能を利用した認証処理:各ルートでの認可制御を一元化

Service / Repository / Interfaceレイヤーによる責務分割:ビジネスロジック・データアクセス・抽象化の分離により、テスト性と柔軟性を確保

APIではなくViewレンダリングから始めた理由
初期段階ではREST APIの設計よりも、あえてHTMLテンプレートによるViewレンダリングを優先しております。これにより以下のような利点を得られます

画面遷移や挙動を早期に確認可能:UIとバックエンドの繋がりを即時に確認できるため、要件やUIのイメージを関係者とすり合わせやすくなります

学習コストの最適化:APIとフロントエンドの完全分離よりも構築速度が早く、社内ナレッジの蓄積にも向いています

初期導入がシンプル:テンプレートエンジンを用いたView出力により、ルーティングやミドルウェア構成を明快に確認できます

Golang導入の背景
Go言語はシンプルな文法と高いパフォーマンスにより、堅牢かつスケーラブルなWebアプリケーション構築に非常に適しています。今後はAPI化やマイクロサービス構成も視野に入れつつ、要件に応じた柔軟な開発を行ってまいります。

  • C:
    • .env
    • .env_test
    • gin-bin.exe
    • go.mod
    • go.sum
    • main.go
    • output.txt
    • pf.bat
    • README.md
    • stampp.co.jp
    • start.bat
    • assets
      • css
        • admin.css
      • images
        • logo.png
      • js
        • .eslintrc.json
        • admin.js
    • internal
      • config
        • config.go
        • logging.go
      • controllers
        • admin_controller.go
      • cron
        • bitflyer_execution_cron.go
      • domain
        • models
          • admin.go
          • event_categories.go
          • master.go
        • repositories
          • admin_repository.go
          • master_repository.go
          • pagination_query.go
      • dto
        • admin_dto.go
        • auth_dto.go
        • form_message.go
        • master_dto.go
        • pagination_dto.go
      • infra
        • db.go
        • inializer.go
        • logs
          • app-2024-09-03.log
          • app.log
      • injections
        • admin_injection.go
      • interfaces
        • admin_controller_interface.go
        • admin_repository_interface.go
        • admin_service_interface.go
        • master_repository_interface.go
        • master_service_interface.go
      • middlewares
        • admin_auth_middleware.go
        • request_logger_middleware.go
      • migrations
        • migration.go
      • multitemplate
        • paginate_func.go
        • reder.go
      • route
        • admin_route.go
        • web.go
      • seeder
        • seeder.go
        • seeders
          • seed_admins.go
          • seed_masters.go
      • services
        • admin_service.go
        • admin_service_test.go
        • master_service.go
      • view
        • templates
          • layout.html
          • template1.html
          • admins
            • create.html
            • edit.html
            • index.html
            • login.html
    • pkg
      • flash_message.go
      • pagination.go
      • validation_error_parse.go