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?

【超基礎から解説編】Flaskで音楽共有SNSを作る:ユーザーモデルの設計と実装

Posted at

はじめに

音楽共有SNSの核となるユーザーモデルの設計と実装について解説します。データベースの構造、ユーザー情報の管理、そしてフォロー機能の実装方法を、初心者にもわかりやすく説明していきます。

目次

  1. ユーザーモデルの基本構造
  2. ユーザー情報のフィールド
  3. フォロー関係の実装
  4. フォロー機能のメソッド
  5. まとめ

1. ユーザーモデルの基本構造

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
  • UserMixin: Flask-Loginが提供するクラスで、ログイン機能に必要なメソッドを提供します。
  • db.Model: SQLAlchemyのモデルクラスを継承し、データベースとの連携を可能にします。
  • id: 各ユーザーを一意に識別するための番号(主キー)です。

2. ユーザー情報のフィールド

username = db.Column(db.String(80), unique=True, nullable=False)
password = db.Column(db.String(120), nullable=False)
favorite_band = db.Column(db.String(120))
favorite_genre = db.Column(db.String(50))
icon = db.Column(db.String(120))
  • username: ユーザー名(最大80文字、重複不可、必須)
  • password: パスワード(最大120文字、必須)。実際には暗号化して保存します。
  • favorite_band: お気に入りのバンド名(任意)
  • favorite_genre: 好きな音楽ジャンル(任意)
  • icon: ユーザーアイコンの画像パス(任意)

これらのフィールドにより、各ユーザーの基本情報と音楽の好みを記録します。

3. フォロー関係の実装

followed = db.relationship(
    'User', secondary=followers,
    primaryjoin=(followers.c.follower_id == id),
    secondaryjoin=(followers.c.followed_id == id),
    backref=db.backref('followers', lazy='dynamic'), lazy='dynamic')

この複雑に見える部分は、ユーザー間のフォロー関係を管理するための設定です:

  • secondary=followers: 先ほど定義した中間テーブルを使用
  • primaryjoin, secondaryjoin: フォロワーとフォロー先の関係を定義
  • backref: 逆方向の関係(フォロワー)を定義
  • lazy='dynamic': クエリの最適化のための設定

4. フォロー機能のメソッド

def follow(self, user):
    if not self.is_following(user):
        self.followed.append(user)

def unfollow(self, user):
    if self.is_following(user):
        self.followed.remove(user)

def is_following(self, user):
    return self.followed.filter(
        followers.c.followed_id == user.id).count() > 0

これらのメソッドにより、フォロー機能を簡単に実装できます:

  • follow: 指定したユーザーをフォローします。
  • unfollow: 指定したユーザーのフォローを解除します。
  • is_following: 指定したユーザーをフォローしているかチェックします。

これらのメソッドを使うことで、ビュー関数内でフォロー操作を簡潔に記述できます。

まとめ

ユーザーモデルは、音楽共有SNSの中心的な要素です。このモデルを適切に設計することで、ユーザー情報の管理やフォロー機能の実装が容易になります。

今回のモデル設計のポイントは以下の通りです:

  1. 基本的なユーザー情報(ユーザー名、パスワードなど)の保存
  2. 音楽の好みに関する情報(お気に入りのバンド、ジャンル)の追加
  3. フォロー関係の効率的な管理
  4. フォロー機能を簡単に使えるメソッドの実装

次回は、このユーザーモデルを使って、実際のビュー関数(ログイン、登録、プロフィール表示など)の実装について解説する予定です。

参考リンク

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?