PyQオフィシャルブログ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

プログラミング、Pythonで何ができるの?できることを4つ紹介します

f:id:nana_yu:20180625114939p:plain

id:hirokiky です。

プログラミングやPythonを学んでいったい何ができるの?という疑問にお答えします。 この記事ではPythonを使ってできることを紹介することで、 「プログラミング、Pythonを学べばこんなことができるんだ」 と感じてもらえればなと思います。

プログラミングとは「コンピューター(PCやサーバー)の処理すべきことを書くこと」を言いますが、その言葉の定義を聞いても何をやることなのかは正直イメージしにくいと思います。

具体的に、プログラミングでできることをお伝えします 。

今回お伝えする、プログラミングでできること4選

  1. Webサービス、Webアプリケーションが作れます
  2. Excelに代わり、自動でデータ処理や分析ができます
  3. 自動でWebサイトのデータを収集できます
  4. 機械学習、ディープラーニングや最適化ができます

この記事で紹介する4つはできることの一部にすぎません。プログラミングではよりたくさんの、色々な素晴らしいことができます。

1. Webサービス、Webアプリケーションが作れます

f:id:nana_yu:20180625115301p:plain

一番身近なプログラミングの例は、Webサービスだと思います。 TwitterやFacebook、AmazonというWebサービスも「プログラミング」することで作られています。

例えば

  • Instagram はプログラミング言語Pythonで作られています
  • イベント管理サービスの connpass もPythonで作られています (サーバーがPythonで作られています。iOSアプリなどは別のプログラミング言語です)

以下はイベント、勉強会プラットフォーム connpassの、DjangoCongressJP 2018というイベントのページです。

f:id:hirokiky:20180621155914p:plain

このように、プログラミングを学ぶことで InstagramやconnpassのようなWebサービスを作れるようになります。

プログラミングを学ぶことで、「こんなWebサービス・アプリがあったらいいのにな」というイメージから、実際に役に立つものを自分で作れるようになります。

プログラミング言語Pythonで作られたWebサービス、Webアプリの例:

出展

私のプログラミング活用方法:Webサービス・アプリケーション

f:id:nana_yu:20180316121616j:plain
hirokiky 例えば私自身もプログラミング言語Pythonを使って、Pythonの学習プラットフォームである PyQ を作っています。

2. Excelに代わり、自動でデータ処理や分析ができます

f:id:nana_yu:20180625115319p:plain

Excel(エクセル)でデータの整理やグラフを表示したりはよくやることだと思います。 ですが、同じExcelの処理を毎日、毎月ずっと繰り返すのは大変だと思いませんか?

PythonやVBAなどのプログラムでExcelの操作を自動化しておけば、同じ処理を何度も手動で行う必要がありません。 一度プログラミングしておけばデータの集計や余計なデータの削除、シートの結合やグラフへの描画などがすべて自動でできるようになります。

以下ではプログラミング言語Pythonを使って、あるエクセルファイルを読み込んで「期首」を横軸に「売上高」のグラフをプロットしています。

エクセルファイルの読み込み

f:id:hirokiky:20180621155332p:plain

売上高の推移をプロット

f:id:hirokiky:20180621155356p:plain

たった2行のプログラムでグラフをプロットできました。 このようにプログラムを1度書いておけば、同じ形式のどんなExcelファイルにでも、再利用できます。

以下のような、Excelでよくやる計算もPython(とpandasライブラリー)を使ってできます。

  • 列と列の計算結果を、別の列に書き込む
  • シートのある列ごとにグループして計算する
  • 月次での数値の推移を計算する

1日10分かかる処理を自動化しておくだけで、年間40時間の削減になります (1年で240日の10分の時間を削減したという計算の場合)。

私のプログラミング活用方法:データ処理・データ分析

f:id:nana_yu:20180316121616j:plain
hirokiky 私も、株価や有価証券の情報をまとめたExcelファイルを集計したり、グラフをプロットするためにPythonプログラムを書いています。 手動でやると面倒なExcelの処理などを、毎度同じように自動で実行できるので、かなりの楽ができます。

3. 自動でWebサイトのデータを収集できます

f:id:nana_yu:20180625115511p:plain

Webサイトの情報を自動で取得して、CSVやエクセルのデータとしてまとめられます。 これはWebスクレイピングと呼ばれる技術で、たとえば自分が 定期的にチェックしているWebサイトのデータを取ることで、手動でアクセスする手間を省けます 。Webサイトの更新を自動でチェックさせたり、定期的に価格を取得して保存しておいたりができます(アクセス対象のWebサイトの利用規約をよく確認する必要はあります)。

例えば、イベント情報サイト connpass にアクセスするPythonプログラムは以下のようになります。 たった数行プログラムを書くだけで、自動でWebサイトにアクセスし、情報を取得できるようになります。

import requests

# connpass.com にアクセスして情報を取得する
requests.get("https://connpass.com/")

プログラムを追加することで、アクセスして取得した情報をCSVやエクセルに保存したり、前回アクセスしたときと変わった部分を検知したりも自動でできるようになります。

私のプログラミング活用方法:Webサイトのデータ収集(Webスクレイピング)

f:id:nana_yu:20180316121616j:plain
hirokiky 私も個人的に 有報キャッチャー というサイトから企業の有価証券報告書を自動で取得、解析して投資判断に役立てたりしています。 自分でブラウザーをクリックしてダウンロードしてくるのは果てしなく大変な作業ですよね。 それをコンピューターに任せれば余った時間をより有意義なことに使えます。

4. 機械学習、ディープラーニングや最適化ができます

f:id:nana_yu:20180625115543p:plain

単にデータの操作や分析をするだけでなく、機械学習や最適化もできます。

例えば機械学習(回帰分析)を使って、東京都などの住宅価格の予想をさせることができます。 また最適化を使えば、株式や債券などのポートフォリオの最適化(リスクを最小にして、リターンを最大にする銘柄の組み合わせを算出)できます。

Pythonを使った機械学習(分類)のプログラムは以下のようになります。 複雑そうな機械学習ですが、Python(とscikit-learnというライブラリー)の力を使えば簡単にできます。

import pandas as pd

# CSVファイルの読み込み
df = pd.read_csv('./data.csv')

# データから特徴とラベルを分離
X = df[:-1, :].values
y = df[-1, :].values

from sklearn.linear_model import LogisticRegression

# 機械学習のモデルに学習させる
lr = LogisticRegression()
lr.fit(X, y)

# 値からラベルを予想させる
lr.predict([(165, 65), (170, 82), ...])

私のプログラミング活用方法:機械学習・最適化

f:id:nana_yu:20180316121616j:plain
hirokiky 私も最適化を使って(証券の)ポートフォリオのリスクを抑えてリターンを大きくする組み合わせを計算しています。 機械学習はまだ個人の趣味では活用できていないので、今後できれば面白いかなと思っています。

他にもプログラミングは色んなところで活躍しています

プログラミング(ソフトウェア)は日常の色々な場所で活躍しています。 その恩恵を感じる機会は少ないですが、スマホアプリや、美容院の予約をするWebサイト、倉庫からの荷物の配送を管理するシステムなど、色々な場所でソフトウェアは活躍しています。

まとめ

今回はプログラミングを学んでいったい何ができるの?という疑問にお答えしました。 具体例としてプログラミング言語Pythonを使った場合の例を紹介しました。

「プログラミングってよくわからない」「プログラミングってなんだかすごそう」から、 プログラミングって「こんなことができるんだ」 とより具体的に感じていただければ嬉しいです。

  • 欲しいなと思うWebサービスのアイディアがありますか?
  • 手動で繰り返しているExcelの処理はありませんか?
  • 毎日手動で更新をチェックしているWebサイトはありますか?

ぜひプログラミングを学んで、そのすごさや便利さを知っていただければと思います。

Copyright ©2017 BeProud Inc. All rights reserved.