書籍概要

VTuberサプーが教える! Python 初心者のコード/プロのコード

著者
発売日
更新日

概要

  • 「自分が書いたコードは,仕事で通用するか不安……」
  • 「動くものは作れる。そこからどう上達すればいい?」

そんな悩みを抱えるあなたに,VTuberサプーがPythonでのコードの書きかたをお教えします! 本書は,コードの見た目の整えかたから,読みやすさ,シンプルさ,安全性……などを意識した「プロ」の知識とテクニックをまとめました。中の人のエンジニア経験から得た知見をもとに解説しているので,実際に現場でちゃんと役立つコードに改善できます。この1冊で,自分の書くコードをワンランクアップさせましょう!

こんな方におすすめ

  • エンジニアへの転職を見据えてPythonを勉強中の人
  • よりよいコードの書きかたを知りたい人

サンプル

samplesamplesamplesamplesample

目次

第1章 コードは動けばなんでも同じ?

1-1 「動けばどんなコードでもいい」から卒業しよう

  • 1-1-1 コードの読みやすさとバグの関係
  • 1-1-2 良いコードが書けると最終的に「楽」になる

1-2 良いコードとはどんなコードなのか?

  • 1-2-1 可読性
  • 1-2-2 安全性
  • 1-2-3 保守性
  • 1-2-4 効率性
  • 1-2-5 良いコードの基準は複合的な関係

1-3 Pythonらしいコードを書こう

  • 1-3-1 コーディング規約
  • 1-3-2 標準で用意されてる機能を活用する
  • 1-3-3 グルー言語としてのPython

1-4 コードの書きかたにはトレンドがある

  • 1-4-1 手続き型プログラミング
  • 1-4-2 オブジェクト指向プログラミング
  • 1-4-3 関数型プログラミング
  • 1-4-4 Pythonとトレンド

1-5 モチベーションを保ちながらスキルアップする方法

  • 1-5-1 手を動かすことが大切
  • 1-5-2 成長に不安を感じたら

第2章 まずはコードの見た目を整えよう

2-1 コードのお作法「PEP8」の要点をおさえる

  • 2-1-1 PEP8をすべて覚える必要はない!
  • 2-1-2 インデント
  • 2-1-3 空行
  • 2-1-4 スペース
  • 2-1-5 1行の長さ
  • 2-1-6 チームのルール

2-2 コードフォーマッターblackで自動整形してみよう

  • 2-2-1 コードフォーマッターのポイント
  • 2-2-2 コードフォーマッターblackをVSCodeに設定する
  • 2-2-3 コードフォーマッターblackをPyCharmに設定する

第3章 読みやすいコードに改善するテクニック

3-1 コードは適切なサイズで分割しよう

  • 3-1-1 ブロックに分けると読みやすい
  • 3-1-2 関数に切り出す
  • 3-1-3 関数切り出しのコツ
  • 3-1-4 モジュールに切り出す

3-2 スッキリしたif文を書くコツ

  • 3-2-1 複数の比較演算子を使った条件式をまとめる
  • 3-2-2 条件式の左側は調査対象の変数で統一する
  • 3-2-3 辞書オブジェクトを使うとif文は不要になることがある
  • 3-2-4 複雑な条件は関数にする
  • 3-2-5 早期リターンを使う

3-3 ネストが深くなりすぎないようにしよう

  • 3-3-1 なぜネストが深くなってしまうのか
  • 3-3-2 深いネスト部分を関数で切り出す
  • 3-3-3 リスト内包表記や高階関数を使う
  • 3-3-4 データ構造を工夫する
  • 3-3-5 早期リターンでネストを浅くする

3-4 変数名・関数名・クラス名の命名にも注力する!

  • 3-4-1 PEP8の命名規則
  • 3-4-2 「名は体を表す」名前と実態を一致させる
  • 3-4-3 意味を持たない名前は極力避ける
  • 3-4-4 対になる対義語・反対語を使う
  • 3-4-5 ブール型はTrue/Falseがわかる名前にする

3-5 要所にわかりやすいコメントを残すには

  • 3-5-1 コメントの箇所と量には注意
  • 3-5-2 Docstringで説明文を書く
  • 3-5-3 Docstringの書きかたをマスターする

第4章 Python便利機能でシンプルなコードを書く

4-1 for文で活躍する組み込み関数

  • 4-1-1 enumerate関数でインデックス番号を自動生成
  • 4-1-2 zip関数で複数リストを同時に処理
  • 4-1-3 rangeで連続した数値をかんたんに作る

4-2 よく使う標準ライブラリ

  • 4-2-1 osで環境変数の情報を取得
  • 4-2-2 datetimeで日時を操作
  • 4-2-3 pathlibでファイル・フォルダを操作
  • 4-2-4 jsonでJSON形式文字列を辞書オブジェクトに変換

4-3 スッキリしたコードが書けるPython便利機能

  • 4-3-1 リスト内包表記でリスト作成をシンプルにする
  • 4-3-2 三項演算子でif文を短縮
  • 4-3-3 f文字列でかんたんに変数を埋め込む

第5章 プロが意識する安全性が高いコードとは?

5-1 変数のスコープを意識しよう

  • 5-1-1 スコープを理解していないことで起きるエラー
  • 5-1-2 for文の中で定義された値は外でも有効
  • 5-1-3 関数の中から関数の外の変数にアクセスができる

5-2 ミュータブル/イミュータブルの違いに要注意

  • 5-2-1 ミュータブル/イミュータブルとは?
  • 5-2-2 ミュータブルなオブジェクトのイコールによる代入は避ける
  • 5-2-3 ミュータブルなオブジェクトの引数に注意する
  • 5-2-4 ミュータブルなオブジェクトの引数にデフォルト値を設定するときの罠

5-3 「副作用」がないコードを書くために

  • 5-3-1 副作用とは?
  • 5-3-2 副作用がある関数はバグの温床

5-4 インプレースかどうかを意識しよう

  • 5-4-1 インプレースとは?
  • 5-4-2 違いを知らずにバグを仕込んでしまうことも
  • 5-4-3 それぞれのメリットと使い分け

5-5 型ヒントで可読性と安全性を高める

  • 5-5-1 型ヒントはバグを生みにくくする
  • 5-5-2 型ヒントの基本的な使いかた
  • 5-5-3 柔軟な型ヒント
  • 5-5-4 関数以外で使う便利なケース
  • 5-5-5 静的型チェッカーを併用する

5-6 安全性の要! 例外処理を書こう

  • 5-6-1 例外処理を書いて次のアクションを促す
  • 5-6-2 例外の送出で悪影響が広がる事態を防ぐ
  • 5-6-3 例外はエスカレーションできる
  • 5-6-4 例外処理を書くべき代表的な箇所

5-7 テストコード以外でも使えるassert文

  • 5-7-1 assert文の基本的な使いかた
  • 5-7-2 assert文を使うケース

5-8 ログを出力しよう

  • 5-8-1 なぜログを出力するのか?
  • 5-8-2 loggingライブラリを使う
  • 5-8-3 例外発生時にエラーメッセージをログに出力する
  • 5-8-4 ログの出力フォーマットを指定する
  • 5-8-5 ログの設定ファイルを作成する

第6章 中級者への壁! クラスとオブジェクトに慣れる

6-1 クラスとはなにか? 概念を理解しよう

  • 6-1-1 Pythonはほとんどのものがオブジェクト
  • 6-1-2 クラスはオブジェクトを分類したもの
  • 6-1-3 処理もいっしょにまとめてみよう
  • 6-1-4 クラス設計の難しさ
  • 6-1-5 selfとはオブジェクト自身のこと

6-2 dataclassでデータ格納に特化したクラスを作る

  • 6-2-1 dataclassの基本とメリット
  • 6-2-2 インスタンス変数にデフォルト値を設定する
  • 6-2-3 「==」での比較は値の一致でTrueになる
  • 6-2-4 frozen=Trueで変更不可能なオブジェクトを作る
  • 6-2-5 asdictで辞書オブジェクトに変換する

6-3 オブジェクト指向を正しく理解する

  • 6-3-1 オブジェクトを使う=オブジェクト指向ではない
  • 6-3-2 カプセル化
  • 6-3-3 継承
  • 6-3-4 ポリモーフィズム

第7章 バグがあるかも? テストコードを書こう!

7-1 テストコードとはなにか?

  • 7-1-1 アプリケーション開発におけるテストとは?
  • 7-1-2 テストコードを書くメリット

7-2 pytestを使ってテストコードを書いてみよう

  • 7-2-1 pytestの使いかた
  • 7-2-2 fixtureを使って事前処理・事後処理を追加
  • 7-2-3 自作関数をモックに置き換える
  • 7-2-4 外部ライブラリの関数をモックに置き換える
  • 7-2-5 例外発生を確認するためのテスト
  • 7-2-6 テストコードが書きやすいコードとは

第8章 自力でエラーを解消するために

8-1 エラーを解消するためのヒント

  • 8-1-1 はじめの一歩! エラーメッセージを読もう
  • 8-1-2 デバッガーを使ってなにが想定と違うか確認しよう
  • 8-1-3 ネットで情報収集をしよう
  • 8-1-4 AIを活用しよう

8-2 YouTubeの質問で多いエラー

  • 8-2-1 未定義のオブジェクトへのアクセス
  • 8-2-2 未インストールのライブラリ使用
  • 8-2-3 モジュールと同一名のファイル
  • 8-2-4 パスの指定誤り

巻末付録 厳選! プログラミング学習に役立つサービス

サポート

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2024年11月11日最終更新)

P.068 「[Before]True/Falseの示す意味がわかりづらい関数名」コード

p068-before_syusei1.png

p068-before_syusei2.png

P.068 「[After]True/Falseの示す意味がわかりやすい関数名」コード

p068-after_syusei1.png

p068-after_syusei2.png

P.090 「●現在の日時を取得する」上から1行目

datetimeモジュールには日付を扱うdataクラスと、日付と時間を扱うdatetimeクラスがあります。
datetimeモジュールには日付を扱うdateクラスと、日付と時間を扱うdatetimeクラスがあります。

P.148 「■型の表記」コード中の上から3つ目の引き出し線

flot型
float型

P.169 上から2つ目のコードタイトル

■assart文とraise文の比較
assert文とraise文の比較

P.170 上から2つ目のコードタイトル

[After]assart文を使った場合
[After]assert文を使った場合

P.208 6-2-3項 上から2行目

インスタンス変数がすべて同じ値であれば「Ture」になることです。
インスタンス変数がすべて同じ値であれば「True」になることです。

P.242 上から3つ目のコードタイトル

■tests/test_module_1.py:fixtuer(データベース接続・切断)
■tests/test_module_1.py:fixture(データベース接続・切断)

商品一覧