何故、Python のフレームワーク Django を使うのか?

記事
IT・テクノロジー

何故、Python のフレームワーク Django を使うのか?

4 月に入って、Python のフレームワークである Django の記事を中心にお届けしています。 この記事では、どうして Python のフレームワーク Django なのかを簡単にまとめてみました。

AI と相性の良い Python

最近は、顔認識や自動運転などの技術が発達して実用化されてきています。 こうした技術は、いわゆる「AI」の技術を応用した物です。 ところで、最近よく AI と言われる技術は、もう少し専門的な言葉で言えば「機械学習」(machine learning)と呼ばれるものが中心になっています。さらに言うと、ディープラーニング(deep learning)と呼ばれる技術が使われています。

Python に注目した理由は、こうした機械学習のライブラリが充実している点です。

機械学習でよく利用されるライブラリは?
では、機械学習でよく利用される Python のライブラリにはどんなものがあるかが気になると思います。 よく利用されているライブラリは、

* Numpy
* Pnadas
* MatPlotLib
* Scikit-Learn
などです。

Numpy
これは、大きな多次元の配列や行列の処理に利用できます。データを処理する部分は、C 言語で書かれたモジュールを呼び出しているので、Python のコードで実行するより高速で処理することができるので有利です。大きなデータを扱う場合にこうした、配列や行列の演算はよく使われるので便利なライブラリの一つです。

Pandas
これは、データ解析を行うためのライブラリです。データの処理や解析を行うのに利用できます。

MathPlotLib
NumPy と連携して、グラフなどデータを可視化するのに有効なライブラリです。

Scikit-Lean
オープンソースの機械学習のライブラリで、Numpy と SciPy などと連携して機械学習のアルゴリズムを提供しています。多くのアルゴリズムを用意しているので、利用するデータにあったアルゴリズムを選んで活用できます。

その他
Tensorflow などのディープラーニングのライブラリも利用可能です。ただし、ディープラーニングの場合、データ量が多くなったり、計算量も増えるのでそれなりの計算能力があるコンピュータが必要になるのが一般的です。

Django はバックエンドのフレームワーク
ところで、一つ誤解のないように書いておきますが、Django はバックエンドのフレームワークで、基本的にサーバー側でレンダリングを行う事ができるようになっています。 ご承知の通り、Web ブラウザで実行できるのは基本的に「Javascript」なので、Python のプログラムは Web ブラウザでは基本的には動かすことはできません。

従って、Python で処理したい部分はバックエンド(サーバー側)で行う必要があります。

Django で全て実装する場合は、レンダリングは基本的にサーバ側のコードで行います。 フロントエンド側でレンダリングを行ったり、React や Vue などのフロントエンドのフレームワークを使って UI(ユーザーインターフェース)を作りたい場合には、Django でバックエンド側の REST API を作って、API を使ってバックエンドの処理を呼び出すような設計にする必要があります。

Django はオールインワンのフレームワーク
Django の良いところは、バックエンドの実装で必要な機能はほぼ標準でサポートされている点です。 レンダリングするための機能(view/template)やユーザー認証(authentication)、URL のルーティング(URL mapping)などは、特別にモジュールをインストールすることなく利用できます。

Python ベースのフレームワークには、Flask や CherryPy などもよく利用されていますが、利用する機能によっては外部のモジュールをインストールする必要があります。Django に比べるとシンプルで簡単に使える部分もありますが、いろいろな機能を利用することを考えると、多少、学習に時間がかかっても Django は良い選択肢だと言えます。 この辺りが、今回、Django をバックエンドで活用する事を決めた大きな理由になります。

まとめ
この記事では、なぜ Python ベースのフレームワークである、Django を利用するのかを簡単にまとめてみました。

一番の理由は、今流行りの AI、機械学習(machine learning)との相性が良いことが一番の理由です。他のプログラミング言語にはない、機械学習やデータ処理関連の豊富なライブラリが揃っているので、機械学習を取り込んだ Web サービスの開発を行う場合有利だからです。

もう一つは、バックエンドで必要な機能は標準で一通り揃っている点です。外部のモジュールを取り込まなくても、Django をインストールすれば基本的な機能は全てカバーされる点はとても有利だと言えます。

充実した、データ処理と機械学習のライブラリを利用することで、専門的な知識がなくてもアプリに機械学習の機能を取り込めるのは大きな魅力です。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す