プログラミング言語の一つ「Python」。WebアプリケーションからAI(人工知能)の開発にまで使える汎用的な言語として注目を集めています。
プログラミング言語には「Webフレームワーク」と呼ばれる機能があり、活用することでソースコードを書く作業の効率化が可能です。もちろんPythonにもフレームワークがあります。
この記事では、
「Pythonのフレームワークについて知りたい」
「どのフレームワークを使えばいいか知りたい」
「Python及び、フレームワークの使い方を身につけたい」
という人向けに、Python Webフレームワークについて解説します。
この記事の目次
「Python(パイソン)」とは
出典:Python
「Python(パイソン)」とはプログラミング言語の1つです。
Webアプリ開発、AI(人工知能)の開発などが可能な、汎用的なプログラミング言語として人気が集まっています。
近年、AI(人工知能)に使うため、Pythonが注目されているのです。2010年ごろから「第3次AI(人工知能ブーム)」が始まりました。AI(人工知能)、IoTの開発に乗り出す企業も増えています。これにより、AI(人工知能)開発に使えるPythonの需要も高まっているのです。
後述しますが、Pythonはコードがシンプルで読み書きしやすいのも特徴の1つ。プログラミング初心者の入門としてもおすすめできる言語です。
参照:Pythonはプログラミング入門に最適!?現役プログラマーの声を集めてみた
この記事もオススメ
Pythonの特徴
Pythonの特徴としては、まず文法がシンプルで読み書きしやすいということが挙げられます。そのため、「Ruby」などと並んで、プログラミング入門として学習用に使われることもあるのです。
また、開発できる分野の幅広さも特徴の1つでしょう。有名企業のWebアプリ、Webサービス開発に「Pyhton」が使われていることもあります。
その他にも統計処理、画像処理、音声処理、など豊富なライブラリが公開されており、充実したライブラリのおかげで、機械学習やディープラーニング(深層学習)、AI(人工知能)開発にも使えるのです。
またWebスクレイピング(Webページの情報を取得する方法の一つ)にもPythonが向いています。
参照:【初心者必見】Pythonを使ったWebスクレイピング入門。おすすめの書籍も紹介
Pythonで開発されたものの事例
Pythonを使って開発されたWebサービスとして有名なものには「YouTube」「Instagram」「Dropbox」などがあります。どれも世界中で億単位のユーザーを抱える超大手サイトです。
またPythonで開発されたAI(人工知能)を使ったロボットとしては「Pepper」が有名です。家電販売店や携帯電話ショップなどで簡単な受付を行えるロボットとして、店舗に配置されているのを見かけるようになりました。
以下の記事では、Pythonを使って作成されたWebサービスを紹介しています。合わせて参照してください。
参照:Python(パイソン)で作られたWebアプリケーション・サービス7選
Webフレームワークとは
Webフレームワークとは、Webアプリケーションの開発を効率化するための機能が詰まったツールの事です。
「フレームワーク」という言葉には「枠組み、骨格」というような意味があります。Webフレームワークとはすなわち、「枠組みを使ってプログラミングができる」という意味になるのです。
Webフレームワークを導入することで、プログラマーが手で書くソースコードの量を少なくし、作業する速度をあげることも可能となります。
複雑なコードを書かなければならない場面でも、手軽に作業できるのです。
ただ、フレームワークのみですべてのソースコードを記述するということはほとんどありません。一部をフレームワークで補い、残りはエンジニア自身がコーディングしていきます。
Pythonの主なフレームワーク
PythonのWebフレームワークとしては、主に以下のようなものがあります
- Django
- Bottle
- Flask
- Tornado
- CherryPy
- Pyramid
- TurboGears
- Pylons
- Web2py
- Sanic
- Dash
この中でも人気があり、使用されることの多いフレームワークは
- Django
- Bottle
- Flask
- Tornado
の4つです。
おすすめのPython Webフレームワーク
ここからは、先ほど紹介した人気でシャアの大きいフレームワーク4つの特徴について解説します。
大規模開発におすすめのもの、開発の速度を重視するときにおすすめのものなど、フレームワークごとに使うべきタイミングは変わるのです。
自分がどのような開発を行いたいのかを考えながら、各フレームワークの特徴を比較して、インストールしてください。
Django
画像出典:Django
Djangoは米国のLawrence Journal-World社のWeb開発部門である「World Online」が開発したWebフレームワークです。
Python Webフレームワークの中でもっとも人気が高いのがDjango。「Pythonを使った開発をするのであればDjangoをマスターしておくべき」とさえ言われています。
DjangoはWebフレームワークでよく使用される「URLディスパッチャー」「O/Rマッパー」「テンプレートエンジン」などの機能が多数備わっている、「フルスタックフレームワーク」です。プログラミングで使う機能が一通りそろっています。
Djangoのもう1つの特徴として,CRUDフォーム生成が手軽に行えるということがあります。データベースとの接続を制御するO/Rマッパーの定義にCRUDフォームを制御するための情報を埋め込めば,adminと呼ばれるデータ編集用のフォームが自動で生成できるのです。自動生成ができる分、カスタマイズの自由度が低いことがネックとして挙げられます。
大規模な開発を行うのであれば、Djangoを使うのがおすすめです。
Bottle
画像出典:Bottle
Bottleは、Python Webフレームワークの中で最もシンプルで軽量なフレームワークです。
「Bottle.py」という1ファイルだけで構成されているのもメリットの1つ。サーバへのデプロイも簡単で、ソースコードも見やすいという特徴があります。
フレームワークの勉強用としても、実際の開発にも向いているWebフレームワークです。
ただ、現在の日本では、Bottleを使っての仕事、求人案件は、日本ではほとんど見られません。仕事に使うというよりも、Pythonのフレームワークを学習したい人におすすめです。
Flask
画像出典:Flask
Flaskは、小〜中規模のWebアプリケーション構築に向いているWebフレームワークです。軽量なフレームワークの中ではもっとも人気があります。
Flaskは、2010年のエイプリルフールをきっかけに生まれた、少し変わったWebフレームワーク。もともとは冗談のつもりだったのですが、作者であるオーストラリア人のArmin Ronacherが熱狂的な反響に応え、本物のフレームワークにしたという誕生の経緯があります。
動作が軽量なため、比較的簡単に扱えるのがメリットです、小規模なサイトならば短い期間で作れることから人気を集めています。
Tornado
画像出典:Tornade
Tornadoは、FriendFeedによって開発され、Facebookに吸収されたのちにオープンソース化されたWebフレームワークです。
リアルタイムでの通信を行う「WebSocket」がサポートされているため、その目的で使用されることや、非同期Webサーバである「node.js」のPythonでの代替手段としても人気があります。またWebサーバとしての側面もあるのも特徴です。
Apacheではなくnginxと一緒に使用されるのが一般的。静的ファイルの配信においては他のWebフレームワークよりも高速で動作します。
その他のPython Webフレームワークの特徴
上記4つ以外のフレームワークについても特徴を簡単に説明していきます。
CherryPy
出典:CheryPy
CherryPyは軽量なPython Webフレームワークです。オブジェクト指向のようにコードが書け、url Routingとオブジェクトツリーを対応させるならばCherryPyを使うのがおすすめです。
Pyramid
出典:Pyramid
PyramidはFlaskのように軽量でありながら、Flask以上に機能の多いフレームワークです。イメージとしてはDjangoとFlaskの中間のようなフレームワークがPyramidと言えるでしょう。
TurboGears
出典:TurboGears
TurboGearsは2005年から開発が始まったフレームワークです。AjaxやWebサービスといったWeb技術を体験できるフレームワークとして知られています。
TurboGearsの主な役割としては、ライブラリ間の結びつきを強めることがあります。
O/Rマッパー、テンプレートエンジンなどの部品は必要に応じて置き換え可能です。
Pylons
出典:Pylons
Pylonsは2006年に開発された比較的新しいフレームワークです。TurboGearsと同様ライブラリの結びつきを強める形で開発されたフレームワークですが、TurboGearsの先を行く機能を備えています。
TurboGearsはMVC(「モデル・ビュー・コントローラー」のこと。ユーザーインターフェースを持つアプリケーションソフトウェアを実装するためのデザインパターン)のCをCherryPyに依存しているため、自由度の面で高くありません。Pylonsではリクエストディスパッチャが置き換えでき、このコントローラーの部分の置き換えも可能です。
また、Pylonsはいち早くWSGI(WebサーバとPython製のアプリケーションの通信方法の標準を定めた仕様)に対応したフレームワークでもあります。
Web2py
出典:Web2py
Web2pyはオープンソースフレームワークで、データベースを使用するタイプのWebアプリケーションを、アジャイルで開発するなどの目的で使われます。
Web2pyはセキュリティ面に重点を置いたフレームワークです。デフォルトで入力値の検証を行ったり、出力のエスケープを行う仕組みなどを備えています。このような機能は、SQLインジェクション、クロスサイトスクリプティング、安全でないオブジェクトの直接参照といった脆弱性に関する問題の防止を目的としています。
Sanic
出典:Sanic
公式サイトでも「Flask-like」と謳っているように、Sanicは先ほど紹介したFlaskに似ています。インターフェースもFlaskのものとそっくりです。Flaskから移行する場合は扱いやすいフレームワークとなるでしょう。
Sanicは著名なイベントループライブラリ「uvloop」を利用しており、Node.jsのような非同期I/Oによる高効率なHTTPリクエスト処理が可能なフレームワークです。
Dash
出典:Dash
Dashはplotlyを利用して可視化されたデータを組み込むことができるフレームワークです。データを視覚的に処理するアプリケーションの開発などにはDashが向いているでしょう。
Webフレームワークを使うメリット
Webフレームワークを使用してアプリ開発などを行うメリットとしては以下のような点が挙げられます。
開発の効率を上げられる
フレームワークに備わった機能を活用することで、開発にかかる作業を効率化させることが可能です。
Djangoのようなフルスタックのフレームワークを使えば、必要な機能が一通りそろっているので、大規模な開発でも、作業にかかる時間を大幅に短縮できるでしょう。
Flaskを活用すれば、小規模〜中規模開発の時間を短縮することが可能です。
開発にかける時間や金銭的なコストをできる限り削減したい企業などにとっては、フレームワークの活用は大きく役立つでしょう。
また、個人でアプリ開発などをしていて、複数の作業を同時進行させるために作業効率化が必要なエンジニアにとっても、フレームワークが手助けとなるはずです。
ソースコードの書き方の統一化が図りやすい
複数名のチームで開発を行う場合、チームメンバーにフレームワークのルールを守らせることで、ソースコードの統一化を図りやすくなります。
ソースコードの書き方は、エンジニアによって若干異なります。自分以外の人が書いたコードを見ると、どんな動作・処理を意味しているのかいまいち理解できないということも珍しくありません。
特に、変数や関数を識別するためにつけた名前に一貫性がないと、コードが読みにくくなってしまうでしょう。
命名規則などを統一化することで、保守・点検、あるいは修正が必要になった時でも対処しやすいというメリットがあります。
エンジニアのコーディング量とエラーを減らせる
フレームワークを使用することで、エンジニアコーディング量を減らすことができます。これにより単純に作業速度が上がり効率化が図れるのは先ほど説明した通りです。
さらにもう1つ、作業効率化の面でメリットがあります。
エンジニアが手作業でコードを入力すれば、どうしてもミスが発生してしまいます。フレームワークを使うことで、エンジニアのコーディング量が減り、人的なミスを発生を減らすことにもつながります。
結果、エラーの修正作業が減りますので、作業効率化になるのです。
Webフレームワークを使うデメリット
ソースコードを書く手間を省き、作業を効率化してくれるフレームワーク。便利なツールではありますが、その一方でデメリットもあるものです。
ここからは、Webフレームワークを使うことのデメリットも紹介します。
フレームワークの使い方を覚えるのに時間がかかる
フレームワークの使い方を覚えるために、時間がかかることが予想されます。
一度使い方を覚えてしまえば便利なフレームワークですが、そのためには時間をかけなければなりません。
プログラミング未経験者の方は、なおさら時間が必要でしょう。
特に、使用者の少ないフレームワークは参考となるサイトや書籍が少ないことがあります。少ない情報の中で使い方を覚えるとなると、かかる労力も大きくなりがちです。
プログラム仕組みがわからなくてもコードが書けてしまう
フレームワークは、プログラムの仕組みを理解していなくてもコードが書けてしまう優れもの。
その反面、エンジニアやプログラマーとしてのスキルを身につけたいのであれば、フレームワークに頼りすぎるのは禁物です。
1つのWebサービスやアプリケーションを構築するだけであればフレームワークを駆使して作っても問題ありません。
もし、エンジニアやプログラマーとして様々な開発に関わりたいのであれば、自分の手でプログラムを組めるスキルも必要となります。
また、ソースコードのすべてをフレームワークを使って入力するということはほとんどありません。一部はフレームワークを使い、残りは手作業で入力していきます。
どうしても、フレームワークを使わないプログラミングの技術を身につける必要はあります。
カスタマイズできる範囲が限られてしまう
アプリケーションを作っているうちに、オリジナルのカスタマイズがしたくなることもあるでしょう。
その場合、フレームワークの内部をいじり、自分でコードを書かなければなりません。結果、フレームワークを使うメリットがなくなってきてしまうこともあるでしょう。
あらかじめカスタマイズをするとわかっているのであれば、フレームワークを使わずにコードを書いた方が効率的かもしれません。
Python Webフレームワークの使い方を身につける方法
実際にPython Webフレームワークを使うにはどのようにすればいいのでしょうか。
ここからは、フレームワークの1つDjangoを例に、Webフレームワークの使い方を身につける方法を解説します。
Django公式のチュートリアルを利用する
Djangoには初心者向けに、使い方の公式チュートリアルが用意されています。基本はこの公式チュートリアルを使って、一連の使い方をマスターするのがいいでしょう。
日本語版もあるので、ガイドに従って進めていけば、環境構築とチュートリアルが同時に行えます。
チュートリアル用のサイトやGitHubを利用する
フレームワークを使う以前に、プログラミングに触れるのすら初めてという初心者向けに解説してくれるサイトもあります。
例えば以下のようなサイトです
・Django Girls Tutorial
「プロンプト」「演算子」「関数」といったプログラミング使われる用語の解説をしながらDjangoのチュートリアルを学べる初心者向けのサイト。
・Build a scalable Twitter clone with Django and GetStream.io
DjangoとGetStream.ioを使ってTwitterのクローンを作ってみるチュートリアルGitHubGistにて公開されています。
参照:Build a scalable Twitter clone with Django and GetStream.io
YouTubeの解説動画を参照する
YouTubeに、Djangoの操作を解説した動画もあります。
初心者はサイトなどの文章を読むのと合わせて、動画でも解説を見た方がわかりやすいかもしれません。
書籍で勉強する
Djangoの使い方やに関する入門書なども多数発行されているので、書籍で勉強することもできます。ただ、自分のレベルにあった書籍を見つけるのは難しいかもしれません。
初心者ならば以下の書籍から始めるのがおすすめです。Djangoの入門書として、評価が高いです。
注意点としては、読者の想定が「Pythonを身につけている人」であるということがあります。プログラミング未経験者はまずPythonを習得することから始めたほうがいいでしょう。
プログラミングの学習方法
フレームワークはもちろん、プログラミングすらまだ身につけていないという方は、まずはプログラミングの基礎から勉強を始めるべきです。
Pythonを始め、プログラミング言語を学習する方法としては、以下のような方法があります。
独学で身につける
まずは、参考書やプログラミング学習用のWebサービスなどを使って独学する方法です。
書籍は数千円で購入できますし、学習用Webサービスは基本料金が無料のサイトも多いです。初期投資としてかかるコストが低く始めやすいでしょう。
しかし、自分の学習レベルにあった参考書がどれかわからなかったり、わからない部分を質問できる人がいなかったりと、初心者にとっては厳しい環境になってしまう恐れがあります。
初めてプログラミングを勉強する方は、独学だと挫折する可能が高いです。8〜9割ほどの人が挫折してしまうと言われています。
もし独学で始めるのならば、以下の記事を参照してください。プログラミング初心者向けに独学の方法を、どのサイトよりも詳しくまとめています。
参照:プログラミング入門完全版!初心者が基礎から独学で勉強する方法
無料の学習サイトを使う際の注意点
近年、プログラミングを無料で学習できるサイトは増えてきており、サイトのコンテンツも充実しています。
しかし、無料サイトだけで開発ができるレベルのプログラミング技術を身につけるのは難しい可能性があります。
理由としては、無料会員の状態だと対応している学習範囲が限られており、応用・発展的な技術を学ぶには有料会員になる必要があるためです。
プログラミングの導入部分は無料のサイトを使い、それ以降は有料会員登録する。もしくは、実践的な技術については自力で学習を進めていくと理解しておいてください。
参照:【エンジニアが教える】プログラミング入門におすすめ無料学習サイト10選
勉強会に参加する
プログラミングの勉強会に参加することでも、知識、スキルを身につけられます。
周囲には自分と同じくプログラミングを勉強している人がいるので、学習の刺激になるでしょう。
各地で週末などを中心に勉強会が開催されています。初心者向け、中級者向けなどレベルに合わせた勉強会が開催されていますので、調べて参加してみてください。
プログラミングスクールに通う
学生や社会人を対象としてプログラミングスクールに通うことで身につけるという方法もあります。
上記2つの勉強方法と比較すると、学費がかかるため、初期費用はかかります。しかし、独学で勉強するよりも、効率よくプログラミングが身につきます。
教室に通うタイプのスクールと、オンラインで学習ができるタイプのスクールがあるので、自分のライフスタイルと合わせて選ぶといいでしょう。
はじめての転職、何から始めればいいか分からないなら
「そろそろ転職したいけれど、失敗はしたくない……」そんな方へ、テックキャンプでは読むだけでIT転職が有利になる限定資料を無料プレゼント中!
例えばこのような疑問はありませんか。
・未経験OKの求人へ応募するのは危ない?
・IT業界転職における“35歳限界説”は本当?
・手に職をつけて収入を安定させられる職種は?
資料では、転職でよくある疑問について丁寧に解説します。IT業界だけでなく、転職を考えている全ての方におすすめです。
「自分がIT業界に向いているかどうか」など、IT転職に興味がある方は無料カウンセリングにもお気軽にお申し込みください。