「PythonでWebアプリを開発する」
このように思って調べた際、混乱しませんか?
プログラミング初心者だけではなく、かなりのベテランでも・・・
もし混乱して、この記事にたどりついたならラッキーです。
「PythonでWebアプリを開発する」ことを理解できるようになります。
ただし、この記事ではインストール方法の手順を説明はしていません。
この記事では、インストール以前に理解すべきことを説明しています。
また、DjangoとかFlaskなどは出てきません。
これらはただのフレームワークに過ぎません。
これらが一緒に出てくるから、話が混乱するのかもしれませんね。
本記事の内容
- 「PythonでWebアプリを開発する」の定義
- Webサーバー
- アプリケーションサーバー
この記事では、理解することを最優先にしています。
もっと言うと、厳密性を重視していないということです。
そもそも、厳密性を重視する方向けの記事ではありません。
それでは、上記に沿って解説を行っていきます。
「PythonでWebアプリを開発する」の定義
最初に、言葉の定義をしておきましょう。
「なんか、面倒だな~」と思う方がいるかもしれません。
安心してください。
小難しい説明は、できる限りで避けるようにしています。
話を戻します。
Webアプリとは、Webアプリケーションの略称です。
Webアプリケーション
では、Webアプリケーションとは?
Webアプリケーション = Web + アプリケーション
まず、この考え方(公式)を理解してください。
この考え方が重要になってきます。
Web
Webとは、インターネット上で標準的に用いられている文書の公開・閲覧システムのことを言います。
小難しいですね・・・
要するに、ブラウザでアクセス可能なページを表示するシステムと言うことです。
じゃあ、Webを実現するために必要なモノは何でしょうか?
この場合は、Webサイトと言った方がわかりやすいですね。
答えは、Webサーバーです。
これは、簡単ですね。
では、次はアプリケーションについて。
アプリケーション
みなさんが開発してつくるプログラムです。
PHPでも、Pythonでも、Javaでも何でもいいです。
「Hello World!」を表示するだけでもアプリケーションを言ってもよいです。
まあ、だからどうしたとはなりますけどね。
じゃあ、ここで質問です。
アプリケーションを動かすために必要なモノは何でしょうか?
(前提としては、Webサーバーと連携が可能であること)
答えは、アプリケーションサーバーです。
「PythonでWebアプリを開発する」の定義のまとめ
Webアプリケーションを実現するために必要なモノは以下。
機能(役割) | 必要なモノ(サーバー) |
Web | Webサーバー |
アプリケーション | アプリケーションサーバー |
これを前提にすると、「PythonでWebアプリを開発する」とは以下の定義になります。
Webサーバーを通じて、アプリケーションサーバ上のPythonプログラムにブラウザで間接的にアクセスできる。
定義と言うよりは、説明文になっています。
でも、これで「PythonでWebアプリを開発する」という言葉のイメージを共有できたはずです。
以下では、Webサーバーとアプリケーションサーバーを説明していきます。
Webサーバー
「Webサーバーとは?」については、語りません。
どのWebサーバーを使うべきかという内容となります。
Webサーバーと言えば、この2択です。
- Apache
- Nginx
2つ並べましたが、もうApacheの時代ではありません。
時代は、Nginxです。
Webサーバーのシェア争いについては、次の記事で解説しています。
長年Apacheを使い続けた私には、この事実が残念です。
これも時代の流れなのでしょう。
ただ、時代に乗り遅れないように、すでにNginxをインストールを使い始めています。
Nginxのインストールに関しては、次の記事でまとめています。
以上より、WebサーバーにはNginxをおススメします。
あくまで、「PythonでWebアプリを開発する」にはです。
あと、重要なことを確認しておきましょう。
Webサーバーだけでは、PHPやPythonなどは動かないということです。
「Apache上でPHPを動かしてきたぞ!!この嘘つき!!」
このように思う方がいるかもしれません。
実際、私もそのように考えていた時期があります。
種明かしをしましょう。
実は、Apacheが一人二役をしていたのです。
正確には、ApacheがWebサーバーの役割に加えて、アプリケーションサーバーの役割もしているのです。
この逆もあります。
Tomcatは、本職がアプリーケーションサーバーです。
それに加えて、Webサーバーの役割をするときもあります。
ややこしいですよね。
PHPでWebアプリを開発してきた人ほど、混乱するところかもしれません。
人間には、固定概念がありますからね。
でも、Pythonの場合には、一人二役が基本的にはありません。
実際にあるのかどうかはわかりませんが、少なくとも流行ってはいません。
よって、「PythonでWebアプリを開発する」場合には、一人二役は無視しましょう。
アプリケーションサーバー
「PythonでWebアプリを開発する」場合のアプリケーションサーバーについてです。
世間的には、以下のモノとなります。
- NGINX Unit
- Gunicorn
- uWSGI
Googleトレンドでの調査結果です。
この1年間の検索結果の推移となります。
日本
アメリカ
全世界
世界的(アメリカ含め)には、Gunicornがトップです。
日本だと、uWSGIがトップになります。
この違いは、何が原因なのでしょうね?
実際に利用したことがないので、経験者としては語れません。
ただ、一つ重要なポイントがあります。
NGINX Unitは、2017年末にデビューしました。
これは、Nginxの会社元が開発しているアプリケーションサーバーです。
個人的には、同じ会社で開発しているモノに飛びつきたいです。
細かいところまで手が届くでしょうしね。
日本では全く人気がありませんが、アメリカでは上昇傾向のようです。
その可能性に賭けてみるのも面白いですからね。
では、近いうちにNGINX Unitのインストールをしてみます。
また、それも記事にまとめます。
興味のある方は、また当ブログへ来てください。