はじめに
こんにちは!新卒1年目のなべしまです。
現在、ジョブローテ期間中で、サービスシステムグループ 第二開発チームに所属しています。所属先では、ニフティポイントクラブの運用開発業務を日々行っています。
ニフティポイントクラブでは、開発言語としてRubyを利用しています。今回は、開発環境を構築する中でつまずいたことやそこから得た学びをまとめてみました。
この記事を通して、知識の整理や新たな学びのきっかけになれば嬉しいです。
筆者プロフィール
- 入社:2025年4月
- 入社前のスキル
- Ruby:名前を聞いたことはある程度、環境構築はしたことがない
- 現在の担当:サービスシステムグループ 第二開発チーム(ニフティポイントクラブ)
RUBY_CONFIGURE_OPTS でのつまづき
今回、macOS でrbenv というツールを利用して、Ruby のインストールを行いました。このとき、SSLライブラリを指定してインストールを実行しました。
環境構築ログ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ brew install openssl@3 ... $ export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@3)" $ rbenv install 3.3.3 ==> Downloading ruby-3.3.3.tar.gz... -> curl -q -fL -o ruby-3.3.3.tar.gz https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.3.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 21.0M 100 21.0M 0 0 11.9M 0 0:00:01 0:00:01 --:--:-- 11.9M ==> Installing ruby-3.3.3... ruby-build: using libyaml from homebrew ruby-build: using gmp from homebrew -> ./configure "--prefix=$HOME/.rbenv/versions/3.3.3" --enable-shared --with-libyaml-dir=/opt/homebrew/opt/libyaml --with-gmp-dir=/opt/homebrew/opt/gmp --with-ext=openssl,psych,+ --with-openssl-dir=/opt/homebrew/opt/openssl@3 -> make -j 10 -> make install ==> Installed ruby-3.3.3 to /Users/{ユーザ名}/.rbenv/versions/3.3.3 |
ここで、こんなことを思っていました。
export
コマンドを実行しているな…
確かこのコマンド、シェル起動時の設定ファイルで使っていた気がする!
RUBY_CONFIGURE_OPTS
は .zshrc
や .zsh_profile
に記録されているのでは?
しかし、 .zshrc
や .zsh_profile
の中身を見てもRUBY_CONFIGURE_OPTS
は記録されていませんでした。ここが今回の私の勘違いしていた点でした。
改めて環境構築のログを見てみると以下のコマンドが実行されています。
- ./configure
- make
- make install
よく調べてみると、これらはソースコードからソフトウェアをビルド・インストールするための標準的な手順のようです。RUBY_CONFIGURE_OPTS
はビルドプロセス中に使われる環境変数だったのです。
今回はこの気づきをきっかけに、ソフトウェアがどのようにインストールされるのかその基本的な流れについて整理してみたいと思います。
ソフトウェアがインストールされるまで
ソフトウェアがインストールされるまでの処理を、3つのコマンドとともに説明していきます。
configure
./configure
は、ソフトウェアをビルドするための設計図を作成する処理です。
1 |
$ ./configure [オプション] |
./configure
では主に以下の処理が行われます。
- 使用されている環境(OSやライブラリ)を調査
- その結果をもとに、環境に最適な設定ファイル(Makefile など)を自動で作成
環境構築ログの ./configure
が実行された行を見てみると、 --with-openssl-dir=/opt/homebrew/opt/openssl@3
というオプションが含まれています。これは最初に設定した環境変数 RUBY_CONFIGURE_OPTS
の内容が反映されていることを示しています。
今回の export
コマンドは、このオプションを指定するために使用したコマンドであることがわかりました。
1 2 |
-> ./configure "--prefix=$HOME/.rbenv/versions/3.3.3" --enable-shared --with-libyaml-dir=/opt/homebrew/opt/libyaml --with-gmp-dir=/opt/homebrew/opt/gmp --with-ext=openssl,psych,+ --with-openssl-dir=/opt/homebrew/opt/openssl@3 |
make
make
は、作成された設計図を基に、ソフトウェアを組み立てる処理です。
1 |
$ make [オプション] [対象ファイル] |
make
では、主に以下の処理が行われます。
- configureで作成されたMakeFileに基づいてソースコードをコンパイル
- 実行ファイルを作成
環境構築ログでは、以下のように make
が実行されていました。このコマンドでは対象ファイルが指定されていないため、デフォルトで Makefile
を参照しています。そして、 -j
オプションは複数の処理を並列で実行するためのものです。rbenvではシステムの CPU コア数を取得して、自動的に -j
の値を調整しているようです。
1 |
-> make -j 10 |
make install
make install
は、組み立てられたソフトウェアを配置(インストール)する処理です。
1 |
$ make install |
make install
では、主に以下の処理が行われます。
Makefile
に定義されたinstall
というラベルから処理を実行make
によって作成された実行ファイルを指定されたディレクトリにコピー
環境構築ログでは、以下のように Ruby が /home/hogeta/.rbenv/versions/3.3.3
にインストールされていたことがわかります。このインストール先のパスは、./configure
の実行時に指定したパスに基づいています。
1 2 |
-> make install ==> Installed ruby-3.3.3 to /Users/{ユーザ名}/.rbenv/versions/3.3.3 |
例えるならば…
ソフトウェアをインストールの流れを、通販で例えてみると…
./configure
は「通販の注文フォームに入力」make
は「注文を受けて、倉庫で商品を組立て」make install
「商品を家に配送」

fig. ソフトウェアインストールと通販の対応関係
このように置き換えることで、ソースからのインストール手順がどのように役割分担されているかがイメージしやすくなったのではないでしょうか。
まとめ
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@3)"
は、シェル起動時の設定ではなくrbenv install のための設定だった
今回のようなインストール時に標準と異なる設定を使用するケースでは、この一連の流れを知っておく必要がありそうです。 普段何気なく使用しているツールやコマンドでも、原理を知ることで対応できる問題が増えると感じました。
今回の経験を活かして、今後も実行されている処理を分析しながら業務に励んでいきたいと思います。
学生の皆様に向けて
ニフティには、今回の環境構築をはじめ、些細な疑問でも気軽に議論ができ、丁寧にアドバイスをもらえる文化があります。
今回の件を通して、ニフティでは日頃から活発なコミュニケーションが行われていることを改めて実感しました。
私は会社で働くうえでコミュニケーションは欠かせない要素だと考えています。その点において、ニフティは非常に良い環境だと感じています。
そんなニフティで、一緒に楽しく働いてみませんか?皆様とご一緒できる日を、心から楽しみにしています!