【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
というディレクトリにまとめ、その中でそれぞれの役割がわかりやすいファイル名をつけて保存すると後々の保守性や可読性の向上につながります。
まとめ
今回の機能追加は作り始めのため、基本的な機能かつ簡単な実装機能ばかりなので、そこまで説明することもありませんでした。 今後、細かい実装などあれば適宜紹介していきたいと思います。
【WaZ】With any Zeal(WaZ)サービス開発始動!!
はじめまして、NAKKA-Kです。
このブログでは開発に関係する記事はなんでも投稿して行くブログとなっています。
今回の題目にもある通り、「With any Zeal」略して「WaZ」というサービスの開発記事をはじめていこうと思います。 WaZに関する記事には題目の先頭に【WaZ】とつけるので、WaZの記事だけ確認したい場合は参考にしてください。
WaZとは?
一言で言うと、「何か熱意をもって物事に取り組むことを応援するためのサービス」です!
開発に至った経緯
最初に思いついた理由は、自分の体験によるものです。 私のようなプログラマーに限らず、何かを作ったり勉強したりする人たちは、やる気に大きく左右されます。 やる気というのは気ままなもので、環境や人、気分によって大きく変動します。 1人で開発をしていると、どこかでやる気が切れて途中で作るのをやめてしまったり、勉強をしなくなってしまったりすることがありました。 私はそのやる気を維持するために、さまざな勉強会(LT、もくもく会等)に参加して新しいことに触れたり刺激を受けたりしていました。
ですが勉強会というのは参加費がかかったり、距離が遠かったり、そもそも周辺で開かれていなかったり、継続的に参加するには意外と大変だったりします。 そんな中で、勉強会に参加する以外でやる気を維持する方法を考えました。
1つは多くの人に知られること。 1つは複数人でやること。 1つは意見をもらうこと。 1つは他の人を見てやる気をもらうこと。
さまざまな方法がありますが、これらを限定して上手に行えるサービスは見つかりませんでした。 じゃあ、作ろう!自分も使えるものにしよう!と考えたのが6/27日でした。
実装について
実装
- Django2
- Bootstrap4
- PostgreSQL
- Heroku
管理
- Slack
- GitHub
- TravisCI
以上の物を使用すると決定しました。 このサービスはどんどん良くして行くつもりなので、これ以外の技術もどんどん取り入れて行くことになると思います。(特にReactなどを導入予定)
まとめ
今回の記事ではWaZサービスの紹介や実装基盤の一部について書きました。 今後、WaZの経過についてブログを書いて行くかと思います。 今後ともWaZをよろしくお願いします!!