この記事のランク | |
---|---|
読む時間 | 3分 |
重要度 |
Python(パイソン)は1991年に開発されたプログラミング言語で、近年ではAI(人工知能)やブロックチェーンの開発に用いられており、人気のあるプログラミング言語です。
Pythonには多くの機械学習向けのライブラリやフレームワークが存在していることがその人気の理由です。
ライブラリやフレームワークを活用することにより、開発工数の削減や品質の安定など様々な恩恵を受けることができます。
この記事では、これからPythonをはじめる方に向けて、オススメのフレームワークをご紹介します。
下記の記事でPythonの特徴や書き方について解説していますので、ぜひ参考にしてください。
Twitter(@nana_korobi04)でも情報発信していますので、
フォローいただけると嬉しいです!
Django(ジャンゴ)
名前の由来はフランスのジャズバンド「ジプシー・スウィング」のギタリスト、ジャンゴ・ラインハルトから命名されています。
Djangoでできること
Webアプリケーションの開発
Djangoはフルスタックフレームワークといって、Webアプリケーションに必要な機能が全て搭載されており、大規模なアプリケーションの開発に向いています。
Djangoで開発された有名なWebアプリケーションは、Youtube、Spotify、Instagram、Dropboxなどがあります。
WebAPIの開発
APIとは他システムの機能を使いたい場合に、決められたフォーマットでデータを送ることで、異なるシステムで後続の処理ができる仕組みです。
ショッピングサイトのクレジット決済では銀行のシステムに、郵便番号から住所を自動取得する際は、日本郵便のシステムにアクセスしており、私たちは無意識にAPIを活用しています。
APIについては、下記の記事を参考にしてください。
通常、このAPIは利用者側のシステムと提供する側のシステムのプログラミング言語が異なると利用ができません。
しかし、WebAPIはHTTPという世界標準の通信規約を利用するため、プログラミング言語が異なるシステム間でも利用することができます。
有名なのは、地図の埋め込みができるGoogle Maps APIや、Amazonで販売されている商品を掲載することができるAmazon Product Advertising APIなどがあります。
Djangoメリット
開発が素早く行える
Djangoは、Webアプリケーションに必要な会員登録や、ログイン認証画面、それを管理する管理画面などが用意されており、簡易なアプリケーションであれば数分で構築することが可能です。
日本語の情報が多い
DjangoはPythonのフレームワークの中でも最も人気が高いため、インターネットで検索すれば日本語の情報も多く出回っていますので、他のPythonのフレームワークに比べて学び易いことが挙げられます。
Djangoデメリット
使いこなすのに時間がかかる
Djangoはフルスタックフレームワークという機能が豊富な分、全ての機能を把握するまでの学習コストがかかることや、予め用意されている機能を取捨選択しないと処理が重くなってしまいます。
Flask(フラスク)
同じWebアプリケーション向けのフレームワークであるDjangoとの違いは、Flaskはマイクロフレームワークという軽量で必要最小限の機能が備わっています。
Flaskでできること
Webアプリケーションの開発
Flaskは最小限の機能しか提供していないため、Djangoと異なり会員登録やログイン認証画面などを自分で作る必要があります。
そのため、処理速度が求められる場合や、独自でカスタマイズが必要な場合など、小〜中規模のアプリケーションの開発に向いてるといえます。
Flaskのメリット
軽量で処理速度が速い
フレームワーク自体が軽量であるため、シンプルで処理速度が速いアプリケーションを開発することができます。
また、Djangoのようにフルスペックではないため、コンパクトで覚えることが少なく学習コストが少ないというメリットもあります。
カスタマイズ性が高い
Flaskは拡張機能が豊富に用意されており、必要な機能を開発者自身が追加するなど、フレームワーク自体の仕様に縛られることがありません。
そのため、フルスタックフレームワークではできない細やかなカスタマイズが可能です。
Djangoが大手企業向けであれば、Flaskは中小企業や個人向けのアプリケーション開発に適しているといえます。
Flaskのデメリット
機能を追加する必要がある
カスタマイズ性が高い反面、必要な機能やライブラリを自分で追加したり、選択する必要があるため、機能追加しすぎて処理が重くなりFlaskのメリットが活かせないことがあります。
結果、Djangoを使った方が開発コストも少なく済む場合がありますので、最初にWebアプリケーションの機能要件を見極めてどちらのフレームワークが望ましいか判断が必要です。
Tensorflow(テンソルフロー)
機械学習と呼ばれる、AI(人工知能)を実現する技術のひとつである、ニューラルネットワークを使用した学習を行うための機能が提供されています。
そのため、数ある機械学習の中でも最もシェアを持っており、Python以外には、C言語、C++、Java、Go言語に対応しています。
Tensorflowでできること
画像処理
静止画や動画から対象物の形や色など特徴を抽出して、人間と同じように物体を識別することができます。
画像処理を活用した具体的なサービスはGoogleの画像検索、TOYOTAの自動運転技術、日本防犯システムの不審者を監視する防犯カメラなどがあります。
画像処理をサービスとして実用化するためには、コンピューターがパターンを識別できるようにトレーニングが必要で、膨大なサンプルデータを読み込ませて学習させる必要があります。
音声認識
画像処理と同じく入力された情報をパターン化して解析するのと同じ仕組みで、音声も認識して処理することができます。
音声認識のサービスは、Google翻訳をはじめ、AIスピーカーと呼ばれるGoogle Home、コールセンター業務でオペレーターの電話応対補助としても活用されています。
Tensorflowのメリット
技術に関する情報量が多い
Tensorflowは機械学習の中でも企業や団体など利用者数が多いため、インターネットや書籍などで技術情報の収集が容易な点が挙げられます。
また利用者数が多いことに比例して、求人情報も多いため、機械学習をこれから始める初学者であれば、Tensorflowを選択することをオススメします。
データの可視化ができる
TensorFlowには、TensorBoardというダッシュボードツールが付属しており、モデルといってコンピューターがパターンを学習するためのプログラムが上手く機能しているか確認することができます。
例えば、1+1という計算式もフロー図として可視化ができますし、画像処理もトレーニング用のデータが正しく解析されているか検証することも可能です。
Tensorflowのデメリット
ハイスペックマシンが必要
Tensorflowは膨大なデータを処理、分析するフレームワークですので、高速な計算処理ができるGPUというCPUよりも大量計算ができるプロセッサを持つコンピューターが必要です。
まとめ
今回はWebアプリケーション開発向けのフレームワーク2種類と、機械学習向けのフレームワーク1種類を紹介いたしました。
いずれも需要が高く、様々な分野で導入されているフレームワークとなりますので、Pythonの学習と併せてフレームワークの理解も深めていってください。