0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

📝 【Rails】初学者の学習記録(2025年4月29日)

Posted at

📝 Rails初学者の学習記録(2025年4月29日)

こんにちは!今日は、Railsアプリケーション開発において重要な概念や技術について学習しました。以下に、学んだ内容を整理して記録します。


✅ バリデーション

モデルに対してデータの整合性を保つための制約を設けることができます。例えば、presence: trueを使用すると、指定した属性が空でないことを検証します。

class User < ApplicationRecord
  validates :name, presence: true
end

👤 current_userメソッド

Deviseなどの認証システムを使用すると、current_userメソッドで現在ログインしているユーザーの情報を取得できます。

<% if user_signed_in? %>
  <p>こんにちは、<%= current_user.name %>さん</p>
<% end %>

🔀 mergeメソッド

ハッシュを結合する際に使用します。例えば、ストロングパラメータで追加の情報を付加する場合に便利です。

params.require(:post).permit(:title, :content).merge(user_id: current_user.id)

📊 orderメソッド

データの並び順を指定する際に使用します。例えば、作成日時の降順で並べる場合は以下のように記述します。

@posts = Post.order(created_at: :desc)

🧩 部分テンプレートとrenderメソッド

ビューの共通部分を部分テンプレートとして切り出し、renderメソッドで挿入することで、コードの再利用性が向上します。

<%= render 'shared/header' %>

オプションを渡すことで、部分テンプレート内で変数を使用することも可能です。

<%= render 'shared/post', post: @post %>

📐 テーブル図とリレーション図

テーブル図: データベースの各テーブルとそのカラムを視覚的に表現した図。

リレーション図: テーブル間の関連性(リレーション)を示す図。has_manyやbelongs_toなどの関係性を視覚化します。

🧭 ルーティングのネストとcollection・member

ルーティングをネストすることで、関連するリソースのURL構造を整理できます。

resources :posts do
  collection do
    get 'search'
  end

  member do
    get 'preview'
  end
end

collection: リソース全体に対するアクション(例: /posts/search)

member: 特定のリソースに対するアクション(例: /posts/:id/preview)

🔍 whereメソッドとLIKE検索

whereメソッドを使用して、条件に合致するレコードを取得できます。

@posts = Post.where(published: true)

LIKEを使用した部分一致検索も可能です。

@posts = Post.where('title LIKE ?', "%#{params[:keyword]}%")

🛠️ Railsエラー画面とデバッグ

エラー画面: エラーの種類や発生箇所、スタックトレースなどが表示され、問題の特定に役立ちます。

デバッグ: pry-railsを使用すると、binding.pryで処理を一時停止し、変数の中身を確認できます。

def show
  @post = Post.find(params[:id])
  binding.pry
end

🛠️ Webアプリ開発の流れ

Webアプリケーションを開発する際の一般的なフローは以下の通りです。

1. 企画・要件定義

  • ペルソナの設定: 想定するユーザー像を具体的に描きます。
  • ユーザーストーリーの作成: ユーザーがどのようにアプリを利用するかのシナリオを考えます。
  • 要件定義: アプリに必要な機能や仕様を明確にします。

2. 設計

  • 基本設計: 画面構成や機能の概要を設計します。
  • 詳細設計: 各機能の具体的な処理やデータの流れを設計します。
  • 画面遷移図の作成: ユーザーがどのように画面を移動するかを図示します。
  • DB設計:
    • エンティティの洗い出し: 必要なデータの種類を特定します。
    • モデリング: データの関係性を整理します。
    • 正規化: データの重複を排除し、効率的な構造にします。
    • 制約の設定:
      • NOT NULL制約: 必須項目を設定します。
      • 一意性制約: 重複を許さない項目を設定します。
      • 主キー制約: 各レコードを一意に識別するキーを設定します。
      • 外部キー制約: 他のテーブルとの関係性を設定します。
      • チェック制約: 特定の条件を満たす値のみを許可します。
  • ER図の作成: テーブル間の関係性を視覚的に表現します。

3. 実装

  • バリデーションの設定: 入力データの検証を行います。
  • current_userメソッドの利用: ログインユーザーの情報を取得します。
  • mergeメソッドの活用: パラメータの統合を行います。
  • orderメソッドの使用: データの並び替えを行います。
  • 部分テンプレートとrenderメソッドの活用: ビューの共通部分を再利用します。
  • ルーティングのネスト:
    • collection: 全体に対するアクションを定義します。
    • member: 個別のリソースに対するアクションを定義します。
  • whereメソッドとlikeの使用: 条件に合致するデータの取得を行います。

4. デバッグ・テスト

  • Railsエラー画面の確認: エラーの内容を把握し、修正します。
  • SyntaxErrorの確認: 文法エラーを特定し、修正します。
  • デバッグの実施: 問題の原因を特定し、解決します。
  • pry-railsbinding.pryの使用: 実行中のコードの状態を確認します。

5. バージョン管理

  • GitとGitHubの利用:
    • Git: ローカルでのバージョン管理を行います。
    • GitHub: リモートでのコード共有や共同開発を行います。

🧰 GitとGitHubの違いとそれぞれのメリット

Git: バージョン管理システム。ローカルでのソースコードの変更履歴を管理できます。

GitHub: Gitリポジトリをホスティングするサービス。リモートでの共同開発やコードレビュー、Issue管理などが可能です。

メリット:

Git:

オフラインでの作業が可能。

ローカルでの履歴管理により、変更の追跡や復元が容易。
GitHub:

複数人での共同開発が容易。

プルリクエストやIssueを通じた効率的な開発フロー。

オープンソースプロジェクトへの参加が容易。

🧠 学んだことのまとめ

  • Webアプリ開発は、企画から設計、実装、テスト、運用までの一連の流れを理解することが重要です。
  • 各工程でのポイントや使用する技術・ツールを把握することで、効率的な開発が可能になります。
  • 特に、設計段階でのDB設計や画面遷移図の作成は、後の実装をスムーズに進めるために欠かせません。

これらの知識を活かして、今後の開発に取り組んでいきたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?