はじめに

Pythonはとても理解しやすく書きやすい言語として依然人気があります。
そして、WEBアプリケーションもIT業界がインターネットで活発になった後に生まれた言葉ですが、現在ではごく一般的に使われています。
他の言語と同じく、PythonもWEBアプリケーション開発に適した言語であり、さまざまなことが実現できます。
今回は、WEBアプリケーション開発の流れとそこにPythonを採用した場合をご紹介します。

アプリケーションを理解する

ホワイトボードに記入する男

コンピュータ上ではさまざまなソフトウェアが動作して成り立っています。
WindowsやLinuxなどの基本となるもの(OS)もソフトウェアです。そして、Pythonで書いて作成したプログラムを動作させるとそれもソフトウェアの一種です。
そして、ソフトウエアの中でも、表計算ソフトやお絵描きソフトのように、ある目的を果たすために作られたソフトウェアをアプリケーションと呼んでいます。

WEBアプリケーションを理解する

WEBというのはWEBブラウザで閲覧するWEBサイトといった具合に皆さん普通に使用されているようにインターネット環境でよくお世話になっているWWW(World Wide WEB)のことです。
アプリケーションとは、メールを閲覧するソフトウェアやEXCELやWord、つまりソフトウェアとほぼ同義で考えて今はかまいません。
つまり、WEBアプリケーションとは、WEBブラウザを使用して動作するアプリケーションのことを指しています。

WEBアプリケーションの利点

指さすビジネス本

WEBアプリケーションの特長といえば、WEBブラウザで動作することもあり、基本的にはインストール作業が不要ですぐにPCで動作することになります。
(現在のPCで、ブラウザが何かしら入ってないことはほぼないという観点からです)
WEBブラウザがあれば特別な環境やインストール作業がなく動作できるということは、場所を選びません。しかも開発そのものも通常のアプリケーションより手軽な場合が多く開発の敷居としても低めです。

アプリケーションにおける入力と出力

プログラミング

アプリケーションの基本中の基本、WEBに限らず以下が挙げられます。

指示を与えるための仕組み(入力)
指示に従って処理結果を返す(出力)

例えば、値を適切な場所に入力すると、計算式を元に結果表示部分に計算結果を出力する、関数電卓などもそういった基本に沿って動いています。
入力の仕方や数、そして結果の表示の仕方や方法は千差万別ありますが、基本としてどのアプリケーションもやっていることは入力と出力ということに変わりはありません。

コツコツ独学×スクールで実践。未経験からエンジニアに転職!【WebCamp卒業生インタビュー】

アプリケーションを作るということ

入力に対して出力を返す、というのが基本です。
それはアプリケーションの特徴というよりは、コンピュータ上のプログラムは皆そうです。
Pythonでいえば、ある関数を使用する場合は、入力値は引数と呼ばれ、出力値は戻り値などと呼ばれます。
ただし、Pythonの関数などが扱う値は、数値や文字列のようなそのままの情報です。
年齢などはそのまま数値でも構いませんが、例えば地域分けをする際に番号で管理していたり、出席番号などの情報の場合に、そのまま入力となれば、番号の管理方法を知っていないと入力できませんし、出力されても意味がわかりません。
こういったデータはコンピュータには処理の流れとして扱いやすくされていますが、人間にとっての入出力としては不親切な場合が出てきます。
多くのアプリケーションは誰でも簡単に使えるような操作方法を備えています。
処理の結果についても分かりやすく工夫されて表示したりすることが可能です。
つまり、アプリケーションは、操作者にとって入力と出力をわかりやすくして使いやすくしているソフトウェアと言うことになります。

ユーザインターフェース(UI)

操作者に分かりやすい操作方法や処理結果の表示・表現とありましたが、こういった操作者、つまり使うユーザのための見た目の仕組みにことをユーザインターフェース(User Interfase)といいます。
単にUIと呼ばれることが多いです。
基本の画面のボタンや各種メニュー、表示用のボックス領域や、選択プルダウンボックスなどすべてUIの一部です。

今回のWEBアプリケーションでは、WEBブラウザがまずUIの基本画面となっています。
ブラウザ画面でボタンなどを配置して、UIや操作の結果を表示するアプリケーションがWEBアプリケーションです。
WEBアプリケーションでない、たとえばネイティブアプリケーションと呼ばれているものは、それぞれ独自にUI画面を持ちます。たとえ同じ条件で組んだとしてもWindowsとLinuxなどでは画面の雰囲気が変わることもあります。
それに対してWEBアプリケーションはOSの影響を受けずにブラウザに依存してUIを構成しているのでどの状況でも同じUI画面となります。

Pythonを習得する

WEBアプリケーションを組む上では、HTMLという技術を使ってユーザーインターフェースを表示することになります。
また、HTMLは記録するための言語ということで画面の表現力が乏しいため、CSSという装飾用の技術もよく用いられます。(HTMLのバージョン5では装飾的なこともかなり改善されています)
そして入出力の時に多く用いるのはやはり文字列です。名前や年齢、その他の情報は文字列でやり取りすることが多いです。
そうった文字列を扱うさまざまな機能がPythonは豊富ですし、WEBアプリを作成するときの便利な機能が標準で多く搭載されています。

PythonでWEBサーバを使う

Webアプリケーションでは、WEBブラウザで動作するアプリケーション(クライアント)とWEBサーバ側のアプリケーションが必要です。
Webブラウザ自体は大体のPCには標準搭載されているので難しいことはないですが、WEBサーバは別途用意する必要があります。
もちろん有名なApacheやその他のWEBサーバ機能を有するフリーウェアや商用ソフトウェアを使っても良いのですが、実はPythonの標準ライブラリを使ってもWEBサーバ機能を実現することが出来ます。
つまり、Pythonをインストールすれば、WEBアプリケーション開発だけでなく、その実行環境であるWEBサーバも用意できてしまいます。
実際にリリースするような場合はともかく、開発やテストにはこれで十分事足ります。
開発のための環境構築の煩雑さ・難度が下がるため(WEBサーバのための別のソフトの学習の必要がない)、よりPythonでは開発しやすい結果になります。

PythonでWEBサーバを起動

WEBサーバ機能としては、http.serverというモジュールを使用します。
実際にWebサーバを動かすには以下のコマンドを実行します。


<span>#python -m http.server 8000 --cgi
</span>

Serving HTTP on 0.0.0.0 port 8000 ...

WEBブラウザのURLで「http://127.0.0.1:8000/」にアクセスすると、ファイルのリストが表示されます。
リスト内容はともかく、これが表示されるということはWEBサーバが起動しています。
ちなみに実行している画面(Windowsならコマンドプロンプト自体)を消すとWEBサーバ機能も終了します。

127.0.0.1というのはループバックアドレスという自分自身のコンピュータを指します。
コロン記号で示された番号はポート番号と呼ばれるものです。
「自分自身(PC)の中で、ポート番号8000番を設定して起動されたWEBサーバ」に、先ほどのURLはアクセスしています。

WEBサーバでHTMLを表示する

WEBサーバ起動後に見たURLではファイルのリストが表示されました。
あれは、WEBサーバ起動を実行したフォルダにあったファイルです。(C:\から起動すればC:\直下のファイル)。
WEBサーバの起点となるフォルダの場所を「ドキュメントルート」といいます。
さきほどは起動フォルダがそのままドキュメントルートになりましたが、設定で変更することもできます。

「http://127.0.0.1:8000/」でアクセスするフォルダ(ドキュメントルート)に「test.html」というファイルを作成します。
中身は何でも構いません、シンプルなHTMLファイルでいいと思います。
そして「http://127.0.0.1:8000/test.html」に再度アクセスします。すると、test.htmlの内容か゛表示されます。
このようにHTMLファイルを配置していくことで、より複雑なページを作成したりも可能です。

PythonサーバでPythonプログラムを動作させる

実際にURLからクエリを渡すPythonプログラムを動作させます。
Pythonルートにcgi-binフォルダを作成し、その中に以下の内容を「httptest.py」で保存してください。


#!/usr/bin/python3
# -*- coding: utf-8 -*-

import cgi<span>html_body = """
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;foo表示&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;B&gt;foo=%s&lt;/B&gt;
&lt;/body&gt;
&lt;/html&gt;
"""
</span>

form = cgi.FieldStorage()
text = form.getvalue('foo','')

print(html_body % (text))

これは、「クエリとして渡したfooキーの内容を表示」するものです。
ファイルを保存したら、PythonのWEBサーバをPythonルートで立ち上げた状態て゛次のURLへアクセスしてください。

http://127.0.0.1:8000/cgi-bin/httptest.py.foo=aaa

画面上上に「foo=aaa」と表示されたら成功です。
URLの「foo=」の後の値を書き換えると結果も変わります。いくつか試して確認してみてください。

おわりに

PythonでのWEBアプリケーション開発への取り掛かりまでをご紹介しました。
あとはアイデアとより緻密なアプリケーションへとご自分で設計計画して取り組んでみてください。
組んでいけばとてもわかりやすい言語だと実感するはずです。
完成したらぜひ公開してみてみるのもいいと思います。

pythonに関するほかの記事はこちらとなっております。

【python超入門】WebサイトでPython学習のすすめ

DMM WEWBCAMPについて

DMM WEBCAMPは3ヶ月間で未経験から即戦力エンジニアを育成する転職保障付きのプログラミングスクールです。1ヶ月でプログラミング・Webデザインを学ぶ通い放題の「ビジネス教養コース」も展開しています。

DMM WEBCAMPを運営する株式会社インフラトップ では、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。

キャリアアップを目指す方は、この機会に私達と一緒にプログラミングを学んでみませんか?

【インタビュー】1ヶ月でRubyをマスターし、Webエンジニアに!

実際に1ヶ月のプログラミング学習と手厚いキャリアサポートでエンジニアとして転職したWebCamp受講生にお話を伺いました。

「エンジニアとして転職したい!」

「キャリアサポートは本当に充実してるの?」

と疑問に思っている方は、是非この記事を読んでみてくださいね!

【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!

8月枠も残りわずか】当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のDMM WEBCAMP(旧WEBCAMP PRO)。
7月受入枠は満員となっております。8月枠に向け、お早めの申込みをオススメします。
・フリーランスのように自由に働きたい
・会社の将来が不安だ
・給与や待遇に不満がある

上記にあてはまる方は、ぜひご検討ください!

おすすめの記事