最近よく聞かれるんだけど、「Pythonで結局なにができるの?」って。範囲が広すぎて、逆に分かりにくいんだよね。正直、ウェブサイトからデータ分析、日々の雑用自動化まで、マジで何でも屋。だから、ちょっと頭の中を整理する感じで、主要な分野をざっと書き出してみる。
WebサイトやWebアプリ開発、これが王道だよね
まず一番イメージしやすいのがこれかな。普段みんなが見てるWebサイトの裏側(バックエンドってやつ)を作るのに、Pythonはめちゃくちゃ使われてる。
特に有名なのが、[Django] と [Flask] っていう2つのフレームワーク。料理で例えるなら、Djangoが「全部入りの豪華なコース料理」。ユーザー認証とか管理画面とか、サイト作るのに必要なものが最初からだいたい揃ってる。だから大規模で複雑なものを作るのに向いてる。逆にFlaskは「好きなものを好きなだけ頼めるアラカルト」。最低限の機能しかついてないから、すごく身軽。小さいアプリとか、ちょっと特殊なことやりたい時に便利。どっちもちゃんとしたWebアプリが作れる。
試しにFlaskで「Hello, web!」って表示するだけなら、コードはこれだけ。ほら、なんかできそうでしょ?
from flask import Flask
app = Flask(__name__)
@app.route("/")
def home():
return "Hello, web!"
if __name__ == "__main__":
app.run(debug=True)
あ、ちなみに最近は [FastAPI] っていうのも人気。名前の通り、とにかく速いのがウリ。API作るなら今はこっちを選ぶ人も多いかも。
GUIアプリ、つまりPCで動く普通のウィンドウ付きソフトも作れる。[Tkinter] とか [PyQt] っていうライブラリを使えば、ボタンとかテキストボックスがある画面をデザインできる。昔ながらのツール開発とか、自分専用の便利ツール作るのには今でも全然アリ。
データ分析とか機械学習、Pythonの独壇場
これはもう、今のPythonを象徴する分野だよね。科学者からマーケターまで、数字を扱う人ならだいたいPythonを使ってるイメージ。
なんでかっていうと、便利なライブラリが揃いすぎてるから。
- NumPy: これがないと始まらない。大量の数値を高速に計算するための土台。
- Pandas: Excelをプログラムでグリグリ操作する感じ。CSVファイルとか読み込んで、データの整理・加工・集計…もう何でもできる。とりあえずデータ見るときはまずこれ。
- Matplotlib / Seaborn: データをグラフにするやつ。数字の羅列じゃ人間わかんないからね。グラフにして初めて「あ、ここが伸びてるな」とか分かる。
PandasでCSV読んで、基本的な統計量(平均とか中央値とか)を見るだけならこんな感じ。
import pandas as pd
# data.csvっていうファイルを読み込む
df = pd.read_csv("data.csv")
# データの要約情報を表示
print(df.describe())
で、その先にあるのが機械学習(AI)。これもPythonが圧倒的に強い。
[scikit-learn] っていうライブラリがすごくて、有名な機械学習の手法がだいたい入ってる。これ使うと、例えばアヤメの花のデータを特徴(がくの長さとか)から3種類に分類するモデルを作ったりできる。なんか難しそうに聞こえるけど、コードにすると意外と短い。
もっと本格的なディープラーニングの世界だと、Googleの [TensorFlow] とかFacebook(Meta)の [PyTorch] が二大巨頭。これもPythonで使うのが一般的。正直、データサイエンスやりたいならPython以外は考えにくいかな、今は。
地味だけど最強、作業の自動化(スクレイピングとか)
個人的には、プログラミングを学ぶ一番のメリットってこれかもしれない。毎日やってる退屈な作業を、PCにやらせるやつ。
例えば、
- Webサイトを巡回して、特定の情報(株価とか、ニュースの見出しとか)を引っこ抜いてきてExcelにまとめる。(Webスクレイピングってやつ)
- フォルダの中にある大量の画像ファイルの名前を、ルールに従って一括で変更する。
- 毎朝決まった時間に、レポートメールを自動で送信する。
こういう「ルールが決まってる単純作業」は、Pythonの得意分野。[requests] と [BeautifulSoup] を使えばWebスクレイピングができるし、[openpyxl] でExcelを操作できる。ファイル操作は標準機能で十分。
例えば、特定のWebサイトの見出しを全部取ってくるコードはこんな感じ。
import requests
from bs4 import BeautifulSoup
# とあるニュースサイトにアクセス
response = requests.get("https://news.ycombinator.com/")
soup = BeautifulSoup(response.text, "html.parser")
# classが"titleline"の要素を全部探して表示
for title in soup.select(".titleline"):
print(title.get_text())
一度こういうスクリプトを組んでおけば、あとは実行するだけでPCが働いてくれる。自分の時間を生み出す魔法みたいなもんだね。
ロボットとか電子工作もいける
ソフトウェアだけじゃなくて、物理的なモノを動かすのもPythonの守備範囲。特に [Raspberry Pi](ラズパイ)の登場が大きいかな。小さなコンピューターなんだけど、これにPythonを入れてモーターやセンサーを制御するのが定番になってる。
ラズパイでLEDをチカチカさせる(Lチカって呼ばれる電子工作のHello World)コードはこれ。すごく直感的。
from gpiozero import LED
from time import sleep
led = LED(17) # GPIO 17番ピンに繋いだLED
while True:
led.on() # 点灯
sleep(1) # 1秒待つ
led.off() # 消灯
sleep(1) # 1秒待つ
もっと小さいマイコン(ESP32とか)で動く [MicroPython] っていう軽量版Pythonもあって、ホビー用途から製品のプロトタイプまで幅広く使われてる。本格的なロボット開発で使われるROS (Robot Operating System) も、中身はC++だけど、Pythonから操作するのが一般的。複雑な動きの制御ロジックとか、画像認識みたいな「頭脳」の部分をPythonで書くことが多い。
で、結局どれから手をつければいいの?
まあ、色々できるのは分かったけど、じゃあどこから?ってなるよね。ちょっと独断と偏見でまとめてみた。
| 分野 | 一言でいうと | こういう人に向いてる | 最初の壁(個人的感想) |
|---|---|---|---|
| Web開発 | 見えるものを作る楽しさ。ユーザーが直接触るものを作れる。 | サービスやアプリのアイデアがある人。ものづくりが好きな人。 | うーん…HTML/CSSとかDBとか、Python以外の知識も結構いることかな。 |
| データ分析 | 数字の裏にある物語を読む探偵仕事。ビジネスの意思決定に直結する。 | 論理的に考えるのが好きな人。数字に強い人。なんで?って思う癖がある人。 | ちょっと数学とか統計の知識がないと「何やってるか」が分からなくなりがち。 |
| 作業の自動化 | 自分の時間を増やす魔法。一番、実生活で役立ちやすいかも。 | 面倒くさがりな人(最高!)。効率化を考えるのが好きな人。 | 「何を自動化したいか」を見つけること自体が、意外と難しいかもしれない。 |
| 電子工作/ロボット | デジタルとリアルを繋ぐ面白さ。プログラムが現実世界に影響を与える。 | とにかく手を動かしたい人。夏休みの工作が好きだった人。 | はんだごてとか回路とか…純粋なプログラミング以外のハードルがあること。 |
逆にPythonがそんなに得意じゃないこと
何でもできるって言ったけど、もちろん苦手なこともある。正直、これを知っておくのは結構大事。
- スマホアプリ開発: これは専門外かな。[Kivy]みたいなライブラリもあるけど、やっぱりiOSならSwift、AndroidならKotlinっていうネイティブ言語で作るのが普通。パフォーマンスも開発のしやすさも全然違う。
- 超高速な処理が求められるもの: 例えば、ガチの3Dゲームエンジンとか、金融取引のミリ秒を争うシステムとか。こういうのはC++みたいな、もっとハードウェアに近い言語の出番。Pythonは実行速度では一歩劣る。
- OSとかドライバ開発: コンピュータの根幹部分をいじるような、超低レイヤーな開発も向いてない。これもC言語とかアセンブリの世界だね。
要するに、「人間にとっての分かりやすさ・書きやすさ」を優先した言語だから、その分「マシンにとっての極限のパフォーマンス」は少し譲ってる感じ。でも、ほとんどの用途ではPythonの速度で十分すぎるんだけどね。
まとめというか、最初のステップ
結局、Pythonは「何かを始める」のに最適な言語なんだと思う。データ分析に興味を持ったらPandasを触ってみて、Webに興味が出たらFlaskで簡単なサイトを作ってみる。そういう風に、自分の興味に合わせていろんな分野に手を出せるのが一番の魅力かな。
公式の python.org にはチュートリアルがあるし、日本だとQiitaとかZennで日本語の情報を探すのが早いかも。海外のReal Pythonっていうサイトも質が高い記事が多いけど、まあ英語だけどね。
まずは自分のPCにPythonをインストールするところから。それだけで、もうこの記事で紹介したこと全部への扉が開くわけだから。なかなか面白いよね。
それで、みんながPythonで最初にやってみたいことって何?ウェブ?データ分析?それとも地味な自動化?よかったらコメントで教えてよ。
