NAKKA-Kの技術ブログ

技術に関する知見や考え方などを投稿します。

【WaZ】イベントの作成機能追加!

おはようございます、NAKKA-Kです。 今回もWaZの進捗ブログを書いていきます。

今回の進捗報告

今回は、WaZでメインの機能になるイベントに関する機能追加です。

今回できるようになったことは、以下です。

  • イベント一覧・詳細
  • イベント作成・編集・削除
  • アカウントの作成
  • イベントへの参加

ここまででWaZにおいてメインとなる機能は追加されました。 まだまだ機能は足りませんけどね。

現在の画面

イベント一覧画面の画像
イベント一覧画面

イベント詳細画面の画像
イベント詳細画面

機能説明

アカウント

WaZでは基本的にアカウントを元に、イベント周りを扱うことになります。

イベント

イベントは各アカウントで、自由に作成できます。
イベントの作成、イベントへの参加、等々はアカウントでログインした状態でしかできません。
イベントの閲覧やアカウントの作成などはログインしていなくてもできます。
イベントの編集・削除は基本的に、イベントの作成者本人にしかできません。

イベント参加

イベントへの参加・離脱は本人にしかできません。

実装について

見た目に関してはbootstrapを使いつつ、とりあえずの実装のためあまりこだわり過ぎずに作りきってしまいます。 その他、FontAwesomeなどのアイコンも使用しています。 バックエンドの実装はDjangoで行なっているので、そちらをメインに概要紹介します。

アカウント

Userは、django.contrib.auth.models.AbstractUserを継承したカスタムUserクラスを作成して使用しています。 アカウント作成はdjango.contrib.auth.forms.UserCreationFormを拡張し、CreateViewに拡張したフォームを持たせて実装しています。 アカウント系の実装だけをまとめたaccountsというアプリを作成し、役割を他の部分と分割しました。

イベント

ここに関してもeventsアプリを作成し、役割の分割をしました。 イベント周りの実装も、`GenericClassView系統をできるだけ継承させ、フレームワークの流れに沿った実装を心がけました。

from django.views.generic import ListView
from django.views.generic import CreateView
from django.views.generic import UpdateView
from django.views.generic import DeleteView
from django.views.generic import DetailView

このようにフレームワークにすでに実装された流れに沿って実装しておくと、あとあと見るときにどこで何をやっているのかがわかりやすかったり、変更が楽になります。 そしてすでにあるものを使うことで開発コストも下げたり、実装漏れも少なくすることができます。
イベント回りに関しては処理が多くなることがわかっていたので、Djangoでアプリを生成したときにもともと存在するviews.pyを削除し、viewsディレクトリを作成し、その中に適切にファイル分割したviewの処理をまとめるようにしました。
このように処理が多くなったり、煩雑になる場合は適切にファイル分けをすることが必要です。 ファイル分けをする場合は、それらのファイルがなんの分野に当たるのか明確にするために、今回であればviewsというディレクトリにまとめ、その中でそれぞれの役割がわかりやすいファイル名をつけて保存すると後々の保守性や可読性の向上につながります。

まとめ

今回の機能追加は作り始めのため、基本的な機能かつ簡単な実装機能ばかりなので、そこまで説明することもありませんでした。 今後、細かい実装などあれば適宜紹介していきたいと思います。