アイキャッチ

『Dropbox』入社3番目のプログラマーが語る「僕らがすべてをPythonで開発してきた理由」~PyCon APAC 2013

ITニュース

    近年タブレットやスマートフォンの普及によってあらゆる場所からネットにアクセスできるようになり、前以上にストレージサービスが重宝されるようになってきた。それに伴い、GoogleやMicrosoftといったブラウザを提供する企業が自社ブラウザと相性の良いオリジナルのストレージサービスを提供するようになった。

    しかし、その中でもいまだに根強い人気を誇るのがDropboxである。

    Dropboxは2012年11月にユーザー数が1億人を超え、2013年7月9日時点で1億7500万人を突破したと発表した。実に約8カ月で7500万人のユーザーを獲得したことになる。

    そんな巨大なサービスとなったDropboxのコードは、すべて1つの言語で書かれている。その言語がPythonである。

    Pythonの魅力はどこにあるのか、9月13~16日に開催された『PyCon APAC 2013』の基調講演で来日したDropboxのエンジニアRian Hunter氏が語った。

    豊富なGUIツールキットがDropboxのポータビリティを実現する

    Rian氏は、Dropbox初期のアルファおよびベータバージョンのころから開発に携わってきたエンジニアだ。同氏が開発にかかわるようになってからずっと、「DropboxはどのOS、どんな解像度の画面であっても常に正常に動作するのを前提としてきた」と語る。

    by ilamont.com ストレージサービスは大前提としてあらゆる環境からのアクセスが可能でなければならない

    by ilamont.com ストレージサービスは大前提としてあらゆる環境からのアクセスが可能でなければならない

    さまざまな環境からアクセスされることが大前提のストレージサービスでは、ユーザー環境に依存しない開発が重要なのだという。Dropboxはこれを実現するためPythonを用いたということだ。

    「Pythonは魅力的な開発言語の一つです。それに、プログラマーとして書いていて心地いい(笑)。学びやすく書きやすいシンプルさ、自分の使いたいように編集できる拡張性、クラッシュすることが少ない安全性など、その魅力はたくさんありますが、GUIツールキットはPythonがDropboxにもたらした恩恵であると言えます」

    Rian氏によるとDropboxのポータビリティを可能にしたのはPython の豊富なGUIツールキットによる所が大きいという。

    ctypesやwxPythonなどのGUIツールキットを用いればプラットフォームに依存しない環境を作ることが可能になるため、DropboxはUIに至るまで、徹底的にすべてPythonのみで書かれている。

    欠点を克服することで世界的なサービスに

    by niallkennedy Guido Van Rossum氏は「Pythonの父」と呼ばれる人物だ

    by niallkennedy Guido Van Rossum氏は「Pythonの父」と呼ばれる人物だ

    とはいえPythonにも、もちろん欠点はあるとRian氏は続ける。現在Dropboxが40億ドルの企業価値を得られるまでになったのは、それらの克服なしではありえなかっただろうとRian氏は説明する。

    「Pythonは強い動的プログラミング言語(dynamically typed language)です。いわゆる“お堅い”言語のため、どうしてもTypeErrorが出やすい仕組みになっています。また、動的型付け自体が一般的ではないとの声もあります。これらはネット上でも“Pythonの弱点”としてよく言われていることですが、ダック・タイピングで克服すればいいのです」

    Dropboxは2012年12月、Pythonの作者であるGuido Van Rossum氏をGoogleから引き抜いたことからも読み取れるように、Pythonでポータビリティを実現したいという同社の並々ならぬ強いこだわりを感じた。

    Rian Hunter氏の講演の動画は以下 ※全編英語

    『Keynote: One Million Lines of Python by Rian Hunter』

    取材・文・撮影/佐藤健太(編集部)

    Xをフォローしよう

    この記事をシェア

    RELATED関連記事

    RANKING人気記事ランキング

    JOB BOARD編集部オススメ求人特集






    サイトマップ