Pythonでできること7選 | 実際のコード例も交えて解説

Python Python

そもそもPythonとは、プログラミング言語の一種で、簡潔で分かりやすい書き方を特徴とした、最近注目されている言語です。

例えば、

message = input('何か入力してください:')
print(message)

この二行で、キーボードからの入力を受け付け、それを表示するプログラムを書けます。

Pythonは汎用的な言語です。
実行ファイルを作成することはできませんが、ありとあらゆる用途に対応しています。ライブラリで機能を拡張して対応させます。

同じコードがWindowsでもMacでもLinux系OSでも作動し、ポータビリティに優れています。

この記事では、そんなPythonでできることを7つ、実際のコード例も交えながら紹介していきます。

Pythonでできることを実際のコード例も交えて解説

AI開発

Pythonと言えばAI、そう思う方も多いのではないでしょうか。AIを記述する(というか、主にAIに学習させる)用途はPythonが最も得意とするところです。

AIは、機械学習と呼ばれるトレーニングを経て、独自のアルゴリズムを自ら考えます。この機械学習のときPythonを用います。機械学習では実に膨大な量のデータを扱いますが、Pythonは煩雑な手続きを必要とせずコンパクトにデータを扱えるため、機械学習に向いているのです。

以下のコードは機械学習の核心のコードです。

knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)

X_train,y_trainには機械学習のデータが入っているとします。1行目でk-近傍法という機械学習の方法を指定して(パラメータに1を与えています)2行目のfitで学習させます。X_train,y_trainには膨大な量のデータが入るかもしれませんが、どれだけの量になっても、書くことはこの1行だけです。

Pythonはこのように、データ処理が非常に上手なのです。

Web開発

Webシステム開発と言えばPHPやRubyのイメージかもしれません。しかし、ここにもPythonは使われています。

代表的なフレームワークに

  • Flask
  • Django

があります。Flaskは小規模なWebシステム、Djangoは中規模~大規模のWebシステムに主に使用されます。

Djangoのコードの一部を紹介します。

class RecreateView(TemplateView):
    def get(self, request, *args, **kwargs):
        form = forms.RecreateForm()
        return render(request, 'reserve/recreate.html', {
            'form': form, 
            })

これはreserveというWebシステムのコードの一部です。RecreateViewとは画面の一枚を管理するクラスです。getとは、HTTPのGET。アクセスがあったときに呼ばれます。
getの中で、フォームと呼ばれる画面のパーツから自作したRecreateFormを取り出して、render関数を呼んで自作したHTMLのテンプレートを指定し、実際に画面を出力します。formが渡されているのが分かります。
このget関数の処理をいろいろ書くことで、Webシステムの振る舞いは定義されるのです。

フレームワークを使うと、煩雑な手続きは全てフレームワークがやってくれるので、開発者はそのシステム特有の動作部分の開発に専念できます。上記のコードで言えば、部品を取り出し、描画を指定する、それだけでいいのです。

GUIアプリ開発

デスクトップGUIアプリも、Pythonでは開発できます。代表的なフレームワークに
Tkinter
PyQt
があります。

PythonでデスクトップGUIアプリを書く利点は、OSが違っても全く同じGUIアプリが再現できることです。Linux系OSならX window Systemが動作する環境ならGUIアプリも動作します。

Excel操作

これは、2020年になって本も多数出ているので、耳にした方も多いかもしれません。PythonはExcelを操作できます。Excelからの読み込み、書き込みが可能です。

以下のコード

wb = openpyxl.load_workbook('purchase-list.xlsx')
sheet = wb['list']

r = 2
while(True):
    v = sheet.cell(row=r, column=8).value
    if(v is None):
        break
    r = r + 1

は、まずpurchase-list.xlsxというExcelブックを開き、listシートを開き、セルの8列を2行目から順に見ていって、セルに何も入ってないところで見るのを止めます。そのときの行数はrに格納されています。

Excel VBAのようだ、と思われるかもしれません。実際、2019年1月にはExcelに直接Pythonが搭載され、VBAの代わりに使えるようになる、という噂がネットを駆け巡りました。Pythonの簡潔な記述は、Excelの操作を楽にします。

画像システム開発

Pythonは画像を扱うのも得意です。

以下のコード

im = np.array(Image.open(filename).convert('RGB'))

for x in range(im.shape[0]):
    for y in range(im.shape[1]):
        rgb = im[x,y]
                
        r = rgb[0]
        g = rgb[1]
        b = rgb[2]
 
        if(r>border_r and g>border_g and b>border_b):
            r = 255
            g = 255
            b = 255
        else:
            r = 0
            g = 0
            b = 0

        im[x,y] = [r,g,b]

pil_img = Image.fromarray(im)

は何をやっているのかというと、filenameのPNG画像やJPEG画像などを開き(いちいちフォーマットごとに処理を分ける必要はありません)、それをRGB形式に変換し、imにセットします。そしてimの横、縦で二重ループを回し、ピクセルの値を取得し、R、G、Bに分解して(といってもピクセルの値が配列に入っているので順に取り出すだけですが)とある値と比べて白か黒かに変換します。変換したのちピクセルに変換値をセットします。それが終わったらpil_imgにimの値を取り出します。これだけで画像の白黒変換ができるのです。

スクレイピング

ホームページからコンピュータで値を読み取ることをスクレイピングと言いますが、BeautifulSoapを使うとPythonでスクレイピングできます。動的に生成されるページに対してはSeleniumを使います。

スクレイピングはテクニック次第で多種多様のホームページを読み取ることができますので、奥の深い分野です。

数学の問題を解かせる

Pythonでは数学の問題を解かせることもできます。行列の計算、複素数の計算、方程式の解を求めるなど様々なことができます。

以下のコード

x = Symbol('x')
g = x**2
df = diff(g)
print(df)

は、まずxを「シンボル」に指定して、gにxの2乗という数式をセットします。diffで、微分を求めているのです。dfの値は2xとなります。

このように、微分や積分を求めることもできます。

まとめ

いかがでしたでしょうか。Pythonでできることが実にたくさんあることがわかったのではないでしょうか。

今Pythonの求人数はうなぎ上りです。背景にはこれだけのPythonの柔軟性があります。これからエンジニアになりたい方にはPythonはおすすめの言語です。