Python Developers Survey 2019 の調査結果

Python Software Foundation と JetBrains の Python 利用調査 2019

Python Software Foundation と JetBrains が毎年行っている Python 利用状況調査の 2019 年版の調査結果が先日公表されました。

調査には 47,000 人以上もの人が回答したそうです。

Python に興味がある人にはとてもおもしろい内容なので、まだチェックしていない人はぜひチェックしてみてください。前年との比較もできるようになっているので、 Python の最新のトレンドがよくわかります。  

調査結果は見やすく図表にまとめられているので直接上の調査結果のページをご覧いただくとよいと思います。英語が苦手な方のためにどんな質問項目が並んでいるのか意訳であげておくので参考にしてください(ヌケモレがあればごめんなさい):

  • 全般的な Python の使用状況

    • Python はメイン言語?サブ言語?
    • Python と他の言語の使用状況は?
    • ウェブとデータサイエンスで使う言語は?
  • Python の使用目的

    • Python を使う主な目的は何?
    • Python をどんなことに使っている?
    • 以下の活動にどのくらい関わっている?
    • Python を何のために使うことが最も多い?
    • データ分析とマシンラーニングを行っている人が自分のことをデータサイエンティストだと考えているか?
  • Python のバージョン

    • Python 3 と Python 2 どちらを使っている?
    • Python のバージョンごとのユースケースは?
    • 使用する Python 3 のバージョンは?
    • Python のインストール・アップグレードの方法は?
    • Python 環境の隔離方法は?
  • フレームワークとライブラリ

    • ウェブフレームワークは何を使っている?
    • データサイエンスのフレームワークとライブラリは何を使っている?
    • ビッグデータツールは何を使っている?
    • その他のフレームワークとライブラリは何を使っている?
    • ユニットテスト用フレームワークは何を使っている?
  • 技術とクラウド

    • ORM ライブラリは何を使っている?
    • データベースは何を使っている?
    • クラウドプラットフォームは何を使っている?
    • クラウドでどのようにコードを実行している?(本番環境)
    • クラウドのための開発はどのようにしている?
  • 開発ツール

    • OS は何を使っている?
    • CI (継続的インテグレーション)システムは何を使っている?
    • 構成管理ツールは何を使っている?
    • エディタと IDE は何を使っている?
    • Python 開発に利用しているツールと機能は?
  • 雇用と働き方

    • 雇用状況は?
    • 肩書きは?
    • Python の経験はどのくらい?
    • プロフェッショナルなコーディング経験はどのくらい?
    • チームでの仕事?単独での仕事?
    • 複数のプロジェクトで働いている?
    • チームのサイズは?
    • 会社のサイズは?
    • 会社の業界は?
    • 会社のターゲット業界は?
    • 年齢層は?

オリジナルはこちらです。

  • General Python Usage

    • Python as main vs secondary language
    • Python usage with other languages
    • Languages for Web and Data Science
  • Purposes for Using Python

    • For what purposes do you mainly use Python?
    • What do you use Python for?
    • To what extent are you involved in the following activities?
    • What do you use Python for the most?
    • Do those involved in data analysis or machine learning consider themselves data scientists?
  • Python versions

    • Python 3 vs Python 2
    • Python versions’ use cases
    • Python 3 versions
    • Python installation and upgrade
    • Python environment isolation
  • Frameworks and Libraries

    • Web frameworks
    • Data science frameworks and libraries
    • Big Data tools
    • Other frameworks and libraries
    • Unit-testing frameworks
  • Technologies and Cloud

    • ORMs
    • Databases
    • Top Cloud platforms
    • How do you run code in the cloud (in the production environment)
    • How do you develop for the cloud?
  • Development Tools

    • Operating systems
    • Continuous Integration (CI) systems
    • Configuration Management tools
    • Editors and IDEs
    • Tools and features for Python development
  • Employment and Work

    • Employment status
    • Job roles
    • Python experience
    • Professional coding experience
    • Working in a team vs working independently
    • Working on multiple projects
    • Team size
    • Company size
    • Company industry
    • Target industry
    • Age range

以下、私の個人的な注目ポイントにコメントしていきます。

Python をどんなことに使っている? ― What do you use Python for?

1 位「データ分析」 58% 、 2 位「ウェブ開発」 49% 、3 位「 DevOps ・システム管理・自動化スクリプト」 39% で、その後「マシンラーニング」「ウェブパーサー・スクレイパー・クローラー」が続きます。  

データ分析とマシンラーニングでよく使われているところもそうですし、幅広い用途で使われているところなんかは Python ならではな感じですね。用途の広さとかんたんさという点では現状対抗馬がいなさそうなので今後も Python 人気は続くかと思います。

Python を何のために使うことが最も多い? ― What do you use Python for the most?

1 位は「ウェブ開発」で 26% (昨年対比 -1pt )です。

日本では Python といえばプログラミング入門やデータ分析・マシンラーニングのイメージが強いですが(例えば日本では Python 書籍は数年前から増えてきましたが Django や Flask の書籍が少ないです)、世界的には Python でウェブ開発をするのは結構多いようです。

Python 3 と Python 2 どちらを使っている? ― Python 3 vs Python 2

調査の時点でサポート終了間近の Python 2 を使っている人がまだ 10% もいます。

私は Python 2 を使う機会はもうほとんどありませんが、 Python 2 の資産が多い会社などでは Python 2 は今後も使い続けられるのかもしれません。

Python 環境の隔離方法は? ― Python environment isolation

上位は Virtualenv 56% 、 Docker 33% 、 Conda 23% 、 Pipenv 21% です。

 私は Conda のことをあまりよく知りませんが、 Conda 利用が結構多いようです。私は Poetry をよく使っていて不満が無いので、 Poetry を使う人がもっと増えればいいのになぁと思います。

ウェブフレームワークは何を使っている? ― Web frameworks

1 位 Flask 48% 、 2 位 Django 44% 、 3 位 Tornado 5% となっています(数字はおそらくフレームワークを利用する人の中での使用率です)。

Flask と Django が Python のウェブアプリケーションフレームワークで最も人気なことは知っていましたが、その他のフレームワークとここまで差が開いているのは意外でした。 Flask 人気ですね。

注釈によると、 Django はウェブ開発者によく使われていて、 Flask はウェブ開発者以外のユーザーによく使われている傾向があるようです。 個人的には、日本では Flask は「初学者の学習」以外の用途ではぜんぜん使われてなさそうなイメージを勝手に持っているのですが、わりと使われているんでしょうか。

データサイエンスのフレームワークとライブラリは何を使っている? ― Data science frameworks and libraries

上位に Numpy ・ Pandas ・ Matplotlib 、続いて SciPy ・ SciKit-Learn ・ TensorFlow ・ Keras ・ Seaborn ・ PyTorch ・ NLTK の名前があがっています。

私はこのあたり詳しくないので、「ふむそうなんだ」という感じです。実際に使うときに参考にします。

ユニットテスト用フレームワークは何を使っている? ― Unit-testing frameworks

1 位 pytest 49% 、 2 位 unittest 30% 、 3 位 mock 15% で、その後に Tox ・ nose が続きます。

pytest は Python に同梱の unittest よりも多く使われているとのことです。私も pytest を使うことが多いですが、 pytest がこんなにも広く使われていたとは知りませんでした。 pytest は慣れると使いやすくてとても便利ですが、公式ドキュメントがわかりづらくとっつきづらい印象があります。日本語の情報は特に少ないと思うのですが、英語の技術書を読まない日本人の Pythonista の人たちはどこで pytest を学んでいるのでしょう……

ORM ライブラリは何を使っている? ― ORMs

1 位 SQLAlchemy 36% 、 2 位 Django ORM 32% がダントツの使用率で、その後は 4% とがくっと落ちて SQLObject ・ Peewee が続きます。その次の PonyORM になるとまたぐっと数字が下がります。

SQLAlchemy はおそらく Flask でデータベースを扱うときのデファクトスタンダードになっているから高いのではないかと思いますが、こんなにも使用率が高いことに驚きです。 GitHub のスター数等を見て、 SQLAlchemy のシェアは Peewee あたりとそう変わらないものと思っていました。 SQLObject は私はほとんど知りませんが、これも結構使われているのですね。

クラウドプラットフォームは何を使っている? ― Top Cloud platforms

1 位 AWS 55% 、 2 位 Google Cloud Platform 33% 、 3 位 DigitalOcean 22% 、 4 位 Heroku 20% 、 5 位 Microsoft Azure 19% です。昨年比では Google Cloud Platform が 2pt 、 Microsoft Azure が 4pt 上がり、 DigitalOcean ・ Heroku はシェアを下げたそうです。 この勢いが続けば 2020 年(来年)の調査では Amazon ・ Google ・ Microsoft がトップ 3 になりそうです。

Microsoft はソフトウェアエンジニアからの支持が年々高まっている感じがします。 ということで、 Python Software Foundation と JetBrains が毎年行っている調査の 2019 年版の結果のご紹介でした。 ちなみに、匿名化された回答データ(集計されていないもの)も Creative Commons Attribution 4 ライセンスで公表されているので、興味がある方はそちらも覗いてみるとおもしろいかもしれません( ページの下の方にリンク があります)。

クラウドでどのようにコードを実行している?(本番環境) ― How do you run code in the cloud (in the production environment)

1 位「コンテナ内」 47% (+7pt) 、 2 位「仮想マシン」 46% (-1pt) 、 3 位「 PaaS 上」 25% (-3pt) となっています。カッコ内は昨年比です。 昨年は 1 位が仮想マシンで 2 位がコンテナ内だったので、そこから順番が逆転しました。

本番環境でのコンテナ利用はこんなにも広まっているんですね。ここまでにもなると、プロフェッショナルのウェブエンジニアにとってコンテナはもはや必修科目と言ってもよいでしょう。

構成管理ツールは何を使っている? ― Configuration Management tools

1 位 Ansible 20% 、 2 位「独自のやり方」 9% 、 3 位 Puppet となっています。

Python 利用者へのアンケートだからか Ansible が 1 位ですね。

エディタと IDE は何を使っている? ― Editors and IDEs

1 位 PyCharm 33% 、 2 位 VS Code 24% 、 3 位 Vim 9% となっています。注釈によると VS Code は 2017 年に 7% でスタートして 2019 年には 24% になったとのことです。

PyCharm のシェアが高いですね。ただ、 Python Software Foundation と JetBrains が行った調査なので、 PyCharm の利用率が高いのはある意味当然かもしれません。 VS Code はずいぶん後発でしたが、完全に受け入れらた感じですね。 VS Code が登場したときは VS Code がここまで広まるなんて予想もしませんでした。来年は VS Code のシェアがもっと上がっていそうな感じです。

Python 開発に利用しているツールと機能は? ― Tools and features for Python development

「使っている」の割合が 70% 以上のものとして、以下の 8 つがあがっています。

  1. VCS
  2. リファクタリング 
  3. エディタの自動補完機能 
  4. Python virtualenv
  5. コードリンティング
  6. SQL データベース
  7. テストコード
  8. デバッガ 

おそらく「 VCS 」ニアリーイコール Git でしょう。「 SQL データベース」は他のものと少しレベル感が違うような気もします。

 プロフェッショナルのソフトウェアエンジニアになりたいと考えている学生さんや社会人の方は、 Python エンジニアとしてやっていくならこのあたりは使える必要があると思っておくとよいかもしれません(ただし、日本国内なら、これらを押さえてなくてもぜんぜん就職はできると思います)。

Python の経験はどのくらい? ― Python experience

Python 経験 5 年以内の人が 74% を占めています。

後↓の年齢層のところでも見ますが、この原因は回答者に若い人が多いのと Python が近年特に盛り上がっていることにあるのでしょう。

チームのサイズは? ― Team size

チームサイズは 2 - 7 人が 75% となっています。 小規模のチームが多いようです。確かに Python は「日本的システムインテグレーター」の大規模開発とは真逆のイメージがあります。

年齢層は? ― Age range

20 代が 42% といちばん多く、続いて 30 代 32% 、 40 代 12% 、それから 18-20 歳 7% と続いています。

 若い人が多いです。

ということで、 Python 利用調査のご紹介でした。ここに取り上げていない質問項目もあるので、興味のある方はぜひオリジナルの方を見てみてください。

参考

同様の調査として Stack Overflow が毎年実施している調査もあります。違った質問項目もたくさんあるので、こちらも興味がある人にはおもしろいと思います。