Pythonでできることとは?できないことと合わせて解説
公開日:2020.12.08
スキルアップPythonは調査会社RedMonkの最新のランキングでも2位にランクインするほどの高い人気とシェアを持つプログラミング言語です。特に近年深層学習と人工知能開発で脚光を浴びて以来、爆発的にそのシェアを伸ばしています。
Pythonに人気が集まる理由はいくつかありますが、例えば、最先端の人工知能開発に適した言語であることや、汎用性の高い言語であることなどが挙げられます。
近年、開発言語にPythonを採用している企業は多く、また数学的なデータ処理に長けていることから多くの科学者や数学者も研究目的として活用しています。
では実際に、Pythonが得意とする分野と、不得意な分野にはどんなものがあるのでしょうか。今回はPythonを優先的に選ぶべき5つの分野と、Pythonよりも適した言語が存在する3つの分野について、細かく解説していきます。
Pythonでできること5選!
Pythonは豊富なデータ処理系のライブラリを持ち、数学的な演算を得意としているプログラミング言語です。そのため、データの収集や解析、それを活かしたAIの開発などには他の言語よりも適しています。
また、データの管理も得意としているため、クラウドデータストレージサービスやSNS開発、ブロックチェーンにも向いた言語と言えます。
Pythonでできること1 - Webサイトの制作
PythonでWebサイトやサービスを構築できます。Pythonを採用した代表的なWebサービスでは、InstagramやYouTubeが有名でしょう。
WordPressという高いシェアを持つCMS(Contents Management System)はPHPで開発されています。そのため、Webサイト制作ではPHPを使用する場面が多くありますが、Pythonで記述されたCMSフレームワークも複数存在し、有名なものでは「Mezzanine」、「django CMS」、「Wagtail」が知られています。
これらのCMSを使用することで、HTML5やCSSを静的に使用してサイトを構築するよりも、高機能で保守性の高いサイト構築が可能になります。既存のPythonで構築されたシステムの上にブログやSNSの機能を追加する場合も、別の言語ではなくPythonをそのまま使用できるという強みもあります。
Pythonでできること2 - データ収集
Pythonのスクレイピング技術によって、効率的にWeb上のテキストや画像データを収集、整理することができます。定期的に閲覧しているサイトの更新チェックや、価格の更新データなどを取得できるだけでなく、取得したデータを整理して、CMSフレームワークと組み合わせることで情報発信サイトの構築も可能です。
また、サイトの細かいデータも取得できるので、例えばSNSでどんな投稿内容が流行っているかなども取得できます。オンラインのトレンド情報をいち早くキャッチアップできるため、株や為替のトレーディングを行う人向けの情報サイトなどでも活用されています。
Pythonでできること3 - 人工知能の開発
近年Pythonが特に注目を浴びている分野が、人工知能の開発です。収集されたデータを元に自発的に学習するロボットは、豊富なAIのライブラリを持つPythonを使うことで効率的に作成が可能です。また、人工知能の開発に欠かせない深層学習やビッグデータ解析も、Pythonが得意とする分野です。
オープンソースの機械学習ライブラリとしては、Googleが提供しているTensorFlowや、Facebookが開発したPyTorchなどがあります。また2019年に開発は終了してしまいましたが、日本発のPreferred Networksが開発したニューラルネットワーク実装のためのライブラリChainerもありました。
TransorFlow
TensorFlowはニューラルネットに限らず、機械学習や数値計算の全体をカバーし、低レベル操作も可能です。またGPUの利用が簡単なため、ハードウェア的な制約も比較的緩いライブラリと言えます。複数デバイスによる並列処理も容易で、大規模な処理を高速で実行し、デバイスごとへの負担を軽減します。
圧倒的な利用者数を持つため、コミュニティも人口が多く、情報を入手しやすいライブラリでもあります。
Pytorch
PyTorchは後発ではありますが、急速に人気が高まっている機械学習用のライブラリです。後述する、Pythonでメジャーなライブラリの一つであるNumPyと同じような感覚で扱うことができ、さらに動的な計算グラフができるなど、TensorFlowと比較して優位な部分も多くあります。
なお、開発は終了してしまったものの、柔軟な計算グラフの構築を得意としていたChainerの考え方を引き継いでいるライブラリでもあり、Chainerの開発元であったPreferred NetworksはPyTorchへの移行を発表しています。
Pythonでできること4 - データ分析
Pythonの真骨頂とも言える分野が、このデータ分析・解析です。Pythonは他の言語と比較して豊富な数学系ライブラリを持ち、高い数値計算能力を持っています。そのため、大量にあるデータベースのデータを計算し、読みやすい表に整理して構築できるのです。
この機能によって、Excelなどの表計算ソフトを用いても人間が処理することが難しいビッグデータ解析を行い、データグラフや分布図など様々なグラフを生成できます。また、ExcelやAccessのデータを開かずに目的としているデータに変換して処理ができるなど、データ処理に関しては他の言語よりも抜きん出て優れています。
代表的なライブラリとしては、高速な数値計算を行うNumPyや、高水準の科学技術計算を行うためのSciPyが挙げられます。
Numpy
NumPyは高速計算だけでなく、ディープラーニングでも欠かせない多次元配列を扱うライブラリです。前述のTensorFlowやPyTorchなどを効率的に扱うためにもNumPyは欠かせないライブラリと言えるでしょう。
SciPy
SciPyは配列の高速処理に強いライブラリで、NumPyをベースとしています。統計や最適化、積分、線形代数のほか、フーリエ変換や遺伝的アルゴリズムなど、科学技術計算に欠かせない高度・高水準の数学ライブラリです。
Pythonでできること5 - ブロックチェーン
改ざんへの耐性が強く、P2P方式の分散型を採用しゼロダウンタイムなブロックチェーンは、貨幣や資産を扱うフィンテック分野においてなくてはならない技術となりました。このブロックチェーン技術も、Pythonが得意とする分野です。
ブロックチェーンにはその使用範囲や特徴からパブリック、プライベート、コンソーシアムの3つに分類されます。これらのブロックチェーンのシステムを構築する言語として、データの処理と管理に強いPythonは強い優位性を持ちます。
計算ライブラリが豊富なだけでなく、標準でHTTPリクエストや、ハッシュ関数を使えることで、開発にかかる工数が少なく、安定したブロックチェーンのシステムを短期間で開発できるのは、Pythonならではと言えるでしょう。
Pythonが苦手なこととは?
このようにサイト構築から機械学習、データ分析やブロックチェーンまで汎用性の高いPythonですが、必ずしも得意とは言い切れない分野もあります。ライブラリが存在しているため開発自体は不可能ではないが、他に適したプログラミング言語が開発されているので、あえて不得手なPythonを選んで開発しなくても良い分野です。特に効率性を重視する開発の現場では、可能であることと適していることの線引きは厳密に行われているため、Pythonでも書けるが採用されないという分野は少なくありません。
スマホアプリ開発
スマートフォン向けのアプリは、Pythonはあまり得意とは言えません。Java、Swift、Kotlin、C#(Unity)など、スマートフォン向けアプリ開発に最適な言語は他に多数存在しています。
QPythonやPyDroidなどのアプリ開発をサポートするライブラリも存在しますが、現状はまだメジャーとは言えません。
高速な処理が求められるもの
高速な処理が特徴であるC系のコンパイル言語と比較すると、インタプリタ型言語であるPythonは処理速度の面ではどうしても不利な面が否めません。
また、PythonはC言語と比較すると実行環境のリソースが大きくなりがちな面があります。そのため、MicroPythonなどのマイコン制御をPythonで行えるように最適化されたものもありますが、ハードウェア的制約があり高速な処理を求められるエッジAIなどの組み込みの現場では、C言語系が選択されることがまだまだ多いと言われています。
デスクトップアプリ開発
デスクトップアプリの開発も、Pythonはあまり得意とは言えない分野です。PythonにはTkinterなどのライブラリがあり、デスクトップアプリを作成することが可能です。インタプリタ型言語ですが、コンパイルしexeファイルを生成することで、Pythonがインストールされていない環境でも実行できます。
しかし、Java、Windows系ならC#、MacOS系ならSwiftなど、デスクトップアプリを得意としている他のプログラミング言語が多数あるため、開発現場ではそちらが選択され、Pythonで開発を行うことは稀です。
Pythonはできることが多く汎用性の高い言語
Pythonは計算やデータ処理に優れ、豊富なライブラリを持つ汎用開発言語です。特にライブラリや互換性のある派生言語が多く、汎用性の高い言語と言われています。科学技術や学術的な分野に限らず、人工知能開発や機械学習などの最先端の分野でも活用され、今後もPythonの高い人気は続くでしょう。
ライブラリの数は他の言語の追随を許さないほど多く、ライブラリの組み合わせによって、得意とする分野以外でも開発可能なのがPythonの特徴と言えるでしょう。近年では子供のためのIT学習ツールとして開発された小型パソコンRaspberry Piにも標準インストールされ、Pythonを扱うエンジニアの数と案件は年々増加しています。
AKKODiSでもPythonに関する求人情報を豊富に取り扱っております。これからPythonを学んでエンジニアを目指したいという方も、Pythonの知識を活かしてキャリアアップを目指したい方も、ぜひ一度お気軽にお問い合わせください。
(2020年12月現在)