Blog

私たちのもとにソフトウェアが届くまで

はじめに

こんにちは!新卒1年目のなべしまです。

現在、ジョブローテ期間中で、サービスシステムグループ 第二開発チームに所属しています。所属先では、ニフティポイントクラブの運用開発業務を日々行っています。

ニフティポイントクラブでは、開発言語としてRubyを利用しています。今回は、開発環境を構築する中でつまずいたことやそこから得た学びをまとめてみました。

この記事を通して、知識の整理や新たな学びのきっかけになれば嬉しいです。

筆者プロフィール

  • 入社:2025年4月
  • 入社前のスキル
    • Ruby:名前を聞いたことはある程度、環境構築はしたことがない
  • 現在の担当:サービスシステムグループ 第二開発チーム(ニフティポイントクラブ)

RUBY_CONFIGURE_OPTS でのつまづき

今回、macOS でrbenv というツールを利用して、Ruby のインストールを行いました。このとき、SSLライブラリを指定してインストールを実行しました。

環境構築ログ

 

ここで、こんなことを思っていました。

export コマンドを実行しているな…
確かこのコマンド、シェル起動時の設定ファイルで使っていた気がする!
RUBY_CONFIGURE_OPTS.zshrc.zsh_profile に記録されているのでは?

しかし、 .zshrc.zsh_profile の中身を見てもRUBY_CONFIGURE_OPTS は記録されていませんでした。ここが今回の私の勘違いしていた点でした。

改めて環境構築のログを見てみると以下のコマンドが実行されています。

  • ./configure
  • make
  • make install

よく調べてみると、これらはソースコードからソフトウェアをビルド・インストールするための標準的な手順のようです。RUBY_CONFIGURE_OPTSビルドプロセス中に使われる環境変数だったのです。

今回はこの気づきをきっかけに、ソフトウェアがどのようにインストールされるのかその基本的な流れについて整理してみたいと思います。

ソフトウェアがインストールされるまで

ソフトウェアがインストールされるまでの処理を、3つのコマンドとともに説明していきます。

configure

./configure は、ソフトウェアをビルドするための設計図を作成する処理です。

./configure では主に以下の処理が行われます。

  • 使用されている環境(OSやライブラリ)を調査
  • その結果をもとに、環境に最適な設定ファイル(Makefile など)を自動で作成

環境構築ログの ./configure が実行された行を見てみると、 --with-openssl-dir=/opt/homebrew/opt/openssl@3 というオプションが含まれています。これは最初に設定した環境変数 RUBY_CONFIGURE_OPTS の内容が反映されていることを示しています。

今回の export コマンドは、このオプションを指定するために使用したコマンドであることがわかりました。

make

make は、作成された設計図を基に、ソフトウェアを組み立てる処理です。

make では、主に以下の処理が行われます。

  • configureで作成されたMakeFileに基づいてソースコードをコンパイル
  • 実行ファイルを作成

環境構築ログでは、以下のように make が実行されていました。このコマンドでは対象ファイルが指定されていないため、デフォルトで Makefile を参照しています。そして、 -j オプションは複数の処理を並列で実行するためのものです。rbenvではシステムの CPU コア数を取得して、自動的に -j の値を調整しているようです。

make install

make install は、組み立てられたソフトウェアを配置(インストール)する処理です。

make install では、主に以下の処理が行われます。

  • Makefile に定義されたinstallというラベルから処理を実行
  • make によって作成された実行ファイルを指定されたディレクトリにコピー

環境構築ログでは、以下のように Ruby が /home/hogeta/.rbenv/versions/3.3.3 にインストールされていたことがわかります。このインストール先のパスは、./configure の実行時に指定したパスに基づいています。

例えるならば…

ソフトウェアをインストールの流れを、通販で例えてみると…

  • ./configureは「通販の注文フォームに入力」
  • makeは「注文を受けて、倉庫で商品を組立て」
  • make install「商品を家に配送」

fig. ソフトウェアインストールと通販の対応関係

このように置き換えることで、ソースからのインストール手順がどのように役割分担されているかがイメージしやすくなったのではないでしょうか。

まとめ

export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@3)" は、シェル起動時の設定ではなくrbenv install のための設定だった

今回のようなインストール時に標準と異なる設定を使用するケースでは、この一連の流れを知っておく必要がありそうです。 普段何気なく使用しているツールやコマンドでも、原理を知ることで対応できる問題が増えると感じました。

今回の経験を活かして、今後も実行されている処理を分析しながら業務に励んでいきたいと思います。

学生の皆様に向けて

ニフティには、今回の環境構築をはじめ、些細な疑問でも気軽に議論ができ、丁寧にアドバイスをもらえる文化があります。

今回の件を通して、ニフティでは日頃から活発なコミュニケーションが行われていることを改めて実感しました。

私は会社で働くうえでコミュニケーションは欠かせない要素だと考えています。その点において、ニフティは非常に良い環境だと感じています。

そんなニフティで、一緒に楽しく働いてみませんか?皆様とご一緒できる日を、心から楽しみにしています!

参考文献

ニフティでは、
さまざまなプロダクトへ挑戦する
エンジニアを絶賛募集中です!
ご興味のある方は以下の採用サイトより
お気軽にご連絡ください!

ニフティに興味をお持ちの方は
キャリア登録をぜひお願いいたします!

connpassでニフティグループに
参加いただくと
イベントの
お知らせが届きます!