DjangoでWebアプリを開発する時に気を付けていることをまとめてみました。
Djangoに限った話ではないことも出てきますので、他のフレームワークを採用している方にももしかしたら当てはまるかもしれません。
具体的なコードの書き方とかではないのでその辺りはご了承ください。
かなり基本的なことが多めですので、これから初めてDjangoを使って開発していくという方に向けてまとめています。
Djangoで用意されているものを使う
何か機能を実装する時はDjangoで用意されているものを使いましょう。
みなさんがやろうとしていることは既に誰かがやろうとしていることが多いですし、そういったものはすでに用意されていることが多いです。
なので、実装の仕方が分からないものに関しては最初に調べて用意されていないものに関しては、自分で実装するようにしましょう。
別に自分で書いてもいいじゃないかと思われる方もいらっしゃると思いますので、すでに用意されている機能を使うデメリットとメリットを説明いたします。
すでに用意されている機能を使うデメリットとしては、カスタマイズの不自由さや、ドキュメントを読み込まないと分からないことが多いので慣れるまでは少し大変です。
メリットとしては、時間短縮、メンテナンスをする必要がない、不要なエラーと戦わなくていいなどがあります。
基本的にはすでに用意されているものを使っていくことで長く運用できる安全なアプリにすることができます。
極力オーバーライドしない
これは、先程のすでに用意されている機能を使おうという話の続きになりますが、用意されているクラスや関数を利用するときは極力オーバーライドしないようにしましょう。
オーバーライドとは、関数やクラスの一部または全部を書き換える事です。要は上書きですね。
用意されている機能を引き継いで使うときにこことここの処理の間にこの処理を挟みたいということがあるかと思いますが、そういった実装を行う際は、もう一度その処理は必要なのか考えなおしてみてください。
もちろんオーバーライドする必要な場合もありますが、もう一度考え直して実装することで、運用や修正の際のコストを格段に下げることができます。
もともと、こういう機能あったらいいよねというのはDjangoの方で用意されてることの方が多いですので、わざわざオーバーライドしなくていいなんてこともあります。
なので、オーバーライドするときはその処理は本当に必要なのか?すでに用意されてるのではないか?と疑ってみてから実装するようにしましょう。
テンプレートはファイルを切って共通化しておく
これは、正直好みの問題やチーム内でのルール次第ではあると思いますが、私は元となるbase.html、ヘッダー部分のheader.html、フッター部分のfooter.html以外にもお問い合わせフォームを複数箇所で使う場合はそのフォームだけのファイルを用意したりしています。
これも、運用と修正の際のコストを下げるために行っています。
あんまり切り分けすぎると管理がめんどくさくなってしまいますので、その辺りはトライアンドエラーを繰り返してバランス感覚を覚えていただければいいかと思います。
権限管理をしっかり行う
ユーザーの権限管理を行わなければならない時はテストをしっかり行うようにしましょう。
ページ単位で未ログインユーザー、ログインユーザー、スタッフユーザー、管理者ユーザーそれぞれがどこまでできるのかを把握してテストします。
こういったテストの小技ですが、プライベートモードか複数のブラウザを使うと未ログインユーザーとログインユーザーのテストが簡単に行えますよ。
他のブラウザでのデザインも確認できるので個人的には複数ブラウザでテスト行ってます。
権限をカスタマイズしている場合は、その分テストも増えますのがしっかり行っておきましょう。権限管理は脆弱性に直結してしまいますので石橋を叩いて渡るくらいの気持ちで実装していきましょう。
コメントを残す
最後に気を付けてほしいこととしては、実装の段階でその関数は何のための関数なのか、このクラスはどういう処理のクラスなのかなどできるだけコメントを残しておくと後々助かります。
チームで開発を行うときはもちろんのこと、自分ひとりであってもどういう意図で実装したのかを残しておくことは非常に大切です。
1週間もしたら自分のコードなんて忘れてしまうものです。毎回コードを読んでくみ取ってもいいですがコメントを残しておけばそれを読むだけでいいので時間短縮につながります。
気を付けるべきことまとめ
かなり基本的なことでしたが、慣れないうちは自分なりの書き方をしてしまいがちです。
先人たちがこうした方がいいと知恵を共有してくれていますので、そういった知識を取り入れつつ自分だけのWebアプリを作ってみてくださいね。
(Django好きのコミュニティみたいなもの作れたらいいなぁ)
- Djangoで用意されているものを使う
- 極力オーバーライドしない
- テンプレートはファイルを切って共通化しておく
- 権限管理をしっかり行う
- コメントを残す
コメント