関連サイト
本書の関連ページが用意されています。
内容紹介
開発者や経験豊富なプログラマーのために、著者の15年以上にわたるPythonの経験を結集して、よくある間違いを避け、より効率的にコードを書き、よりよいプログラムをより短時間で構築する方法を教えます。
マルチスレッドやメモ化などの高度なトピックを幅広くカバーし、APIの設計やデータベースの扱いなどについて、言語自体をより深く理解するためにPythonの内部を学びます。
また、プロジェクトの開始方法から始めて、バージョン管理、コーディングスタイル、自動チェックなどのトピックについて解説します。配布用にソフトウェアをパッケージ化する方法、パフォーマンスを最適化する方法、適切なデータ構造を使用する方法、関数を効率的に定義する方法、適切なライブラリを選択する方法、将来にわたって使用できるプログラムを構築する方法、およびプログラムをバイトコードまで最適化する方法について学習します。
さらに、効果的なデコレータとメソッド(抽象メソッド、静的メソッド、クラスメソッドなど)の作成と使用、ジェネレータや純粋関数を使用した関数プログラミング、抽象構文ツリー(AST)による洗練された自動チェックを導入する方法、動的パフォーマンス分析を適用してコード内のボトルネックを特定する方法、PostgreSQLを使用してデータを効率的に管理する方法も取り上げます。
そのほかに、8人の経験豊かなPythonハッカーへのインタビューも掲載しており、達人のノウハウを知ることができます。
本書には、達人の知識と経験が詰まっています。それらを身に付けて、Pythonの腕を上げ、生産性の高い効率的なPythonコードの書き方への理解を深め、Pythonハッカーの道を進みましょう。
書誌情報
- 著者: Julien Danjou, 株式会社クイープ, 寺田 学
- 発行日: 2020-05-29 (紙書籍版発行日: 2020-05-29)
- 最終更新日: 2020-05-29
- バージョン: 1.0.0
- ページ数: 328ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: マイナビ出版
対象読者
著者について
Julien Danjou
Julien Danjou:20年近くにわたってフリーのソフトウェアハッカーとして活動し、10数年前からPythonでソフトウェア開発を行っている。現在は、分散クラウドプラットフォームOpenStackのプロジェクトチームリーダーを務めている。OpenStackは250万行のPythonからなる最大規模のオープンソースPythonコードベースを持つプラットフォームである。クラウドの構築に携わる前はすばらしいウィンドウマネージャを作成しており、DebianやGNU Emacsなど、さまざまなソフトウェアに貢献している。
株式会社クイープ
1995 年、米国サンフランシスコに設立。コンピュータシステムの開発、ローカライズ、コンサルティングを手がけている。2001 年に日本法人を設立。主な訳書に『マルウェア データサイエンス』『プラトンとナード』『サイバーセキュリティ レッドチーム実践ガイド』(マイナビ出版)、『Amazon Web Services インフラサービス活用大全』(インプレス)、『なっとく!ディープラーニング』『Python トリック』(翔泳社)、『プログラミングASP.NET Core』(日経BP)、『RaspberryPi で学ぶコンピュータアーキテクチャ』(オライリー・ジャパン)などがある。
寺田 学
Python Web関係の業務を中心にコンサルティングや構築を行う株式会社CMSコミュニケーションズ代表取締役。2010年から国内のPythonコミュニティに積極的に参画し、PyCon JPの開催に尽力した。2013年3月からは一般社団法人PyCon JP Associationの代表理事を務める。その他のOSS関係コミュニティの主宰またはスタッフとして活動中。一般社団法人Pythonエンジニア育成推進協会顧問理事として、Pythonの教育に積極的に関連している。最近はPythonの魅力を伝えるべく、初心者向けや機械学習分野の講師を精力的に務めたり、Pythonをはじめとした技術話題を扱うポッドキャスト『terapyon channel』(https://podcast.terapyon.net/)を配信中。
目次
はじめに
日本語版のための序文
監訳者序文
本書の対象読者
本書の内容
著者紹介
第1章 プロジェクトを開始する
- 1.1 Pythonのバージョン
- 1.2 プロジェクトの計画を立てる
- 1.3 バージョン番号を管理する
- 1.4 コーディングスタイルと自動チェック
- 1.5 Joshua Harlow、Pythonについて語る
第2章 モジュール、ライブラリ、フレームワーク
- 2.1 インポートシステム
- 2.2 便利な標準ライブラリ
- 2.3 外部ライブラリ
- 2.4 パッケージのインストール:pipをさらに活用する
- 2.5 フレームワークの使用と選択
- 2.6 Doug Hellmann、Pythonライブラリについて語る
第3章 ドキュメントの作成とよいAPI プラクティス
- 3.1 Sphinxによるドキュメントの作成
- 3.2 まとめ
- 3.3 Christophe de Vienne、API開発について語る
第4章 タイムスタンプとタイムゾーンの処理
- 4.1 タイムゾーンがないという問題
- 4.2 デフォルトのdatetimeオブジェクトを作成する
- 4.3 dateutilに基づくタイムゾーン対応のタイムスタンプ
- 4.4 タイムゾーン対応のdatetimeオブジェクトをシリアライズする
- 4.5 あいまいな時間を解決する
- 4.6 まとめ
第5章 ソフトウェアの配布
- 5.1 setup.pyの略史
- 5.2 setup.cfgによるパッケージ管理
- 5.3 wheel:配布フォーマット標準
- 5.4 カスタムソフトウェアを公開する
- 5.5 エントリポイント
- 5.6 まとめ
- 5.7 Nick Coghlan、パッケージ管理について語る
第6章 ユニットテスト
- 6.1 テストの基礎
- 6.2 仮想環境
- 6.3 テストポリシー
- 6.4 Robert Collins、テストについて語る
第7章 メソッドとデコレータ
- 7.1 デコレータとそれらを使用する状況
- 7.2 Python のメソッドの仕組み
- 7.3 静的メソッド
- 7.4 クラスメソッド
- 7.5 抽象メソッド
- 7.6 静的メソッド、クラスメソッド、抽象メソッドを組み合わせて使用する
- 7.7 まとめ
第8章 関数型プログラミング
- 8.1 純粋関数を作成する
- 8.2 ジェネレータ
- 8.3 リスト内包
- 8.4 関数型の関数を使用する
- 8.5 まとめ
第9章 AST、HY、Lispライクな属性
- 9.1 ASTを調べる
- 9.2 ASTをチェックするようにflake8を拡張する
- 9.3 速習:Hy
- 9.4 まとめ
- 9.5 Paul Tagliamonte、ASTとHyについて語る
第10章 パフォーマンスと最適化
- 10.1 データ構造
- 10.2 プロファイリングを通じて振る舞いを理解する
- 10.3 関数を効率的に定義する
- 10.4 順序付きのリストとbisect
- 10.5 名前付きタプルとスロット
- 10.6 メモ化
- 10.7 PyPyによるPythonの高速化
- 10.8 バッファプロトコルでゼロコピーを実現する
- 10.9 まとめ
- 10.10 Victor Stinner、最適化について語る
第11章 スケーリングとアーキテクチャ
- 11.1 Pythonのマルチスレッディングとその制限
- 11.2 マルチプロセッシングとマルチスレッディング
- 11.3 イベント駆動型アーキテクチャ
- 11.4 その他の選択肢とasyncio
- 11.5 サービス指向アーキテクチャ
- 11.6 ZeroMQによるプロセス間通信
- 11.7 まとめ
第12章 リレーショナルデータベースの管理
- 12.1 RDBMS、ORM、それらを使用する状況
- 12.2 データベースバックエンド
- 12.3 FlaskとPostgreSQLによるデータのストリーミング
- 12.4 Dimitri Fontaine、データベースについて語る
第13章 コーディングを減らしてコードを増やす
- 13.1 sixを使ってPython 2とPython 3をサポートする
- 13.2 PythonをLispのように使ってシングルディスパッチャを作成する
- 13.3 コンテキストマネージャ
- 13.4 attrsを使って決まりきったコードを減らす
- 13.5 まとめ