開発環境と本番環境について

1. コンテナ技術の導入


 本アプリは開発コミュニティ内のみの使用に限定し、プライベートネットワーク内のみで動作することを想定し開発を行う。 本番環境への移行やコミュニティ内での実行環境の差を吸収するためにコンテナ技術を用いた構成にする。コンテナ技術には様々な種類があるが、N君は初心者であるため情報が入手しやすく、広く使われているDockerを使用する。

2. Railsサーバ(Railsコンテナ)の構築とデータベースの選定


 Dockerによる開発・本番環境の構築を行うため、RubyとRailsをインストールしたコンテナを用意する。そのためRubyとRailsのインストールを行う必要がある。

 N君は開発開始時点で、RubyおよびRailsの両方に関してバージョンに対するこだわりが理解できるほど知識を持ち合わせていないため、開発開始段階での最新安定版を使用することにした。以下にそれぞれのバージョンについて示す。

  バージョン
Ruby 3.1.2
Rails 7.0.4

 Railsはデータベースシステムを使ってデータを保存する。その際に使用する標準のデータベースはSQLiteである。他にも選択肢としてPostgreSQLやMySQLなどがあるが、本件については標準のSQLiteを使用することにした。理由は、以下のとおりである。

  1. データベースの種類が開発の本質ではないから
  2. Railsをインストールした段階でSQLiteも使えるから
    (Railsをインストールする前にSQLiteをインストールするため)
  3. プライベートネットワーク内での利用を前提としているため、セキュリティ面の問題を重要視する必要がないから

3. 環境まとめ


項目が多くなったため一度まとめる。以下開発・本番環境のリストである。

技術項目 選択した技術
コンテナ技術 Docker
開発言語 Ruby 3.1.2
フレームワーク Ruby on Rails 7.0.4
データベースシステム SQLite

上記の項目を元に開発・本番環境の設定を行っていく。

4. N君の開発環境設定


 N君のコンピュータのおもな開発環境について記述する。

環境 ソフトウェア名
OS Ubuntu 22.04
エディタ Visual Studio Code

 N君は以前までWSL(Windows Subsystem for Linux)を使用していた。なぜならWindowsのホスト環境よりもWSLのほうがプログラムを作成する上で便利な点が多いと感じたためである。 しかしWSLはメモリ消費が激しく、起動しただけでメモリを約4GB消費していた。そのためコンピュータ(主にホスト環境)の動作に悪影響を与えており快適に開発を行うことは困難な状態であった。

 そのためハードウェアをそのままにし、ホストOSをLinux OSであるUbuntu Desktopに入れ替えた。UbuntuはデスクトップむけのLinux OSの中では軽量さで劣るが、初心者でも扱いやすく日本語の情報も入手しやすい特徴がある。そして起動状態のメモリ消費がWSLに比べ十分小さく(約1GBの消費)動作に悪影響が小さいことが予測される。
 よって、他のデスクトップ向けLinuxディストリビューションに比べUbuntuは軽量さで劣るが現在のハードウェアでは問題なく動作する。そのため初心者向きで日本語情報が入手しやすいUbuntu Desktopがよいと判断した。

 Visutal Studio Codeを選択した理由はおおよそ以下のとおりである。

  1. 軽量なエディタであること
  2. 拡張機能が豊富で、とりわけDockerの便利な拡張機能があること
  3. 無償で利用できること

 以上より基本的にエディタはVisual Studio Codeを使用する。しかし、単純なシェルスクリプトなどを作成する場合はターミナルから直接ファイル作成および編集ができるVimを使用する。