PythonでWebアプリケーションを開発!人気のフレームワークも大紹介

Pythonで簡単にWebアプリケーションが作ってみたい……
でもどうやって作れば良いんだろう……

この記事を読んでいる方は、PythonでWebアプリケーションをできるだけ簡単に作りたいと考えていると思います。

Pythonは今でこそ機械学習用途で有名ですが、実は有名なWebアプリケーションや、制作を簡単にしてくれるWebフレームワークがたくさんあります。これらを使いこなすことで、簡単にWebアプリケーションの雛形が作れますよ!

こんにちは!侍エンジニア塾ライターのフクロウです!機械学習のインストラクターをしています。

この記事では、PythonのWebアプリを知りたい、学習して自分でも簡単に作ってみたいという方向けに、PythonのWebアプリケーション例やPythonで使えるWebフレームワークを紹介します。

大規模なWebアプリケーションではなく、シンプルなWebアプリケーションを作るのにおすすめのWebフレームワークを紹介しますよ!

この記事はこんな人のために書きました:

  • Pythonで製作されたWebアプリを知りたい方
  • Pythonを使ったWebアプリ開発に挑戦したい方
  • できるだけ簡単にWebアプリ開発ができるフレームワークを知りたい方

そもそもWebアプリケーションってなに?

まず最初にWebアプリケーションについて簡単に解説します。Webアプリケーションはインターネットのネットワーク上で、使用することができるソフトウェアを指します。

例としてはウェブメールサービスの「Gmail」、インターネット電話サービスの「Skype」などが挙げられます。Webアプリケーションの場合、本体のプログラムはWebサーバー内に存在します。

一方でPC本体にプログラムをインストールして使用するソフトウェアのことを、「ネイティブアプリケーション」と言います。

Pythonとは?

Python

Pythonは、近年主流となってきている、人工知能開発や機械学習によるデータ解析分野などで使用されているプログラミング言語です。Webアプリケーションを制作するプログラミング言語にはPHPやRubyがメインの場合が多いため、Pythonに関してはWebアプリケーション開発に使用されるイメージはそこまでありません。

ここではPythonの基礎とWebアプリケーション開発に使用される理由について解説します。

Pythonの基本概要

PythonはC言語やJavaなどと同じくプログラミング言語の一種です。そしてプログラミング言語のなかでも学習、習得が簡単であると言われており、コードの書きやすさ読みやすさに重点を置かれて作られました。したがって、

  • 少ないコードで簡潔に書ける
  • 専門的なライブラリが豊富

というのが特徴です。

比較的簡単に身に付けることができ、数値計算などにも適していることから、人工知能開発や機械学習によるデータ解析分野などに用いられます。

PythonでWebアプリケーションを開発できるの?

これまでWebアプリケーションの開発にはRubyやPHPを使用するのが主流でした。特に日本の企業ではRubyが多く使用されています。

ではWebアプリケーション開発にわざわざPythonを使う必要はないのではと思うかもしれません。

実はWebアプリケーション開発にPythonを使う以下のメリットがあります。

  • ライブラリが豊富である
  • 効率的な開発
  • メンテナンス性のよさ

特に数値計算に使用するライブラリが豊富にあるので、画像や音声認識などを組み込んだWebアプリケーション開発に強い効果を発揮します。

また少ないコードで簡潔に書けるので開発が簡単にできます。そして簡単に開発できるということはメンテナンスも簡単にできるということになります。

開発にはフレームワーク使用がおすすめ

そもそもWebフレームワークとは、Webアプリケーションを作るために必要な機能(クラスや関数)をまとめたライブラリのことです。

このフレームワークを使用することでWebアプリケーション開発に掛かる労力を削減することができるため、開発の強い味方です。またフレームワークを使用した開発では、誰がコードを書いても同じような記述になるため、複数人で1つのWebアプリケーションを開発するときは、その作業性が上がります。

Pythonには機械学習やゲームを始めとして、様々なアプリケーションを作るためのライブラリがあります。これから紹介するWebアプリケーションと組み合わせることで、Pythonで作ったアプリケーションを簡単にWebアプリケーションとして公開することができます!

他の言語のWebフレームワークではなく、あえてPythonのWebフレームワークを使うことの一番の利点がコレです!Python製の様々なプログラムと簡単に連携することができるので、サーバー側で使うプログラムの殆どをPythonで完結することができてしまいます!

PythonでおすすめのWebフレームワーク3選!

PythonにはたくさんのWebフレームワークがありますが、その中でも特に有名で、便利なものを3つ紹介します!

Django

[Django ドキュメント https://docs.djangoproject.com/ja/2.1/ より]

インストール方法

pip install Django

DjangoはPythonのWebフレームワークの中で、一番豊富な機能を持ったライブラリです。

Djangoを例えるならば、Ruby on Rails(RoR)のような全部入りのWebフレームワークに近いです。Djangoは本当にたくさんの機能があるので、習得するのは以下の2つよりも大変だと思います。

ですがDjangoを使いこなせれば、一通りWeb開発で必要な機能を使うことができるでしょう!

侍エンジニア塾のDjango記事一覧へ

Flask

[http://flask.pocoo.org/ より]

インストール方法

pip install flask

Flaskはマイクロフレームワークを自称するWebフレームワークです。Djangoと比べてシンプルで使いやすいライブラリです。

日本語訳されたユーザーガイドがあり(https://a2c.bitbucket.io/flask/)、学習も比較的容易です。

これはFlaskに限った話ではないですが、機械学習を使ったアプリケーション(手書き文字認識など)を作るとき、REST APIのいう仕組みを使うことで、シンプルなWebアプリ実装が可能です。

Flaskではこれを簡単に実装することができるので、手元で学習を行った機械学習モデルを使ってWebアプリを作りたいときなどにオススメです!

侍エンジニア塾のFlask記事一覧へ

Bottle

[https://bottlepy.org/docs/dev/ より]

インストール方法

pip install bottle

Bottleは非常にシンプルなマイクロWebフレームワークです。なんとソースコードが一つのファイルにまとめられていて、Pythonの標準ライブラリ以外に依存していません

Bottleの利点はなんといってもこのシンプルさです。Githubへのリンクからbottle.pyのソースコードを確認できます。

小規模なアプリケーション作成には適任ですが、今はGithubスターの数から見てもFlaskの方が人気のようです。ちゃんとしたものを作るときはFlaskを使った方が情報が多くて嬉しいかもしれません。

侍エンジニア塾のBottle記事へ

フレームワークはDjangoがおすすめ

上記で3つのフレームワークについて紹介してきましたが、もしこれからPythonフレームワークの学習を考えているなら、その中でも特におすすめなのが「Django」になります。

数あるPythonのフレームワークの中で、なぜDjangoがおすすめなのか、その理由と使い方について解説します。

なぜDjangoなの?

複数あるPythonのフレームワークで、Djangoをおすすめなのか、その理由の1つはGoogleTrendsで1位を獲得しているという点です。2005年より人気はどんどん上昇していき、現在まで1位の座を守り続けています。

引用:Google Trends

また国内の大手IT向け転職サイトのGreenでDjangoの求人数を検索すると199求人(2020年6月29日時点)あり、これは2番目に人気であるFlask求人の約2.5倍にあたります。企業でもDjangoを使用できるITエンジニアを求めていることが分かります。

引用:Green

2つ目は開発に必要となる有用な機能が数多く備わっていることです。例えば、

  • データベース入力フォーム
  • ユーザー認証機能

などです。特にユーザー認証機能はセキュリティの高いWebアプリケーションを容易に作成することができます。

このようにDjangoは他のフレームワークにはないさまざまな機能を備えており、非常に使い勝手が良いです。

Djangoの使い方

ここでは簡単に説明するため、Djangoを使用しての「Hello World」の表示の仕方について説明します。
まずコマンド操作でhelloアプリケーションを作成します。


$ cd myapp
$ python manage.py startapp hello


次にviewsの設定により、Hello World表示の設定を行います。


from django.shortcuts import render
from django.http import HttpResponse

def index(request):
return HttpResponse('Hello Django')


続いてHello Worldプロジェクトのルーティングを設定します。


from django.contrib import admin
from django.urls import include, path

urlpatterns = [
path('hello/', include('hello.urls')),
path('admin/', admin.site.urls),
]


helloアプリケーションのルーティング設定を行います。

from django.urls import path
from . import views

urlpatterns = [
path('', views.index, name='index'),
]


最後にhelloアプリケーションをプロジェクトに登録して完了です。


INSTALLED_APPS = [
'hello.apps.HelloConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

コマンドプロンプトでサーバーへアクセスしてみましょう。「Hello World」が表示されていれば成功です。

最初は「Hello World」を表示するのに、こんなにも手順を踏んだり、コードを書くの?と思うかもしれません。確かに数行程度の文字ならフレームワークを使う必要はありませんが、

  • ユーザー認証機能
  • 数値計算機能
  • 画像認識機能

などを追加していくとPythonで1からコードを書くより、Djangoを使用した方が絶対楽だし、Webアプリケーション作成が面白いと感じますので、ぜひ1度Djangoを使ってみてください。

Djangoを勉強するには

どのプログラミングの学習でも最初の入口として、「Hello World」を表示するというが最初の関門です。しかし、これだけではプログラミングスキルを習得したとは言えません。Djangoの場合もそうです。

侍ではDjangoの基本的な使い方から、学習におすすめの本を紹介しているサイトがあります。ぜひ参考にして頂き、自身の手でオリジナルWebアプリケーションを作成してみてください。

【Django入門】templateとHTMLを使ってWebページを表示しようDjango学習本おすすめ6選【入門者〜上級者までレベル別に紹介】

Pythonで開発されたWebアプリケーション例

これまではPythonでのWebアプリケーション開発の基本やおすすめフレームワークについて紹介してきました。これまでの解説から、

じゃあPythonで開発されたWebアプリケーションって何があるの?

と、疑問に思う読者もいらっしゃると思います。

ここではPythonを用いて開発されたWebアプリケーションについて4つ紹介します。

Instagram

引用:Instagram

写真共有サイトとして有名で人気の高いInstagramはフレームワークであるDjangoを使用し、Pythonによって構築されています。

もともとInstagramは、プログラミング開発経験のない共同経営者の2人によって開発されたそうです。最初は対応できていたのですが、ユーザーの膨れ上がりにより、開発が容易なPythonを用いるようになった経緯があるそうです。

YouTube

引用:YouTube Japan

2005年に設立されたYouTubeは、動画共有サイトとして世界で最も有名です。日本でも人気があり、現在ではユーチューバーなる人たちも現れ、広告掲載による収入源にもなっているほどです。

PythonはYouTubeのサーバーサイドの処理に使用されているそうです。

Spotify

引用:Spotify

世界中の楽曲やアーティスト、アルバムに無料でアクセスできるストリーミングサービスがSpotifyです。お気に入りの楽曲を集めて自身オリジナルのプレイリストを作成したり、シェアすることができます。

楽曲のデータ解析などにPythonの数値解析ライブラリが使用されているようです。

Dropbox

引用:Dropbox

Dropboxはオンラインストレージサービスとして世界中で良く知られています。どのような環境であってもアクセスして、同様の速度で動作する必要があるため、コード量が少なくかつ処理速度は速くないといけません。

少ないコード量で開発できるPythonは、Dropboxに最適だと言えます。

Python以外にWebアプリケーション開発に必要な言語とは

Webアプリケーション開発に使用されている言語はPythonだけではありません。例えば使用者が手軽に使えるようユーザーインターフェースを整えるためにはフロントエンド言語の習得が必要となってきます。

ここではPythonとともにWebアプリケーションの構築を支えるマークアップ言語について解説します。

HTML

HTMLはWebアプリケーションのユーザーインターフェースに関する骨格を作成するマークアップ言語です。Webアプリケーションで文字を読めたり、画像を見たりできるのも、この言語のおかげです。

HTMLの基本や詳細な役割については以下のサイトを参照してください。

HTMLとは?初心者でも分かる基礎知識から書き方まで詳しく解説

CSS

先程のHTMLがWebアプリケーションのユーザーインターフェースに関する骨格なら、CSSは見た目を整えるデザイン部分になります。文字の大きさ、色、配置などはこのCSSによって作られます。

ユーザーが使いやすいデザインとするには、HTMLとCSSのどちらも必要となります。詳しくは以下のURL先をご覧ください。

CSSの基礎徹底解説|初心者が絶対覚えておきたい3つのポイント

JavaScript

近年は画像や文字が動いたり、出現したりする動的なWebアプリケーションが主流となっています。このようにアプリケーションに動きをつけるのがJavaScriptになります。

JavaScriptを習得すれば、リッチなWebアプリケーションを開発するのも可能になります。詳しくは以下のURL先をご覧ください。

【超初心者必見】JavaScript入門攻略ガイド【基礎学習/アプリ開発/仕事獲得】

【Python】Flaskを学ぶためのオススメのコンテンツ5選
更新日 : 2020年5月8日

まとめ

この記事では、Pythonを使ったWebアプリケーション作成のために、Pythonで使えるWebフレームワークについて紹介しました。

  • Django
  • Flask
  • Bottle


これらの3種類を紹介しました。これら以外にも様々なフレームワークが提供されていますが、Webアプリケーションを最短で作ることが目的であるなら、ぜひDjangoを使ってみてください。

DjangoはWebアプリケーション作成の基本を学ぶにはもってこいの教材です。

なお、現在Pythonを勉強中の方は以下の記事もどうぞ。Pythonでできることと、その勉強法を中心にわかりやすくまとめました。

Python入門完全攻略ガイド

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

フクロウ

フクロウ

第一言語はPythonです。
皆さんRustやりましょう。