ISBN 9784839977405

きれいなPythonプログラミング : クリーンなコードを書くための最適な方法

きれいなPythonプログラミング : クリーンなコードを書くための最適な方法
出版社
マイナビ出版
刊行
2022-02

概要

Pythonコードの品質を道具と習慣の両輪で中級レベルに引き上げる

想定読者

Pythonの基礎は習得済みで、自分のコードを他者と共有できる水準に高めたい学習者・独学エンジニア

こんな人には向いていない

  • Pythonをこれから始める完全初心者には変数・制御フロー等の基礎説明が不足しており、入門書を先に読む必要がある
  • すでにチームでPylint・Blackを運用しコードレビューの基準を確立している現場エンジニアには既知の内容が多い
  • オブジェクト指向設計の深い議論やデザインパターンを求める読者には、OOP章は基礎的な内容にとどまる

読了後にできるようになること

  • BlackによるPEP8準拠の自動フォーマット整形をCI・エディタ連携で運用できる
  • enumerate・f-string・with文・辞書のget/setdefaultなど、ループや文字列処理をPythonicに書き直せる
  • コードスメル(怪しいコードの兆候)を語彙として持ち、レビュー時に具体的な問題点を指摘できる
  • 型ヒントとdocstringを使い、関数の意図と使い方を明示したドキュメント可能なコードを書ける
  • cProfileを使い性能ボトルネックを計測し、Big O記法で計算量の違いを説明できる
  • Gitを使ったバージョン管理と、コーディングインタビューで頻出するアルゴリズム問題の構造を理解できる

本書のキー概念(章解説)

  • 第 1 章 エラーの取り扱いと質問の仕方 — 技術的な問いを正確に言語化する習慣は、開発者としての自律性に直結する。軽視されがちだが実務基礎として重要
  • 第 2 章 環境設定とコマンドライン — CLIの基本操作と開発環境構築。ツールを自分でセットアップできる状態にする前提章
  • 第 3 章 Blackを使ってコードフォーマットを整える — 自動整形ツールBlackの導入と活用。VS Code連携も紹介されており、チーム運用の雛形になる
  • 第 4 章 わかりやすいネーミング — 変数・関数・クラスの命名原則。コードレビューで最も頻繁に指摘される領域の体系的な整理
  • 第 5 章 怪しいコード臭 — コードスメルを語彙として習得する章。問題を指摘できない段階から脱するための実践ボキャブラリー
  • 第 6 章 パイソニックなコードを書こう — Qiita読者から最も評価が高かった章。enumerate・with・f-string・defaultdictなど必携イディオムを網羅
  • 第 7 章 プログラミングの専門用語 — ミュータブル/イミュータブル・フォールスルー等の概念を整理。チームでの技術会話の解像度を上げる
  • 第 8 章 Pythonのよくある落とし穴 — ループ中の変更・オブジェクトコピー等の罠を扱う。Raymond Hettingerの知見など現場の声を交えた構成
  • 第 9 章 Pythonの要注意コード — 副作用やグローバル変数の扱いなど、見えにくいバグの温床となるパターンへの対処
  • 第 10 章 よい関数の書き方 — 関数設計の原則。単一責任・引数設計・返り値の明示など、コードの読みやすさを左右する中心的な章
  • 第 11 章 コメント、docstring、型ヒント — ドキュメント可能なコードの書き方。型ヒントの実務的な使い方まで踏み込んでいる
  • 第 12 章 Gitでプロジェクト管理 — バージョン管理の基礎。単独の開発習慣としてGitを定着させるきっかけとなる章
  • 第 13 章 パフォーマンスの測定とオーダー記法 — cProfileによるボトルネック計測とBig O記法の解説。面接対策としても、実務の計算量判断にも使える
  • 第 14 章 プロジェクトの実践 — ハノイの塔・四目並べの2プロジェクト制作。本書全体の学習事項を実装で確認するまとめ章
  • 第 15 章 オブジェクト指向プログラミングとクラス — OOPの基本概念をPythonで実装する入門。既存コードをクラスで整理する実践例を含む
  • 第 16 章 オブジェクト指向プログラミングと継承 — 継承・ポリモーフィズムの基礎。過度な継承の弊害にも触れており、設計判断の参考になる
  • 第 17 章 パイソニックなオブジェクト指向:プロパティとダンダーメソッドstrrepr・プロパティデコレーターなどPython固有のOOP表現。本書後半の到達点となる章

ハイライト

  • 特に、第6章にある『パイソニックなコードを書こう』が非常に勉強になった。enumerate()やwith文、f-string、辞書のget/setdefaultなど、時間と労力を削減することができる書き方が詰まっている(614いいねを集めた読書レビューで最も支持された箇所。中級への橋渡しとなる具体的イディオムが凝縮している点が本書の固有価値を最も端的に示している)
  • 本書ではきれいなコードを書くために、コマンドライン、コード整形、型チェッカー、リンター、バージョン管理などのその道のプロが利用しているツールを詳解し、Pythonプログラミングスキルを向上させる方法を学びます(ツールチェーンと言語習慣を同時に扱う本書の構成方針が端的に表れている。単なる文法解説でなくプロの開発フローを渡す意図が明確)

外部からの言及

  • 入門を終えた学習者が『次に何を学ぶか』という問いへの答えとして本書を参照するパターンが目立つ。Black・enumerate・f-stringなど具体的なイディオムを列挙した実践レビューが614いいねを集めており、中級への橋渡し書として一定の評価を得ている(qiita)
  • 基礎知識を持つプログラマーが自分の書き方を検証・見直すための書として活用されており、コードスメルやミュータブル/イミュータブルの扱い、cProfileによるプロファイリングなど、独学では体系化しにくい領域をまとめて整理できる点が評価されている(qiita)

編集メモ

Qiita言及2件・累計likes 618(うち1件が614 likes)。記事数は基準の5件に満たないが、inetcpl記事は高い反響を得ており読者需要は存在する。Rakutenランキング情報は取得できず。Python中級入門書のカテゴリでは競合が多く、補完的な選択肢として位置づける

読む前に押さえておきたいこと

  • Pythonの変数・条件分岐・ループ・関数の基本を一通り書いた経験
  • テキストエディタまたはIDEでPythonファイルを実行できる開発環境の準備
  • コマンドライン(ターミナル)でディレクトリ移動・ファイル操作ができる基本操作の習得

学習のコツ

  • 第6章(パイソニックなコード)は単独で読んでも価値が高い。手元のコードにenumerate・f-string・defaultdictを適用しながら読むと定着が速い
  • 第3章(Black)は環境構築直後に実践する。エディタへの連携設定まで済ませてから他の章を読むと、コード例の整形が自動で揃い視認性が上がる
  • 第8章(よくある落とし穴)と第9章(要注意コード)は過去に書いたコードを手元に置きながら読むと、自分のコードに潜む問題を発見できる
  • 第14章(プロジェクト実践)のゲーム実装は省略せずに写経する。1〜13章で習得した書き方が実際に機能するか確かめる実験の場として機能する
  • 第15〜17章(OOP)は他の章と独立して進められる。クラス設計を先に学びたい場合は第2章の後に飛んでも支障はない
出版社による内容紹介

自分の書いたコードに自信を持てるプログラマーになろう [誰にでも読みやすい 広く公開できるコードを書こう] 本書ではきれいなコード(Clean Code)を書くために、コマンドライン、コード整形、型チェッカー、リンター、バージョン管理 などのその道のプロが利用しているツールを詳解し、Pythonプログラミングスキルを向上させる方法を学びます。 [Clean Codeを実践するツールを活用できるようになろう] 開発環境のセットアップ、変数の命名方法、読みやすさ向上のための最適な方法 を紹介します。 [オブジェクト指向設計を理解し アルゴリズムを活用しよう] コードの公開に必要となるドキュメントの作成や書式の統一、またパフォーマンスの測定、オブジェクト指向プログラミング、コーディングインタビューで一般的に使用されるオーダー記法(Big O)について説明します。 本書の後半では2つのコマンドラインのゲーム「ハノイの塔(ロジックパズル)」と「四目並べ(タイル落としゲーム)」を作りますが、書いたゲームのコードが本書の「最適な方法」でプログラミングされているかを確認してみましょう。 PART 1 基本準備から始めよう 1章 エラーの取り扱いと質問の仕方 2章 環境設定とコマンドライン PART 2 Python に適した開発方法・ツール・テクニック 3章 Black を使ってコードフォーマットを整える 4章 わかりやすいネーミング 5章 怪しいコード臭 6章 パイソニックなコードを書こう 7章 プログラミングの専門用語 8章 Python のよくある落とし穴 9章 Python の要注意コード 10章 よい関数の書き方 11章 コメント、docstring、型ヒント 12章 Git でプロジェクト管理 13章 パフォーマンスの測定とオーダー記法 14章 プロジェクトの実践 PART 3 オブジェクト指向のPython 15章 オブジェクト指向プログラミングとクラス 16章 オブジェクト指向プログラミングと継承 17章 パイソニックなオブジェクト指向:プロパティとダンダーメソッド

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。