2015年8月25日
Visual StudioでPythonを書くべき理由
(2015-08-03)by Steve Dower
本記事は、原著者の許諾のもとに翻訳・掲載しております。
最近、 Visual Studio 2015 がリリースされました。Pythonにも対応しており、 Python Tools for Visual Studio (PTVS)を使うことで、編集やインテリセンス、デバッグ、プロファイリング、Azureへのパブリッシングなど、ほとんど全ての機能が利用可能です。その詳細や ビデオチュートリアルの一部、ドキュメンテーション、その他のソース はvisualstudio.comで見ることができます。また、 Python Tools 2.1 や Python Tools 2.2 beta についてはリンク先のブログ記事をご覧ください。今回の投稿では、Pythonで仕事を始める際にVisual Studioの使用を検討すべき理由について話していきたいと思います。
非常に便利なインテリセンス
何だかインテリセンスについてはいつも話していますね。Visual Studioでは、サポートする言語に対して常に優れたインテリセンスが用意されてきました。これをお読みの方がこの15年の間、C#やVB言語でプログラミングしてきたのであれば、その便利さに今さら驚きはしないでしょう。それに対して、Pythonの開発者はあまり幸運とは言えません。最小限のコードのサジェストや基本的な構文のハイライト表示のみで満足するしかなかったからです。
他の多くの言語と違い、Pythonのコードでは型をそこかしこに指定する必要はありません。そのためプログラミングの時間は大幅に短縮できますが、一方でプログラム全体についての深い理解が必要となり、その点においてエディタによるサポートはとても有益となります。しかし、ほとんどのエディタは大したヒントを与えてくれないため、結局は自分の頭の中でプログラムの動きを把握しなければなりませんでした。
Visual Studioは、この深い理解を提供しています。フルプログラム解析を使えば、最初に初期化されてからの変数を、それらが使われている全ての場所で追跡可能です。任意の変数をマウスオーバーして、その時点でそれがどういう型の役割を持つかを見たり、そのメンバーを順に見ていったりできます。
解析を一般的なPythonのパターンに最適化するのに、私たちは多大な時間を費やしました。以下にいくつか挙げるので試してみてください。
- タプルに違う型を入れて、後でそれらをアンパックする
- 異なる引数を持つ関数を呼び出し、戻り値を見る
- 関数に渡されたリストに値を追加する
- サブクラスを作成し、いくつかのメソッドを入力してオーバーライドする
デバッグは重要
インテリセンスと同じく、Pythonでのインタラクティブなデバッグはかなり最近の開発です。Pythonを使う開発者は元々、エディタと交互にターミナルやコマンドプロンプトをよく使ってきたため、初期のコマンドラインデバッガは、このワークフローに沿って開発されました。例えば以下のようなものです。
小さなプロジェクトであれば、この種のデバッギングでも問題ないでしょう。ただ、こういう形でコードを処理していくと混乱が生じ、複雑なプロジェクトなどでは非常に効率が悪くなってしまいます。対照的にVisual Studioでは、エディタのコードにデバッグ・インタフェースを直接オーバーレイするため、ブレークポイントや現在の状態、コールスタックなどを同一のコンテキストで確認することが可能です。
カスタマイズ可能なウォッチウィンドウやフロート表示は自動的に更新されるため、逐一所定の要求をしなくても常に値を追跡できます。コールスタックへのアクセスも簡単で、現在の状態につながる変数を確認するのも容易です。
何よりいいのは、このデバッグがPythonの標準インターフェースを使って行われることです。特別なPythonを入手する必要はありませんし、コードは Windowsや他のプラットフォーム でも動きます。また、最近のCPythonのバージョンで一部の非標準的なインターフェースも使用できるため、 ネイティブ/Pythonの混合 デバッグが可能となり、C/C++とPythonのコードをStep Inを押すのと同じくらい容易さで移動できるようになりました。キーボード指向の操作がお好みの場合は、 デバッグインタラクティブウィンドウ を使うことでそれが可能です。
本当に 大きい「大型」プロジェクト
大きいプロジェクトの「大きさ」の度合いは人それぞれ感じ方が違うでしょう。100ファイルは大きいですか? クラスが1000あればどうでしょう? 1万行のコードは? その目安がどうであれ、プロジェクトが大きくなるにつれて、安全に変更を加えその更新をチームと共有しなければならないといった具合に、その困難の度合いも大きくなっていきます。
プロジェクトにおいて何が必要かは優れたインテリセンスが示してくれますが、それはまた、単にグローバル検索するよりももっと優秀な形でクラスや関数のリファレンスを見つけるサポートもしてくれます。 Go To Definition と Find All References はコードをナビゲートするのにうってつけのツールです。そして Navigate To は、スマートフィルタリングでファイルやクラス、関数などを見つける手助けをしてくれます。
Pythonのプロジェクトでアプリケーションのライフサイクル管理
Visual Studio Online では、アプリケーションが管理できます。その機能はTFSやGitバージョン管理、インタラクティブなコードレビュー、オンラインの予定ダッシュボード、チームルーム、ホストテスト、ビルド、デプロイサービス、サードパーティーのサービスとの統合など多種多様で、これら全ての機能がVisual Studio内で、 EclipseのTeam Explorer Everywhereプラグイン または各種Webブラウザを通じて、直接Pythonのプロジェクトに対して利用可能です。つまりPythonのみならずその他の言語によるプロジェクト管理でも、Visual Studioを使うと、たとえそのプロジェクトが100行のコードであろうと100万行のコードであろうと、チームの足並みをそろえることができるというわけです。
入手方法
Pythonのコードの多くはオープンソースです。Pythonをお使いであれば、フリーの Visual Studio 2015 Community Edition を入手してみてください。あるいは雇用主や学校を通じて、 Visual Studio 2015 ProfessionalやEnterpriseを入手してもいいでしょう。いずれにしてもPython Tools for Visual StudioはVisual Studioのセットアップで直接利用できるようになるため、個別にダウンロードしてインストールする必要はありません。
リリースページ には、インストーラの他、サンプルパックや機能拡張もあります。もしVisual Studio 2015 Express for WebやExpress for Desktopを使いたい場合は、こちらのリリースページでインストーラを入手してください。
最後に、PTVSはフリーのオープンソースプロジェクトで、コミュニティーへのコントリビューションは歓迎します。私たちの github のページをご覧いただき、フィードバックや質問などありましたらぜひお寄せください。また、公式リリース前の最新機能もぜひお試しいただければと思います。
株式会社リクルート プロダクト統括本部 プロダクト開発統括室 グループマネジャー 株式会社ニジボックス デベロップメント室 室長 Node.js 日本ユーザーグループ代表
- Twitter: @yosuke_furukawa
- Github: yosuke-furukawa