![見出し画像](https://assets.st-note.com/production/uploads/images/133220274/rectangle_large_type_2_dc9a33b5effdf0102a58cc07db442adb.png?width=800)
godotenvで.envファイル(環境変数)を扱う【golang】
今回はgolangのgodotenvの使い方を解説していきます。
godotenvを使ってenvファイル(環境変数)を使う
golangにはgodotenvという環境変数をプロジェクト内で使用できるライブラリがあります。
godotenvは環境変数が設定されたファイルを読み込み、その環境変数をos パッケージから取得することができます。
godotenvの使い方
まずはgo.modがあるgoのプロジェクトで以下のコマンドを実行してgodotenvパッケージをインストールします。
go get github.com/joho/godotenv
次に環境変数を設定するファイルを作成します。
仮に以下の内容の.envというファイルを作成します。
USER=user
PASSWORD=password
DATABASE=dbname
次に以下のように実装し、作成した.envファイルを読み込みます。
func main() {
err := godotenv.Load(fmt.Sprintf(".env.%s", os.Getenv("GO_ENV")))
if err != nil {
log.Fatal("Error loading .env file")
}
host := os.Getenv("USER")
dBName := os.Getenv("PASSWORD")
dBName := os.Getenv("DATABASE")
環境ごとに環境変数を分ける
開発を行っていれば、ローカル用、開発環境用、テスト用、本番用など環境によって環境変数を分けて管理したいところです。
その場合は例えば.env.local、.env.devのように名前で環境が分かるようにenvファイルを作成します。
後は以下のようにgoアプリの起動時にGO_ENVに対して環境名をenvファイルの名前に合わせてあげます。
GO_ENV=local go run main.go
これで簡単に環境ごとに環境変数を使い分けることができます。
godotenvの注意点
godotenvを使用する際にはいくつかの注意点があります。
セキュリティ
.envファイルにデータベースのパスワードなどのは機密情報が含まれることが多いです。
これらのファイルはgitなどのソースコードリポジトリでは管理しないようにしましょう。.envファイルは.gitignoreなどの除外リストに追加しておくことをおすすめします。
エラーハンドリング
godotenvは、指定された.envファイルが存在しない場合やフォーマットが間違っている場合にエラーを返します。
アプリケーションの起動時にこれらのエラーを適切に処理しておくようにしましょう。
デフォルト値の設定
.envファイルまたは環境変数が設定されていない場合のデフォルト値を設定しておくようにしましょう。
golangをもっと詳しくなりたい方に
初めてのGo言語
![](https://assets.st-note.com/img/1711106038748-zNqWLc1HmI.png?width=800)
Go言語の入門から応用まではこの一冊で網羅されています。説明も順序立てて説明されており完成度の高い参考書となっています。
詳解Go言語Webアプリケーション開発
![](https://assets.st-note.com/img/1711106039351-JbjP98ev19.png?width=800)
こちらはGo言語の基礎知識を得たあとに読むことをすすめる本となっています。ハンズオン形式で手を動かしながら実装をしていくことができるため、実際の開発を意識しながらGo言語を学ぶことができます。
以下の記事では他にも筆者が実際に読んでおすすめしたい本をまとめています。
【Go入門】Golang基礎入門 + 各種ライブラリ + 簡単なTodoWebアプリケーション開発(Go言語)
![](https://assets.st-note.com/img/1711106039561-rthrN0MpAP.png?width=800)
まだGo言語の勉強を始めていない方、全くの初心者の方にはこちらのUdemy教材が最もおすすめです。
この教材ではgolangの基礎について網羅的に学ぶことができます。ただ見て学ぶだけでなく、講座の中でアプリ作成まで行うことで学んだことの理解をさらに深めることができます。
現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発
![](https://assets.st-note.com/img/1711106038935-PEaWQWMlQq.png?width=800)
個人的に最も勉強になったのは「現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発」という教材です。
本格的なレクチャーに入る前に、なぜGoなのか、なぜFintechなのかについて説明されていることで、Goの概念や意味について大枠から理解することができます。
以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。
※本ページではアフィリエイトリンク(PR)が含まれています
この記事が気に入ったらサポートをしてみませんか?