簡易ブログアプリ
ユーザーが簡単なブログを作成できるアプリ
投稿は記事のタイトルと本文のみ
ブログタイトルやヘッダー画像をユーザーが設定できる
使用技術
バックエンド(フレームワーク):Python (Django)
フロントエンド:HTML/CSS、Bootstrap
RDBMS:MySQL
IDE:VSCode
ソースコード:https://github.com/MasahiroOgata/MyBlogApp

制作や使用技術についての所感
・Django
Spring Bootと比べて大きく違うと思ったのは、ルーティングをまとめて設定するファイルが存在することと、モデルクラスを作成してからフレームワークでマイグレーションを実行するのが基本になっていることの2点です。また、マイグレーションや開発用サーバーの起動などでターミナルを操作する機会が多いので、IDEをVSCodeに変更しました。
アプリの動作中は、リクエストに対応するクラスや関数をルーティングで呼び出して処理を実行することになります。関数を利用すると細かく処理内容を記述できる一方、クラスをベースにした場合は標準的な処理であれば詳細に作り込まなくても極めて短いコードで実装することができます。
さらにミックスインやデコレータというものを付与して、例えばログイン認証を行うなどのさまざまな機能をクラスや関数に持たせることができます。複数の画面で共通した処理を切り出すことができるため、Spring BootのAOPに似た使い方もできると考えられます。
・苦労した点
Djangoでの開発では仮想環境を使うことが標準になっているのですが、仮想環境を作成する→仮想環境を有効化する→仮想環境にDjangoをインストールする→インストールしたDjangoを使ってアプリの制作を開始する、という手順に慣れるまではずいぶん苦労しました。ただ、仮想環境の使用には利点も多いので、今後も変わらず使い続けることになると思います。
・工夫した点
Djangoにはユーザー情報を管理するためのモデルがデフォルトで用意されているものの、新たなフィールドを追加できないといったように柔軟性に欠けることから、開発者がカスタムユーザーモデルを自作することが公式でも推奨されています。今回はカスタムユーザーモデルを作成して、そこにブログのタイトルやヘッダー画像などの情報を持つフィールドをいくつか追加して、ユーザーが自由に設定できるようにしました。
さらにユーザー本人だけが自分の記事を編集できるようにしたり、ログインしていないユーザーでも記事を閲覧できるようにしたりするため、複数のミックスインを組み合わせてログイン認証やユーザーIDの照合などを各クラスで実行しています。
・今後の課題
ブログアプリなので、コメント機能の追加を第一に考えています。コメント用のモデルを作成して、記事IDやユーザーIDを外部キーとして持たせるといった仕様になると思います。コメント機能の導入に合わせて、ブログのオーナーが、コメントを受け付ける、ログインユーザーのコメントのみ受け付ける、コメントを受け付けない、といった設定を変更できるように、ユーザーの管理権限についても変更する予定です。