Pythonで何ができるようになる? - 初めて学ぶ人向けの解説

作成日:   更新日:

「Pythonを利用するとどのようなことができるようになるのか?」という疑問を解消するためのページです。この記事ではPythonを使うことで具体的に何ができるようになるのかを解説していきます。

プログラム言語を学習するにあたって、最初に必要となるのは勉強をするモチベーション、最終的に何をしたいのかといったところになってくると思います。本ページでは具体的に実現できることを例示していきPythonを初めて学ぶ場合の目標作りに役立てることができれば良いなと思い作成したものです。

是非Pythonでできるようになることをイメージし、Python学習のモチベーションの一助としていただければと思います。

具体的にできるようになること#

ここでは具体的にPythonを利用することでどういったことができるようになるかを列挙していきます。

データ解析ができるようになる#

/images/python/introduction/data-analysis.webp

データ解析のイメージ図。

Python には データ解析を行うためのデータ取得やデータの解析に利用可能なライブラリが準備されています

データを取得するための色々な手段が準備されている#

データ解析[1] を行うためには、解析する対象のデータが必要になってきます。 Pythonを利用することでそれらのデータを簡単に取得することができます。

Webサイトからデータを取得する#

Pythonに標準で付属している urllib.request というライブラリを利用することでWeb上のデータを取得することができます。こちらのライブラリを利用することでWeb上からファイルをダウンロードするのと同じことを実施できます。

現代には様々なデータがWeb上で提供されています。以下はほんの一例です。

上記でまとめて記載してしまっていますが、これらのサイトだけでもかなりの量のデータを取得することができます。「官公庁」とまとめてしまっていますが、財務省・農林水産省などの省庁や内閣官房などのデータが公開されているのでこれだけでもかなりの有用なデータを検索することができます。アメリカ政府のオープンデータについても同様です。

Kaggle のデータはより多種多様なものが準備されています。機械学習を勉強しながら成果を競い合うというサイトの性質上、機械学習で扱うようなデータであれば大抵存在しています。

また、もちろんこの他にも企業や有志が公開しているデータがいくつもあります。

データベースからデータを取得する#

様々なデータのオープン化が進んでいる一方で、どうしても公開できない情報というものが存在します。企業が独自に作成してるデータベースであったり、個人情報の関係で公開できないものであったりなど理由はそれぞれです。これらのデータに対してもPythonを利用してアクセスすることができます。

それらのデータ大抵の場合はデータベース(DB)に収められているか、あるいはCSVやExcelといったファイル形式で保存されている場合が多いです(CSV/Excelへのアクセスも可能です、後述します)。

PythonではDBに接続するためのライブラリが用意されています。例えば以下のようなDBに接続するためのライブラリが準備されています。

  • SQLite

  • MySQL

  • MongoDB

上記は一部であり、これ以外のDBを利用している場合にも大抵の場合には接続用のライブラリが準備されていることと思います。

データを解析するための手段がそろっている#

Pythonではデータを解析するための色々なライブラリが準備されています

デフォルトでもデータの解析を行うツールがそろっている#

Pythonには、データを記録するファイル形式としてよく用いられる CSV (Commma Separated Values) を取り扱うための csv ライブラリが用意されおり、これを利用することでそれらのファイルの読み書きを行うことができます。

データのフィルタリング・整理・各種計算を行うことができる#

Pythonで有名なデータ解析向けのライブラリとして Pandas というものが存在します。

このライブラリを利用することで CSV ファイルや Excel ファイルなどからデータを取得し、 Python 上で扱えるように加工することができます。具体的には以下のようなことを行うことができます。

  • CSV / Excel などのファイルからデータを読み出し Python で簡単に利用可能な形式に変換する

  • データの欠落している個所を補完することができる

  • 条件に一致したデータのみを含めるようにフィルタリングすることができる

  • 複数のデータを結合することができる (DBでいう JOIN 処理)

  • 格納されたデータを元に計算処理を行うことができる

  • 簡単なデータの可視化

上記は Pandas の持っている機能のほんの一部であり、他にも有用な機能がいくつも存在します。

データの可視化を行うことができる#

データの可視化も Pandas である程度カバーされていますが、より込み入ったグラフを作成した場合などには別途グラフ描画用のライブラリを利用することも可能です。例えば以下のようなライブラリがあります。

/images/python/introduction/seaborn-example.webp

seaborn公式サイト より引用。

機械学習ができるようになる#

Pythonは機械学習の為に利用される機会が非常に増えています

機械学習によってカメラで撮影した画像から人物を判定したり、画面上のどこに何が存在するかを判定したり、人物のポーズや動きを判定する、といったことが可能になります。

/images/python/introduction/pose-estimation.webp

https://github.com/CMU-Perceptual-Computing-Lab/openpose より引用。姿勢推定 (pose estimation, 人間の画像からどんな体勢になっているかを推定する作業)のライブラリ。

Pythonで機械学習が活発に行われるようになった理由としては以下のようなものが主にあります。

  • 簡単に記述ができるという手軽さ

  • 機械学習の計算処理を高速に処理するためのライブラリが整備されている点

  • 機械学習のための様々なライブラリが整備されている点

機械学習向けの様々なライブラリが存在する#

機械学習向けのライブラリは様々なものがありますが、有名なところで下記のようなものがあります。

Webサイトを作成することができる#

PythonではWebサイトを作成するためのライブラリも複数存在します

特にDjangoはWebサイトを構築するフレームワークとして有名です。別の言語 Ruby で有名な Ruby on Rails ともよく比較されることがあります。

/images/python/introduction/django-website.webp

Django 公式サイト より引用。

Django を利用することでバックエンド(データベース)とやり取りをしながら、インタラクティブにフロントエンド(HTML/CSS/JavaScript)を表示するようなWebアプリケーションを作成することができます。また、REST APIを利用するためのライブラリをを追加で入れることで完全なバックエンドサーバとしても利用することができます。

ドキュメントを作成することができる#

Sphinx というドキュメントを生成するためのライブラリが存在し、これを利用することで 簡単に綺麗なドキュメントを作成することができます

Python のリファレンスドキュメントをはじめとして、Python関係のライブラリでは大抵の場合この Sphinx によってドキュメントが作成されています。例えば以下のようなものがそれにあたります。

Sphinxで生成することができるドキュメントの見た目は Theme (テーマ) という機能で管理されており、有志が作成した様々な Theme を利用することができます。

/images/python/introduction/sphinx-themes.webp

SphinxThemeGallary より引用。デフォルトのテーマや有志が作成したテーマが多数公開されている。

GUIを伴ったアプリケーションを作成することができる#

Python には tkinter と呼ばれるGUI作成用のライブラリが最初から付属しており、これを利用することでGUI(Graphical User Interface)を作成することができます。

Pythonで記述することにより、プログラム自体のファイルサイズも非常に軽く済むため、GUIを持つアプリケーションの作成やプロトタイプの作成などで重宝します。

またそれ以外にも以下のようなGUIのライブラリが存在しています。

なぜ Pythonだとそのようなことが簡単にできるのか?#

Pythonを利用することでどうしてそのようなことができるのかについて解説します。

Pythonには様々なライブラリがもとからバンドルされている#

Python にはもとから思想として Buttery included (家電製品などを買った際に最初から電池が付属している、という意味でつかわれる表現) というものがあり、必要な機能はデフォルトで備わっているようにできています。

上記で説明したような Webサイトからデータを取り出すような処理や、CSVファイルを読み出すといった機能はもちろん、単純な操作であればPython本体をダウンロードするだけでも利用することができます。

Pythonは機械学習・データ解析向けのライブラリが活発に開発されている#

現在では機械学習に利用する言語、データ解析に利用する言語、と言えばPythonの名前が挙げられるようになってきています。なぜならば、Pythonにはこれらを取り扱うためのライブラリが多く存在しているためです。

本記事でも触れているだけでも PyTorch, TensorFlow, Keras と名前が挙がっていますがこれ以外にも多くのライブラリが世界中の開発者によって開発されています。

Pythonユーザの多さがこういった良いサイクルを引き起こしているといえます。

Google / NVIDIA などはもちろん、世界的な企業がPythonを利用している#

上述のライブラリの多さにも少し関係しますが、Pythonを利用している企業はもちろんのこと、Pythonそのもの及び各種ライブラリのスポンサーとして世界的な企業が名を連ねています。つまりそれらの企業がPythonの発展を後押ししているということですね。

Pythonではインタラクティブにデータ解析を行うことができる#

Pythonを簡単に試しながらデータ解析などを行うためのツールとして、 Jupyter というものがあります。

これはWebブラウザ上でグラフなどを描画しながらデータを解析したり、ツールやドキュメントを作成することができる、いわばPython向けのIDE(統合開発環境) に近いものです。

触ったことのない方は、 ここから試す こともできます。

本ツールによって特にデータ解析界隈でのPython利用を後押ししたイメージがあります。今まで特殊なデータ解析ソフトウェアを購入しなければできなかった作業が、Pythonのみで実施できるようになったためです。

Python は非常に読みやすく書けるようになっている#

これは Python 自体の利用者数が増えた要因とも言えますが、一般的には Python は読みやすい言語であるといわれます(もちろん人によりますが)。

C++やJavaといった言語では厳密な型定義などの強い制約があり、また波カッコ {} を多用し、ファイルの変更毎にコンパイルという作業が必要となることなどからプログラミングに対して慣れていない人にとって非常に敷居が高いものでした。

Pythonはスクリプト言語であるため、プログラムを書いたことがない人でも試し易く、エラーの内容などもC++などのコンパイル時エラーに比べるとそれなりに簡単であるため、気軽に試しやすい言語だと思います。

クロスプラットフォームで動作するように設計されている#

Pythonはスクリプト言語であるという特性上 、複数のOSで実行可能です[2]

OSに依存する機能を利用しなければ、一度記述したスクリプトを Windows / macOS / Linux などの各種OSで同じように実行することができます。

気軽に書けて、どこでも実行できるという特性も人気を後押ししているといえます。

他の言語ではできないのか?#

もちろんほかの言語でもなんでもできる#

Python を学べばこれができる、という流れで話を進めてきました。しかし 実のところ他の言語でも同じことはできます

C言語でも、C++言語でも、Javaでも JavaScriptでもRubyでもRustでもPHPでもなんでも、おそらく同じことができます。 プログラミング言語の話でよくチューリング完全という単語が出てきますが、これが保証されている限りどれほど時間がかかるかなどは置いておいて、計算機上で考えられる機能はすべて実現できるのです。そして、大抵のプログラミング言語はこのチューリング完全性が保証されているので、どれかの言語でできることは他の言語でもできてしまうのです。

色々なライブラリが用意されていて、わかりやすい言語であることが強み#

では、結局何がPythonの「強み」なのでしょう。

これに対する回答が 「なぜ Pythonだとそのようなことが簡単にできるのか?」で記述した内容になります。

Pythonにはわかりやすい言語体系、すぐに利用可能な基本機能、様々なOSで動作可能な仕組みがあり、そこに人が集まり様々に有用なライブラリが生まれてきた、ということですね。

特に本記事でも紹介したようなデータ解析や機械学習(Deep Learning含)ではPythonがほぼ必須ツールと言ってもよい状況になってきています。これらの分野ではトライアンドエラーが非常に重要になってくるのですが、Pythonはトライアンドエラーの繰り返しを行うのに非常に適した言語ですので、こういった分野で非常に重宝されているのですね。

関連記事:

Python