【原点回帰】PythonでWebアプリを開発するために必要な最低限の理解

【原点回帰】PythonでWebアプリを開発するために必要な最低限の理解 サーバー

「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アプリケーションを実現するために必要なモノは以下。

機能(役割)必要なモノ(サーバー)
WebWebサーバー
アプリケーションアプリケーションサーバー

これを前提にすると、「PythonでWebアプリを開発する」とは以下の定義になります。

Pythonで開発したプログラムをアプリケーションサーバーに設置する。
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のインストールをしてみます。
また、それも記事にまとめます。
興味のある方は、また当ブログへ来てください。

タイトルとURLをコピーしました