Pythonによるウェブサイトの作り方
Pythonは、科学技術計算やデータ分析に用いる汎用プログラミング言語です。開発生産性が高く、多くのライブラリを活用することができます。Pythonは、Webページからデータを取得して分析することも可能で、Webサイトのアプリ開発でも利用者が増えています。
ここでは、Pythonを用いたWebサイトの作り方を学んでいきます。
【参考】:python
ウェブサイト用のフレームワークについて
PythonアプリをWebで動かすには、Webサイト用のフレームワークを用います。Webサイト用のフレームワークとして、ウェブ・アプリケーションフレームワーク(Web Application Framework)があります。
ここで言うフレームワークとは、アプリケーション開発を簡単に行うための枠組みやライブラリを指します。
アプリはすべてを独自に開発することもできますが、Webを動かしたり、操作したりなどのWebサイトの共通オペレーションはフレームワークを活用するのが良いでしょう。Pyhonはデータ分析が得意ですので、Web上のデータを収集・蓄積し、利用することができます。
ウェブ・アプリケーションフレームワークの実装の違い
ウェブ・アプリケーションフレームワークの実装は、動的コンテンツを生成するためにクライアントあるいはサーバーサイドのプログラミングに分かれます。
デスクトップアプリケーションなどのように小規模なものは、クライアントのページの一部を更新するなどで対応します。シングルページアプリケーションと呼ばれる手法で、JavaScriptが多用されます。
この場合は、クライアントサイドで実行するJavaScript用ウェブ・アプリケーションフレームワークを用います。
データベースの蓄積データを参照して、ページを生成する場合などはサーバーサイドで実行するのが便利です。サーバーサイドのコンピューティング能力が必要ですが、クライアントの処理はブラウザ表示に限定されるので、マルチクライアントでの利便性が向上します。
サーバーサイドでは、Pythonや、Perl・PHPなどのプログラミング言語が用いられます。
ウェブサイト作成に便利なPythonのウェブ・アプリケーションフレームワーク
ウェブ・アプリケーションフレームワークは、それぞれのプログラミング言語に応じて各種提供されています。Webで用いる処理や機能を提供します。ここでは、Python向けの主なウェブ・アプリケーションフレームワークをピックアップして解説します。
Django
Djangoは、データベースを利用したWebサイトの構築に用いるウェブ・アプリケーションフレームワークです。データベースは、リレーショナルデータベース(RDB)やNoSQLに対応します。日本のユーザーコミュニティもあり、日本語情報が充実している特徴があります。
【参考】:Django 【参考】:djangoproject.jp
Flask
Flaskは、マイクロフレームワークと呼ばれる軽量なウェブ・アプリケーションフレームワークを提供します。最低限の機能のみを提供することで、軽量化を実現しています。必要な機能は追加が可能で、Djangoに次いで人気がある、ウェブ・アプリケーションフレームワークです。
【参考】:Flask
web2py
web2pyは、Django同様にデータベースアクセスを行うウェブ・アプリケーションのフレームワークです。フルスタックでありながら、アジャイル開発向けフレームワークの提供を目的としています。Web脆弱性への対応などセキュリティの確保にも強みを持ちます。
日本語のコミュニティサイトも開設されており、日本人にとっては利用価値が高いフレームワークです。
【参考】:web2py 【参考】:web2py Japan
TurboGears
TurboGearsは、MVC(Model-View-Controller)アーキテクチャに基づくウェブ・アプリケーションフレームワークです。MVCそれぞれに対応する、SQLObject、Kid、CherryPyのコンポーネントを提供します。加えてJavaScriptライブラリであるMochiKitにより、Ajaxの機能を実現します。
【参考】:TurboGears
Pyramid
Pyramidは、PylonsのプロジェクトとしてPylonsからプロジェクトを引き継ぐ、ウェブ・アプリケーションフレームワークです。Python 3.2以上で動作する軽量で高速なフレームワーク機能を提供します。PylonsやDjangoの影響を受けて、新たなコードベースとしてリリースされました。
【参考】:Pyramid 【参考】:Pylons Project
Djangoの使い方
ここからは、ポピュラーなウェブ・アプリケーションフレームワークであるDjangoの使い方について学んでいきます。Djangoでは、公式サイトのドキュメントを日本語で提供しており、Djangoを利用するまでの手順が紹介されています。
アプリ開発では、サンプルコードを見ながら手順を学ぶことができます。
ここでは、最初にDjangoを用いたアプリ開発の概要、そしてインストールに向けた事前準備やインストール作業について解説します。
【参考】:Django 【参考】:Django ドキュメント
Djangoを用いたアプリ開発の概要
Djangoは、データベースを利用したウェブ・アプリケーション開発のフレームワークです。軽量な開発用Webサーバが付属します。データベースは、Pythonインストールで利用できるSQLiteを用い、本番環境では推奨のPostgreSQL、あるいは公式サポートされるデータベースを利用します。
データベースの利用には、モデルの設計が伴いますが、付属のオブジェクトリレーショナルマッパーを用います。その後付属のユーティリティでデータベーステーブルを自動作成し、生成されたAPIでデータにアクセスします。
ビューの作成は、テンプレートシステムを用いることができますし、自作することも可能です。
【参考】:Django の概要 【参考】:Django FAQ: インストール 【参考】:Django: データベース
Djangoのインストール準備
DjangoはPythonで使用するウェブ・アプリケーションフレームワークです。事前にPythonのインストールが必要です。FAQに記載の通り、DjangoとPythonの組み合わせはサポートされるバージョンが定められています。最新のDjango 5.0は、Python 3.10、3.11、3.12が必要です。
使用するデータベースは、Pythonと一緒にインストールされるSQLite、またはサポートされているデータベースを使用します。この時点ではデータベースの設定は不要です。
【参考】:Django: クイックインストールガイド 【参考】:Django FAQ: インストール 【参考】:python Downloads
Djangoのインストール
Djangoは、pipを用いて公式リリースをインストールします。”python -m pip install Djando”で実行し、インストールします。もし、pipを未導入の場合は、必要に応じてPythonインストール後に事前導入しておくと良いでしょう。
公式リリースの他、OSのディストリビューション提供版や最新の開発版を使用することもできますので、用途に応じて選択します。
【参考】:Django: クイックインストールガイド 【参考】:pip: Installation
Djangoの動作確認
Djangoのインストールが完了したら、Pythonから”import django”のようにDjangoをインポートし、動作を確認します。バージョン番号が”django.get_version()で戻ったら、正常にインストールされています。
Djangoのアプリ作成の手順
Djangoのアプリ作成は、最初の手順としてアプリ向けにプロジェクトを作成します。”django-admin startproject [サイトディレクトリ]”のように、コマンドを実行します。django-adminコマンドは、Djangoのコマンドラインユーティリティで管理タスクを実行するものです。
ここで生成されたmanage.pyは、プロジェクトの操作を行うコマンドラインユーティリティです。”python manage.py runserver”コマンドで、開発用Webサーバを起動します。
続いて、”python manage.py startapp [アプリディレクトリ]”コマンドで、アプリケーションディレクトリを作成します。ディレクトリ内のviews.pyはビューを設定するためのファイルです。urls.pyで指定した対応付けに応じて実行されます。
urls.pyでパスが設定されると、”python manage.py runserver”で起動したWebサーバのURIからパスを指定することが可能となります。
上記作業の後、データベースの設定は「サイトディレクトリ」のsettings.py、モデルの作成は「アプリディレクトリ」のmodels.pyから行います。コードの動作には自動テストのルーチンも用意されています。動作が安定したら、スタイルシートや画像などを追加し、アプリを完成させます。
【参考】:はじめての Django アプリ作成 【参考】:Django: django-admin と manage.py
Pythonでウェブサイトを作るのは難しくない
Pythonは、汎用プログラミング言語のため幅広い用途に利用することができます。豊富な開発のフレームワークやライブラリが活用できます。Webサイトを作る場合も、Pythonの特徴を有効活用して動的コンテンツを生成することができますので、おすすめのアプリ開発の手法と言えます。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから