42
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

マッチングアプリをDjango×Flutterで個人開発した話

Last updated at Posted at 2022-06-10

はじめに

技術力向上を目的にマッチングアプリを開発してみましたのでご紹介します
本番リリースの予定は特にありませんが、ブラッシュアップしていつかリリースしてみたいです
また実装ナレッジも作成していますので、マッチングアプリを作りたい方は参考にしてください

キャプチャ

以下のようなアプリとなっています

ホーム画面 ログイン画面 自己プロフィール画面 ドロワー プロフィール一覧 プロフィール詳細 メッセージ画面
image.png image.png image.png image.png image.png image.png image.png
パスワードは表示非表示切り替え可能 登録・更新共通 異性のプロフィールを確認することができる ハートを押すといいね マッチングした人とのメッセージのやり取り

作り方

実装ナレッジを全文15万文字で公開しています。
マッチングアプリを自作したいと思っている方は必見です。

要件

MVPとしてリリース可能なマッチングアプリには以下の要件が最低限度必要だと考えました

  • 児童でないことを確認することができる
  • 自己プロフィールを編集して異性に公開することができる
  • 異性のプロフィールを閲覧することが出来る
  • 気に入った異性にいいねを送ることができる
  • マッチングしたユーザーとメッセージのやり取りができる

なお児童に使わせてはいけないことに関しては法的に定められていることですので、マッチングアプリの制約事項としては必須のものとなります
本アプリではクレジット決済による年齢確認の実装を行いました

児童でないことの確認を済ませていない利用者に、インターネット異性紹介事業サイトを利用させた場合、行政処分の対象となります
利用させる前に、本法施行規則第5条に定められた、次に掲げるいずれかの方法を必ず実施し、年齢確認を行ってください。

クレジットカードでの支払い等、児童が通常利用できない方法によって料金を支払う旨の同意を得ること。(注記1)
 
警視庁HPより

なお、法律的用語としてマッチングアプリは「インターネット異性紹介事業」という名前で定義されているようですので、各種法令の内容を調べる場合はこちらの用語で調べた方が検索しやすいかと思います

実装した機能

実際に実装した機能に関しては以下です

  • アカウント登録機能(仮登録 → アクティベーション)
  • ログイン機能(JWT)
  • Email認証(Email経由での本人確認)
  • クレジットカード決済機能(成人確認とアカウントのアクティベーション)
  • 自己プロフィール編集機能
  • 異性プロフィール一覧閲覧機能
  • いいね・マッチング機能
  • メッセージ機能

使用技術

【バックエンド】
Django (Django Rest Framework)

【フロントエンド】
Flutter

【決済機能】
Stripe

ER図

image.png

開発期間

ちょこちょことやっていたので、1年半程度かかりました
ちなみに元々はDjangoのみで作成を試みていたのですが、FlutterとDjangoの知識を半年ほど前にUdemyで習得してから作りなおしています

自慢したいポイント

自己満足で作ったアプリのため個人的にすごいと自慢したいところを列挙します

  • 1人でフルスタック開発
  • 開発需要が大いにあると思われるマッチングアプリの作り方のナレッジを残した
  • FireBase以外のバックエンドを使ったFlutter開発について実装して、作り方も紹介している
  • 決済機能を実装した

難しかったところ

ユーザー仮登録からのアクティベーションの実装に関しては、ブログの実例などが少なく調べるのに苦労しました
また今現在はUUIDでトークンを生成してそのトークンに一致するURLにアクセスするとユーザーをアクティベーションする実装になっていますが、果たしてこれがセキュリティ的に大丈夫なのかどうかが懸念事項ではあります

課題や反省点

  • リリースしていないため不完全燃焼
  • テストを実装していない
  • Flutterの状態管理が最近はRiverpodになっているっぽいがそのトレンドを追えていなかった
  • メッセージはリアルタイムに更新しないためWebSocketなどでリアルタイム通信を反映させたい
  • UIを適当に作っているため作り込みたい(特にチャット画面)

おわりに

Qiitaでよく見る個人開発記事を自分も書くことができて開発者の仲間入りができた感じがして個人的にうれしいです
今後も研鑽を続けて社会になにかインパクトを与えるプロダクトをいつか作ってみたいですね

42
25
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
42
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?