Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

なぜ機械学習にPythonが強いのか、Pythonで並行処理をするコツを伝授【PyData.tokyo】

「PyData.tokyo One-day Conference 2018」レポート

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2019/01/11 11:00

 10月20日に開催された「PyData.tokyo One-day Conference 2018」では、フリーランスのプログラマで、python.jpの管理人もしている石本敦夫氏がPythonやNumPyの歴史とPythonで並行処理を行う時のポイントを解説した。

目次

python.jp管理人 石本敦夫氏

python.jp管理人 石本敦夫氏

なぜ機械学習にはPythonなのか
~NumPyを核に形成された科学技術計算のエコシステム

 いま「機械学習」でググると「python」が関連キーワードとしてサジェストされるほど、AIや機械学習を扱うならPythonは定番の言語だ。2011年にIEEEが発行した雑誌には「科学技術計算においてPythonはデファクトスタンダード」と記述されている。

 その理由を示すべく、石本氏が歴史を紐解いた。Pythonが最初にリリースされたのが1991年でPython 0.9.1994年にPython 1.0となり、後を追うように画像処理のPILやnumeric(現在のNumPy)もリリースされる。石井氏は「この頃はGitHubがない時代でしたが、数値計算のライブラリが多くリリースされました」と話す。2000年頃にはEnthoughtがPython関連のパッケージ化したものを販売するようになるなど、Python周辺はすでに盛り上がりを見せていた。

Python科学技術計算史(講演資料より抜粋)
Python科学技術計算史(講演資料より抜粋)

 2000年を過ぎるとPyLex、Cython、Matplotlibなどが出て、ビッグデータがはやり出すとScikit-learnも出てきた。石本氏は「2010年ごろまでには現在使っているものは出そろってきました」と話す。

 なぜPython周辺で科学計算ライブラリが増えたのか。主な理由として石本氏は3つ挙げる。NumPyがエコシステムの核だったこと、Pythonからのサポートがあったこと、C拡張ライブラリの作りやすさがあったことだ。

 NumPyの元をたどるとPythonと無関係ではなく、Pythonの数値演算パッケージとして開発が進められたのがはじまり。Pythonコミュニティリードも関与し、NumPyはPythonでは「公式」なものとして、いずれは標準パッケージに採り入れられる予定だった。そのためあえて対抗する勢力もなく、関係者はライブラリはNumPyやSciPyに合流するように開発していた。そのため暗黙の了解のもとに安定的なエコシステムが形成されていった。

 そうした状況だったため、PythonもNumPyに配慮して開発が進められた。例えば1996年にPython 1.4がリリースされた時にNumPyで行列を参照する簡略的な表記「L[i,j,k]」が追加された。これにとどまらず、NumPyのための機能拡張は以後も度々追加されてきた。それはPythonコミュニティがNumPyを使いやすくなるよう、パフォーマンスが出せるように配慮していたためだ。

 さらに石本氏は「Pythonではライブラリとして利用するC拡張の作りやすさがあります。それゆえに20年前のライブラリでも、そのままコンパイルして利用できるほど安定しています。開発もメンテナンスもしやすいです。こうした特徴はパフォーマンスが重要な数値演算処理では重要になってきます」と理由を説明する。

 こうしたことから、Pythonは長らく数値計算処理ではデファクトスタンダードとして君臨しており、さらに近年では機械学習で強みを発揮している。エンジニアのナレッジサイト「Stack Overflow」では2012年以降徐々に「Python」が頻出するようになり、つい最近ではついにトップのJavaScriptに追いついた。

Stack Overflow Trends(講演資料より抜粋)
Stack Overflow Trends(講演資料より抜粋)

 石本氏が管理人を務めているpython.jpでも2012年は月間ユニークユーザーは約5000だったところ、最近では1万7~8000と3倍に伸びていると言う。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 加山 恵美(カヤマ エミ)

    フリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Onlineの取材・記事や、EnterpriseZine/Security Onlineキュレータ...

バックナンバー

連載:イベントレポート

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5