Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

導入

■ はじめに

このページではPythonやその周辺に関する説明を行います.

■ Pythonとは

プログラミング言語「Python(パイソン)」Python logoとは, Python Software Foundation が中心となって開発されてきた, 読みやすさと書きやすさを重視する汎用プログラミング言語です. Web開発,データ分析,機械学習,自動化,組込み,科学技術計算など,非常に幅広い用途で使われています.

文法が比較的素直で,「まず動くものを書いてから少しずつ改良する」という流れと相性が良いです. その一方で,標準ライブラリや外部パッケージが充実しているため, 入門向けの言語でありながら,実務でも研究でも主役になれるのが強みです.

■ Pythonを使ってできること

□ 様々なPython実装

Python には 複数の実装があります. 「Pythonの文法をどの処理系で動かすか」が異なるだけで, 同じPythonコードでも内部の動作や得意分野が変わります.

□ CPython

CPython(シーパイソン) はデフォルトのPython実装です. その名の通り,インタプリタの主要部分がC言語で書かれています. 普段「Python」と言ったとき,多くの場合はこのCPythonを指しています.

実行速度はCやRustのようなコンパイル言語には及びませんが, 拡張ライブラリの豊富さ,安定性,情報量の多さが大きな強みです. 近年は実装改善やJIT関連の取り組みにより, 従来より高速化も進められています.

□ Jython

Jython(ジャイソン)Java Virtual Machine 上で 動くPython実装です. Javaの資産と連携しやすい点が特徴で, JavaライブラリをPython風の書き味で扱いたい場面に向いています.

ただし現在の主流はPython 3系ですが, Jythonは互換性の面で制約があるため, 新規の機械学習用途で積極的に選ぶ機会はあまり多くありません.

□ MicroPython

MicroPython(マイクロパイソン) は マイコン向けに最適化された軽量なPython実装です. たとえば Raspberry Pi Pico のような小型デバイス上でPython風のコードを動かせます. Deep Learningそのものより, センサー制御や組込み教育,IoTの入門でよく見かけます.

□ RPython

RPython(アールパイソン) は 通常のPython処理系というより, 静的解析しやすいよう制約をかけたPythonの部分集合です. PyPy(パイパイ) の実装技術と深く関係しており, 言語処理系や仮想マシンの実装に用いられます. 授業で直接使うことは少ないですが, 「Python系の言語設計にはこういう世界もある」と知っておくと面白いでしょう.

□ PyPy

PyPy(パイパイ) は JITコンパイラを備えた高速なPython実装です. 純Pythonで書かれた処理が長時間回るような場面では, CPythonより速くなることがあります.

一方で,C拡張に強く依存するライブラリでは 相性が問題になることもあるため, 科学技術計算やDeep Learningで常に最善とは限りません. 用途に応じて選択することが大切です.

□ Python distribution

Python distributionとは, Python本体に加えてパッケージ管理ツールや代表的なライブラリを まとめて配布したものだと考えると分かりやすいです. とくにデータ分析や機械学習の分野では, 環境構築の手間を減らすために distribution が使われることがあります.

□ Anaconda

Anaconda(アナコンダ) は Anaconda, Inc. が提供する代表的なPython distributionです. conda による環境管理に加え, JupyterLab(ジュピターラボ) や数値計算系ライブラリを まとめて導入しやすい点が特徴です.

初学者でも比較的簡単にデータ分析環境をそろえられますが, 近年はより軽量な構成を好んで uvvenv を使う人も多いです.

□ Miniconda

Miniconda(ミニコンダ) は Anacondaの軽量版です. 最小限のPython環境と conda だけを入れて, 必要なものを後から追加していくスタイルに向いています. 最初から大量のパッケージを抱え込みたくない場合に便利です.

□ Intel® Distribution for Python

Intel® Distribution for Python は,Intel製CPUや関連ライブラリ向けに最適化された distribution です. 数値計算を高速にしたい場面では魅力がありますが, 授業や日常的な開発では標準的なCPython環境を使う方が分かりやすいでしょう.

□ パッケージ管理・バージョン管理

PyPI(パイピーアイ) は Pythonパッケージの代表的な公開場所です. Pythonでは必要な機能を後からパッケージとして追加していくことが多く, 環境管理の考え方がとても重要になります.

この演習では,パッケージ管理ツールとして uv(ユーブイ)uv logo を勧めます. uv は高速で,依存関係管理だけでなく, uv venv による仮想環境の作成, uv python install によるPython本体の導入, uv run によるコマンド実行まで一貫して扱えるのが強みです.

また,Pythonのバージョン違いを扱うときは uv pythonpyenv のような ツールがよく使われます. 同じコードでもPythonのバージョンが変わると動作が変わることがあるため, 「どのバージョンで動かしているか」を意識することが大切です.

Pythonの世界では, これまで easy_installpipvirtualenvpipenvpoetrypdmrye など, さまざまなツールが登場してきました. それぞれが「依存関係管理をもっと楽にしたい」 「仮想環境もまとめて扱いたい」といった課題を解決しようとしてきたためです.

uv はそうした流れの中で出てきた比較的新しいツールで, 複数の役割をひとまとめに扱いやすい点が魅力です. さらに Rust 製のツールであるため高速で, Cargo に親しんでいる人には プロジェクト管理や workspace の考え方が少し似て見えるかもしれません.

■ Pythonパッケージの公開場所

PyPI は Python Package Index の略であり, 世界中の開発者がPythonパッケージを公開している 事実上の標準レジストリです.

uv add numpy のようなコマンドを実行すると, 多くの場合はPyPIからパッケージを取得することになります. Deep Learning周辺では numpyscipymatplotlibpandastorch など多数のパッケージを組み合わせて使うため, PyPIの存在は非常に重要です.

■ 高速化するPython

Pythonは書きやすさに優れる一方で, 素のままでは遅くなりやすい処理もあります. そこで,JITコンパイルや静的型付け,ネイティブコード生成, GPUカーネル記述などを利用して高速化する試みが盛んです.

■ Numba

Numba(ナンバ) は 数値計算向けのPythonコードを高速化するための JITコンパイラです. @njit のようなデコレータを付けるだけで, NumPy中心の処理が大幅に高速化することがあります.

研究や試作の段階では, まずPythonで正しく動くコードを書き, 必要な部分だけNumbaで高速化するという流れが取りやすいです.

□ Pythonに関係する言語

□ Cython

Cython(サイソン) は Pythonに近い文法で書きつつ, C拡張としてコンパイルできる言語です. 型注釈を増やすことで高速化しやすく, PythonとC/C++の橋渡しとして使われることが多いです.

□ Codon

Codon(コドン) は Python風の文法をネイティブコードへコンパイルする高速系の言語です. Pythonとの互換性をある程度保ちながら, より高い性能を狙う発想として興味深い存在です.

□ Mojo

Mojo(モジョ) は Pythonに近い書き味を持ちながら, システムプログラミング寄りの性能や安全性も狙う言語です. AI向けの高性能計算基盤との相性が期待されており, 今後の発展が注目されています. 最近は GPU programming の仕組みも整えられており, GPUカーネルを書いて動かす方向でも発展が進んでいます.

□ Triton

Triton(トリトン/トライトン) は GPU向けの高性能カーネルをPythonベースで記述するための 言語・コンパイラです. 深層学習フレームワークの内部最適化や, 独自GPUカーネルの記述に関心があるなら知っておく価値があります.

■ Pythonの実行環境

この演習では主に Google Colaboratory(グーグル・コラボラトリー) を用いて ハンズオンを行なっていきます. ただし,本格的な開発では JupyterJupyter logo 上で .ipynb ファイルを編集するよりも, 手元のPCに好きなテキストエディタをインストールして, Python (.py) ファイルを編集する方が適している場面も多いです. そのため,ローカル環境でのモダンなPython開発環境も紹介します.

□ ローカル環境

テキストエディタとしては Visual Studio CodeVS Code logo を勧めます. 拡張機能が豊富で, Pythonの補完,デバッグ,Git連携,Notebook表示などを 一つの画面で扱いやすいからです.

パッケージマネージャとしては uv を勧めます. この授業でも uv syncuv run を使うことで, 再現しやすいPython環境を構築できます. また,uv python install を使えばPythonの版をそろえやすく, uv venv を使えば仮想環境もすぐに作れます.

手元でColabのような作業をしたければ, JupyterLab を導入するとよいでしょう. Notebookをブラウザで扱いつつ, ローカルの計算資源やファイルを使って作業できます.

■ Google Colaboratory

Google Colaboratory は, Jupyter Notebook(ジュピター・ノートブック) / JupyterLab で使われる .ipynb 拡張子のファイルをブラウザ上で編集できる Webサービスです.

Pythonコードが書けて実行できるだけでなく, Markdown形式のメモも一つのファイルにまとめて書き込めます. 共有もしやすく, Googleが提供するGPUやTPUを比較的手軽に使える点が魅力です.

試しに動かしてみる段階では非常に便利ですが, 長期的な開発や複雑な依存関係の管理では, ローカル環境と併用する方が見通しが良いことも多いです.

■ まとめ