プロフェッショナルPython ソフトウェアデザインの原則と実践(インプレス) [電子書籍]
    • プロフェッショナルPython ソフトウェアデザインの原則と実践(インプレス) [電子書籍]

    • ¥3,300660 ゴールドポイント(20%還元)
    • すぐ読めます
100000086601480153

プロフェッショナルPython ソフトウェアデザインの原則と実践(インプレス) [電子書籍]

Dane Hillard(著者)武舎 広幸(著者)
価格:¥3,300(税込)
ゴールドポイント:660 ゴールドポイント(20%還元)(¥660相当)
フォーマット:
専用電子書籍リーダアプリ「Doly」が必要です。無料ダウンロード
出版社:インプレス
公開日: 2021年11月16日
すぐ読めます。
お取り扱い: のお取り扱い商品です。
ご確認事項:電子書籍リーダーアプリ「Doly」専用コンテンツ
こちらの商品は電子書籍版です

プロフェッショナルPython ソフトウェアデザインの原則と実践(インプレス) の 商品概要

  • クリーンで柔軟性の高いプログラムを開発できる。
    プロの品質を実現するデザイン手法を多面的に解説。

    <抽象化、カプセル化、パフォーマンス、テスト、拡張性と柔軟性、
    クラスの継承、疎結合、リファクタリング、デザインパターン .etc>

    プログラマーが考慮すべきソフトウェアデザインのアプローチとして、
    さまざまな手法がこれまで登場し発展してきました。

    たとえば、1960年代の構造化プログラミング以降で発展した「関心の分離」や「抽象化」、
    オブジェクト指向の中心概念の1つ「カプセル化」などが挙げられます。
    これらは、いずれもソフトウェアの開発/運用をより容易にし、拡張性・保守性を高めるものです。

    本書では、それらのアプローチをどのように理解し、
    Pythonでどのように実践していけばよいのかを解説します。

    本書の内容を習得することで、初中級者はコーディングスキルを大きく向上させ、
    プロフェッショナルなプログラミングへの道を見通せるようになります。
    ベテランの開発者が最近のトレンドを押さえて昔の知識を更新するのにもよいでしょう。

  • 目次

    表紙
    例題コード・正誤表・商標などについて
    この本のマインドマップ
    はじめに
    本書について
    謝辞
    著者・翻訳者紹介
    第1部 ソフトウェアデザインとPython
    第1章 ソフトウェア開発とPython
    1.1 Pythonによる開発の優位性/1.1.1 「時代は変わる」/1.1.2 なぜPythonは好ましい言語か
    1.2 Pythonは教えやすい言語である
    1.3 デザインはプロセス
    1.3.1 ユーザーエクスペリエンス(UX)
    1.3.2 経験を活かす
    1.4 デザインがよりよいソフトウェアを作る/1.4.1 ソフトウェアデザインにおける考慮事項
    1.4.2 有機的なソフトウェア
    1.5 いつデザインに投資するべきか
    1.6 デザインは協働作業である/1.6.1 心構えとREPLの利用
    1.7 この本の使い方/1.8 まとめ
    第2部 ソフトウェアデザインの基礎
    第2章 関心の分離
    2.1 ネームスペース
    2.1.1 ネームスペースとimport文
    2.1.2 importの種類
    2.1.3 ネームスペースによる衝突の防止
    2.2 Pythonにおける分離の階層/2.2.1 関数
    2.2.2 実践課題
    2.2.3 クラス
    2.2.4 モジュール
    2.2.5 パッケージ
    2.3 まとめ
    第3章 抽象化とカプセル化
    3.1 抽象化/3.1.1 ブラックボックス化
    3.1.2 抽象化のレイヤー
    3.1.3 抽象化は単純化/3.1.4 分割が抽象化を可能にする
    3.2 カプセル化/3.2.1 Pythonにおけるカプセル化の機構
    3.2.2 Pythonにおけるプライバシー
    3.3 抽象化の実例
    3.3.1 リファクタリング
    3.4 プログラミングスタイルと抽象化/3.4.1 手続き型プログラミング
    3.4.2 関数型プログラミング
    3.4.3 宣言型プログラミング
    3.5 型と継承
    3.6 抽象化の良し悪し/3.6.1 アダプタの作成
    3.6.2 さらに賢く/3.7 まとめ
    第4章 パフォーマンスを考慮したデザイン
    4.1 時間と空間/4.1.1 計算量の複雑さ
    4.1.2 時間計算量/4.1.2.1 線形オーダー
    4.1.2.2 O(n2)の処理
    4.1.2.3 定数オーダー
    4.1.3 空間計算量/4.1.3.1 メモリ
    4.1.3.2 ディスク容量
    4.2 パフォーマンスとデータ型/4.2.1 定数オーダーのためのデータ型
    4.2.2 線形時間のデータ型/4.2.3 データ型ごとの空間計算量
    4.3 動作するものを作り、質を高め、高速化せよ/4.3.1 動作するものを作る/4.3.2 質を高める
    4.3.3 高速化
    4.4 ツール/4.4.1 timeit
    4.4.2 CPUプロファイリング
    4.5 実践課題
    4.6 まとめ
    第5章 ソフトウェアのテスト
    5.1 ソフトウェアテストとは/5.1.1 テストの目的
    5.1.2 機能テストの手順
    5.2 テストの種類/5.2.1 手動テスト/5.2.2 自動テスト
    5.2.3 検収テスト
    5.2.4 単体テスト
    5.2.5 統合テスト
    5.2.6 テストピラミッド
    5.2.7 リグレッションテスト
    5.3 アサーション
    5.4 unittestを用いたテスト/5.4.1 unittestを用いたテストの構成
    5.4.2 unittestを使ったテストの実行/5.4.3 unittestを使ったテストの記述
    5.4.4 unittestを使った統合テストの記述
    5.4.5 テストダブル(テスト代替)
    5.4.6 実践課題
    5.4.7 よいテスト/5.5 pytestを使ったテスト
    5.5.1 pytest実行時の構成/5.5.2 unittestからpytestへの変換
    5.6 機能テストを超えて/5.6.1 パフォーマンステスト
    5.6.2 ロードテスト
    5.7 テスト駆動開発/5.7.1 心構えの大切さ/5.7.2 TDDの「哲学」
    5.8 まとめ
    第3部 大規模システムへの応用
    第6章 「関心の分離」の実践
    6.1 コマンドベースのブックマークアプリケーション
    6.2 概要
    6.2.1 分離の効用(再確認)
    6.3 コードの構造
    6.3.1 パーシスタンス層
    6.3.1.1 データベースへの接続とクローズ/6.3.1.2 ステートメントの実行
    6.3.1.3 テーブルの生成
    6.3.1.4 レコードの追加
    6.3.1.5 アクションのスコープを限定するための節
    6.3.1.6 レコードの削除
    6.3.1.7 レコードの選択とソート
    6.3.2 ビジネスロジック層
    6.3.2.1 ブックマークテーブルの生成
    6.3.2.2 ブックマークの追加
    6.3.2.3 ブックマークのリスト
    6.3.2.4 ブックマークの削除/6.3.2.5 Barkの終了
    6.3.3 プレゼンテーション層
    6.3.3.1 データベースの初期化
    6.3.3.2 メニューの表示
    6.3.3.3 ユーザーからの入力
    6.3.3.4 画面のクリア
    6.3.3.5 アプリケーションループ
    6.4 まとめ
    第7章 拡張性と柔軟性
    7.1 拡張性の高いコードとは
    7.1.1 新機能の追加
    7.1.2 既存の機能の変更
    7.1.3 疎結合
    7.2 柔軟性を確保するためのソリューション/7.2.1 制御の反転
    7.2.2 インターフェイスの重視
    7.2.3 堅牢性原則
    7.3 Barkの拡張
    7.4 まとめ
    第8章 継承
    8.1 プログラミングにおいて継承の占める位置の変遷/8.1.1 「銀の弾」/8.1.2 階層構造の問題点
    8.2 プログラミングにおける継承の意味/8.2.1 継承は本当は何のためのものか
    8.2.2 置換可能性
    8.2.3 継承が使える理想的なケース/8.2.3.1 浅く狭い階層構造
    8.2.3.2 オブジェクトグラフの末端のサブクラス/8.2.3.3 サブクラスとスーパークラスのビヘイビアの関係
    8.2.3.4 課題
    8.3 Pythonにおける継承/8.3.1 型の検査
    8.3.2 スーパークラスへのアクセス/8.3.3 多重継承とメソッド解決順序
    8.3.4 抽象基底クラス
    8.4 Barkにおける継承の利用/8.4.1 抽象基底クラスの利用
    8.5 まとめ
    第9章 クラスや関数の軽量化
    9.1 関数・クラス・モジュールの適切な大きさは?/9.1.1 物理的サイズ
    9.1.2 提供する機能の数/9.1.3 コードの複雑さ/9.1.4 コードの複雑さの計測
    9.2 複雑度の低減/9.2.1 コンフィギュレーションの抽出
    9.2.2 関数の抽出
    9.3 クラスの分割/9.3.1 初期化
    9.3.2 クラスの抽出とフォワーディング
    9.4 まとめ
    第10章 疎結合の実現
    10.1 結合度/10.1.1 結合の状態
    10.1.2 密結合
    10.1.3 疎結合
    10.2 結合度の認識/10.2.1 機能羨望
    10.2.2 散弾銃手術
    10.2.3 抽象化の漏れ
    10.3 Barkの結合状態
    10.4 密結合への対処法
    10.4.1 ユーザーメッセージング
    10.4.2 ブックマークの永続性/10.4.3 実践課題
    10.5 まとめ
    第4部 これからどう学ぶか
    第11章 さらなる学びの題材
    11.1 デザインパターン
    11.1.1 Pythonにおけるデザインパターンの適用
    11.1.2 デザインパターン関連の用語
    11.2 分散システム
    11.2.1 分散システムにおける障害の原因/11.2.2 アプリケーションの状態の確認
    11.2.3 分散システム関連の用語/11.3 Pythonをより深く知る/11.3.1 Pythonのコードスタイル
    11.3.2 プログラミング言語の機能とパターン
    11.3.3 Python関連の用語/11.4 まとめ
    第12章 学習トピックの探索と記録
    12.1 これからを考える/12.1.1 計画立案
    12.1.2 計画の実行
    12.1.3 進歩の確認
    12.1.4 ここまでの道を振り返る
    12.1.5 終わりに
    12.2 まとめ
    付録A Pythonのインストール
    A.1 Pythonのバージョン/A.2 システムPython
    A.3 他のバージョンのインストール/A.3.1 公式Pythonのダウンロード
    A.3.2 Anacondaを使ったダウンロード/A.4 インストールの確認
    索引
    STAFF LIST
    奥付

プロフェッショナルPython ソフトウェアデザインの原則と実践(インプレス) の商品スペック

発行年月日 2021/11/16
Cコード 3055
出版社名 インプレス
本文検索
他のインプレスの電子書籍を探す
紙の本のISBN-13 9784295012634
ファイルサイズ 249.5MB
著者名 Dane Hillard
武舎 広幸
著述名 著者

    インプレス プロフェッショナルPython ソフトウェアデザインの原則と実践(インプレス) [電子書籍] に関するレビューとQ&A

    商品に関するご意見やご感想、購入者への質問をお待ちしています!