開発ツール

「Python」コード400万行を維持--Dropboxに学ぶ秘訣

「Python」には、大規模で複雑なコードベースを記述するのが難しいという弱点があるが、Dropboxはこれまでに400万行以上のPythonコードをデプロイしている。大規模運用ではコードの理解が重要であり、そのために型注釈と型チェックを利用しているという。

 「Python」は絶大な人気を誇るプログラミング言語だが、欠点もある。たとえば、1つ大きな問題点を挙げると、非常に大規模で複雑なコードベースを記述するのが難しい。

 Pythonの大規模利用に伴う課題に精通している企業があるとするなら、それはクラウドストレージ企業のDropboxだ。

 DropboxがこれまでにデプロイしたPythonコードは400万行を超える。同社のように、Pythonで記述したコードに注釈を付けて、デバッグと理解を容易にしている企業が増加中だ。

 Pythonコードに注釈を付けることで、開発者は変数のデータ型や、関数の引数と戻り値の型を示すことができる。この手法にはさまざまな利点があり、その1つが静的型チェッカーの使用だ。

 「mypy」のような型チェッカーを使えば、コードの実行前に簡単にチェックを実行できるようになり、通常ならソフトウェアに混入してしまうようなバグを発見することができる。これらのチェックで検証できる操作は多岐にわたり、たとえば、関数に受け渡しされるデータが正しい型かどうかが分かる。

 Pythonは現在も動的型付け言語だが、2015年の「Python 3.5」で型ヒントのサポートが追加され、注釈を付けてmypyなどの型チェッカーで検査できるようになった。

 これらの注釈はオプションであり、実行はされないため、動的型付けと静的型付けを組み合わせて使用でき、コードの実行速度に影響が出ないようになっている。

 難点としては、型注釈を追加すると、データ型を明示的に指定しなければならなくなり、開発者が先にやっておく作業(レガシーコードに注釈を付ける場合は後でやる作業)が少し増えることだ。

 しかし、mypyのリード開発者でDropboxのエンジニアでもあるJukka Lehtosalo氏は、数百万行のPythonコードを扱う場合、作業が少し増えても型注釈を追加する価値は十分にあると述べる。

 「当社のように、Pythonコードが何百万行という規模になると、Pythonの動的型付けのせいで、コードが不必要に難解になり、生産性に深刻な影響が及ぶようになった」とLehtosalo氏は記している

 むしろPythonのような動的言語では、コードが数百万行に達するはるか前の段階から、型チェックと注釈が重要になるという。

 「当社の経験から言うと、プロジェクトがコード数万行の規模になり、複数のエンジニアが関与するようになれば、コードの理解が開発者の生産性維持の鍵になる」。Lehtosalo氏はこのように述べた。

 「型注釈がなければ、関数への有効な引数や可能な戻り値の型の把握といった基本的な推論が、困難な問題になる」

 だが、このやり方で400万行のPythonコードに注釈を付けるのは簡単な作業ではない。以下では、あまり知られていない利点と、Dropboxがこのタスクを成し遂げた方法を紹介する。

あまり明白ではない利点

リファクタリングが容易になる

 「型チェッカーは多くの場合、変更する必要のあるコードを正確に教えてくれるので、リファクタリングが大幅に容易になる」とLehtosalo氏は述べる。

 「100%のテストカバレッジを期待する必要はない。どのみち、それは現実的ではないからだ。深いスタックトレースを調べなくても、何が問題かは分かる」

「開発ツール」で読まれている記事

TechRepublic Japanで人気の記事

編集部オススメ

トレンドまるわかり![PR]

財務・経理
人事・労務
マーケ・営業
購買・調達
生産・製造
データ分析
コミュニケーション
通信・通話
文書・コンテンツ
PC・モバイル
新興技術
ITインフラ
クラウドサービス
OS・ミドルウェア
開発
開発ツール
開発支援
ノンプログラミング開発ツール
データベース
運用
セキュリティ

ホワイトペーパーランキング

  1. マンガでわかる「ルール駆動開発」レガシーモダナイズを成功させる開発手法を基礎から理解する
  2. 5分でわかる、レポート作成の心得!成果至上主義のせっかちな上司も納得のレポートとは
  3. APIエコシステムを狙うサイバー攻撃が急増、Webアプリにおける最新のAPIセキュリティ対策とは?
  4. クラウドやコンテナ利用が増える中、世界の企業が利用するAPI経由の安全なアプリ構築手法とは?
  5. ウェビナーによる営業活動が本格化、顧客接点が増加する一方で見えてきたハードルと解決策とは?

Follow TechRepublic Japan

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]