関連サイト
本書の関連ページが用意されています。
内容紹介
自分の書いたコードに自信を持てるプログラマーになろう
[誰にでも読みやすい 広く公開できるコードを書こう] 本書ではきれいなコード(Clean Code)を書くために、コマンドライン、コード整形、型チェッカー、リンター、バージョン管理 などのその道のプロが利用しているツールを詳解し、Pythonプログラミングスキルを向上させる方法を学びます。
[Clean Codeを実践するツールを活用できるようになろう] 開発環境のセットアップ、変数の命名方法、読みやすさ向上のための最適な方法 を紹介します。
[オブジェクト指向設計を理解し アルゴリズムを活用しよう] コードの公開に必要となるドキュメントの作成や書式の統一、またパフォーマンスの測定、オブジェクト指向プログラミング、コーディングインタビューで一般的に使用されるオーダー記法(Big O)について説明します。
本書の後半では2つのコマンドラインのゲーム「ハノイの塔(ロジックパズル)」と「四目並べ(タイル落としゲーム)」を作りますが、書いたゲームのコードが本書の「最適な方法」でプログラミングされているかを確認してみましょう。
書誌情報
- 著者: アル・スウェイガート, 岡田佑一
- 発行日: 2022-02-12 (紙書籍版発行日: 2022-02-12)
- 最終更新日: 2022-02-12
- バージョン: 1.0.0
- ページ数: 384ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: マイナビ出版
対象読者
著者について
アル・スウェイガート
シアトル在住のソフトウェア開発者、技術書の著者。お気に入りのプログラミング言語はPython。Python のオープンソース・モジュールをいくつか開発している。彼の他の著書物については、クリエイティブ・コモンズ・ライセンスのもと、彼のウェブサイト(https://www.inventwithpython.com/)より自由に入手可能。愛猫Zophie(ゾフィー)の体重は約5kg。
主な著書に『退屈なことはPython にやらせよう ― ノンプログラマーにもできる自動化処理プログラミング』(オライリー・ジャパン、2017年)、『Python でいかにして暗号を破るか』(ソシム、2020年)がある。
岡田佑一
フリーランスのプログラマー。学習塾の経営を行いながら教育・研究アプリの開発を行う。
訳書に『世界で闘うプログラミング力を鍛える本 ― コーディング面接189 問とその解法』(マイナビ出版、2017 年)、執筆協力に『プログラミングコンテスト攻略のためのアルゴリズムとデータ構造』(マイナビ出版、2015 年)がある。
目次
PART 1 基本準備から始めよう
1章 エラーの取り扱いと質問の仕方
- 1.1 エラーメッセージの読み方
- 1.2 リンターでエラー予防
- 1.3 プログラミングの質問方法
2章 環境設定とコマンドライン
- 2.1 ファイルシステム
- 2.2 プログラムとプロセス
- 2.3 コマンドライン
- 2.4 環境変数とPATH
- 2.5 コマンドラインを使わずにPython プログラムを実行する
- 2.6 まとめ
PART 2 Python に適した開発方法・ツール・テクニック
3章 Black を使ってコードフォーマットを整える
- 3.1 こんなコードは嫌われる
- 3.2 スタイルガイドとPEP 8
- 3.3 スペース(空白文字)の使い方
- 3.4 空行の挿入
- 3.5 妥協しないコードフォーマットツール:Black
- 3.6 まとめ
4章 わかりやすいネーミング
- 4.1 ケーススタイル
- 4.2 PEP 8の命名規則
- 4.3 適度な名前の長さ
- 4.4 検索しやすい名前
- 4.5 ジョーク、ダジャレ、文化的な言及を避ける
- 4.6 ビルトイン(組み込み)の名前を上書きしない
- 4.7 最悪な変数名
- 4.8 まとめ
5章 怪しいコード臭
- 5.1 重複したコード
- 5.2 マジックナンバー
- 5.3 コメントアウトされたコードとデッドコード
- 5.4 プリントデバッグ
- 5.5 数字付きの変数名
- 5.6 関数やモジュールにすべきクラス
- 5.7 内包表記の中に内包表記がある
- 5.8 空の例外ブロックと不十分なエラーメッセージ
- 5.9 コード臭の迷信
- 5.10 まとめ
6章 パイソニックなコードを書こう
- 6.1 Python の禅
- 6.2 インデント愛を伝えたい
- 6.3 誤用の多い構文
- 6.4 文字列のフォーマット
- 6.5 リストのコピー
- 6.6 パイソニックな辞書の使い方
- 6.7 条件式:Python の「醜い」三項演算子
- 6.8 変数の扱い
- 6.9 まとめ
7章 プログラミングの専門用語
- 7.1 定義
- 7.2 混同されやすい用語
- 7.3 まとめ
- 7.4 参考資料
8章 Python のよくある落とし穴
- 8.1 ループ時にリストの追加・削除をしない
- 8.2 copy.copy() やcopy.deepcopy() を使わずに可変型の値をコピーしない
- 8.3 デフォルト引数に可変値を使用しない
- 8.4 文字列連結で文字列を作らない
- 8.5 sort() にアルファベット順のソートを期待してはいけない
- 8.6 浮動小数点数が厳密であるとは限らない
- 8.7 != 演算子を連鎖させない
- 8.8 単要素のタプルではコンマを忘れずに
- 8.9 まとめ
9章 Python の要注意コード
- 9.1 256は256だけれども257は257ではない理由
- 9.2 文字列のインターニング
- 9.3 なんちゃってインクリメント・デクリメント演算子
- 9.4 組み込み関数all()
- 9.5 ブール値は整数値
- 9.6 複数種類の演算子の連結
- 9.7 空も飛べちゃうPython!?
- 9.8 まとめ
10章 よい関数の書き方
- 10.1 関数名
- 10.2 関数サイズのトレードオフ
- 10.3 関数のパラメーターと引数
- 10.4 関数型プログラミング
- 10.5 戻り値は常に同じデータ型であること
- 10.6 例外を発生させる? それともエラーコードを返す?
- 10.7 まとめ
11章 コメント、docstring、型ヒント
- 11.1 コメント
- 11.2 docstring
- 11.3 型ヒント
- 11.4 まとめ
12章 Git でプロジェクト管理
- 12.1 Git のコミットとリポジトリー
- 12.2 cookiecutter を使って新しいPython プロジェクトを作成する
- 12.3 Git のインストール
- 12.4 Git を使う手順
- 12.5 コンピューター上にGit リポジトリーを作成する
- 12.6 コミットログの表示
- 12.7 古い変更点の復元
- 12.8 GitHub とgit push コマンド
- 12.9 まとめ
13章 パフォーマンスの測定とオーダー記法
- 13.1 timeit モジュール
- 13.2 cProfile プロファイラー
- 13.3 オーダー記法について
- 13.4 オーダー記法で表す計算量
- 13.5 コードの計算量を決定する
- 13.6 まとめ
14章 プロジェクトの実践
- 14.1 ハノイの塔
- 14.2 四目並べ
- 14.3 まとめ
PART 3 オブジェクト指向のPython
15章 オブジェクト指向プログラミングとクラス
- 15.1 事例から学ぶ:書式への入力
- 15.2 クラスからオブジェクトを作成する
- 15.3 シンプルなクラスWizCoin の作成
- 15.4 type() 関数と__qualname__ 属性
- 15.5 非オブジェクト指向とオブジェクト指向:三目並べの例
- 15.6 実社会でのクラス設計は難しい
- 15.7 まとめ
16章 オブジェクト指向プログラミングと継承
- 16.1 継承の仕組み
- 16.2 isinstance() 関数とissubclass() 関数
- 16.3 クラスメソッド
- 16.4 クラス属性
- 16.5 静的メソッド
- 16.6 クラスメソッド・クラス属性・静的メソッドを使うタイミング
- 16.7 オブジェクト指向の用語集
- 16.8 継承を使わない場合
- 16.9 多重継承
- 16.10 メソッド解決順序
- 16.11 まとめ
17章 パイソニックなオブジェクト指向:プロパティとダンダーメソッド
- 17.1 プロパティ
- 17.2 ダンダーメソッド
- 17.3 まとめ