パーフェクトシリーズパーフェクトPython

書籍の概要

この本の概要

1冊で言語仕様から最新の技術までを網羅した内容。網羅的に解説されているだけでなく,各技術に関しては基本からしっかり解説し,必要な箇所では,内部処理が裏で何をしているのかを掘り下げて解説してあるため,体系的に知りたい初心者はもちろん中級者にもお勧めの一冊です.最新のPython3.3に対応。

こんな方におすすめ

  • 他のプログラミングを使いこなせ,新たにPythonを学んでみたい人
  • 扱える領域を広げたい人
  • Python 2を使っているが,そろそろPython 3だと思っている人
  • Pythonでロジックを書く事はできるが,もう一歩踏み出したい人
  • ハッカーになりたい人

著者の一言

露木誠

私がPythonに初めて触れてから10年以上が経とうとしています。当時Pythonで日本語を扱うには別途ライブラリを導入する必要が有りました。本書に参加している石本氏のおかげもあり,現在はPythonとしては日本語を扱う苦労はあまりなくなっています。
IT業界に転身してからいろいろな種類のプログラミング言語で仕事をしてきましたが,いつのまにかPythonがそばに寄り添っていました。集計データをエクセルでメールに添付して送りたい,PDFにして送りたい,簡単な画面(GUI)を用意したい,Webベースのデータエントリを用意したい,そんな時はいつもPythonで済ませられます。Javaや.NetやCocoaのラッパーとしてもPythonを使ってきました。

本書を読んだからには,だまされたと思ってしばらくPythonを便利に使ってみてください。きっとあなたのそばにもPythonが寄り添う事でしょう。

Ian Lewis

初めてPython触ったのは,2001年大学の頃。大学の先生は「Python試してみたら?」と言われ,挑戦のためにその頃,Pythonの一番有名な分厚い本を愛読して勉強しました。コマンドラインで実行するポーランド記法電卓や,自分のホームページをCGIで作ったりしていました。大学の卒業してから,所謂エンたエンタープライズのJava開発から,PHP Web開発に移しましたが,言語はPythonが一番好きだというのが頭から離れなかった。
Pythonが好きのは,シンプルな言語仕様とPythonの禅の実用性。自分の生産性を高めるには重いIDEがいらない。テキストエディタとコマンドラインだけで簡単に開発ができるのが素晴らしいと思いました。

日本のコミュニティはまだまだ小さいので,我々と共に,もっともっと大きくなって,世界中に日本のコミュニティの影響を広げていきましょう。その最初の一歩で,私はPythonを触り始めた頃の分厚い本の様に,読者の皆様もこの本がPython始まった頃のリファレンスとして愛読して頂ければ,嬉しいです。

石本敦夫

私が初めてPythonを使ってから,なんともう20年近くが経過してしまいました。この間,色々な環境で,色々なプログラミング言語を使って,色々な開発を行って来ましたが,常にPythonは使い続けて来ました。メインの開発言語としては採用していない場合もありましたが,そんな時でも,システム管理などのツールとして,常に活用してきました。これだけ使い続けるともうPythonは体の一部と言ってもいいぐらいで,どんな時でも自然に使いこなせるようになります。

この20年間,どんな環境でもPythonは安定して動き続け,成果をあげ続けてきました。読者の皆さんにも,そんな信頼のおけるツールとして,Pythonをマスターしていてだければと願っています。

小田切篤

Pythonを知ったのはEric S.Raymondの "How To Become A Hacker"(邦訳:ハッカーなろう)で紹介されていたことから。
そのころWebアプリケーションといえばJava, PHP, CGIでやるものであって,PythonでWebアプリケーションを仕事でできるようになるとは考えていませんでした。
Pythonはデータやソースを生成したり,テキストを整形したりと,ツールボックスに隠された秘密兵器として使っていました。
Zopeのような巨大なアプリケーションサーバや,テキスト整形などのユーティリティ,ScipyやNumpyなど,Pythonは多くの分野に利用されています。Pythonを通じて知った分野も多くあります。

本書では主にPython 3を取り扱っていますが,世の中で使われているのはほとんどの場合Python 2でしょう。
後方互換性を捨て,多くのライブラリがPython 3で動かない状況が続いていましたが,Webアプリケーション界隈ではPyramidが早々にPython 3へ対応し,DjangoやTurboGearsもPython 3対応の活動を行っています。
さらに,これらのフレームワークの対応に引っ張られるように,徐々に周辺ライブラリも多くがPython 3への対応を視野に入れています。
今後もPython 3対応の,ライブラリが充実していき,Python 3対応ということが特別なことではなくなっていくことでしょう。

これからPythonを始める人,すでにPython 2を使っていてこれからPython 3に踏み出す人など,多くの人にとって本書が役立つことを祈っています。

保坂翔馬

Pythonを初めて使ったのは学部4年の時でした。
C++しか使えなかった当時,コンパイル型ではないスクリプト言語を覚えようと思ったのがきっかけです。
所属していた研究室には既にRuby使いがいて,同じ言語はつまらないので別な言語を,と選んだのがPythonでした。
当時の最新バージョンはPython 2.4でしたが,python.jpのサイトで配布されていたPython 2.3の日本語化バージョンを使っていた記憶があります。

使い始めて一週間で,無謀にも学内で開催されたプログラミングコンテストに実戦投入した時はwxPythonでGUIアプリケーションを作るなど,かなり簡単だなという印象でした。プロコンの結果は…まあ聞かないでください。

そんなPythonですが,就活に失敗して内定が得られず「ああ,もう人生オワタ\(^o^)/」などと思っていた卒業間近,「Pythonが使える」という理由だけでCG会社にアルバイトで入社できました。
その時は「Pythonすげえ!」と思ったものです。そういう意味では私の人生に大きな影響を与えた言語であると言えます。

私が担当したPart4でも様々な分野のライブラリを紹介しているように,Pythonは色々な分野で便利に使える言語です。
一つ覚えると適用範囲がとても広がりますし,皆さんの人生に何らかの影響を与える言語となるのではないでしょうか。

大谷弘喜

僕がPythonを本格的に使い始めたのは,世界は終焉を迎えることもなく20世紀も終わり,21世紀の幕開けの頃でした。しかし,初めてPythonに触れたのはそれより数年前のことで,インデントを強要する奇妙な言語と言う印象でした。当時はPythonよりRubyの方が好みでした。しかし,Pythonを徐々に好きになっていたのは,きっとインデントすらまともにしない先輩プログラマーのおかげだったと思います。

それから十年以上が経ち,Pythonは様々なところで使われているにもかかわらず,日本ではなぜかヘビのように人目を忍んでいるように感じます。海外ではかなりメジャーな言語になっているらしいので,そろそろ英語を習得するようにPythonをマスターする頃かも知れません。

Pythonは比較的に言語仕様がシンプルで,学習が容易です。仕事のコードの中でPythonが紛れ込んでいても,大抵のプログラマはすぐにキャッチアップできます。あまりPythonを書かなくて忘れてしまっても,すぐに思い出せます。今年はへび年なので,こっそりとPythonが日常に忍び込んで欲しいですね。

著者プロフィール

露木誠(つゆきまこと)

1974年生まれ。20世紀末、異業種からIT業界へ転身し、勢い余ってOSSの世界へ足を踏み入れる。他言語、他フレームワークの勉強会へも参加し、DjangoやPythonの良さを説いて回っている。学生時代に演劇青年期を持つため、文章に冗長なところがあるかもしれない。
著書に「開発のプロが教える標準Django完全解説(アスキー・メディアワークス)」「Django×Python (LLフレームワークBOOKS)(技術評論社)」がある。鎌倉在住。
【本書担当】1章,9章,App-A,App-B

Ian Lewis(ルイス・イアン)

2006年に日本に移動し,2008年,株式会社ビープラウドに転職。
PythonのWeb開発や,OSSライブラリの作成に携わる。AWSやAppEngineなどのインフラから,コミュニティの活動まで興味を持ち,会社のみんなが使うツールも,PyConJPの運営の渉外も高い熱でやっています。
【本書担当】2章,3章,4章

石本敦夫(いしもとあつお)

1998年にスタートした,日本語によるPythonメーリングリストの初代管理人。長年,ソフトハウスに勤務し,電話交換機の端末制御から金融システム,PC用パッケージアプリケーションなど,各種の開発に携わる。現在,フリーランス。
【本書担当】5章,6章,7章,8章

小田切篤(おだぎりあつし)

2010年,株式会社ビープラウドに転職。
Pythonを使ったWebアプリケーション開発に携わる。利用フレームワークはDjango, Pyramidなど。
【本書担当】10章,11章,12章,13章,14章

保坂翔馬(ほさか しょうま)

ゲーム業界を志望するも就活に失敗し,色々あってCG制作会社に入社。主にPythonを使って社内のシステム開発に携わる。
その後グループウェア開発の会社に転職して現在に至る。
最近はPython ボルダリング部の部員として週一回以上をノルマに壁を登る傍ら,PyCon JPの運営に携わっている。
【本書担当】15章,16章,19章

大谷弘喜(おおたにひろき)

2001年,アリエル・ネットワーク株式会社設立に参加し,現在に至る。現在の主力製品であるグループウェア「アリエル・エンタープライズ」の基本設計や開発に携わる。
【本書担当】17章,18章

この書籍に関連する記事があります!

未来の技術者のために『パーフェクトシリーズ』好評発売中
「パーフェクト○○」シリーズは,いままでもC#,Java,PHP,JavaScript,Pythonと年1冊ペースで言語解説書を発行しています。

目次

Part1 Python ~overview
1章 Pythonの概要

  • 1-1 Python 3と本書
  • 1-2 Pythonがどのように使われてきたか
  • 1-3 特徴
  • 1-4 Pythonの禅
  • 1-5 Pythonを使う準備

Part2 言語仕様
2章 Pythonの基本

  • 2-1 インデント(ブロック)
  • 2-2 入出力
  • 2-3 コメント
  • 2-4 ドックストリングとオンラインヘルプ
  • 2-5 識別子(名前)
  • 2-6 変数
  • 2-7 予約語
  • 2-8 デバッグ・トレースバック
  • 2-9 メモリ管理

3章 型とリテラル

  • 3-1 オブジェクトについて
  • 3-2 論理型
  • 3-3 数値型
  • 3-4 シーケンス(Sequence)
  • 3-5 set(セット)
  • 3-6 辞書型(Dictionaries)
  • 3-7 None型

4章 制御構文

  • 4-1 条件文
  • 4-2 比較演算子
  • 4-3 ループ
  • 4-4 リスト内包表記
  • 4-5 その他の内包表記
  • 4-6 例外処理
  • 4-7 with

5章 関数

  • 5-1 関数の定義
  • 5-2 引数の指定
  • 5-3 デフォルト引数
  • 5-4 可変長引数
  • 5-5 return文
  • 5-6 global宣言
  • 5-7 nonlocal宣言
  • 5-8 ジェネレータ関数
  • 5-9 高階関数とlambda式
  • 5-10 関数デコレータ
  • 5-11 ドキュメンテーション文字列
  • 5-12 関数アノテーション

6章 クラス

  • 6-1 クラスの定義
  • 6-2 クラスオブジェクト
  • 6-3 メソッド
  • 6-4 コンストラクタ
  • 6-5 デストラクタ
  • 6-6 インスタンスアロケータ
  • 6-7 継承
  • 6-8 多重継承
  • 6-9 特殊メソッド
  • 6-10 プライベートメンバ
  • 6-11 ディスクリプタ
  • 6-12 コンテキストマネージャ
  • 6-13 プロパティ
  • 6-14 クラスメソッド
  • 6-15 クラスデコレータとメタクラス
  • 6-16 抽象基底クラス

7章 モジュールとパッケージ

  • 7-1 モジュール
  • 7-2 モジュールのインポート
  • 7-3 モジュールの検索パス
  • 7-4 モジュールの構成
  • 7-5 パッケージ
  • 7-6 名前空間パッケージ
  • 7-7 モジュールオブジェクト
  • 7-8 モジュールの実行

8章 拡張モジュールと組み込み

  • 8-1 拡張モジュール
  • 8-2 拡張モジュールのビルド
  • 8-3 例外処理
  • 8-4 Global Interpreter Lock(GIL)
  • 8-5 組み込み型の定義
  • 8-6 アプリケーションにPythonを組み込む

9章 標準ライブラリ

  • 9-1 sys
  • 9-2 os
  • 9-3 site
  • 9-4 venv(仮想環境)
  • 9-5 atexit
  • 9-6 builtins
  • 9-7 pdb

Part3 実践的な開発
10章 コマンドラインユーティリティ

  • 10-1 Pythonでのファイルの取り扱いと文字コード
  • 10-2 文字列のフォーマット
  • 10-3 さらにテキストファイルを極める
  • 10-4 Pythonオブジェクトでデータ処理
  • 10-5 コマンドラインアプリケーションとコマンドライン引数
  • 10-6 TODOリストアプリケーション
  • 10-7 まとめ

11章 チャットアプリケーション

  • 11-1 Echoアプリケーション
  • 11-2 TkinterでGUIプログラミング
  • 11-3 チャットアプリケーション
  • 11-4 まとめ

12章 アプリケーション/ライブラリの配布

  • 12-1 配布ための準備
  • 12-2 実際の配布物を作成する
  • 12-3 まとめ

13章 テスト

  • 13-1 Pythonのテストツール
  • 13-2 ユニットテスト(unittest)
  • 13-3 doctest
  • 13-4 モック
  • 13-5 実践テスト
  • 13-6 まとめ

14章 Webプログラミング

  • 14-1 Web Server Gateway Interface(WSGI)
  • 14-2 WSGIアプリケーションで役立つ外部ライブラリ
  • 14-3 Wikiアプリケーションを作る
  • 14-4 Webアプリケーションのテスト
  • 14-5 まとめ

Part4 適用範囲
15章 学術/分析系ライブラリ

  • 15-1 NumPy
  • 15-2 SciPy
  • 15-3 Matplotlib
  • 15-4 NetworkX

16章 マルチメディア

  • 16-1 イメージ(pypng)
  • 16-2 サウンド(stagger)
  • 16-3 3D CG(Blender)
  • 16-4 ゲーム(pygame)

17章 ネットワーク

  • 17-1 HTTPクライアント(requests)
  • 17-2 HTML/XMLパージング(lxml)
  • 17-3 HTML/XMLパージング(Beautiful Soup 4)
  • 17-4 RSS/Atomパージング(feedparser)
  • 17-5 チャット(pyxmpp2)
  • 17-6 チャット(lurklib)

18章 データストア

  • 18-1 KeyValueStore
  • 18-2 DBドライバ
  • 18-3 ORマッパ
  • 18-4 タスクキュー
  • 18-5 シリアライズ

19章 運用/監視

  • 19-1 運用(pssh)
  • 19-2 監視(PySNMP)
  • 19-3 ドキュメンテーション(Sphinx)

Appendix
A 環境構築

  • A-1 Python 3
  • A-2 仮想環境の準備とpipのインストール
  • A-3 IPython
  • A-4 NumPy
  • A-5 SciPy
  • A-6 Matplotlib
  • A-7 NetworkX
  • A-8 pygame
  • A-9 lxml
  • A-10 lurklib
  • A-11 python3-memcached
  • A-12 hiredis
  • A-13 Celery
  • A-14 pssh
  • A-15 msgpack-python

B 標準ライブラリ

  • B-1 sys
  • B-2 sysconfig
  • B-3 os