2003年以来、Pythonは学ぶべきプログラミング言語のトップ10にランクインしており、それ以来一貫してそのランキングは向上し続けています。
ある統計によると、Pythonは2019年に学ぶべき言語のトップ5の1つで、そのシンプルさ、柔軟性、堅牢性、使いやすさ、互換性、スピード、汎用性のおかげで、プログラミングコミュニティにとって不可欠な存在になっています。
さらに、Instagram、Spotify、Googleなどのテックジャイアントは、少なくとも部分的に、そのアーキテクチャをPythonでベースにしています。
つまり、Pythonは、シリコンバレーやウォール街の申し子の台頭とともに、プログラミングとビジネスの世界の中心的存在になったのです。
Fintechです。
その理由は様々ですが、ビジネスや金融分野のかなりの部分が想定しているデジタルファーストの流れが求めるセキュリティやスケーラビリティを、Pythonが提供しているのです。
Pythonは機械学習やデータサイエンスからロボット工学やハードウェアプログラミングまで様々なタスクに使用できますが、今回はPythonがWeb開発にどのように使用できるかを勉強します。
PythonによるWeb開発
Pythonは多くのフレームワークを通して、すべての人に何かを提供します。
フレームワークは、抽象化、または一般的な機能を提供するパッケージとモジュールのバンドルで、アプリケーション固有のソフトウェアを作成するために選択的に変更することができます。
しかし、どのウェブフレームワークがあなたに適しているか、どのように判断したらよいのでしょうか?本格的なWebアプリケーションには、DjangoとPyramidがおすすめです。
より良い制御と可視化、またはアプリのプロトタイプには、Web2pyやFlaskがあなたのプロジェクトに提供するものがあるかもしれません。
CheeryPyは、シンプルでミニマルなソリューションには欠かせない存在です。
Tornadoは、あなたのアプリへの1万以上の同時接続を同時に処理し、Dashは分析アプリケーションに最適な選択肢です。
この記事では、開発者やプログラミング会社から最も人気のある3つの選択について、簡単な概要を説明します。
Django、Pyramid、そしてFlaskです。
概要の後、最も人気のあるフレームワークである Django を、ログインシステムの例を使って実際に動かしてみます。
Django
このフレームワークは、「電池込み」のフレーズを体現しています。
締め切りに追われる完璧主義者のためのWebフレームワーク」と定義されています。
組み込み機能が充実しており、データベースアプリケーション、チャットボット、GPSソリューションなど、幅広いWebアプリケーションを実現できます。
DRY(Don’t Repeat Yourself)哲学により、コードの再利用を可能にするだけでなく、それを促進し、コーディング時間を半分に短縮します。
さらに、そのモジュラー/デカップルアーキテクチャは、コードコンポーネントのシームレスな変更を可能にし、ほとんど手間をかけずに必要なだけコンポーネントを追加したり削除したりすることを可能にします。
Django は ORM (Object-Relational Mapping) と呼ばれるものも持っており、 SQL や Oracle のような一般的なデータベースのほとんどと高い互換性を持つだけでなく、複数のデータベースを同時に扱うことも可能にしています。
最後に、 Django は SEO (Search Engine Optimization) に優しいです。
例えば、テンプレートのキャッシュやJavaScriptの圧縮のような技術や機能を通じて、ページの読み込み時間を短縮することができます。
ピラミッド
このフレームワークは、「小さすぎず、大きすぎず、ちょうどいい」ことを自らに課しています。
Pyramidは仕上げに特化したフレームワークで、小さく始めて、ソリューションの強固な基盤をコーディングし、必要に応じてスケールアップすることができます。
小規模から大規模のアプリケーションまで対応できる点ではDjangoと似ていますが、その複雑さではDjangoとは一線を画しています。
Pyramid単体では、他のフレームワークと比較して無駄のない選択肢と考えられますが、Pyramidはプラグインシステムで輝きを放ち、開発者は必要なものを何でもプラグインすることができ、与えられたタスクに対して複数のソリューションを実装することができます。
Pyramidは、シングルファイルアプリケーションや、柔軟な認証・認可、ビュー述語を重視するアプリケーションにも理想的です。
フラスコ
Pyramid と Django が同じコア哲学を共有しているのに対して、Flask は別の方向に進んでいます。
もし最終的なゴールがシンプルで管理しやすく、カスタマイズ可能なものであれば、Djangoのようなやりすぎなパワーホースを使う代わりに、常にFlaskを使うことをお勧めします。
Flask は Jinja 2 テンプレートと Werkzeug WSGI (Web Server Gateway Interface) ツールキットを大きくベースにしています。
マイクロフレームワークとして定義されたFlaskは、シンプルなアプリやAPIのような、無駄のない機能性を最優先とした小規模なソリューションに合わせて作られています。
Flaskはまた、プロトタイプを作成するために最も使用されるマイクロフレームワークです。
短時間で動作するアプリケーションを一から作る場合、長期的に当該アプリケーションを管理することが優先されます。
Django によるシンプルなログインシステム
この節では、Django フレームワークで簡単なログインシステムを作る方法を説明します。
多くのことが「舞台裏」で行われ、多くのことが開発者の好みに合わせてカスタマイズできますが、 Django フレームワークでアプリケーションを開発することがいかに簡単かを示すために、最も基本的なステップだけを説明します。
Djangoのインストール
この例では、PIP モジュールをインストールする必要があります。
これが終わったら、Django をインストールし、以下のように新しいプロジェクトを作成できます。
$ python3 -m venv ~/.virtualenvs/dProject # Creates a virtual enviroment named dProject
$ source ~/.virtualenvs/dProject/bin/activate # A path is created
(dProject) $ pip install django # Django is installed
(dProject) $ django-admin.py startproject LoginProject_D # The project is created with the name LoginProject_D
(dProject) $ ./manage.py migrate # Migrate creates a new SQLite database
(dProject) $ ./manage.py runserver # Calls the local server
(dProject) $ ./manage.py startapp dProject # This creates a dedicated app that will allow the making of a view and url registration.
これが終わったら、”http://127.0.0.1:8000″ のアドレスからブラウザでプロジェクトをプレビューすることができます。
Django の歓迎画面がブラウザに表示され、インストールに成功したことがわかります。
Django の Auth アプリ
プロジェクトを作成すると、Django はデフォルトで「auth」アプリをインストールします。
これは、新規プロジェクトで自動的に作成される「settings.py」ファイルの「INSTALLED_APPS」セクションを以下のように確認することで確認することができます。
INSTALLED_APPS = [
…
'django.contrib.admin',
'django.contrib.auth', # Here it is! Note that several built-in apps are included in this section.
…
]
「Django-auth” または “django.contrib.auth” は Django フレームワークの組み込み認証システムで、そのデフォルトモデルを含んでいます。
auth” アプリを使用するためには、プロジェクトレベルのファイル “urls.py” に追加する必要があります。
# Importing this module will allow us to set the routes login and logout views
from django.conf.urls import url
from django.contrib import admin
from django.contrib.auth import views as auth_views
# This section adds Django site authentication urls (for login, logout, password management)
urlpatterns = [
url(r'^login/$', auth_views.login, name='login'),
url(r'^logout/$', auth_views.logout, name='logout'),
url(r'^admin/', admin.site.urls),
path('dProject/', include('django.contrib.auth.urls')),
]
auth “アプリは以下のURLを提供し、それぞれが “auth “ビューに関連付けられ、ビューテンプレートを作成するだけでそれらを使用できるようになります。
dProject/login/ [name='login']
dProject/logout/ [name='logout']
dProject/password_change/ [name='password_change']
dProject/password_change/done/ [name='password_change_done']
dProject/password_reset/ [name='password_reset']
dProject/password_reset/done/ [name='password_reset_done']
dProject/reset/<uidb64/<token/ [name='password_reset_confirm']
dProject/reset/done/ [name='password_reset_complete']
django.contrib.auth.views.login` ビューは、デフォルトで “registration/login.html” テンプレートを作成します。
これは REGISTRATION という名前のフォルダを作成し、その中に “login.html” テンプレートを作成します。
次のコードブロックは、基本的なログインテンプレートです。
{% extends 'base.html' %}
{% block title %}Login{% endblock %}
{% block content %}
<h2Login</h2
<form method="post" #This is a standard form to send data.
{% csrf_token %} #Security tag to prevent <a href="https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)" target="_blank"XSS Attacks</a, among other concerns.
{{ form.as_p }} #Ouputs the form's contents between paragraph tags.
<button type="submit"Login</button #A submit button.
</form
{% endblock %}
最後に、”settings.py” ファイルで “templates” フォルダを探すようにプロジェクトを設定し、DIRS
を更新します。
TEMPLATES = [
{
...
'DIRS': [os.path.join(BASE_DIR, 'templates')],
...
},
]
ほら! ユーザ名とパスワードの検証を通してユーザを正しく認証できる、シンプルなログインページができました。
結論
Pythonは、その動的なウェブサイト作成機能により、サーバーサイドプログラミングに広く使用されています。
この言語は、GoogleやNASAなどのテクノロジーリーダーによって、高速なプロトタイピングや拡張性の高いWebアプリケーションの構築に広く使用されています!Pythonは、デジタルファーストのアプローチで競争力を維持するためには間違いなく必須です。
Pythonは、デジタルファーストのアプローチで競争力を維持するためには間違いなく必須であり、それはフィンテック業界の急成長によってさらに強化されています。
さらに、Pythonフレームワークには様々な機能が組み込まれており、開発工数を削減することができます。
唯一の課題は、より良い結果を得るために特定のニーズに合わせて、どれを使用するかということでしょう。
</strong