こんにちは、hokkyokunです。
Django学習2日目です。
前々からDjangoについては、興味を持っていて、ちょこちょこ調べていたのですが、学習する決心がつかず、半ば勢いで学習計画とその進捗ブログを立ち上げました。
ただ、もやもやしたこともあったので、少し調べてみました。
本当に学習する必要があるの?
DjangoとFlaskどっちがいいの問題
Flaskという存在
さて、Djangoを調べていくと必ず目に付くのがFlask。
このFlaskというのはDjangoと同じフレームワークで、ウェブサイト立ち上げに必要なパーツが揃えっているパッケージです。
しかもこのFlaskというのはDjangoよりも学習コストが低いという評判です。
私の場合どちらを選択するべきなのか迷ってきました。
大きな学習コストを払ってまでDjangoを学習する必要があるのでしょうか?
DjangoとFlaskの比較表
DjangoとFlaskの比較表です。
特徴 | Django | Flask |
---|---|---|
タイプ | フルスタックWebフレームワーク | マイクロWebフレームワーク |
開発の速度 | Djangoは多くの組み込み機能を持っているため、迅速な開発が可能 | Flaskはシンプルで軽量なため、小規模プロジェクトやプロトタイプの迅速な開発に適している |
柔軟性 | デフォルトの構造と方法論に従う必要があり、カスタマイズには多少の労力が必要 | シンプルで柔軟性が高く、アプリケーションの構造を自由に設計できる |
機能の豊富さ | 認証、セッション、管理インターフェイスなど、多くの機能が標準で含まれている | 最小限の機能しか提供しないが、拡張可能で必要な機能を追加できる |
学習曲線 | 機能が豊富なため、初学者にはやや難しい可能性がある | シンプルで習得が容易、初心者にも扱いやすい |
データベースのサポート | Django ORMを通じて複数のデータベースをサポート | データベースサポートは拡張機能を介して行うため、より柔軟性があるが設定が必要 |
使用用途 | – 大規模なアプリケーションやフルフィーチャーなサイト開発に適している | – 小規模プロジェクト、マイクロサービス、API開発に適している |
これを見ると迷ってきますね。本当にDjangoでいいのかな?オーバースペックでしょうか?
ちなみに求人数でみるとDjangoは10,000件を超えていました
一方Flaskは3,200件ほどでした。
受容的にはDjangoの方が高そうですね。
年収の違いはソースがあいまいでしたが、Djangoの方が高いと指摘しているサイトが多いようです。
【結論】Djangoの学習を継続
結論としてはDjangoを頑張って学習しようと思います。
理由としては、そもそもウェブフレームワークを使って何をしたいかというと
【目標】完全自動のウェブサイトの作成
- PythonでスクレイピングやAPIから情報を取得
- 情報をもとに独自計算(アルゴリズム)
- 情報をアップデートしhtmlに編集
- 自動更新
- これらをVPSサーバー上でデプロイ
- 基本ノータッチで、メンテナンスは極力減らす
具体的には株価の情報取得とそこからの解析をウェブサイト上で公開するサイトです。
ここで重要になってくるのが情報の管理です。
Djangoはデータベース管理が楽になる仕様があるらしいので、コード量を節約できるみたいです。
また、セキュリティ管理がデフォルトであるので、その点も安心できます。
将来的に銘柄数アップや他ジャンル(例えば仮想通貨)への拡張も考えた場合、Djangoの方がいいかなと思います。
今日の学習成果
今日はDjangoの書籍を三分の一くらい進めました。
Djangoのツボとコツがゼッタイにわかる本という本です。
今日こなしたのは、主にDjangoの概要と環境構築、簡単なウェブサイトの作成までです。
ただ、実際に手はまだ動かしていません。
先ずは通読し、全体像を把握してから手を動かしてみようと思います。
その中で学習して得た要点をまとめていこうと思います。
フレームワークはラーメン屋と同じ?
面白かったのはフレームワークの仕組みをラーメン屋で例えていたことです。
例えばブログを作成した場合、一つのリクエストに対し、一つの記事URLを提示し、レスポンスとして返すことが基本です。
https:~/how-to-begin-djangoみたいなURLに対してはそれに対応したページをあらかじめ作っておかなければいけませんよね?
対してフレームワークはリクエストに対し、オーダーメイドでテンプレートを加工し、レスポンスとして返す構造が形成されています。
これはあたかもラーメン屋で、客の注文からトッピングを選び、器の大きさを選び、ラーメン担当の人、餃子担当の人など調理する人や工程を選んで、オーダー通りのラーメンセットを提供するのと似ているということみたいです。
私はすでにブログを運営していますが、ETFのシミュレーションや配当金情報をまとめています。
それぞれ個別で記事を作っているのでETFが200種類あれば200個htmlを用意しています。
これが普通だと思っていたら、そうじゃない仕組みがあるということに衝撃を受けました。
環境構築はコマンド入力に慣れなければいけない
さて、初心者キラーの環境構築です。
私もPythonの環境構築嫌でした。今でもあやふやなところがあるので、メンテナンスは恐る恐るです。
私はWindowsユーザーなのですが、環境構築をするためにはコマンドプロンプトを打たなければいけません。
↓こういうやつですね
結論から言うと慣れかなと思いました。
未だにカレントディレクトリってどうやってみるんだっけ、なりますが、慣れてくるとフォルダ移動とかもマウスクリックよりも簡単になりますし、何度か使っているとそんなもんか。となる気がします。
ざっくり流れを言うと、
WSLという機能でLinux環境の構築
Linux用Pythonのインストール
コーディングエディター(VSCode)のインストール
仮想環境の構築
です。
文字で書くと「うわー」ってなりますが、一つ一つは見ていくとできそうな気はします。
まだ、手は動かしていないので、通読してから実際にやってみます。
Djangoで簡単なウェブサイト構築
Djangoから「Hello World」と出力されたページ作成までの工程です。
ここでもコマンドでファイルを作成したりすることが多かったです。
多分最初は見ながらひとつひとつ追っていくことになると思いますが、なれてくると全体像がつかめ、案外簡単に出力できるなと思いました。
少しPythonコードをいじります。
ユーザーからのリクエストに対し、どうやってHtmlを当てていってるのかのしくみがとても面白いです。
URLに含まれる文字列と合致したら、対象のプログラムを呼び出し、そのプログラムがHtmlを生成させているイメージです。
まだ、一対一の関係のプログラムですが、うまく作ればオーダーメイドされたページが作成できそうです。