スペシャルトーク@プログラミング+ 第22回
Google、Dropbox、Microsoftでも、ハリウッドでも、AIにも、みんなPythonを使用!
『みんパイ』著者が、Pythonはなぜ流行ったのかを考える
2018年10月10日 06時00分更新
空前のPythonブーム、到来!!
「Python」流行っていますね。最近は、AIや機械学習、データサイエンスというようなキーワードを頼りに、Pythonを探しあてる人が多いようです。他にも、ネットワーク、IoT、Webやスクレイピングなど、いろいろなキーワードでPythonにたどり着く人がいます。応用範囲が広く、学びやすく、それでいて長く使えるのがPythonの魅力です。
コンピューターが便利な点は、「手順」を自動化してくれるところです。たとえば、Webから必要な文字や数字を取ってきて、Excelのシートにまとめる手順を自動化することで、面倒なルーチンワークから解放されます。あるいは、CO2濃度が高まって眠気が増すのを避けるために、センサーで検知した数値が2,000ppmを超えたら自動的に社内SNSにお知らせを投げるプログラムを書くこともできます。こうして換気をうながすことにより、生産性が高まるはずです。
「AI」は、この種の自動化の先に位置する技術です。Pythonは守備範囲が広いので、かなり多くの「自動化」が実現できます。Pythonが使えるようになりたい、今の「AI」の正体を知りたいと思われる方は、ぜひ10月13日(土)に開催されるセミナー「正しいプログラミングの学びかた」においでください。
私は10年以上お読みいただいているPython入門書(『みんなのPython』SBクリエイティブ、通称『みんパイ』)を書いた関係で、使用歴が長く、黎明期といえる時期からPythonを仕事に使っています。そんな私が今のPythonブームを見ると、国内で超マイナーだったころの思い出を含め、いろんなできごとが走馬灯のように思い出されます。
この記事では、過去を振り返りながら、Pythonが流行っている理由と今後について考えてみたいと思います。
GoogleがPythonを使い始める
GoogleがPythonを使い始めたのは、2002年のころからです。検索エンジンをはじめとするサービスを運用するために、Googleではたくさんのサーバーを運用していますが、当時はまだ一般的ではなかった「クラウド」上にあるシステムを連携させるのに、多くの手順が必要でした。サーバー間でデータを移動したり、最新のデータに同期をとるような処理を実行しないと、クラウドシステムは正常に動作しないのです。
データの同期をする場合、必要な手順は大きく二種類に分かれます。一つは、巨大なデータを比較し、古いデータを新しいデータに置き換える「重い作業」。この手順は、処理量が膨大で時間がかかります。もう一つは、司令塔の役割です。どのサーバーとどのサーバーで同期を取るか、どの程度の間隔で同期するか、というような「軽い作業」です。
重い作業は高速に終わらせたいので、C++のような、処理速度をかせげるプログラミング言語で作ります。軽い作業は、処理の速度はあまり求められません。その代わり、プログラムの作りやすさ、メンテナンスのしやすさが求められます。そこで、処理速度が速くはないけれど、プログラムを作りやすいPythonが使われるようになりました。
「いいとこ取り」をした結果として、GoogleはPythonを採用したのです。このように、司令塔として使われるプログラミング言語のことを「糊言語」と呼ぶことがあります。英語で糊は「グルー(Glue)」と言いますが、紙を付ける糊のように、手続きと手続きの「つなぎ方」をコントロールするために使われる「グルー言語」として、PythonはGoogleに発掘されたわけです。
ハリウッド映画はPythonで作られている
Googleが使ったように、仮想化やクラウドの世界ではPythonはメジャープレイヤーです。サーバーを制御したり、巨大なデータを多く扱う分野では、Pythonがよく使われます。クラウドストレージの「Dropbox」がPythonを使っているという話も有名です。
映画の世界も、大量のデータを扱う分野のひとつです。映画製作に欠かせない「CG」を作るために、画像や動画などの大量のデータを扱います。このCGの世界で、Pythonが活用されています。本当にいろいろな作業がPythonによって自動化されているので、PythonがないとCG動画が作れないと言われるほどです。
たとえば、画像処理を重ねてリアリティを出すために使われる「パイプライン処理」。この処理をはじめとしたデータ管理のために、Pythonが使われています。CGを作るのに必要なさまざまな計算にも、Pythonが使われます。
商業レベルのCG制作に使われる「MAYA」というCGソフトウエアには、Pythonが「組み込まれて」います。内部にPythonが入っていて、アプリケーションの自動化などをするのにPythonで書いたプログラムが使えるのです。
CGを作るときには、たくさんの設定値を調整しながら、見栄えの良い「画」を作ってゆきます。数値を入力して設定を変えていては面倒なので、効率を高めるためにスライダーやチェックボックスのようなユーザーインターフェース(UI)を作成します。このUIを作るのにも、Pythonが使われます。CG製作の現場では、たいていアーティストがPythonを使ってUIを作っています。エンジニアではない人間がアプリケーションの機能を操る「グルー」として、Pythonのプログラムを使っているわけです。
また、アニメーションを作っている日本のスタジオのシステムエンジニアの求人にも、Pythonという文字を見かけることがあります。先日は、『ヱヴァンゲリヲン新劇場版』を作っているスタジオカラーの求人の要件に「Pythonのスキル」が明記されていました。おそらく、素材を管理したり、パイプラインをカスタマイズするためなどに使われていると思うのですが、日本の映像産業でも、Pythonがグルー言語として活躍しているようです。
「Excel」にPythonが搭載される日は来るのか?
クラウドやCGのような専門分野の話ばかりでは面白くないと思います。もう少しみなさんに「刺さる」話題も取り扱ってみましょう。
アプリケーションにPythonが組み込まれている例は、実は多くあります。Pythonを組み込めば、人間が行うアプリケーション操作の手順を自動化し、何度も自動実行させることができます。
表計算ソフトの「Excel」を使って便利なシートを作るとき「マクロ」という機能を活用します。セルに「=SUM(A1:A2)」というような文字列を打ち込むことで、複数セルの数値を合計できます。これは「VBスクリプト」と呼ばれていて、手順を自動化しているという意味では立派なプログラミングです。この機能を活用すると、給与や税金の計算をはじめとして、いろいろな手順を自動化できます。
このVBスクリプトは、シンプルで学びやすくとても良いのですが、欠点もあります。ひとことで言うと「継続的な開発に向かない」のです。使い捨ての機能を作るには良いのですが、機能を拡張したり維持しようとすると、いろいろとほころびが出てきます。
以前、中学で教諭をしている親戚に、仕事で使っているExcelシートがOfficeのバージョンアップで動かなくなってしまった、と相談を受けたことがありました。比較的ITに詳しい技術家庭の教師が作った通知表作成用のシートなのですが、作った本人が転籍してしまい、メンテナンスができなくなったのだそうです。
VBスクリプトは属人的で行きあたりばったりになりやすく、メンテナンスが難しいのです。危険を感じた私は、そのときはお断りしました。教育機関や行政の業務がこのような「神Excel」によって執行されていることに心を痛めながら、理由を添えて説明しました。
ExcelにPythonが組み込まれていて、スクリプトがPythonで書かれていれば、違った返事になったと思います。プログラムの書き方に一貫性があり、読みやすいPythonのプログラムなら、エラーの起こる場所をたちどころに探し出すことができたはずです。より読みやすく、一貫性のあるプログラムにリファクタリングできたかもしれません。
同じようなことを考える人は多く、ExcelにPythonを組み込んでほしいという要望はかなり以前からありました。そして去年(2017年)、Excelを作っているMicrosoftのWebフォーラムに「組み込みを検討するのでアンケートを採りたい」という担当者の書き込みがあったのです。「導入決定」ではないにもかかわらず、海外や国内のエンジニアを中心に大変な盛り上がりとなりました。このことからも、ExcelにPythonの搭載を待ち望む人がいかに多いかが見て取れます。
ExcelにPythonが搭載され、非エンジニアを含め多くの方がVBスクリプトの呪縛から解き放たれる日は来るのでしょうか。いま分かっているのは、社内で検討が始まっていると言う事実と、同じくMicrosoftが作るBIツール「PowerBI」に、最近Pythonが組み込まれたという事実だけです。
PowerBIというのは、「BIツール」と呼ばれるアプリケーションです。BIとは「ビジネスインテリジェンス(Business Intelligence)」の略語です。データを分析し、現状の分析や将来の予測をすることでビジネスに役立つ情報を得る、ビジネス特化のデータサイエンス的手法のことです。分析結果は美しいグラフなどに「可視化」されて、分かりやすく提供されます。
BIでは、比較的規模の大きなデータを扱います。自然言語処理のようなAIの基礎技術を連携して使うことも多く、多くのBI製品がAIの関連分野で強い人気のあるPythonを組み込んでいます。同じくBIツールとして有名な「タブロー(Tableau)」も、Pythonと連携して動く機能を持っています。MicrosoftがPowerBIにPythonを組み込んだのも、似たような背景があるようです。同様にデータ分析に使われるExcelも、同じ文脈で考えると、Pythonの力を必要としていると言えるかもしれません。
AIをも組み込むPython
これまで、Pythonがグルー言語として使われている事例を見てきました。時には高速に稼働するライブラリを司令塔として操り、またアプリケーションに組み込まれ、自動化を実現するグルーとして活躍しているのがPythonです。
Pythonがデファクトスタンダートのプログラミング言語として使われているAIや、その要素技術となる「機械学習」の分野でも、 Pythonは似たような使われ方をしています。ディープラーニングを含む機械学習の処理では、学習データを対象に大量の計算を実行します。線形代数と呼ばれる手法などを使って、データを統計的に処理し、処理を行っています。
Pythonのような「スクリプト言語」と呼ばれる種類のプログラミング言語は、大量の計算が苦手です。数字を扱うデータの粒度が大きく、大量の計算をさせると効率が悪いのです。
そこで「NumPy」(ナムパイ)が作られました。この「ライブラリ」を使うと、大量の行列演算を高速に実行できます。NumPyを使えば、Pythonはデータを渡し、結果を受け取り、さらに他の処理にデータを渡す司令塔の役割に徹することができます。データの流れを「繋ぐ」役割をすればいいのです。Googleが最初にPythonを活用したときの手法と似ていますね。
Pythonを使った機械学習のプログラムでは、ほぼすべてのケースで、直接的に、または間接的にNumPyを使います。研究者やエンジニア、データサイエンティストは、数式をNumPyを使ったプログラムに書き換えます。結果をグラフなどで可視化して確認し、思ったような結果が出なかったらプログラムを直して再度実行します。Pythonのプログラムは読みやすく、書き換えて実行しやすいので便利なのです。その上、時間のかかる処理は専用のライブラリが実行してくれるので、無用に長時間待たされることもありません。
人工知能やデータサイエンスの分野でも、Pythonは「グルー」として使われているのです。一方、IoTの分野でも、Pythonはグルー的な使われ方をしています。IoTをはじめようと思い、Raspberry PiというIoT用途に使われる小型コンピューターを買ったとします。センサーをつないでデータを読み込もうと思い、ネットで方法を検索すると、Pythonで書かれたプログラムが出てきます。
このようなプログラムでも、大抵Pythonはグルーとして使われます。センサーとの通信処理はライブラリが実行し、Pythonは指令を出し、結果を受け取り、受け取った結果を加工して他の処理に回す、というつなぎの部分を担当しています。
Pythonの過去と未来
Pythonが多くの分野で使われるのには、「グルー」として使いやすい、という理由があります。もう少し具体的に言うと、CやC++といった言語で書かれたライブラリと連携がしやすいのです。アプリケーションに組み込んで使われることが多いのも、同じ理由からです。
プログラミング言語としてみると、シンプルで使いやすく、見た目でプログラムの構造が分かる「可読性の高さ」も好まれるポイントです。ソフトウエア開発を専門に行うエンジニアだけでなく、アーティストや普通のビジネスマンを含めた非エンジニアにも使いやすい言語と言えます。それでいて、本格的な開発にも使えるポテンシャルを持っているのがPythonの面白いところです。
Pythonが広まってきたここ十数年のことを振り返ってみると、その時々の先端分野でPythonが使われてきたことがよく見て取れます。 2000年代初期はWeb開発を含むRAD開発に使われ、またクラウドにも活用されてきました。ソフトウエアの先端分野で、Pythonはグルー的な司令塔として使われてきました。
そして、第三次AIブームが起こり、機械学習への興味が高まっている現在、AIの分野でもデファクトスタンダードとして使われているPythonは、ソフトウエア開発を専門としない人達の注目を集めるようになりました。大きな書店に行くと、Pythonの入門書を集めた棚が必ず置いてあります。私がはじめて入門書を書いたとき、書店のPythonといえばオライリー本『初めてのPython』と拙著の二冊しかなかったことを考えると、隔世の感があります。
ユーザーベースの増加が指し示しているのは、おそらく「Pythonにはまだまだ伸びしろがある」という事実だと思います。Pythonはこれからも、グルー言語としていろいろな分野に使われ、ソフトウエア開発の先端を切り開き、あるいはユーザーに寄り添って使われていくはずです。
Excelに搭載される日が訪れたら、Pythonは「大化け」を果たすはずです。ExcelがプリインストールされたすべてのパソコンでPythonが使えるようになる世界では、なにが起こるのでしょうか。想像してみるとちょっと楽しいですね。
そんな、楽しく使いやすいPythonの超入門講座を、10月13日(土)に開催します。次回で4回目となります。プログラミング経験のない方が多く参加され、参加者の評価も高い講座となっています。Pythonに興味を持たれた方は、ぜひおいでくだざい!
10月13日(土)開催:講座概要
人気Python技術書の著者が教える【正しいプログラミングの学びかた】〜プログラミングで仕事・人生をハックしよう〜
- 日時:2018年10月13日(土)10:00 - 19:00(当日9:30受付開始)
- 会場:角川第3本社ビル(東京都千代田区富士見1-8-19)
- 対象者:
- プログラミングを初めて学んでみたい方
- Pythonを活用した機械学習に興味をお持ちの方
- 自分に合ったブログラミング学習の方法について悩みをお持ちの方 など
- 参加費(昼食付):2万7千円(税込)
- 講師(敬称略):柴田 淳
- 主催:株式会社角川アスキー総合研究所
- 詳細情報・ご応募:Peatixページをご覧ください
この連載の記事
-
第30回
トピックス
『第九回技術書同人誌博覧会』が11月25日に開催 -
第29回
トピックス
「ChatGPTはどう変わろうとしているのか」を学ぶ講座、11月24日に開催 -
第28回
プログラミング+
U-22で経済産業大臣賞など4冠の中学生上原直人(15歳)さんに聞いた -
第27回
プログラミング+
教育研究家とケンカして作った子どもプログラマー向けキーボードとは? -
第26回
プログラミング+
まだ間に合う! SDLアプリコンテスト応募へ、サンプルコードを一挙公開!! -
第25回
プログラミング+
アプリ開発者のみなさま! SLDアプリコンテスト〆切迫る -
第24回
プログラミング+
クルマは巨大なIoTだ! SDLハッカソンレポート -
第23回
プログラミング+
PyCon JP 2018レポート~参加者1000名超!過去最大の規模で開催~ -
第21回
プログラミング+
イノベーションが強く求められている時代だからこそ「非エンジニアがプログラミングを学ぶべき」な理由 -
第20回
プログラミング+
プログラミング言語「Kotlin」でAndroidアプリ開発を始めよう! - この連載の一覧へ