公開日:2019/10/10
更新日:2019/10/10
キーワード:Python 出来ること
文字数:4900(読み終わるまでおよそ8分)
この記事でわかること
- Pythonで出来ることのまとめ
はじめに
Pythonで出来ることはWebサービスの開発、サーバーサイドとしての役割、機械学習、ディープラーニング、データ収集となど、多岐に渡ります。
そこで、Pythonで出来ることをまとめてみました。Pythonで何をしたいか、これを読んで想像して頂けると幸いです。
1) Webサービス開発
Webサービスを開発しようとすると、Web開発用のフレームワークを使っての開発が必須となります。
PythonにはWeb開発用のフレームワークが多く存在していますが、中でも人気があるフレームワークとして、DjangoとFlaskがあります。
ここでフレームワークとは、アプリの開発を行う際に、よく使う汎用的な機能をまとめて提供してくれるもので、効率的な開発を実現してくれる土台のようなものです。
フレームワークを使わずにWebサービスを開発しようとすると、膨大な量のコードを自分で書かなければなりませんが、フレームワークを使えば本来書くべきソースコードを省略できるので、開発の難度を下げつつ、開発期間を大幅に短縮することができます。
Djangoは、Pythonのフレームワークでは最も人気があります。Djangoには、「RSSフィード」、「サイトの案内ぺージ」、「ユーザー認証」など、Webの基本的な機能が予め含まれています。
他にも、セキュリティ対策が施されている、用途の幅が広い、拡張性が高いといった強みがあります。Djangoは使用者のニーズに合致した特徴を持っていると言え、実用性や生産性が高いことから、とても人気のあるフレームワークとなっています。
FlaskはDjangoには及ばないものの、人気のあるフレームワークです。
Djangoは、機能は充実しているものの、その分動作が重いというデメリットがあります。一方、FlaskはDjangoより機能は少ないものの、その分動作が軽いのが強みです。また、機能が少ないということは、その分ユーザーの自由度が高く、習得にかかる時間が少なくて済むというメリットがあるので、Flaskを選ぶユーザーが増えています。
DjangoにしろFlaskにしろ、フレームワークを使って開発するためには、各々のフレームワークの書き方を学ぶ必要はあります。独特のコマンド処理があったたり、フレームワーク以外のソフトが必要だったりするので、プログラミング初心者には難度が高いですが、Web開発の世界で生きていこうと思うと、フレームワークの習得は必須となります。
2) サーバーサイド言語としての活用
ユーザーから見たときの、Webページの見た目の部分をフロントエンドと言いますが、Webアプリケーションは、フロントエンドのプログラムと、サーバー側(サーバーサイド)のプログラムが連携を取ることで動作し、ユーザーはブラウザ上でそれを利用します。
ここでWebアプリケーションとは、ネットワークを介して使用するアプリケーションのことです。
フロントエンドのプログラムは、通常、HTML、CSS、JavaScriptという言語で書かれています。一方、サーバーサイドでは色々な言語が使われていますが、Pythonはサーバーサイドでよく使われている言語の一つです。
Pythonであれば、前述したDjangoやflaskといったフレームワークで、APIを作成することもできます。
APIとはアプリケーション・プログラミング・インタフェース(Application Programming Interface)の略で、あるアプリの機能を他のソフトウェアと共有できるようにしたものです。例えば、お店の場所がGoogleマップで示されていたり、twiterのツイートが引用されていたりするのを見たことがあると思いますが、これらもAPIを利用しています。
その他にもPythonは、ライブラリが豊富、言語仕様が「書きやすい、読みやすい、判りやすい」に注力されている、コード量が少なくて済むので開発効率やメンテナンス性が高い、といったメリットがあります。
したがって、サーバーサイド言語には、RubyやPHPなどがよく使われていますが、Pythonも開発環境が整備されているので、サーバーサイドでよく使われる言語の一つです。
3) 機械学習・データサイエンス業務
Pythonが強みを発揮するのが、機械学習を含めたデータサイエンスの分野です。入手したデータの前処理から、機械学習のアルゴリズムを適用するまで、Pythonであれば一気通貫で実施できます。
機械学習において、Pythonを用いるメリットを見ていきましょう。
①プログラミングの初心者にとって比較的易しい言語である
機械学習をやってみようと思う方の中には、統計学や数学の世界の方も多数います。そのような方はプログラミングの経験がないので、機械学習を行うためにはプログラム言語を一から習得する必要があります。Pythonは読みやすくてシンプルな文法なので、プログラミング初心者の方が習得しやすい言語と言えます。他の人が書いたコードを読みやすいというのは、初心者にとっては非常に助かります。
②信頼性の高い言語である
大企業の重要なWebアプリ開発にもPythonが用いられています。例えばYouTubeやInstagramなどです。ソフトバンクが開発したロボットPepperもPythonで動かすことができるのは、有名な話ですね。
Pythonは重要なサービスでも用いられている言語なので、信頼性が高いと言えるでしょう。
③機械学習向けの環境が整っている
Pythonには、多くの機械学習向けのライブラリやフレームワークが存在しており、膨大なデータを高速に処理できるPandasや、数値計算を効率的に行うNumPyといった、機械学習でモデルを構築するためのパッケージが充実しています。
なお、パッケージとは、複数のモジュール(Pythonのファイル)をまとめたもので、パッケージを読み込むことで機能を拡張させることができます。
また、scikit-learnというパッケージには、様々な機械学習アルゴリズムが入っており、数行コードを書くだけで様々なアルゴリズムを使用することができます。どのアルゴリズムでも、同じような書式で機械学習モデルを作ることができるので、初心者でも扱いやすいのが大きなメリットです。
4) ディープラーニング
今の人工知能ブームの火付け役であるディープラーニングは、Pythonの独壇場と言ってもよい分野です。Pythonには、ディープラーニング用に開発されたライブラリとして有名なものに、Googleが開発したtensorflow(テンサーフロー、テンソルフロー)や、日本発ユニコーン企業のPreferred Networksが開発したChainer(チェイナー)、Keras、PyTorchなどがあります。
これらは、Pythonでディープラーニングを行うときによく使われる、強力なライブラリです。
ライブラリとは、いくつかのパッケージをまとめて、一つの部品としてインストールできるようにしたものです。
ディープラーニングは計算量が非常に多く、CPUの計算では非常に時間がかかってしまうため、GPUを使うのが一般的です。これらのライブラリはGPUによる演算をサポートしているため、高速な演算が可能となります。
Pythonがディープラーニングで重宝される大きな理由は、機械学習のところでも述べましたが、数値計算を高速に行うことができるNumPyというパッケージの存在が大きいと思われます。
ディープラーニングと言っても、高度な計算の集まりなので、計算スピードをいかに確保するのかがポイントとなります。Pythonはいわゆるインタプリタ型の言語で、Cなどのコンパイラ型の言語に比べると計算に時間がかかるのが一般的ですが、NumPyを使えば、ディープラーニングに不可欠な行列計算などを高速でできるので、インタプリタ型の弱点を解消することができます。
計算スピードが重要なら、初めからコンパイラ型の言語を使えばよいと思われるかもしれませんが、インタプリタ型の言語はコンパイルがいらない、というメリットがあります。コンパイラ型の言語は、書き上げたコードを実行する前にコンパイルする必要があります。色々試したいときに、毎回コンパイルしないといけないので、これはかなり苦痛な作業です。
インタプリタ型の言語であれば、コードを書いたらすぐに実行でき、うまくいかなければすぐ修正できます。つまり、試行錯誤の開発がやりやすいというのが、インタプリタ型であるPythonを用いるメリットなのです。
このように、多くの人がPythonとNumPyの組み合わせでディープラーニングに取り組むので、新たに便利なライブラリができて、さらに利用者が増えるという好循環が生まれたと思われます。
5) データ収集
PythonはWebサイトのスクレイピングも得意です。
スクレイピングとは、ウェブサイトの情報を取得することができる技術のことです。
Web上には情報が数えきれないくらいありますが、その中から必要なデータを効率的に入手したいときがあります。
Googleで検索して、サイトを一つずつ見ていく手もありますが、人の手で検索するのは限界があります。そのようなとき、複数のウェブサイトを巡回して、必要な情報を抽出するのを自動でやってくれると、大変助かります。
Pythonには、スクレイピングを行えるライブラリが豊富にあるので、効率的なデータ収集にもってこいです。
6) 自動化
近年、働き方改革が叫ばれており、コストのかかる人間が付加価値の高い仕事に注力できるように、単純な作業は機械に任せたいというニーズが高まっています。
その手段として、最近、RPAが話題となっています。RPAとは、事務作業を自動化するプログラムのことで、Robotic Process Automationの略です。
自動化と言えば、Excelのマクロを思い浮かべる方が多いと思います。Excelのマクロとは、Microdoft社のExcelに搭載されている機能で、一連の作業手順を記憶して、実行させる機能のことです。マクロの記録機能を使って覚えさせることもできますし、VBAと呼ばれるプログラミング言語で記述することもできます。
Excelで操作の記録ができるのは、Excel上の操作のみとなります。VBAを用いれば、Microsoft社のVBAをカバーするアプリと連携させることも可能ですが、その範囲は限定的となります。
一方RPAであれば、対象となるアプリが限定されず、多種多様なアプリと連携させることができ、自動化の範囲を広げることができます。
自動化したい対象の業務が、Excel上の作業にとどまるのであれば、Excelのマクロで自動化すればよいですが、様々なアプリやシステムと連携させて自動化を行いたいような場合は、RPAによる自動化を選択することになります。
Pythonでは、Seleniumというパッケージを使うことで、簡単な作業の自動化をすることができます。
Seleniumとは、ブラウザを簡単に自動操作できるパッケージで、Seleniumを使えば、これまで手で行っていた操作を全て、コンピュータにお任せできる可能性があります。
極端に言えば、ブラウザでやってるすべての作業は、Seleniumで実現可能です。
大規模な自動化を行いたい場合は有償のRPAツールを使うべきですが、Webアプリケーションのテストの自動化など、Webブラウザの自動操作に限定するのであれば、Seleniumを選択してもよいでしょう。
ただし、一般的なRPAツールとは違って、動作を記述するための設定はプログラミング言語で行う必要があるので、専門の技術者が小規模で使う以外は、一般的なRPAツールの使用をおすすめします。
サービス開発から、機械学習、データ収集まで幅広い分野で使えるPython。
Pythonを学んで何をしたいか、しっかり見定めてから、勉強を始めましょう。