見出し画像

【初心者目線で比較】Pythonで各種フレームワークを使用してwebアプリ製作

<概要>

この記事の目的  :PythonでWebアプリを作成したので情報と感想の整理
この記事の対象読者:Python初心者でWebアプリを作成したいと考えている方
事前に必要な知識 :なし
---
Pythonを勉強し始めて数ヶ月ですが、今回Webアプリ制作のフレームワークであるDjangoに触れる機会がありました。

作成したWebアプリは公開できたものの、他のフレームワーク(Flask)やフレームワークを使用しない場合が気になりそれぞれ作成しつつ情報を整理しました。

Pythonってどんなだっけ、というところからスタートし、何ができるかを整理した後、特にWebアプリ開発に焦点を当て、DjangoとFlaskといった開発に役立つフレームワークについて触れていきます。

かんたんまとめ

・「フレームワーク未使用(Pythonのみ)」「フレームワークあり(「Django」「Flask」使用)」それぞれで簡単にログイン機能を持ったWebアプリを作り、作成時に感じたことをまとめた。

・長期で使うならDjango一択。覚えることが多すぎるのでしっかり勉強する必要はあるが、YoutubeやInstagram等有名なサービスで使われており、マスターした場合のリターンが大きいと感じた。

・初心者かつ大型案件の予定がない状況ではFlaskが学習コストも使い勝手も軽くて良さそうだと感じた。ただしFlaskの場合は顧客に納品することを想定しなぜFlaskなのか(なぜDjangoではないのか)を説明できる程度の理解は必要。

・フレームワークを使わないのは選択肢としてはなし。開発難度もあるが、実務レベルではセキュリティの実装が難しい印象。

開発を通じて実感したPythonの特徴

・コードが読みやすく、チームで作業しやすい

Pythonはコードは読みやすい。例として、インデントが同じ文を塊とするため、初心者でも見た目で処理の範囲が判断しやすいという特徴があります。

他にも、JavaやC言語では文の終わりに「;(セミコロン)」を打つことにより文の終わりを指示しますが、Pythonの場合は改行のみ、など見る人に優しい仕様です。

・多様なライブラリとフレームワークの存在

今回使用した「Django」や「Flask」はWebアプリ開発用のフレームワーク。正直フレームワークを使用しない場合は手探り感があり、難易度が高かったです。

見た目だけ整えるならそれでも良いですが今後セキュリティの観点でも見ていくとなると現状ではフレームワークなしは考えられません。

※【補足】フレームワークとライブラリの違い

最初は理解がふわっとしながら使っていましたが、以下のように区別されているようです。

・フレームワーク
フレームワークは、プログラミングにおいて、特定のオペレーティングシステムのためのアプリケーションの標準構造を実装するのに使われるクラスやライブラリの集まりを指します。

つまり、汎用的に必要なものをまとめている枠組みや骨組みのことです。

・ライブラリ
ライブラリは、汎用性の高い複数のプログラムを一つにまとめたもののことを指します。

つまり、クラスや関数といったパーツのまとまりで提供されるソースコードの部品のことです。

フリーランススタート「Pythonフレームワークのまとめ【2023年版】」(2023/8/15)
https://freelance-start.com/articles/69 

Pythonでの活用分野を整理

ところでPythonって何ができるんだっけ、というところを整理しました。驚くほど多様な活用分野がありますが、特に以下3つが実務で関わりそうかなと感じました。今回は1つ目の「Webアプリ開発」のみ触れています。

1.Webアプリ開発

今回触れた部分。DjangoとFlaskという二大フレームワークが特徴的。Djangoは堅牢な構造を持ち、大規模なプロジェクトに向いている一方、Flaskはシンプルさと柔軟性が特徴で、小規模なプロジェクトやプロトタイプ開発に適しています。

詳細は後述。

2.データサイエンスと機械学習

最も有名?Pythonはデータ分析や機械学習の分野でも広く用いられており、公式や有志の作成した豊富なライブラリ・ツールが特徴的。それらを使用して機械学習モデルを構築することができます。

3.ソフトウェア開発

ExcelやOutlookと連携したシステムや、様々なデスクトップアプリを作成できます。ファイル操作やネットワーク通信、定期的な処理などをPythonスクリプトで実行し、システム管理や日々のタスクの自動化に役立ちます。

Webアプリ開発フレームワーク


本題です。今回は以下3つの方法で簡単なWebアプリ開発を実施しました。

・Django

Djangoは、高度な機能を備えたフルスタックのWebアプリフレームワークです。データベースからフロントエンドまで幅広い機能を提供し、セキュリティや管理画面の実装が容易です。大規模なプロジェクトに適しています。

使ってみた感想:
Pythonのコードを書いているというよりはDjangoのコードを書いているという気持ちになりました。時間をかけたこともあると思いますが1番納得のいく仕上がりでした。学習難易度が高いもののその分のリターンはありそうです。

参考サイト:https://zenn.dev/nameless_sn/articles/why_Django_development

・Flask

Flaskは、シンプルで軽量なミニマルなWebアプリフレームワークです。拡張性が高く、必要な機能を選択的に追加できる特徴があります。小規模なプロジェクトやプロトタイプの開発に向いています。

使ってみた感想:
DjangoとPythonのみの中間という印象。学習難易度もそれほど高くなく、Webアプリ開発のために必要な機能は備わっており、欲しくなったら機能は後から追加できるフットーワークの軽さが魅力。

使用する文もそれほど違和感がなく、単純な作りやすさで見るとこちらが1番だと感じました。
参考サイト:https://wagtechblog.com/programing/Django-Flask-compare

・フレームワーク未使用

フレームワークを使わないパターンもあります。この選択をするのはおそらく予算がない時。格安サーバや無料サーバでも使用可能です(これらのサーバではpipコマンドが使えない=フレームワークを使用できない、等制約の可能性あり)。

使ってみた感想:
フレームワークがないので手探りなうえコード量も多くなりました。特別な事情がない限り選ぶことはないと思います。また、今後セキュリティの実装が必要になった時に対応するのは相当難易度が高いと感じます。

比較表

PythonWebアプリフレームワーク比較表 (赤字は特に重視した部分)

※参考:https://kinsta.com/jp/blog/Flask-vs-Django/
    :https://qiita.com/ichi_zamurai/items/9e449603e39e8054e301

まとめ

AWSや無料サーバの使用、独自ドメイン取得等も行なったのでもっと詳細に書きたかったのですが長くなったので今回は見送りました。

作成している時1番キツかったのはHTMLファイルの作成でした。Pythonのコードを書くつもりで始めたのに終わってみれば体感8割近くPythonではなくHTMLを書いていた気がします。この辺りはイメージと全く違い戸惑いました。

あとはエラー対応。筋トレをする人はジムにいる時間のうちトレーニングより筋肉をケアする時間の方が長いと聞いたことがありますが同様にコードを書くよりもエラーの対応に結構な時間を費やしていた気がします。

この辺りは経験・学習により練度を上げるほかに、予測入力機能を利用したり適度な休憩を入れてミス減らしたりとか対策しないといけないですね。

Illustrations by IRA Design


この記事が気に入ったらサポートをしてみませんか?