マーリンアームズ サポート   翻訳   コンサル   講座   アプリ   コラム
JavaScript講座     辞書サイト

Python基礎&実践プログラミング     Magnus Lie Hetland著   武舎広幸+阿部和也+上西昌弘 訳 松浦健一郎+司ゆき 監修

第1版の序文(2006年出版)

2年ほど前のことです。Jason Gilmore氏が「Apressで本を出版しませんか」と声を掛けてくださいました。私のオンラインのPythonチュートリアルを読んでくださって、同じような感じの本を書いて欲しいと言ってくださったのです。私は飛び上がって喜びましたが、ちょっと不安になったことも事実です。一番心配だったのは、どのくらいの時間がかかるのかということです。当時はまだ博士課程の学生でしたので、自分の研究との兼ね合いが心配でした。やってみるとやはり大変な仕事で、予想以上に長い時間がかかってしまいました。

そうは言っても、大学での研究にはそれほど差し支えませんでした。予定どおり、無事博士号を取得することができたのです。

昨年Gilmore氏が再度連絡をしてきました。より多くのトピックをカバーした改訂版を出して欲しいというのが出版社の希望でした。「どうしよう?」准教授になったばかりでとても忙しかったうえに、空いた時間はペール・ギュントのポートレイトに費やしていました。またもや時間の確保が問題となりました。そのうち、少し事態が落ち着き、余裕の時間がもてるようになりましたので、本を書くことに同意し、その結果(ご覧のとおり)この本が登場したというわけです。この第1版の多くのトピックは『Practical Python』(Apress, 2002)からもってきたものですが、内容はPythonの最近の変化に対応するよう、大幅に書き換えました。また、新たにいくつかの章を加えました。全体のバランスを考えて、章の構成を変えたところもあります。『Practical Python』について、読者の皆さんから好意的なフィードバックをたくさんお寄せくださいました。この本でも後方だった部分はそのままに、内容を追加するよう心がけました。

多くの方々の助けや激励なしではこの本は書き上げられなかったはずです。すべての関係者の方々に心から感謝いたします。なかでも、この本の執筆の過程で直接的に私とやり取りをしてくださった次の皆さんに深く感謝いたします。Jason Gilmore氏は、このプロジェクトを始める切っ掛けを作ってくださって、私を正しい方向に導いてくださいました。Beckie Stones氏は常に全体像に気を配ってくださいました。Jeremy Jones氏とMatt Moodie氏は技術的なコメントやアイディアをくださいました。そして、Linda Marousek氏は辛抱強く私の作業を見守ってくださいました。この他の方々も、このプロジェクトがスムーズに進むよう様々な配慮をしてくださいました。そして、この本は前の本で私と一緒に作業をしてくださった方々の支援がなければ今の形にはなっていないでしょう。編集者のJason Gilmore氏(本全体担当)およびAlex Martelli氏(前半担当)は、技術的な面に関してすばらしい編集作業を行ってくださっただけでなく、数多くのアドバイスや示唆をしてくださいました。Erin MulliganおよびTory McLearnの両氏は、プロジェクトの全体に渡り私に寄り添い、必要な環境を整えてくださいました。Mulligan氏は推敲を助けてくださいました。そしてGrace Wong氏は、他の人には答えられない問いに回答をくださいました。Pete Shinners氏は、最後のゲームのプロジェクトのに関して有意義な示唆をしてくださいました。おかげでよりよい内容になりました。何通か励ましのメールをいただいたことで、私の気分も随分とよくなりました。ありがとうございます。最後に、私自身の家族と友人、そして私のガールフレンドであるRanveigに。この本を書いている間、私と一緒にずっと「我慢の時」をすごしてくれました。

第2版の序文(2009年出版)

お待たせしました。『Beginning Python』の第2版が完成しました。じつのところ、『Practical Python』も含めると第3版ということになります。かれこれ10年近くの月日をこの本とともに過ごしてきたことになります。その間、Pythonは興味深い変化をしてきましたので、できるだけそれに対応するよう努めました。最近の変化としてはPython 3の導入があげられます。これまでのPythonの歴史の中でも最も大きな変化といってもよいかもしれません。この版の執筆時点ではファイナルリリースはされていないものの、機能面の仕様は固まっており、実装されたバージョンも公開されています。このバージョンに関して特筆すべきは、後方互換性をもっていないという事実です。つまり、単に機能を追加しただけのバージョンではないということです。筆者の立場からすると、新しい内容を追加するだけでよい、とはいかなくなったのです。事柄によっては、Python 2.5では正しかったことが、Python 3では間違いになってしまったのです。

Pythonのコミュニティ全体が、即座に新バージョンに移行してくれるのなら話は単純です。新しい言語について書けばよいのですから。しかし、前のバージョンで書かれたコードはたくさんありますし、まだまだ前のバージョンで新しいプログラムも書かれているでしょう。この状態はPython 3が広く受けいられるまで続くことになります。

私はこの窮地をどのように脱したらよいのでしょうか。そもそも、互換性がないとはいえ、それはごく一部の話です。ですから、大部分については、Python 2.5について記述すればそれはPython 3についてもあてはまります。Python 3とPython 2が違っている部分については、「保守的な姿勢」で臨むことにしました。というのは、Python 3が広がるには少し時間がかかると踏んでいるからです。このため、基本的にはバージョン2.5を中心にすることにし、バージョン3で変わる部分について注釈を入れることにしました。

第2版についても第1版(および『Practical Python』)同様、数多くの方々にご援助いただきました。Jason Gilmore氏は執筆のきっかけを与えてくれ、プロジェクトの進行を助けてくださいました。執筆の過程では、Richard Dal Porto、Frank Pohlmann、Dominic Shakeshaftの各氏に後押しをしていただきました。Richard Taylor氏はコードの確認を行ってくださいました(もし動かなかったとしたら、それは私のせいですが)。Marilyn Smith氏は内容に関して、細かな点をご指摘くださいました。Liz Berry、Beth Christmas、Steve Anglin、Tina Nielsenの各氏をはじめとするApressのスタッフの皆さんにも感謝しなければなりません。そして、誤りや改善点を指摘してくださった皆さん(特にBob Helmbold氏、Waclaw Kusnierczyk氏)にもお礼を申し上げます。そしてもちろん、第1版および『Practical Python』の誕生を助けてくださった皆様にも。

序文(第3版)

英国で知らない人はいないほど有名なコメディ『モンティ・パイソンの空飛ぶサーカス』に次のような歌が登場します。

もうひとつ別のがきた
またきた、またきた
もうひとつ別のが来た
いつになったら終わるんだろう?

この本の第2版が出版されたあと、Python 3が広く使われるようになりました。このため、この第3版は対象をPython 3の世界に移行しました。別の変化もありました。Pythonのパッケージやコーディング規範にも浮き沈みがありました。この本もそれに合わせて、書き換えられてきましたが、その根幹は変わっていません。たとえば、2000年代初めに第1版が登場したとき、Usenetはまだかなり広く使われていましたが、現在のネットユーザーはこの言葉を聞いたことさえないでしょう。第23章の第4のプロジェクトではNNTPサーバへの接続を行うのですが、メインストリームのプログラミングキャリアに直接関係する内容ではなく、歴史的な興味の対象となるべきものでしょう。そうではあっても、このトピックを残しておくことにしました。このプログラムはまだまだ動いており、この本の歴史の一部であるからです。

第1版および第2版の出版をお助けいただいたすべての方々にも深く感謝します。この版に関しては、とくにMark Powers氏に深く感謝します。私の進みが遅くなってしまったときも、辛抱強く激励し続けてくださいました。Michael Thomas氏にも感謝しなければなりません。この本の技術的な内容について、厳しくチェックしてくださいました(特に、私が修正し忘れたPython 2のスタイルで書かれたprint文を細かく指摘してくれました。すべて直っているとよいのですが...)。この第3版が皆様のお役に立つことを願っています。ちなみに、一番最初に引用した歌の最後で、Terry Jonesはこう言っています——「フルオーケストラならもっともっといいよね」

はじめに

Cのプログラムはワックスのかかったフロアーでカミソリを持って動きの速いダンスをするようなものだ。
   ——Waldi Ravens

C++——学ぶのが難しく、保守も大変。
   ——作者不詳

Javaは多くの面で「C++ --」だ。
   ——Michael Feldman

では今からガラッと趣向の変わったものをお見せします...
   ——『空飛ぶモンティ・パイソン』

この本のトーンを設定するために、ちょっとラフな感じでいくつかの引用ではじめてみました。親しみやすく読みやすい本になるようユーモアを交えてPythonのプログラミングについて説明するよう心がけました。そしてPythonのコミュニティの「伝統」にならって、英国のコメディ番組『モンティ・パイソン』に関係するユーモアを多く用いました。このため、例題の中にはちょっと間抜けた感じのものも混じっていますが、お許しいただければ幸いです(じつのところ、Pythonという名前もモンティ・パイソンMonty Pythonに由来しているのです。ニシキヘビという意味のpythonではありません)。この「はじめに」では、Pythonがどのような言語なのか、なぜ読者の皆さんが使うべきなのか、今誰が使っているのか、この本の対象読者はだれか、そして、この本の構成はどのようになっているかをお伝えしましょう。

では、Pythonとは何なのでしょうか、そしてなぜ読者の皆さんがPythonを使うべきなのでしょうか。「公式」の宣伝文句を並べてみると「インタプリタ型の」「オブジェクト指向の」「動的な」「高級」「プログラミング言語」ということになります。ここに並べた言葉の意味は、追い追い明らかになってくると思いますが、肝となる点は、Pythonはプログラムを書くときにどのような流儀で書かれたものかには関係ないということです。自分が必要な機能を、大変な思いをせずに実装することを可能にしてくれ、(現在人気のある他のプログラミング言語と比べても)明確で読みやすいプログラムを書くことを可能にしてくれます。

確かに、PythonはCやC++などの「コンパイル言語」と比べると実行は速くはありませんが、プログラム作成にかかる時間を大幅に短縮できるので、使う価値があるのです。そして、多くのプログラムでは実行速度の違いは、ほとんど感じられないほどです。あなたがCのプログラマーならば、速度が重要な部分を後でCで書き直し、Pythonで書いた部分から呼び出して実行することができます。プログラミングの初心者にとっては、Pythonの単純さと能力は、最初の言語として理想的と言えるでしょう(CやC++の話題が登場して困惑しているかと思いますが、ご心配なく。本文にはほとんど登場しません)。

さて、誰がPythonを使うのでしょうか。Guido van Rossumグイド・ヴァンロッサムが1990年代初めにこの言語を作り出して以来、利用者は着実に増え続け、ここ数年で爆発的に利用者が増えています。Pythonは初心者にプログラミングを使われるためにも使われている一方、システム管理も使われています(たとえば、Linuxのいくつかのディストリビューションで重要なコンポーネントになっています)。NASAでもPythonが開発に使われており、いくつかのシステムのスクリプト言語としても採用されています。インダストリアル・ライト&マジック社では、Pythonを著名映画の特殊効果の生成に用いています。Yahoo!はディスカッショングループの管理をはじめとする業務に用いています。GoogleはWebクローラーや検索エンジンの数多くのコンポーネントの実装に用いています。Pythonはゲームや生物情報学などの分野でも使われています*1。そのうち、「誰がPythonを使っていないのか」と尋ねるようになるでしょう。

[*1] 訳注: AI関連の数多くのプロジェクトでPythonが主要な言語として使われているのは、皆さんご存じのことと思います。

この本はPythonでプログラムを作る方法を学びたい方のための本です。初心者プログラマーからコンピュータにかなり詳しい人まで、幅広い分野の方々の要求にマッチするよう構成されています。プログラムを作った経験がない方でしたら、第1章からていねいに読み始めて、「ちょっと難し過ぎるなあ」と思う所までお読みになるとよいでしょう(もちろん、そう思わなければ最後まで一気にお読みください)。次に、自分のプログラムを自分で作り始めてみてください。適当な時期が来たら、この本に戻って、もう少し複雑なトピックについて学ぶとよいでしょう。

プログラムの作り方をご存じの方は、既知の事柄も登場するでしょう(そうは言っても、「Pythonではこんな風にできるのか」とビックリするような点も見つかることが多いと思います)。最初のほうの章はザッと読んでPythonを大まかに把握するのがおすすめです。あるいは付録Aで概要をつかむのもよいかもしれません。付録Aは私がウェブで公開していた「Instant Python」というチュートリアルを元に作成したものです。Pythonの主要な概念をざっくり把握できるでしょう。概要をつかんだら、第10章に進んでください。この章ではPythonの標準ライブラリについて説明しています。

最後の8つの章では、ひとつずつ実際に動作するアプリケーションを作っていきます。初心者にとってもベテランにとっても、興味深く取り組めるプロジェクトだと思います。最後のほうは初心者にとっては少し難しいかもしれませんが、順番に取り組んでいって必要に応じて前の章を復習すればついて行けるのではないかと思います。

さまざまなトピックを取り上げていますので、ご自分のプログラムを作成する上で訳に立つものが多いと思います。チャットサーバを作ったり、ピアツーピアのファイル共有システムを作ったり、グラフィックス付きのゲームを作ったりと、かなり高度な内容も含まれています。最初のうちは、とても無理だと思うかもしれません。しかし、ていねいに取り組めばけっして難しいものではないことに驚くはずです。ソースコードはウェブで公開されています(翻訳版のソースコードはgithubに公開されています)。

さあ、これでおしまいです。「はじめに」が長い本は退屈だと思っていますので、このあたりでおしまいにしましょう。初心者の方は第1章から、ベテランの方は付録Aから始めてください。それでは、Pythonの世界を存分にお楽しみください!