なぜPythonユーザは少ないの?

日本でPythonユーザが少ないことについて

tags:python, column
created:2005-10-30T21:34:04

日本でPythonユーザが少ないことについて。 なぜ日本においてPythonユーザはマイノリティーなんでしょうか?

Pythonのいいところ

  1. ソースが読みやすい。
  2. 内省的ドキュメント参照機能を持つ。
  3. バージョンアップによる悪影響が少ない。
  4. 現実的なライブラリが揃っている。
  5. 商業利用に制約がほぼない。
  6. 利用範囲が広い。

1.3. がPythonならではの長所でしょう。 後半は成熟したオープンな言語環境なら多くの言語が持っていると思います。

1. はPythonの最も判りやすい特徴です。 (ぜひソースを読んでみてください。)

2. についても実際にPythonではコメントやドキュメントが重視されているように感じます。 (ぜひソースを読んでみてください。) この機能があるおかげでユーザは一様な手順で関数やクラスのドキュメントを参照する事ができます。

3. についてですが、Pythonが増強されていく手続きはより健全に行う仕組みを持っています。 Python Enhancement Proposal (PEP)を事前に公開し、 この案の議論をちゃんと行ってから次期バージョンの仕様が決定していく。

このことはバージョンアップによる混乱を最小限にとどめる効果を発揮しています。

4. については、標準添付されるライブラリだけでもかなりの範囲をカバーしていますし、 おそらく英語圏では他のどんな言語環境でも追随できないほどの多種多様なライブラリが公開されているでしょう。

5. は、Pythonの著作権表示をドキュメントに含めておきさえすれば、 自己責任の範囲で自社アプリの中に組み込んで利用する事に制限がありません。 ランタイムのバンドル配布にしてもライセンス料金などは一切かかりません。

6. 1行コードから、数十万行のプロジェクトまで十分な実績があり、1人から多人数の分担作業もこなす事ができますので、 手元のバッチ処理から分散ネットワークアプリケーションまで十分構築できる言語仕様を持っています。 テスト・デバッグ機能も重視して設計されているので、巨大アプリケーションでも問題点を発見するための支援を受けられます。

なぜ?

こんなにいいところを持つ「Python」が日本においてマイナーなのはなぜなのでしょう?

1:日本語ドキュメントへの不安

日本語ドキュメントがないといわれていた時代はとっくに終了しています。 標準ドキュメントの最新版でもほとんどは日本語への翻訳を終えています。 オンラインドキュメントに関しては最も充実しているグループに入ると思われます。

書籍数はたしかに少なめですが・・・

2:日本語の取り扱いに対する不安

結構最近のリリースですがPythonのバージョン2.4以降であれば、 CJKコーデックをバンドルするようになりました。 標準で日本独特のコード体型「ShiftJIS」やその他の形式も相互変換可能になりました。 (以前のバージョンでは、追加モジュールのインストールで対応できます。)

3:実績アプリケーションを目の当たりにしない

Pythonをはじめ動的スクリプト言語はWebサービス分野への活用が多く、 クライアントアプリケーションとしてはまだまだ利用されていません。

サービスとして利用する事はあっても、手元にPythonをインストールする状況はほぼ無いでしょう。

Red Hat系Linuxなどでは、 カスタマイズやコンフィギュレーションを容易に行うためのユーティリティなどに Pythonが使われだしています。

Linuxの多くはPythonインストールが必須になっていると言えます。

Googleの多くのサービスなどはPythonで開発されているようです。 つまり、PythonによるWebサービスを利用した事が無い人を探す方が困難であるという事が言えます。

ほんとはPythonは世の中のあちこちで利用されているのに目に見えにくいだけなんです。

海外ではかなり人気があるらしい

Pythonでできていたり利用しているアプリケーションを挙げていくと・・

Zope/Plone

オールインワンパッケージのWebアプリケーションサーバー。

日本ではPythonよりこちらの方が有名らしい。

  • フル機能なオブジェクトデータベースを内蔵
  • Webブラウザからのコンテンツマネジメント
  • 「プロダクト」という名称のコンポーネントフレームワーク
  • WebDAVサーバーを内蔵
  • FTPサーバーを内蔵
  • Webサーバーを内蔵

といった高機能なサーバーをインストーラ一発で運用開始できます。

また膨大な「プロダクト」が公開されており、 ありがちなアイディアは探せば実現済みのものが見つかるでしょう。

Blender

オープンソース系3Dモデラとしては高機能な部類に入るのがこの「Blender」です。

内部プラグインの標準言語としてPythonを利用しています。

Pythonを用いた主な活躍は、

  • インポート:他のモデルフォーマットをBlender形式に変換を行う。
  • エクスポート:Blender形式を他のモデルフォーマットに変換を行う。
  • モデル生成:パラメータに従ったモデル生成を行う。
  • モデル加工:モデルをパラメータに従った加工を行う。

などがあります。 すでにかなり多くのプラグインが公開されています。

Inkscape

ネイティブSVGを取り扱うベクター系ドローツール

このInkscapeでもPythonによるプラグインの作成が可能になっています。 まだ公開されたプラグインは多くありませんが。

BitTorrent

海外でのメジャーP2Pプロトコルの一つ。Pythonで開発されました。

最近ではLinuxディストリビューションをBitTorrentで公開するという場合も増えています。 BitTorrent対応やBitTorrentベースのファイル共有アプリケーションはたくさんあります。

P2Pって同じプロトコル利用者が多くネットに接続する事が重要ですね。

そこでメジャーであるという事はすごく価値のあることだといえるでしょう。

注釈

BitTrrent -> BitTorrent ミススペルしてました。お恥ずかしいです。

IronPython/Python.Net

Pythonランタイムの.Net対応版。

  • 「オープンソース系IronPython」
  • 「マイクロソフト製IronPython」
  • 「Python.Net」

上記三種類があります。

IronPythonはCLR(.Net中間言語)で構築されており、Python本体も作ったコードもCLR上で動作します。 つまり、従来のPython用に作られているライブラリは利用できません。多くの機能が揃っている.Netライブラリが利用できますが。 CLRの最適化のツボにはまると元祖Python(区別するのに「CPython」と呼ばれています)よりも演算が早いというデータもあります。

Python.NetはCLRのライブラリも利用できるPythonです。もちろんPythonの従来のライブラリも使えます。 その代わりランタイム依存がより多く発生するでしょう。

現段階はマイクロソフトからはベータ版としてリリースされていますが、 VisualStudioの次期バージョンにバンドルされる可能性は十分あるでしょう。

2011/4現在、コミュニティベースでの開発に移管してVisualStudioインテグレートも実現しています。 Silverlight/Moonlightアプリも開発可能になってきており、リッチWebクライアントとしての利用も可能です。

Jython

PythonランタイムのJava対応版。

Javaランタイム上で動作し、Javaの膨大なライブラリとの融合を実現しています。 Javaライブラリが呼び出せる程度ではありません。Javaライブラリが提供するクラスを継承したPythonクラスを派生できます。

Vodafone 702NK

NOKIA製携帯電話。

Pythonランタイムがポーティングされ実装された携帯。

携帯電話アプリケーションをPythonで自作して動作させる事ができます。

結論

WindowsにおけるPythonの実績を積み立てていくしかありませんかね~。

追記

プログラミング言語シェア : http://www.tiobe.com/tpci.htm

ここを見ると7位と検討してますね。(海外で)