😎

todoアプリ開発の備忘録

に公開

はじめに

普段はLinux系のインフラエンジニアとして業務に従事しています。現在はオンプレミス環境が中心ですが、今後はクラウド分野にも挑戦したいと考えており、その一環としてポートフォリオを鋭意制作中です。

ポートフォリオのゴールは、AWSのリソースを活用した3層構成のアプリケーションを構築・運用することです。まずは、シンプルなToDoアプリをローカル環境で作成し、その後EC2上にデプロイする予定です(あくまでインフラの構築・運用が主目的のため、アプリ自体の機能にはあまりこだわっていません)。

  • 開発環境:macOS
  • 言語:ruby(3.4.4), Rails(8.0.2), html, css, tailwind, git, postgreSQL(17.5)**

1.アプリの作成

rails newコマンドでアプリの作成。

% rails new todo -d postgresql

todoという名前のアプリを作成。
またdオプションでpostgreSQLをデータベースに指定する。

2.database.yml

データベースをpostgreSQLのユーザーで操作できるよう、下記記述を変更。

database.yml
default: &default
  adapter: postgresql
  encoding: unicode
  username: user
  password: <%= ENV['PG_PASSWORD'] %>
  # For details on connection pooling, see Rails configuration guide
  # https://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: todo_development # 開発用データベース名

test:
  <<: *default
  database: todo_test # テスト用データベース名

データベースのユーザーは予め作成しておいたuserを使用。
パスワードはアプリ内の環境変数(PG_PASSWORD)に設定する。
※database.ymlに直接パスワードを書くのは推奨されない。

アプリのトップディレクトリにいる事を確認し".env"ファイルを作成。

touch .ebv
echo "PG_PASSWORD=ここにパスワード" >> .env

※アプリで使用するpostgreSQLユーザーのパスワードを.envに追記。
※.envの記述内容をrailsは環境変数として認識してくれる。

3.データベースの作成

データベースの作成とマイグレーションを行う

% rails db:create
% rails db:migrate
  • rails db:create -> データベースの作成
  • rails db:migrate -> データベースにテーブルなどの構造を作る処理

(補足)

% rails db
psql (17.5 (Homebrew))
"help"でヘルプを表示します。

user=> \db
      テーブル空間一覧
    名前    | 所有者 | 場所 
------------+--------+------
 pg_default | *****  | 
 pg_global  | *****  | 
(2 行)

データベース:アプリケーションごとのデータの「箱」。例:todo_development など。
テーブル空間:データベースの物理的な保存場所。PostgreSQL内部の仕組み。
pg_default / pg_global:PostgreSQLが最初から持っている標準のテーブル空間。すべてのデータは通常 pg_default に保存される。
rails構築中にデータベースについて理解したこと

4.アプリ接続

アプリの雛形作成後、アプリが起動できるか確認。

% rails s
=> Booting Puma
=> Rails 8.0.2 application starting in development 
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 6.6.0 ("Return to Forever")
* Ruby version: ruby 3.4.4 (2025-05-14 revision a38531fd3f) +PRISM [arm64-darwin24]
*  Min threads: 3
*  Max threads: 3
*  Environment: development
*          PID: 18974
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop

http://127.0.0.1:3000にブラウザからアクセスしてみる。


無事デフォルトページが表示された。

5.scaffoldで骨組み作成

ToDoの項目として「タイトル、説明文、期日、優先度、完了フラグ」を設定。

% rails generate scaffold Task \
  title:string \
  description:text \
  due_date:date \
  priority:integer \
  done:boolean

migrateでデータベースに反映。

rails db:migrate
== 20250617002612 CreateTasks: migrating ======================================
-- create_table(:tasks)
   -> 0.0052s
== 20250617002612 CreateTasks: migrated (0.0052s) =============================

試しにhttp://localhost:3000/tasks/newにアクセスしてみる。

こちらもToDo登録画面が無事に表示された。scaffoldによりCRUDの基本設定も済んでいるので、ToDoリストを作成したり削除したりもできる状態。

さいごに

とりあえず必要最低限のアプリは完了しました。

以下の図はデプロイ後のAWS構成のイメージです。今後はこのToDoアプリを土台に、AWSへのデプロイを進めていく予定です。

Discussion