レベル: 初級 David Mertz, Ph.D (mertz@gnosis.cx), Author, Gnosis Software, Inc.
2001年 2月 01日 Pythonの書籍に関しては、ここ1年ほどの間に、探すのに苦労した状態を一挙に抜け出し、おびただしい数の書籍が出版されるようになりました。Python言語の一般的な紹介から、特定のテーマに関する専門的な説明まで、さまざまな書籍が世に出されました。「一般」と分類される書籍に関しても、そのレベルや説明内容は、かなりの広がりを持っています。この記事では、Pythonに関する著名な8冊の書籍について、David氏の書評をお届けいたします。
この記事は、Pythonに関して、現時点で購入できる書籍を、幅広くカバーしています。この記事を書いている時点でも、読む機会が無くてまだ目を通していない数冊の書籍が、出版されようとしています。皆さんがこの記事を読む頃には、さらに多くの書籍が出版されているかもしれません。今Pythonのプログラマーであることが、とても刺激的です。コンピューター書籍の出版社が、Pythonが プログラミング言語としていかに話題性に富んでいるかを認識するようになってきたのもその理由の一つです。時間と紙面の制約により、ここでは紹介できなかった読み応えのある書籍が沢山ありますが、興味を持たれた読者は、この記事の最後にある参考文献を ご参考にしてください。また、その内容の素晴らしさにもかかわらず、私が全く見逃しているものがありましたら、その書籍の著者および出版社の方に、この場を借りてお詫びさせていただきます。
あるテーマに取り掛かろうとする際、書籍を手に取るというのは素晴らしい方法ですが (Pythonについてもそうですが)、Pythonに同梱されている資料にも大変素晴らしいものがあります。参考文献の先頭にリストされている資料をご覧ください。Pythonの 開発チームによって、素晴らしい入門書が書かれています。モジュール・インデックス、ライブラリー・リファレンス、およびランゲージ・リファレンスの品質は、他の多くのプログラミング言語や通常のフリー・ソフトウェア に比べると、かなり優れています (ある項目について調べようとする時、ライブラリー・リファレンスとランゲージ・リファレンスの どちらを参照すればよいか、私はいつも迷ってしまいます。迷った場合には、両方調べてみてください)。
残念ながらこのコラムで取り上げなかった書籍に、Fredrik Lundhによって書かれた、Pythonコミュニティーにとっての大変偉大な文献であるThe Standard Python Library があります (彼の機械的な厳密さとサイン "/F" をとって "eff-bot" と呼ばれています)。一般的にも、これは、よくできている書籍であると言われています。ただし、これは、「暗号化された」電子フォームでしか使用できません。この書籍を使ってみようとしたユーザーは、コンピューターのハードウェアまたはソフトウェアを変更すると、この書籍が損傷したり使用できなくなることに不便を感じています。さらに不便なことに、eff-botを見ることができるのはWin32に制限されています。私は、他のGlassbookフォーマットの書籍でも同じような問題を経験しました。総体的に、この電子配布アプローチは、私がお勧めできないものの1つです。よって、私は、このテキストを読むためだけにWin32マシンを引っ張り出してくるようなことを しないことにしました。私は通常は、電子テキストに対して特に反対はしていませんが (多分私のコラムも電子テキストでお読みに なっていると思います)、過度の「コピー保護」は乱暴なやり方で容認し難いものと考えます。また印刷された書籍に比べて「権利」が著しく損なわれており、ユーザーの時間を無駄にするものです。幸いにも、このテキストは、来年、印刷されて出版される予定です。
熟練したプログラマー向けのPython解説書
すでにPythonを知っているプログラマーの方、またはPythonは知らなくても、類似した機能をもつ 他のプログラム言語をご存知の方には、構文、モジュール、および使用できる関数を確認のために探す場合に、リファレンス・ブックをお勧めします。この手の書籍を、最初から最後まで読みたいという方は稀なので、索引が充実していることが重要です。また、情報が論理的で簡潔にグループ化されている必要があります。
Python Pocket Reference
Python Pocket Reference は、75ページの薄くて小型の本です。何よりも便利なのは、Python Pocket Reference が、私達がトピックに関する記憶を呼び起こすためによく使用する 3x5インチ (約8x13cm) のインデックス・カードに似ていることです (実際のサイズは、もう少し大きいのですが、それほど大きくは ありません)。Python Pocket Reference には、Pythonに関して役立つ項目 (コマンド行、引数、環境変数、演算子、キーワード、ステートメントの構文規則、組み込み関数、マジック・メソッド、大部分の重要なモジュールの機能およびその他の数項目) を、基本的にはすべて網羅しているリストが備わっています。探しているもののタイプが大体わかっている場合には、リストで簡単に 探すことができます。
Python Pocket Reference には、索引または相互参照がありません。各セクションの記述は長くはないので、ざっと目を通せば大体はわかりますが、索引が別個についていれば、もっと便利なはずです (最後に5ページ位追加しても「ポケット・サイズ」であることには変わらないと思います)。Python Pocket Reference には、例があまり載っていません。たとえば、関数の引数はリストされていますが、例は載っていません (例があると便利だと思われる箇所にも、例は載っていません)。全体的に、Python Pocket Reference は、頻繁に使うには、少々簡潔に要約しすぎていると思います。私は、常にライブラリー・リファレンス とランゲージ・リファレンスをすぐ手の届く場所に置くことにしていますが、この小さなリファレンスで間に合いそうな情報について この大部の2冊を参照せざるを得ない時、特にそれを感じます。
Python Essential Reference
卓越した出来のPython Essential Referenceの方が、私の好みには合っています。320ページで、アカデミック なペーパーバック・フォームのPython Essential Reference は、この後で紹介する他の Pythonに関する書籍に比べ、かなり持ち運びし易くできています。とは言っても、どんなポケットにも入るような大きさではありません (冬のジャケットの外側のポケット ぐらいなら入りそうですが)。さらに、この本は、8- または9- ポイントの書体に設定されています (固定のフォントであるsans serifを使用した簡潔な書体で、例、リストなどにはデミボールドが使用されています)。そのため、節約されたスペースに多くの文字を詰め込むことができますが、同時に、視力の良くないプログラマーには 読みづらい場合もありそうです。
Python Essential Reference は、記述の明瞭さと編集面の工夫の双方において、素晴らしい出来です。索引は、特によくできており、関連セクションをすぐに見付けることができます。(索引以下でも索引以上のものでもありません。しかし、コンピューターの書籍においては、手抜きの索引と、懲りすぎた索引が なんと多いことか)。私としては、索引の大項目がセリフ書体の太字で印刷されているのが、気になります。少し重すぎる感じがするからです。でも、こんなことは、どうでもいいことです。また、多数のセクションに、"See also" として、参照ページおよびそのセクションのタイトルが 記載されています。これは、製本された本においては、ハイパーテキストのような威力を発揮します。
Python Essential Reference に記載されている内容全般は、Python Pocket Reference の内容と似ていますが、より詳細で、より多くの拡張モジュールが記載されています。また、記述は整然としており、関数 / モジュール / 構成の実例も、厳選されて掲載されています。Beazleyが行った注目すべきことは、関連したコンセプトの編成に工夫を凝らし、サブセクションを読むと、特定の関数についてすぐに理解できるように書かれているにもかかわらず、セクションまたは章全体を読んでも 自然な流れの説明になっているということです。Python Essential Reference は、Pythonを1つの言語として簡潔に紹介している書籍です。他にもいくつかの言語の経験があるプログラマーの方には、十分満足できるものだと思います。しかし、初心者の場合、最初の本としては、以降に紹介する本の方がいいと思います (いずれにしても、今後のために、Beazleyの本を購入されることをお勧めします)。
Python言語の概要
Programming Python
Pythonに関する書籍の古典ともいうべきものは、Mark LutzのProgramming Python です。これが、Pythonに関する最初の書籍かどうかは、はっきりとはわかりませんが、この本は、長い間ユーザーに 使われてきました。Programming Python は、かなり大掛かりなプロジェクトです。これは、書店で見かける900ページ程度のコンピューター・リファレンスの中の1つですが、このような大きな本にありがちな、無駄や余分なものがありません。Lutzの全体的なアプローチは、プログラムの展開例 (アーカイブ・プログラム) を示すことによって、Pythonを読者に紹介するというものです。紹介されるPythonの各機能が、サンプル・プログラムに新しい機能を追加するために使われています。これには、Tkinterとのグラフィック・インターフェースや基本的なOOP設計上の考慮事項 のようなものがあります (必要に応じて、他の例も同じように使用されています)。これは、初心者プログラマーにとっては良いアプローチですが (このアプローチだけが 良い訳ではありませんが)、経験者によっては、少し手間がかかる方法です。
その素晴らしさにもかかわらず、今のところProgramming Python をあまりお勧めできません。1996年に出版されているせいか、Programming Python は少し時代遅れのような気がします。Pythonは 地味な言語なので、書かれている内容で、今では正しくないというようなことはほとんどありません。しかし、ここ4、5年の間に、新しいモジュールが多数追加され、その中には新しく継承される言語機能 も含まれています (特にPython 2については、どの書籍にも載っていません)。ただし、改訂版が出るという噂が本当であれば、本書はもっと長く読み続けられるはずです。
Learning Python
Learning Python は、ある意味では、Programming Python の続編です。Learning Python も O'Reillyから出版されている書籍で、同じくMark Lutz (共著) によって書かれています。365ページで、ほとんどの O'Reillyの書籍と同様の9.5" x 7"(約24x17cm) のサイズのLearning Python は、Programming Python より短時間で読み終えられます。
1つの例を展開していくというアイデアを切り捨て、今度は、対象読者を 全くの初心者プログラマーのレベルより上の層に設定しているにもかかわらず、Learning Python は、とても親切な入門書です。たとえば、プログラミングの概念に 触れたことが無いような (頭脳明晰な) 高校生にもわかるように、すべての機能が十分詳しく説明されています。
Learning Python は、相互に論理的に組み立てられている一連の章で構成されています。各機能を (限られた) 実際のコンテキストで見ることができるように、部分的な例やソース・コード が随所に示されています。この本は2人の人物が自由にやり取りする会話形式で書かれています。他のO'Reillyの書籍と同じく、編集は注意深くて一貫性があります。最終章には、COM、Tkinter、JPythonなどの特殊なトピックが少し記載されています。これらは、メインのテキストにも組み込まれておらず、それだけで独立する程詳しく書かれている訳でもなく、いささか場違いな感じがします。
The Quick Python Book
The Quick Python Book は、Python Essential Reference とLearning Python の 中間に位置するような書籍です。外面的には、サイズは後者、活字は前者と同じです。The Quick Python Book は、入門書であると同時にリファレンスとしても使用されることを 目的としています。トピックはサブセクション単位に編成され、Learning Python よりも記述的で、Python Essential Reference よりは会話的に書かれています。基本的な言語機能および標準モジュール、Tkinter、COM、JPython、およびOS特有の使用法など、幅広いトピックがカバーされています。
The Quick Python Book は、Learning Python が対象としている読者よりも熟練した 読者をターゲットにしています。The Quick Python Book でPythonを学ぶことはできますが、他のプログラム言語の使用経験がある場合に限ります。また、後々本書をリファレンスとして十分使用することができる程、索引が充実しています。総合的に見て、Pythonの書籍を1冊しか購入できない場合には、The Quick Python Book を 購入されることをお勧めします。複数の書籍を買うことができる場合には、Python Essential Reference の方がリファレンス用には良いと思います。ただ、その場合にはThe Quick Python Book の2つの主な用途のうちの1つを、不要なものにすることになります。
Pythonにおける特殊なプログラミング・タスク
特殊な作業を行っている場合や特殊な環境で作業している場合には、Pythonに関する一般書ではなく、より詳細に記述されている書籍が必要になります。このような場合に役立つ書籍が3冊あります (もちろん、これらの書籍が、使用者が求めている 特殊な分野を扱っている場合に限られますが)。
Python and Tkinter Programming
Python and Tkinter Programming は、ご期待どおりのトピックに関して書かれています。すなわち、TK ライブラリー用のTkinter ラッパーの使用について 書かれています (多数のOSプラットフォームで使用できます)。この本は、約650ページにもおよびますが、そのほとんどがコードのサンプルと画面イメージです。GUIライブラリーの学習において、これらの画面イメージは、どのウィジェットが実際に何を行うのか (または、どのようなレイアウトになっているかなど) を見ることができるという点で役立ちます。ただし、コードは、多分、実用的なものより、幾分長めです。さまざまなTkinter の機能が紹介されているので、これらの機能を使用して 小さいアプリケーションを完成させる例がコード・サンプルとして示されています。しかし、実際にGraysonの特殊なアプリケーションを使用するとは思えませんし、同じタイプのウィジェットを10個表示することが、1個表示することより詳しく説明しているとは 言えません。しかしながら、Graysonはサブジェクトの提示においては素晴らしく、例が少し多すぎるからと言って それが本書の評判を損ねることにはなりません。Python and Tkinter Programming の 最初の3分の2は説明部分で、この中で読者に例の作成プロセスを示しています。後の3分の1は、Tkinter の全引数およびメソッドのリファレンスになっています。
XML Processing with Python
XML Processing with Python は、多少くせのある本です。この本には、Pythonの概要がかなり 多く記述されていますが (もちろん、他の専門書よりも多く記述されています)、XMLの紹介は ほとんどありません。つまり、McGrathの書籍は、XMLのユーザーやプログラマーがPythonにアプローチする際には役立ちますが、PythonのプログラマーがXMLにアプローチする際に役立つとは思えません (私には、タイトルが 逆のような気がします)。また、XML Processing with Python は、かなり大きいフォント、沢山の空白、かなり厚い用紙を使用しています。これは、最近の多くのコンピューター関連書籍 にありがちな「従量制価格」策略にはまっているように思えます。XML Processing in Python について更に疑問に感じることは、本書がMcGrathのpyxie ライブラリーをXMLプログラミングを扱う方法として 取り上げている頻度です。実際、pyxie は、XMLをより簡単に解析および処理できるライン指向のフォーマット・ コールPYX に変換する非常に優れたコンセプトです。アプローチは素晴らしいのですが、多分、プログラマーの多くは、SAXやDOMのようなより標準的な 技法を使用したいのではないかと思います。McGrathはSAXとDOMについても適度に紹介していますが、結局、彼は、ユーザーにpyxie を使用してほしい思っているようです (これは、フリー・ソフトウェアなので、販売目的の宣伝ではありません)。
Python Programming on Win32
私は、他のほとんどの書籍に比べてPython Programming on Win32 を評価する機会が少なかったことを お断りしておかなければなりません。実際にこの本が必要になるようなプロジェクトを請け負うほど、Win32を使用していないのです。しかし、著者は、多数の業績で知られたMark Hammond氏で、PythonWin IDE、PythonCOM、および Python for .NETの作成者です。彼は、Windowsに精通しており、Pythonコミュニティーのために 数多くのことを行ってきました。全体的なトーンは、Python Programming for Win32 は、Learning Python にとてもよく似ています。両方ともかなり会話的で、読者を論理的に 配置されたトピックの流れに導いていきます。Python Programming on Win32 では、Pythonの概要を簡単に紹介してから、COM、ODBC、ActiveScripting、およびその他の 各Windowsプラットフォームでの使用について説明しています。PythonはWindowsに実に適しています。VBやVBScriptで行っている日常的な仕事 (MS-Office アプリケーションのスクリプト、登録および構成の保守、IIS用のASPページの作成など) は、代わりにPythonを使用すると、より簡単になります。Python Programming on Win32 は、上記のようなことを行うのにぴったりの入門書です。
参考文献
- Pythonを使い始めたばかりの方は、まず、python.orgサイトの Python Documentation を是非お読みください。
- Python Essential Reference, David M. Beazley, New Riders 2000. ISBN: 0-7357-0901-7.
- Python Pocket Reference, Mark Lutz, O'Reilly, 1998. ISBN: 1-56592-500-9.
- Learning Python, Mark Lutz & David Ascher, O'Reilly, 1999. ISBN: 1-56592-464-9.
- Programming Python, Mark Lutz, O'Reilly, 1996. ISBN: 1-56592-197-6.
- The Quick Python Book, Daryl Harms & Kenneth McDonald, Manning, 2000. ISBN: 1-884777-74-0.
- Python Programming on Win32, Mark Hammond & Andy Robinson, O'Reilly, 2000. ISBN: 1-56592-621-8.
- Python and Tkinter Programming, John E. Grayson, Manning, 2000. ISBN: 1-884777-81-3.
- XML Processing with Python, Sean McGrath, Prentice Hall, 2000. ISBN: 0-13-021119-2.
- (eff-botガイド) The Standard Python Library, Fredrik Lundh, eMatter (mightwords), 1999. ISBN: 0717350770.
この記事では取り上げなかった参考文献
- Core Python Programming, Wesley J. Chun, Prentice Hall (2000年12月)
- Python Annotated Archives, Martin C. Brown, McGraw-Hill (1999年12月)
- Programming with Python, Tim Altom, Prima Publishing (1999年10月)
- Sams Teach Yourself Python in 24 Hours, Ivan Van Laningham, Sams (2000年5月)
- Python: Developer's Handbook, Andre dos Santos Lessa, Sams (2000年12月)
- Learn to Program Using Python, Alan Gauld, Addison-Wesley (2001年1月)
- Internet Programming with Python, Aaron Watters, et alia, Hungry Minds (1996年9月)、(絶版)
著者について  | 
|  | David Mertz氏は多くの分野で活躍しています。ソフトウェア開発や、それについて著述もしています。その他、学術政策理念について分野を問わず、関係する雑誌に記事も書いています。かなり以前には、超限集合論、ロジック、モデル理論などを研究していました。その後、労働組合組織者として活動していました。そして、David Mertz氏自身は人生の半ばにもまだ達していないと思っているので、これから何かほかの仕事をするかもしれません。David Mertz氏の連絡先はmertz@gnosis.cxです。 |
記事の評価
|