カテゴリ: Go言語 更新日: 2026/07/09

Go言語でのDB接続情報を環境変数で管理する方法|初心者でも安全に設定

Go言語のDBの接続情報を環境変数で管理する方法
Go言語のDBの接続情報を環境変数で管理する方法

先生と生徒の会話形式で理解しよう

生徒

「Go言語でデータベースに接続するとき、ユーザー名やパスワードってソースコードに書いちゃってもいいんですか?」

先生

「直接書くとセキュリティ上危険です。特にGitなどで公開すると誰でも見られてしまいます。」

生徒

「じゃあ安全に管理するにはどうすればいいですか?」

先生

「環境変数を使う方法があります。環境変数はOSに保存される設定値で、プログラムから読み込むことができます。」

生徒

「それなら、ソースコードにパスワードを書かなくて済むんですね。」

先生

「その通りです。それでは基本的な使い方を見ていきましょう!」

1. 環境変数とは?

1. 環境変数とは?
1. 環境変数とは?

環境変数は、OSやシステムが持つ設定情報で、プログラムから呼び出して使うことができます。例えば、ユーザー名やパスワード、データベースの接続先URLなど、秘密にしたい情報を保存するのに便利です。

2. 環境変数の設定方法

2. 環境変数の設定方法
2. 環境変数の設定方法

Windowsではコマンドプロンプトで以下のように設定します。


set DB_USER=myuser
set DB_PASS=mypassword
set DB_HOST=localhost
set DB_NAME=mydb

MacやLinuxではターミナルで以下のように設定します。


export DB_USER=myuser
export DB_PASS=mypassword
export DB_HOST=localhost
export DB_NAME=mydb

このように設定した値は、プログラム内で読み込むことができます。

3. Go言語で環境変数を読み込む

3. Go言語で環境変数を読み込む
3. Go言語で環境変数を読み込む

Go言語ではosパッケージを使って環境変数を取得できます。


import (
    "fmt"
    "os"
)

func main() {
    dbUser := os.Getenv("DB_USER")
    dbPass := os.Getenv("DB_PASS")
    dbHost := os.Getenv("DB_HOST")
    dbName := os.Getenv("DB_NAME")

    fmt.Println("ユーザー:", dbUser)
    fmt.Println("ホスト:", dbHost)
}

環境変数が正しく設定されていれば、プログラムから安全に情報を取得できます。

4. データベース接続に環境変数を活用する

4. データベース接続に環境変数を活用する
4. データベース接続に環境変数を活用する

例えばPostgreSQLに接続するとき、接続情報を環境変数から取得することでソースコードにパスワードを書かずに済みます。


import (
    "database/sql"
    "fmt"
    "os"

    _ "github.com/lib/pq"
)

func main() {
    dbUser := os.Getenv("DB_USER")
    dbPass := os.Getenv("DB_PASS")
    dbHost := os.Getenv("DB_HOST")
    dbName := os.Getenv("DB_NAME")

    connStr := fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=disable",
        dbUser, dbPass, dbHost, dbName)
    db, err := sql.Open("postgres", connStr)
    if err != nil {
        panic(err)
    }
    defer db.Close()
    fmt.Println("データベースに接続できました")
}

この方法で、誰が見てもパスワードはソースコードに含まれず、安全性が高まります。

5. .envファイルと組み合わせる方法

5. .envファイルと組み合わせる方法
5. .envファイルと組み合わせる方法

環境変数を毎回設定するのが面倒な場合、.envファイルを使う方法もあります。godotenvというライブラリを使えば、Goプログラム起動時に自動で環境変数を読み込めます。


import (
    "fmt"
    "os"

    "github.com/joho/godotenv"
)

func main() {
    err := godotenv.Load()
    if err != nil {
        fmt.Println("envファイルの読み込み失敗")
    }

    dbUser := os.Getenv("DB_USER")
    fmt.Println("ユーザー:", dbUser)
}

これにより、開発環境や本番環境ごとに異なる接続情報を簡単に切り替えられます。

6. セキュリティ上の注意点

6. セキュリティ上の注意点
6. セキュリティ上の注意点

環境変数を使う場合でも、.envファイルをGitに含めないことが重要です。.gitignoreに追加して、絶対に公開リポジトリに含まれないようにしましょう。また、本番環境ではOS側の環境変数管理を活用して安全に運用してください。

7. まとめないけど最後のポイント

7. まとめないけど最後のポイント
7. まとめないけど最後のポイント

環境変数を使うことで、Go言語でのデータベース接続情報の管理が簡単かつ安全になります。開発・運用の効率が上がり、パスワードや接続先情報をソースコードに書くリスクを回避できます。さらにgodotenvなどのツールを使えば、複数環境での切り替えも簡単です。

Go言語を基礎からスッキリ学びたい人や、 文法だけでなく「実用的な使い方」まで押さえたい人には、 定番の入門書がこちらです。

基礎からわかるGo言語をAmazonで見る

※ Amazon広告リンク

まとめ

まとめ
まとめ

今回の記事では、Go言語でのデータベース接続情報を安全に管理するために、環境変数を活用する方法について詳しく学習しました。プログラミング初心者の方が最初につまずきやすいポイントの一つに、ユーザー名やパスワードなどの重要な情報をどのように扱うべきかという問題があります。ソースコードに直接書いてしまうと、誤って公開してしまう危険性があり、セキュリティ上の大きなリスクとなります。

環境変数を使うことで、これらの機密情報をコードから切り離して管理することができます。Go言語ではosパッケージのGetenv関数を使うことで、簡単に環境変数を取得できます。この仕組みにより、同じプログラムでも開発環境や本番環境で異なる設定を使い分けることが可能になります。これは実務の開発において非常に重要なポイントです。

また、環境変数の設定方法も理解しておくことが大切です。WindowsとMacやLinuxでは設定方法が異なりますが、基本的な考え方は同じです。あらかじめOSに設定した値を、プログラム側で読み込むという流れになります。この仕組みを理解することで、Go言語の開発環境をより柔軟に扱えるようになります。

さらに、.envファイルとgodotenvライブラリを組み合わせることで、環境変数の管理がより簡単になります。特に開発環境では、毎回手動で設定する手間を省くことができ、効率的に作業を進めることができます。ただし、.envファイルには重要な情報が含まれるため、必ずgitignoreに追加して外部に公開されないように注意する必要があります。

Go言語での環境変数管理は、単なる便利な機能ではなく、安全なアプリケーション開発の基盤となる重要な技術です。今回学んだ内容をしっかりと理解し、実際の開発でも積極的に活用することで、セキュリティと保守性の高いプログラムを作成できるようになります。

環境変数の読み込みを復習する

基本となる環境変数の取得方法をもう一度確認しておきましょう。Go言語では非常にシンプルに書くことができます。


package main

import (
    "fmt"
    "os"
)

func main() {
    user := os.Getenv("DB_USER")
    host := os.Getenv("DB_HOST")

    fmt.Println(user)
    fmt.Println(host)
}

データベース接続に活用する例

実際の開発では、環境変数を組み合わせて接続文字列を作成します。これにより、パスワードを安全に管理できます。


connStr := fmt.Sprintf("postgres://%s:%s@%s/%s",
    os.Getenv("DB_USER"),
    os.Getenv("DB_PASS"),
    os.Getenv("DB_HOST"),
    os.Getenv("DB_NAME"),
)

envファイルの活用例

開発効率を高めるために、envファイルを使う方法も重要です。ライブラリを使うことで自動読み込みが可能になります。


import "github.com/joho/godotenv"

func init() {
    godotenv.Load()
}

環境変数が読み込まれました

初心者が意識するべき重要ポイント

Go言語で環境変数を扱う際は、機密情報をソースコードに書かないことを常に意識しましょう。また、環境ごとに設定を分けることで、開発と本番の違いに柔軟に対応できます。さらに、envファイルの取り扱いには十分注意し、誤って公開しないように管理することが重要です。

これらの基本を守ることで、セキュリティを意識した安全なプログラム開発が可能になります。環境変数の使い方は一度覚えればさまざまな場面で応用できるため、しっかりと身につけておきましょう。

先生と生徒の振り返り会話

生徒

「環境変数を使えば、パスワードをコードに書かなくてよいことが分かりました」

先生

「はい。それがセキュリティの基本です」

生徒

「開発環境と本番環境で設定を変えられるのも便利ですね」

先生

「その通りです。柔軟な設定管理ができるのが大きなメリットです」

生徒

「envファイルの扱いには気をつけます」

先生

「その意識があれば、安全な開発ができるようになります」

関連セミナーのご案内

【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導

「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。

本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。

具体的な開発内容と環境

【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。

【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。

この60分で得られる3つの理解

1. 環境構築の完全な理解

「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。

2. Go言語の基本構造(変数・型)

データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。

3. 読みやすいコードの書き方

ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。

※本講座は、将来的にバックエンドエンジニアクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。

セミナー画像

初めてのGo言語を一緒に学びましょう!

関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のswitchで複雑な条件分岐を整理するテクニック
New2
Go言語
Go言語の構造体の初期化パターンとコンストラクタ的関数の書き方を徹底解説!初心者でもわかる基本と実用例
New3
Go言語
Go言語のスライスを引数に渡す際の注意点!値渡しと参照渡しをわかりやすく解説
New4
Go言語
Go言語の構造体タグ(jsonタグなど)の使い方と活用例を初心者向けにやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.2
Java&Spring記事人気No2
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.3
Java&Spring記事人気No3
C#
C#の歴史とは?初心者向けに誕生理由と進化の流れをわかりやすく解説
No.4
Java&Spring記事人気No4
Swift
Swift StoryboardとAuto Layout|レスポンシブUIの作り方
No.5
Java&Spring記事人気No5
Swift
Swift入門ガイド|基本構文と書き方をマスターしよう
No.6
Java&Spring記事人気No6
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.7
Java&Spring記事人気No7
Swift
Swiftのcontinue・breakの使い方と注意点を徹底解説!初心者向け制御構文ガイド
No.8
Java&Spring記事人気No8
C#
C#の開発環境構築を完全ガイド!初心者でもわかる.NET SDKのインストール方法

💻 作業効率アップに

ノートPCを縦置きしてデスクを広く。
省スペースで片づく定番スタンド

UGREEN 縦型スタンドをAmazonで見る

※ Amazon広告リンク