2019 年 9 月

Volume 34 Number 9

[働くプログラマ]

Python の概要

Ted Neward 著 | 2019 年 9 月

Ted Neward普及の観点から言うと、この数年で Python は "主流" になり、一部のアンケートや世論調査で、新しい最も人気のある言語と評価されています。よく言われるように、Python が世界を席巻する日が来るかは疑問ですが、データ サイエンスと人工知能/機械学習の世界を比較的強力に掌握しているように思われます。それだけを考えても、Python は学ぶべき興味深い言語です。

比較的単純な構文とプログラミング モデルの組み合わせ、および基盤となる OS に接続する拡張可能なモジュールにより、Python はこのコラムの新しいトピックに移るためのタイムリーかつ有用なスイッチとなります。今後数号にわたって、Python の構文、セマンティクス、Python エコシステムのより興味深い多数のライブラリなどを取り上げていきます。

重要なことを優先する

説明に入る前に、お断りしておかなければならないことがあります。私が執筆したほぼすべてのコラムと同様に、既存の C# (または Visual Basic) コードを Python に置き換えるよう勧めるつもりは毛頭ありません。他の多くのものと同様に、Python は経験を積む上で役立つツールです。Python が適切と思われる状況であれば使ってください。しかし、C# ではできず、Python でならできることを私は何も思いつきません。つまり、これらは使い方が異なるというだけなのです。

また、よくある誤解も解いておきたいと思います。Python コミュニティはさまざまなパッケージやライブラリにヘビや爬虫類の語呂合わせを使うことにこだわっていますが、この言語は世界中のさまざまなジャングルに生息する大蛇にちなんで命名されたわけではありません。実際には、Python という名称は別の有名なパイソンに由来しています。数十年前にカルト的人気を誇った英国を代表するコメディ集団の『空飛ぶモンティ・パイソン』というテレビ番組にちなんで名付けられました。サンプル コードで映画やテレビ番組のエピソードからの引用や例を使うのが Python の文化の高さであり、優秀なパイソニスタは通りがかりに気の利いたジョークを飛ばすチャンスを逃すことはありません。Web サイトでもそのようなことにこだわっています。

覚悟しておいてください。

作業の開始

2 つの基本的な理由から、Python を使い始めるのは、最初の想像よりもはるかに簡単です。1 つは、Python には Visual Studio インストーラーを使用してすぐにインストールできるバージョンがあります。これは、Python と環境管理ツールがパッケージ化されたバージョンで Anaconda と呼ばれます。それが意味することについてはこの後説明します。2 つ目の理由は、Windows Subsystem for Linux (WSL) により、選択したパッケージ マネージャーを使用して、Bash シェル コマンド ラインで簡単なコマンドを入力するだけで Python を入手できます。たとえば、WSL 環境に Ubuntu がインストールされている場合、Ubuntu Bash シェル プロンプトを開き、「sudo apt-get install python3」と入力することで、Python を簡単に入手できます。 さらに、5 月現在、Windows 10 を実行している場合は、Python を Windows ストアで入手することもできます。詳細については、bit.ly/2JMxC3A をご覧ください。

このどちらも好みではない場合は、もちろん、ほかにも多くのオプションがあります。Python インストールをソースから直接入手する方がよい場合は、Python Web サイトで Windows ベースのインストーラーが提供されています。あるいは、ソースだけを入手したい場合、(現在のほとんどの言語と同様に) Python は GitHub でホストされるオープンソース プロジェクトであり、ゼロから構築できます。これらはいずれも 10 年前なら望ましい方法だったかもしれませんが、比較的最近では、言語の中核としてパッケージ マネージャーのバンドル (Ruby と gem、Node と npm、言うまでもなく Java と Mav​​en、.NET と NuGet など) が功を奏しています。そのため、最新の Python インストールには、コア Python 環境で "pip" と呼ばれるパッケージ管理ツールが付属しています。 Python への関心が高まり続ける中で、前述の Anaconda とその "conda" ユーティリティなど、他のデプロイメント システムも登場しています。どちらを使っても結果は同じであるため、どちらかに決めるときにストレスを感じる必要はありません。ほとんどの場合、Visual Studio に付属する Anaconda インストールを使用した場合は conda を使用し、Python Web サイトからインストーラーを選択した場合は pip を使用します。

注意すべきもう 1 つの要素は、Python には 2 つの主要フレーバーの 2 つのセットあることです。まず、Python には 64 ビット版と 32 ビット版があります。この場合の違いは明らかです。2 つ目の問題は、Python ではかなり注意を要する移行 (Python 2 から Python 3 への移行) が正式に行われていることです。ユーザーにとっては大部分が重要ではない理由で、Python の開発者である Guido von Rossum はこの言語にいくつかの破壊的変更を加えることを決め、その実装時に正式にバージョン番号を上げました。誰もがすぐに移行すると一般に予想されていましたが、そうはなりませんでした。それどころか、移行は今も行われています。新しい Python プロジェクトは Python3 で開始する必要があるため、このシリーズの期間中は Python 3 を使用しますが、引き続き Python 2 を必要とする古いパッケージやライブラリが見つかる可能性があります。

Python をインストールしたら、早速使ってみましょう。Anaconda をインストールした場合は、インストールされた [Anaconda Prompt] というスタート メニュー項目を起動します (Visual Studio 2019 では、実際には "Python Prompt" としてインストールされます)。これにより、Anaconda Python 用に環境が設定されたコマンド プロンプトが表示されます。通常のディレクトリ ベースのプロンプト (私のマシンでは、"C:\Users\Ted>") の前に "(base)" のようなものがあるので、少し奇妙に見えます。これは、Anaconda がさまざまな "環境" を管理しているためです。これについては、今後のコラムで詳しく説明します。ここでは、「python」と入力して対話型環境の Python Read-Evaluate-Print Loop (REPL) を起動すると、バージョン バナーの出力後に ">>>" プロンプトが表示されます。

ここで、お決まりのあいさつをしてコンピューター サイエンスの神々に敬意を表しましょう。

print("Hello, Python world")

上記のコマンドを REPL に入力すると、あいさつがすぐに出力され、別の ">>>" プロンプトが表示されます。必要に応じて、これをファイル (hello.py) に保存し、Anaconda プロンプトから実行することもできます ("python hello.py")。どちらにしても、やるべきことをやれば、履歴書に「Python プログラマー」と記載できるようになります。

(おそらく、後で再利用するために) メッセージを変数に取り込む場合は次のように記述します。

message = "Hello again, "
message += "Python world"
print(message)

ローカル変数の message は、初めて使用する前に宣言する必要はなく、JavaScript の "var" (あるいは "let" または "const") のような "宣言キーワード" もありません。Python では、文字列はもちろん、ブール値、数値、リスト、タプル、集合 (重複を許可しないリスト)、辞書 (タプルのリスト、または必要に応じてキーと値のペア) が組み込み型としてサポートされています (カスタム オブジェクト型の作成方法や、これらの各プリミティブ型の意味については、今後のコラムで詳しく説明していきます)。 変数自体が型指定されるわけではありません。つまり、次のように、ローカル変数には任意の種類の値をいつでも割り当てることができます。

# By the way, this is a comment
message = "Hello again, "
message += "Python world"
print(message)
message = 5
print(message)

ただし、これには注意すべき重要な点もあります。変数を初めて導入するときには、常に値を割り当てる必要があります。そうしないと、以前に定義された変数を参照しようとしているものと判断されます。とはいえ、ゼロまたは空の文字列や、既定値として妥当と思われるものをいつでも割り当てることができることを考えると、これは大したことではありません。

最後の注意事項: この例の最初の行に示すハッシュ記号 (そういうことを気にする人からは、より正確に "オクトソープ" と呼ばれています) は、Python の行末コメント文字です。ただし、他の多くの言語とは異なり、Python には複数行のコメント記号がないので、コードの大きなセクションのコメントアウトは少しシンプルさに欠けます。しかし、これは Python が掲げる「それを行う方法は 1 つだけである」というモットーを忠実に守っています。つまり、この場合、コメントアウトする方法は 1 つだけなのです。

Python の実行

このコードはさまざまな方法で実行できます。

まず、Python が PATH 上にあることを前提として、Windowsコマンド ラインから、"python hello.py" のように Python ファイルの名前をインタープリターに渡すだけでスクリプトを実行できます。 特に、ツールを使用してグラフを作成したり、Web サーバーを実行したりする場合、作成した Python アプリケーションの少なくとも半分で、これがアプリケーションを実行する手段になると考えられます。

Windows に限られますが、このテーマの興味深いバリエーションとして、(ソースからビルドするのではなく) Windows ベースのインストーラーを使用して Python をマシンにインストールすると、Python は自身を Windows レジストリに登録し、".py" ファイル拡張子を要求します。さらに、Windows コマンド プロンプトで "PATHEXT" 環境変数に ".PY" を追加すると、直接実行可能であるかのように Python スクリプトを実行できるようになります (この環境変数には、COM、EXE、BAT、CMD など、直接実行可能にすることを目的としたすべてのファイルの拡張子が含まれているからです)。この動作は Windows に完全に固有のものであり、Python に限定されるものではないことに注意してください。レジストリでアプリケーションとファイル拡張子の関連付けの登録が設定されていれば、任意のファイル拡張子を PATHEXT 環境変数に登録し、"直接実行可能" にすることができます。

ただし、Unix システムでは、スクリプトの先頭に "Shebang" 行を常に設定できます。Unix の動作のこの部分に詳しくない方のために簡単に説明すると、(たとえば、コマンド ラインで「hello.py」と入力して) スクリプトを "直接実行" する場合、Unix はスクリプトの最初の行を調べ、"#!/usr/bin/env python3" のような内容であれば、この特定のスクリプトを実行するために実行するコマンド行と見なします。

まとめ

これは、Python に関する複数の記事の始まりにすぎないため、Python を十分に理解し、使用方法がわかるようになるまでに、さらにいくつかのトピックを取り上げていきます。次回は、Python のフロー制御構造について説明します。このトピックでは、Python の次に最も興味深い側面である重要な空白文字も登場します。コーディングを楽しんでください。


Ted Newardは、シアトルを拠点に活躍している、ポリテクノロジーに関するコンサルタント、講演者、および指導者です。これまでに非常に多くの記事を執筆している Ted は、さまざまな書籍を執筆および共同執筆し、世界を股に掛けて講演を行っています。彼の連絡先は、ted@tedneward.com です。また、blogs.tedneward.com にブログを公開しています。

この記事のレビューに協力してくれた技術スタッフのHarry Pierson


この記事について MSDN マガジン フォーラムで議論する