GolangでINIファイルを読み込む方法とテンプレートプロジェクトの作成
目次
golangでiniファイルを読み込むサンプル
GolangでINIファイルを読み込む方法と、それを活用したテンプレートプロジェクトの作成方法を紹介します。アプリケーションで設定値やAPIキーなどを管理する際に役立ちます。
- GolangでINIファイルを読み込むサンプル
- プロジェクトのファイル構成を作成し、必要なファイルを作成します。
- go.modファイルを作成し、プロジェクトの依存関係を管理します。
- Config.iniファイルに設定値やAPIキーを記載します。
- config.goファイルでINIファイルを読み込み、構造体に詰め込む処理を実装します。
- Trade.goファイルでconfig.goの機能を利用し、INIファイルの内容を表示します。
ファイル構成
E:.
│ Config.ini
│ go.mod
│ go.sum
│ Trade.go
│
└─Config
Config.go
初期ファイル作成
作り方は何でも良いがとりあえず
mkdir Config
touch Config.ini
touch Trade.go
touch Config/Config.go
mod 作成
go mod init config
modファイルとsumファイルを作成します。
Config.ini
ファイルの中身にはこのように記載します。
[bitflyer]
api_key = XXXXXX
api_secret = XXXXXXXXXXXXXXXXX
XXXXには実際に利用するサービスのAPIキーやシークレットキーを記載します。
config.go
iniファイルを読み込み、構造体に詰め込む部分を記載します。
コード全体は下記の通り
package config
import (
"log"
"os"
"gopkg.in/ini.v1"
)
type ConfigList struct {
ApiKey string
ApiSecret string
}
var Config ConfigList
func init() {
cfg, err := ini.Load("config.ini")
if err != nil {
log.Printf("Failed to read file: %v", err)
os.Exit(1)
}
Config = ConfigList{
ApiKey: cfg.Section("bitflyer").Key("api_key").String(),
ApiSecret: cfg.Section("bitflyer").Key("api_secret").String(),
}
}
iniファイルをロードし、取り込み失敗時にはerrによりソフトが終了する部分。
cfg, err := ini.Load("config.ini")
if err != nil {
log.Printf("Failed to read file: %v", err)
os.Exit(1)
}
定義した構造体の中身にiniファイルの中身を記載する箇所。 Sectionにはiniファイルで定義した []の中身に書いてあるセクション名を記載する。 Keyについてはセクションに含まれる要素に当たる、それぞれの名称を記載する。
Config = ConfigList{
ApiKey: cfg.Section("bitflyer").Key("api_key").String(),
ApiSecret: cfg.Section("bitflyer").Key("api_secret").String(),
}
Trade.go
自前で作成したconfigをパッケージとして読み込んでいます。 特に何も変わった部分はないですが… printlnでiniファイルの中身を表示します。
package main
import (
"fmt"
"config/config"
)
func main() {
fmt.Println(config.Config.ApiKey)
fmt.Println(config.Config.ApiSecret)
}
まとめ
GolangでINIファイルを読み込む方法を学ぶことで、設定値やAPIキーを外部ファイルに記載し管理することができるようになります。これにより、アプリケーションの保守性やセキュリティが向上します。今後は、この知識を活かして自動取引ツールなどの開発を進める予定です。