1. やる気を高めよう¶
コンピュータでさまざまな作業をしていると、いずれ自動化したい作業が出てくるでしょう。例えば、多数のテキストファイルをまとめて検索・置換したり、大量の写真ファイルの名前や配置を複雑な手順で変更したりする作業です。用途に合わせた小さなデータベースや専用の GUI アプリケーション、簡単なゲームを作りたくなることもあるでしょう。
ソフトウェア開発の仕事で複数の C/C++/Java ライブラリを使っていると、コードの作成・コンパイル・テスト・再コンパイルという一連の作業に時間がかかりすぎると感じるかもしれません。そうしたライブラリのテストスイートを書いていて、テストコードの作成が面倒だと感じることもあるでしょう。あるいは、作成したプログラムに拡張言語を導入したくても、そのためだけにまったく新しい言語を設計・実装したくはないかもしれません。
Python はそんなあなたにぴったりの言語です。
こうした作業の一部は Unix シェルスクリプトや Windows バッチファイルで処理できます。シェルスクリプトはファイルの移動やテキストデータの変更が得意です。しかし、GUI アプリケーションやゲームにはあまり向いていません。C/C++/Java でプログラムを書くこともできますが、最初の試作品を作るだけでもかなりの開発時間がかかることがあります。Python はもっと手軽に使え、Windows、macOS、Unix で動作します。作業をより早く終える助けになるでしょう。
Python は手軽に使える一方で、本格的なプログラミング言語でもあります。シェルスクリプトやバッチファイルに比べ、プログラムを構造化する仕組みや大規模なプログラムの開発を支える機能が充実しています。また、C よりも多くのエラーチェックを行います。超高水準言語 である Python には、柔軟な配列や辞書といった高レベルのデータ型が組み込まれています。汎用性の高いデータ型を備えているため、Awk や Perl よりも幅広い問題に対応できます。それでいて、多くの処理はこれらの言語に劣らず簡単に書けます。
Python ではプログラムをモジュールに分割し、他の Python プログラムで再利用できます。豊富な標準モジュールも付属しており、プログラムを作る際の土台としても、Python プログラミングを学び始める際の例としても利用できます。ファイル I/O、システムコール、ソケットなどの機能や、Tk のような GUI ツールキットへのインターフェースを提供するモジュールもあります。
Python はインタープリタ言語です。コンパイルやリンクが不要なので、プログラム開発の時間を大幅に節約できます。インタープリタは対話的にも使えるため、言語の機能を試したり、書き捨てのプログラムを書いたり、ボトムアップでのプログラム開発中に関数をテストしたりするのも簡単です。手軽な卓上電卓としても使えます。
Python ではコンパクトで読みやすいプログラムを書けます。Python のプログラムは通常、同じ処理を行う C/C++/Java のプログラムよりもずっと短くなります。その理由は次のとおりです:
高レベルのデータ型を使えば複雑な操作を1つの文で表現できます。
文は開始と終了を表す括弧ではなくインデントでまとめます。
変数や引数の宣言が不要です。
Python には 拡張性 があります。C でプログラムを書く方法を知っていれば、新しい組み込み関数やモジュールをインタープリタに簡単に追加できます。これにより、重要な処理を最大限に高速化したり、ベンダー独自のグラフィックスライブラリのようにバイナリ形式でしか提供されていないライブラリを Python プログラムにリンクしたりできます。Python にすっかり夢中になったら、C で書かれたアプリケーションに Python インタープリタをリンクし、そのアプリケーションの拡張言語や命令言語として使うこともできます。
ちなみに Python という名前は BBC の番組「Monty Python's Flying Circus」に由来し、爬虫類とは関係ありません。ドキュメントでモンティ・パイソンの寸劇に触れることは、許されているだけでなく推奨されています!
Python に興味が湧いてきて、もっと詳しく知りたくなったのではないでしょうか。言語を学ぶには実際に使ってみるのが一番です。このチュートリアルを読みながら Python インタープリタでいろいろ試してみてください。
次の章ではインタープリタの使い方を説明します。地味な内容ですが、この先に出てくる例を試すために欠かせません。
以降の章では Python 言語とシステムのさまざまな機能を例とともに紹介します。簡単な式や文、データ型から始めて関数やモジュールへと進み、最後には例外やユーザー定義クラスといった高度な概念にも触れます。