【Ruby】環境変数の完全ガイド!初心者でも分かる7つの詳解

Ruby環境変数チュートリアルのサムネイル画像 Ruby
この記事は約9分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

初めてのRuby学習、挫折しそうになった経験はありませんか?

今回の記事では、そのRuby学習を進める上で避けて通れない「環境変数」について詳しく解説します。

この記事を読むことで、初心者でもRubyの環境変数の取り扱いが身につくことでしょう。

サンプルコードを交えながら、環境変数の基本的な操作から応用までを一つ一つ丁寧に解説していきます。

●Rubyと環境変数とは

まずはRubyと環境変数について、基本的な知識から掴んでいきましょう。

○Rubyとは

Rubyは、まつもとゆきひろ氏によって開発されたオブジェクト指向スクリプト言語です。

すっきりとした文法と、人間の自然な思考をコードに落とし込みやすい設計思想が特徴で、Webアプリケーションの開発によく用いられます。

Railsという強力なフレームワークと組み合わせて使うことが多く、これによって高度なWebサービスを効率良く構築することが可能になります。

○環境変数とは

環境変数は、OSが管理するグローバルな変数の一種で、プログラムがOSから提供される環境を把握するために使われます。

環境変数は、システムの設定や、アプリケーションの設定等、様々な情報を保持します。

具体的には、プログラムの実行パスや、インストールされたソフトウェアの位置、ネットワーク設定、文字コードの設定などを保持します。

プログラムからはこれらの情報を参照したり、新たに設定することも可能です。

●Rubyでの環境変数の基本的な扱い方

Rubyで環境変数を扱う基本的な方法について説明します。

具体的なコード例を交えて、環境変数の取得方法、設定方法、そして削除方法を順に見ていきましょう。

○環境変数の取得方法

Rubyでは、ENVという組み込みのハッシュライクなオブジェクトを通じて環境変数にアクセスします。

具体的なコードを以下に示します。

puts ENV['PATH']

このコードでは、ENVオブジェクトを用いてPATHという環境変数の値を取得し、それを出力しています。

PATHはOSのシステム環境変数で、実行可能なプログラムの場所を指定するためのものです。

このコードを実行すると、あなたのシステムのPATHが表示されます。

結果はシステムによりますが、一般的には次のような出力になるでしょう。

/usr/local/bin:/usr/bin:/bin

これは、/usr/local/bin/usr/bin、そして/binの3つのディレクトリが実行可能なプログラムの検索パスとして設定されていることを意味します。

○環境変数の設定方法

次に、Rubyで新しい環境変数を設定する方法について見ていきましょう。

これもENVオブジェクトを使います。

ENV['MY_VARIABLE'] = 'Hello, world!'
puts ENV['MY_VARIABLE']

このコードでは、最初にMY_VARIABLEという新しい環境変数を設定し、その値にHello, world!を入れています。次に、その環境変数の値を取得して出力します。

このコードを実行すると、設定した環境変数の値が表示されます。

つまり、次のような結果になります。

Hello, world!

この結果は、先程設定した環境変数MY_VARIABLEの値が正しく取得できたことを表しています。

●Rubyでの環境変数の利用事例

それでは、環境変数がRubyの開発にどのように役立つか、いくつかの具体的な事例を見ていきましょう。

○設定ファイルのパスを環境変数で管理する事例

Rubyで開発を行う際、異なる環境で動かすことがあります。

開発環境、テスト環境、本番環境など、それぞれで設定ファイルのパスが異なる場合があります。

そのような場合、環境変数を利用して設定ファイルのパスを管理することが可能です。

環境変数を用いて設定ファイルのパスを管理するコードを表します。

# 設定ファイルのパスを環境変数から取得
config_path = ENV['CONFIG_PATH']

# 設定ファイルの存在確認
if File.exist?(config_path)
  puts "設定ファイルが見つかりました。"
else
  puts "設定ファイルが見つかりません。"
end

このコードでは、まず環境変数CONFIG_PATHから設定ファイルのパスを取得しています。

その後、そのパスにファイルが存在するかどうかをチェックしています。

これにより、それぞれの環境で適切な設定ファイルが読み込まれるようになります。

○APIキーの管理を環境変数で行う事例

次に、APIキーの管理に環境変数を利用する事例を見てみましょう。

多くのWebサービスではAPIキーを通じてアクセス制御を行います。

これらのキーは重要な情報であり、漏洩すると悪用される可能性があります。

そのため、APIキーはコード内に直接書くのではなく、環境変数を通じて管理することが推奨されます。

次のコードでは、環境変数を用いてAPIキーの管理を行っています。

# APIキーを環境変数から取得
api_key = ENV['API_KEY']

# APIキーを用いて何かしらの操作
puts "APIキー: #{api_key}"

このコードは、まず環境変数API_KEYからAPIキーを取得し、そのキーを利用して何かしらの操作を行う例です。

実際の開発ではAPIキーをそのまま出力することはなく、APIの認証やリクエストに利用します。

●Rubyでの環境変数の注意点と対処法

環境変数を利用する際、いくつか注意すべき点があります。

ここではその中から特に重要な点を挙げ、それぞれに対する対処法を見ていきましょう。

○環境変数の暗号化

環境変数には重要な情報を含むことが多く、その情報が漏洩するとセキュリティ上の問題を引き起こす可能性があります。

例えば、先ほどのAPIキーの例では、これが第三者に知られるとそのAPIが不正に利用される恐れがあります。

そのため、環境変数を扱う際には暗号化することが必要です。

Rubyのdotenvというgemを用いて環境変数を安全に扱うコードを表します。

require 'dotenv'

# .envファイルをロード
Dotenv.load

# 環境変数を利用
api_key = ENV['API_KEY']

このコードでは、dotenvを利用して.envというファイルに環境変数を保存しています。

そして、その環境変数を安全に扱うことができます。

この.envファイルはgit等のバージョン管理システムには含めず、ローカルやサーバーの環境でだけ管理します。

○環境ごとの環境変数の管理

次に、開発環境やテスト環境、本番環境といった異なる環境で異なる環境変数を用いる必要がある場合の対処法について見ていきましょう。

これにもdotenvが役立ちます。

環境ごとに異なる環境変数を管理するためのコードを表します。

require 'dotenv'

# 環境ごとの.envファイルをロード
Dotenv.load(".env.#{ENV['RACK_ENV']}")

このコードでは、環境変数RACK_ENVの値によって異なる.envファイルを読み込んでいます。

例えば、RACK_ENVproductionであれば.env.productionファイルを、developmentであれば.env.developmentファイルを読み込みます。

これにより、それぞれの環境で適切な環境変数を利用することが可能になります。

●環境変数のカスタマイズ方法

Rubyで環境変数をカスタマイズする方法は非常に簡単で、ENVオブジェクトを通じてアクセス可能です。

これはハッシュのように機能し、キーと値のペアとして環境変数を設定できます。

この特性により、既存の環境変数の値を読み取ったり、新たな環境変数を作成したり、既存のものを変更したりできます。

下記のコードは、新たな環境変数を作成するためのものです。

# 環境変数の設定
ENV['MY_VARIABLE'] = 'Hello, World!'

# 環境変数の確認
puts ENV['MY_VARIABLE']  # => Hello, World!

このコードでは、まずENV['MY_VARIABLE']に対してHello, World!という値を代入することで新たな環境変数を作成しています。

次にputs ENV['MY_VARIABLE']を実行することでその値を出力します。

結果、Hello, World!が表示されます。

次に、既存の環境変数を変更する方法を見てみましょう。

下記のコードは環境変数PATHの値を変更するものです。

# 環境変数の確認
puts ENV['PATH']  # => /usr/bin:/bin:...

# 環境変数の変更
ENV['PATH'] = "/my/new/path:#{ENV['PATH']}"

# 環境変数の確認
puts ENV['PATH']  # => /my/new/path:/usr/bin:/bin:...

このコードでは、まず現在のPATH環境変数の値を表示します。次にENV['PATH']に対して新たなパスを追加します。

その後、再度ENV['PATH']の値を出力します。

すると、新たに追加したパスが先頭に追加されていることが確認できます。

このように、RubyではENVオブジェクトを用いることで環境変数を簡単にカスタマイズすることができます。

ただし、この方法で設定された環境変数の値は、現在のプロセスのライフタイム中だけ有効であり、新たに起動したプロセスには引き継がれません。

そのため、永続的な変更を行いたい場合は、シェルの設定ファイルなどに記述する必要があります。

まとめ

本記事では、Rubyの環境変数について詳しく解説しました。

まず環境変数の基本的な意義とその活用方法について学び、次にRubyでの環境変数の取り扱い方、特に注意点とその対処法について理解を深めました。

また、環境変数のカスタマイズ方法についても学びました。

Rubyにおける環境変数の扱いは非常に直感的で、あたかもハッシュを扱うように、キーと値のペアとして環境変数を設定できることを理解しました。

そして、それが現在のプロセスだけに有効であるという点を把握しました。

ここで紹介した知識を活用すれば、Rubyプログラムにおける環境変数の操作がよりスムーズになり、より効果的なコードを書くことができるでしょう。

この記事が、Rubyの環境変数について学ぶ一助となれば幸いです。