おすすめプログラミング関連書籍

Win32 API のおすすめ書籍

『できるプログラマになるための―APIで学ぶWindows徹底理解』

Win32 API の定番書籍

『プログラミングWindows第5版(上)Win32 APIを扱う開発者のための決定版!』
『プログラミングWindows第5版(下)Win32 APIを扱う開発者のための決定版!』
『Win32 APIオフィシャルリファレンス改訂3版 グラフィック/GUI編』
『Win32 APIオフィシャルリファレンス改訂3版 Windowsサービス/ネットワーク編』
『Advanced Windows 第5版 上』
『Advanced Windows 第5版 下』

C言語 のおすすめ書籍

『改訂新版 Cプログラミング診断室―さらに美しく健康的なプログラムのために』

Ruby のおすすめ書籍

『初めてのRuby』

WideStudio のおすすめ書籍

『プログラミングWideStudio―オープンソース、マルチプラットフォーム対応統合開発環境』

プログラミング一般 のおすすめ書籍

『UNIXという考え方―その設計思想と哲学』

洋書関連の情報

"For Dummies"シリーズ



『できるプログラマになるための―APIで学ぶWindows徹底理解』

 Win32 APIを使いこなせばWindowsプログラミングの幅が一気に広がります。Win32 APIについて幅広く知りたいが、ペゾルド本はちょっと荷が重いという人におすすめ。

 収録されている知識は、C/C++でのプログラミングはもちろんHSPやRubyなどスクリプト言語でのプログラミングにも十分活用できる。

(目次)

第1部:OSの仕組みを学ぶ

  • Part1 OSの動作を根本から理解する
  • Part2 OSの3大機能を詳しく学ぶ
  • Part3 ユーザー入力を扱う仕組みを知る

第2部:APIから知るWindowsの仕組み

  • Part1 Windowsアプリケーションの構造を理解する
  • Part2 ウィンドウについて詳しく学ぼう
  • Part3 ウィンドウ・メッセージをとことん理解する
  • Part4 Windowsのコンソールを使いこなす
  • Part5 ファイル・アクセスを細かく制御する
  • Part6 Windowsのメモリー管理を理解する
  • Part7 Windowsのプロセスとスレッドを学ぶ
  • Part8 複数スレッドの間で同期をとる
  • Part9 作ってわかるDLLの動作原理
  • Part10 複数プロセスでデータを共有する
  • Part11 実行ファイルの構造を理解する
  • Part12 Windowsのアクセス制御の仕組みを理解する
  • Part13 「サービス」を作るのは意外に簡単
  • Part14 プロセス間通信を使ってデータを受け渡す
  • Part15 デバッガはなぜデバッグができるのか
  • Part16 Unicodeを利用して複数の言語に対応する
  • Part17 フォントはけっこう奥が深い
  • Part18 構造化例外処理のメカニズムを学ぶ
  • Part19 非同期I/O処理を利用して効率よくファイルにアクセスする
  • Part20 デバイス・ドライバとプラグ・アンド・プレイの仕組みを学ぶ
  • Part21 デバイス・ドライバの作成に挑戦


 『できるプログラマになるための―APIで学ぶWindows徹底理解』

『プログラミングWindows第5版(上)Win32 APIを扱う開発者のための決定版!』

(目次)

基礎

  • はじめに
  • Unicode入門
  • Windowsとメッセージ
  • テキストの入力
  • 描画の基礎
  • キーボード
  • マウス
  • タイマ
  • コントロール
  • メニュー、その他のリソース
  • ダイアログボックス
  • クリップボード

グラフィックス

  • プリンタの使い方
  • ビットマップとBitBlt

『プログラミングWindows第5版(上)Win32 APIを扱う開発者のための決定版!』

『プログラミングWindows第5版(下)Win32 APIを扱う開発者のための決定版!』

(目次)

グラフィックス

  • 続き・DIB
  • パレットマネージャ
  • テキストとフォント
  • メタファイル

高度なトピック

  • MDI
  • マルチタスクとマルチスレッド
  • DLL
  • サウンドとミュージック
  • Internetを少し

『プログラミングWindows第5版(下)Win32 APIを扱う開発者のための決定版!』

『Win32 APIオフィシャルリファレンス改訂3版 グラフィック/GUI編』

『Win32 APIオフィシャルリファレンス改訂3版 Windowsサービス/ネットワーク編』

 ほぼすべてと言っていい数のAPIのリストが機能、引数、戻り値の説明とともに掲載されている。

『Advanced Windows 第5版 上』

(目次)

第1部 必須の基礎知識

第1章 エラー処理

  • ユーザー定義のエラーコード
  • ErrorShowサンプルアプリケーション

第2章 文字と文字列の操作

  • 文字エンコーディング
  • ANSIとUnicodeの文字データ型と文字列データ型
  • WindowsのUnicode関数とANSI関数
  • CランタイムライブラリのUnicode関数とANSI関数
  • Cランタイムライブラリの安全な文字列関数
  • Unicodeを使用すべき理由
  • 文字と文字列の推奨される操作方法
  • UnicodeとANSI間の文字列の変換

第3章 カーネルオブジェクト

  • カーネルオブジェクトの概要
  • プロセスのカーネルオブジェクトハンドルテーブル
  • プロセス間でのカーネルオブジェクトの共有

第2部 作業を遂行する

第4章 プロセス

  • 初めてのWindowsアプリケーションの作成
  • CreateProcess関数
  • プロセスの終了
  • 子プロセス
  • 標準ユーザーとして実行する管理者

第5章 ジョブ

  • ジョブのプロセスでの制限の設定
  • ジョブへのプロセスの配置
  • ジョブに含まれているすべてのプロセスの終了
  • ジョブの通知
  • Job Labサンプルアプリケーション

第6章 スレッドの基礎

  • スレッドを作成する状況
  • スレッドを作成しない状況
  • 初めてのスレッド関数の作成
  • CreateThread関数
  • スレッドの終了
  • スレッドの仕組み
  • C/C++ランタイムライブラリについて
  • IDの認識

第7章 スレッドのスケジューリング、優先度、親和性

  • スレッドの保留と再開
  • プロセスの保留と再開
  • スリープ
  • 別のスレッドへの切り替え
  • ハイパースレッドCPUでの別のスレッドへの切り替え
  • スレッドの実行時間
  • CONTEXT構造体の考察
  • スレッドの優先度
  • 優先度クラスの概要
  • プログラミングの優先度
  • 親和性

第8章 ユーザーモードでのスレッドの同期

  • 不可分のアクセス:インターロック関数
  • キャッシュライン
  • 高度なスレッドの同期
  • クリティカルセクション
  • SRWLock
  • 条件変数

第9章 カーネルオブジェクトによるスレッドの同期

  • 待機関数
  • 待機の完了の副作用
  • イベントカーネルオブジェクト
  • 待ち受けタイマーカーネルオブジェクト
  • セマフォカーネルオブジェクト
  • ミューテックスカーネルオブジェクト
  • スレッド同期オブジェクトの一覧表
  • その他のスレッド同期関数

第10章 同期デバイスI/Oと非同期デバイスI/O

  • デバイスのオープンとクローズ
  • ファイルデバイスの操作
  • 同期デバイスI/Oの実行
  • 非同期デバイスI/Oの基礎
  • I/Oリクエスト完了通知の受け取り

第11章 Windowsスレッドプール

  • シナリオ1:非同期の関数呼び出し
  • シナリオ2:一定間隔での関数呼び出し
  • シナリオ3:1つのカーネルオブジェクトがシグナル状態になったときの関数の呼び出し
  • シナリオ4:非同期I/Oリクエストの完了時の関数呼び出し
  • コールバック終了アクション

第12章 ファイバ

  • ファイバの操作

『Advanced Windows 第5版 上』

『Advanced Windows 第5版 下』

(目次)

第3部 メモリ管理

第13章 Windowsメモリアーキテクチャ

  • プロセスの仮想アドレス空間
  • 仮想アドレス空間のパーティション分割
  • アドレス空間内のリージョン
  • リージョン内での物理ストレージのコミット
  • 物理ストレージとページングファイル
  • 保護属性
  • メモリアーキテクチャのまとめ
  • データアラインメントの重要性

第14章 仮想メモリの探究

  • システム情報
  • 仮想メモリの状態
  • NUMAマシンでのメモリ管理
  • アドレス空間の状態

第15章 カスタムアプリケーションでの仮想メモリの使用

  • アドレス空間でのリージョンの予約
  • 予約されたリージョンでのストレージのコミット
  • リージョンの予約とストレージのコミットの同時実行
  • 物理ストレージをコミットする状況
  • 物理ストレージのコミット解除とリージョンの解放
  • 保護属性の変更
  • 物理ストレージの内容のリセット
  • Address Windowing Extension

第16章 スレッドのスタック

  • C/C++ランタイムライブラリのスタックチェック関数
  • Summationサンプルアプリケーション

第17章 メモリマップファイル

  • メモリマップ実行可能ファイルとDLL
  • メモリマップデータファイル
  • メモリマップファイルの使用
  • メモリマップファイルを使用した大きなファイルの処理
  • メモリマップファイルと一貫性
  • メモリマップファイルのベースアドレスの指定
  • メモリマップファイルの実装上の詳細
  • メモリマップファイルを使用したプロセス間でのデータ共有
  • ページングファイルから作成されるメモリマップファイル
  • 部分的にコミットされたメモリマップファイル

第18章 ヒープ

  • プロセスのデフォルトヒープ
  • 追加のヒープを作成する理由
  • 追加のヒープを作成する方法
  • その他のヒープ関数

第4部 ダイナミックリンクライブラリ

第19章 DLLの基礎

  • DLLとプロセスのアドレス空間
  • 全体像

第20章 DLLの高度なテクニック

  • 明示的なDLLモジュールのロードとシンボルのリンク
  • DLLのエントリポイント関数
  • DLLの遅延読み込み
  • 関数フォワーダ
  • 既知のDLL
  • DLLリダイレクト
  • モジュールのベースアドレスの変更(リベース)
  • モジュールのバインディング

第21章 スレッドローカルストレージ

  • 動的TLS
  • 静的TLS

第22章 DLLインジェクションとAPIフック

  • DLLインジェクション:例
  • レジストリを使用したDLLのインジェクト
  • Windowsフックを使用したDLLのインジェクト
  • リモートスレッドを使用したDLLのインジェクト
  • 「トロイの木馬」DLLによるDLLのインジェクト
  • デバッガとしてのDLLのインジェクト
  • CreateProcess関数によるコードのインジェクト
  • APIフック:例

第5部 構造化例外処理

第23章 終了ハンドラ

  • 終了ハンドラの例

第24章 例外ハンドラとソフトウェア例外

  • 例外フィルタと例外ハンドラの例
  • EXCEPTION_EXECUTE_HANDLER
  • EXCEPTION_CONTINUE_EXECUTION
  • EXCEPTION_CONTINUE_SEARCH
  • GetExceptionCode関数
  • GetExceptionInformation関数
  • ソフトウェア例外

第25章 未処理の例外、ベクトル化例外処理、C++例外

  • UnhandledExceptionFilter関数の仕組み
  • ジャストインタイムデバッグ
  • Spreadsheetサンプルアプリケーション
  • ベクトル化例外と継続ハンドラ
  • C++例外と構造化例外
  • 例外とデバッガ

第26章 エラー報告とアプリケーションの回復

  • WERコンソール
  • プログラムによるWER
  • プロセスでのすべての問題のレポートをカスタマイズする方法
  • 問題のレポートの作成とカスタマイズ
  • アプリケーションの自動的な再起動と回復

付録A ビルド環境

  • CmnHdr.hヘッダーファイル

付録B メッセージクラッカー、子コントロールマクロ、APIマクロ

  • メッセージクラッカー
  • 子コントロールマクロ
  • APIマクロ

『Advanced Windows 第5版 下』

Page Top

『改訂新版 Cプログラミング診断室―さらに美しく健康的なプログラムのために』

 読者が投稿してきた実在のプログラムのソースコードを添削するという雑誌連載をまとめた本の改訂版。珍しい主旨で内容も優れていると定評があるだけあって面白い。C以外の言語しか知らなくてもある程度は楽しめるが、やはりCでプログラムを作り始めてからの方がずっと楽しめる。

(目次)

第1部 外来診療室

  • 普通の初心者
  • これでもプロ
  • 上司が問題
  • キャストが好き
  • 管理は複雑に
  • 不慣れ
  • 文字列処理は得意
  • Pascalが好き
  • 開院11年目の心得

第2部 集中治療室

  • 珠玉の力作
  • 最長不倒関数
  • 奇っ怪な条件
  • 芸術的字下げ
  • 計算は自分で
  • メモリが足りない

『改訂新版 Cプログラミング診断室―さらに美しく健康的なプログラムのために』

Page Top

『初めてのRuby』

 他言語でのプログラミング経験がある人のためのRuby入門書。ポイントを押さえたRubyの基礎知識がピントの合った文章で丁寧にしかもコンパクトに解説されている。適度なページ数であるとともに、バージョン1.9対応の情報も含めRuby言語の特徴がとてもよくまとめられているので、ふとした時に気軽に手に取れるリファレンスとしても使える。

(目次)

1章 ようこそ、Rubyのある生活へ

  • Rubyの特徴
  • 処理系と実行環境
  • 実行モデル
  • インタプリタの実行
  • 文法と機能
  • 本章のまとめ

2章 配列とハッシュ

  • 配列
  • ハッシュ
  • Enumerableモジュール
  • 本章のまとめ

3章 数値

  • 数値リテラル
  • 数値演算
  • 比較
  • 数学関数
  • ビット演算
  • 本章のまとめ

4章 文字列

  • 文字列の構築
  • 文字と文字リテラル
  • 正規表現
  • 部分文字列へのアクセス
  • 文字列操作
  • イテレータ
  • フォーマット
  • シンボル
  • Ruby 1.8とマルチバイト文字列
  • Ruby 1.9とマルチバイト文字列
  • 本章のまとめ

5章 入出力

  • プログラムへの引数
  • ファイル
  • 標準入出力
  • その他の入出力オブジェクト
  • エンコーディング
  • 本章のまとめ

6章 変数と式

  • 変数
  • 演算子
  • 制御式
  • 例外処理
  • 大域脱出
  • 本章のまとめ

7章 メソッド

  • メソッド呼び出し
  • メソッドの定義
  • ブロック付きメソッド
  • 本章のまとめ

8章 オブジェクトとクラス

  • クラス定義
  • 変数と定数
  • アクセス権限
  • 特異メソッドと特異クラス
  • モジュール
  • メソッドの探索
  • 本章のまとめ

9章 本書を越えて

  • RubyGems
  • ネットワーク
  • データベース
  • 画像
  • GUI
  • Rubyの黒魔術
  • Rubyの情報源
  • コミュニティ

付録A 処理系のインストール

  • バージョンの選択
  • Microsoft Windows
  • Mac OS X
  • GNU/Linux
  • ソースコードからのインストール
  • RubyGems
  • その他

付録B 諸表

  • Ruby 1.8から1.9への変更点
  • 用語集

『初めてのRuby』

Page Top

『プログラミングWideStudio―オープンソース、マルチプラットフォーム対応統合開発環境』

 フリーのC/C++、Perl、Ruby、Python対応ビジュアル開発環境WideStudioを1から詳しく解説している。内容は、操作方法・チュートリアル・使いこなしテクニック・内部構造の解説・リファレンスなど。Windowsユーザを含めすべてのユーザ向けに書かれている。単なるマニュアルではなく、プログラミングの具体的なヒントも豊富。

(目次)

第1部 WideStudio入門

  • WideStudioとは
  • 統合開発環境―アプリケーションビルダ
  • アプリケーション開発手順

第2部 WideStudioの内部構造

  • WideStudioの構造設計
  • プロジェクトデータの構成とアプリケーションの構成

第3部 付録

  • 追加情報
  • WideStudioクラスリファレンス

 目次詳細はこちら

『プログラミングWideStudio―オープンソース、マルチプラットフォーム対応統合開発環境』

Page Top

『UNIXという考え方―その設計思想と哲学』

 UNIX流のソフトウェア設計・開発手法を平易な文章で解説していて、特定の言語、プラットホームを選ばない内容になっている。プログラミングスタイルのひとつの見本として、日曜プログラマーを含めてあらゆる人におすすめ。

(目次)

  • 第1章 UNIXの考え方:たくさんの登場人物たち
  • 第2章 人類にとっての小さな一歩
  • 第3章 楽しみと実益をかねた早めの試作
  • 第4章 移植性の優先順位
  • 第5章 これこそ梃子の効果!
  • 第6章 対話的プログラムの危険性
  • 第7章 さらなる10のUNIXの考え方
  • 第8章 一つのことをうまくやろう
  • 第9章 UNIXとその他のオペレーティングシステムの考え方

『UNIXという考え方―その設計思想と哲学』

Page Top


- 洋書関連の情報 -


"For Dummies"シリーズ

"For Dummies"シリーズとは

 本国アメリカでは非常に有名な初心者向けHowTo本のシリーズで、コンピュータ/プログラミング関連だけでなく、生活・学問全般のテーマを扱っている。初心者向けなのでできる限り簡単な英語で丁寧に説明する配慮がされており、ネイティブ・スピーカー以外でも比較的少ない労力で理解することができる。また字数的にそれなりにボリュームがあり(400ページ前後)内容的にも充実している一方、文章が短めの章がたくさん並んでいる形式なので、読破するのを途中であきらめてしまう危険が少ない。英語にあまり自信がない人でも、まずは日本語で勉強したことがあるテーマを選ぶことで、予想以上のスピードで読めてしまう可能性が高い。プログラミング関連の英語を学ぶ入門書としてもおすすめ。

主なタイトル

C# 2005 For Dummies C#言語入門
C++ For Dummies C++言語入門
C For Dummies C言語入門
Perl For Dummies Perl入門
Design Patterns For Dummies デザインパターン入門

AmazonでFor Dummiesシリーズを探す

 「For Dummies」シリーズはSafari Bookshelfサービスでも読むことができます。Safariについてはこの下↓の解説を読んでください。

Page Top

Safari Bookshelf の紹介

 Safari Bookshelfとは、ユーザ登録を行って月ぎめの料金を払うと、O'Reillyをはじめサービスに参加している出版社のデジタルデータ化された書籍が一定の範囲内(料金コースによって条件が変わる)で読み放題になるというサービスです。

 システムとしては、例えば無料の14日間お試しコースの場合、ユーザはまず10スロットの容量がある「My本棚」を与えられます。スロットとはバーチャルな書籍が占有するスペースの単位で、登録されている多くの書籍は1スロットの容量を消費しますが、中には2スロットや1/2スロットの書籍もあります。

 ユーザは書籍リストの中から好きなものを選んでそれを「My本棚」に入れることで、初めてすべての内容を閲覧できるようになります。「My本棚」に入れていない書籍の場合、サンプル用のごく一部の内容しか見ることができないため、実質読むことができないのと同じです。システムのポイントは、料金コースによって「My本棚」の容量(スロット)が変わることと、一度「My本棚」に入れた書籍は丸30日間「My本棚」から出すことができないことです。

 料金コースは大きく分けて2つあり、Maxコースは「My本棚」に入れた書籍を自由に読めることに加え、1ヶ月につき5章分のPDFを基本料金だけでダウンロードできます(ちなみにこのPDFはダウンロード請求ごとに生成され、ダウンロードしたユーザの情報がしっかり埋め込まれます)。もう一つのBasicコースは基本料金内では「My本棚」に入れた書籍の閲覧のみ可能です。両コースともスロットの大きさを複数から選択でき、Maxコースは最低10スロット($19.99/月)から、Basicコースは最低5スロット($9.99/月)からとなっています。(年間契約による割引あり)

 このサービスの対象になっている書籍は英語版(原書)のみですが、Basic/5スロットコースであれば少々高めの雑誌を講読する感覚で利用でき、お得なサービスだとは言えると思います。またO'Reilly以外の出版社も参加しており、リストをざっと眺めただけでも、「コード・コンプリート」、「達人プログラマー」、「リファクタリング」、「人月の神話」、「デス・マーチ」、「Code Reading」などリファレンスやチュートリアル形式以外のタイトルも非常に充実している印象です。

 Safari Books Online
Page Top

Safari Books 収録タイトル紹介

Windows PowerShell Quick Reference

 本書はO'reillyの"Short Cuts"シリーズの中の1冊です。"Short Cuts"シリーズはPDFでのみ公開されている1冊100ページ前後のドキュメント集で、Safari Booksに収録されているほか、O'reillyのサイトでバラ売りで購入することも可能です。

 内容としては以下の目次にあるようにインタラクティブシェルの操作方法やシェル言語の仕様、さらにPowerShellを活用するための.NETクラスやCOMコンポーネントのリスト(抜粋)などがコンパクトにまとめられています。

PowerShellを起動する

 スタートメニューからの起動方法を説明しています。

インタラクティブシェルの操作方法

 ウィンドウのカスタマイズ、テキスト選択方法、キーボードショートカット、プロファイル(スタートアップスクリプト)、プロンプトのカスタマイズ、タブ補完機能のカスタマイズについて説明しています。

コマンドと式

 コマンドと式の違い、式の中の要素評価の順番や方式を変えるための括弧の使い方について説明しています。

コメント

 コメント記号の使い方を説明しています。

変数

 変数の種類と書式について説明しています。

真偽値

 真偽値を表す事前定義の変数、基本的なデータ型が値によって真偽どちらに評価されるかについて説明しています。

文字列

 リテラル文字列とそこに式を埋め込むための書式、ヒアストリング、エスケープシーケンスについて説明しています。

数値

 書式、文字列や異なる基数の値への変換方法について説明しています。

配列とリスト

 配列変数の作り方、書式、操作方法について説明しています。

ハッシュテーブル(連想配列)

 ハッシュ変数の作り方、書式、操作方法について説明しています。

XML

 PowerShellでネイティブな型としてサポートされているXML変数の作り方、操作方法について説明しています。

単純な演算子

 算術演算子、論理演算子、単項演算子などについて説明しています。

比較演算子

 テキストマッチ演算子などを含めた比較演算子について説明しています。

制御文

 if文、switch文について説明しています。

繰り返し文

 for文、foreach文、while文、do-while文、do-until文などについて説明しています。

.NET Frameworkを利用する

 .NET Frameworkオブジェクトの生成、メソッド呼び出し、プロパティ操作、およびCOMオブジェクトの利用方法や型拡張について説明しています。

シェルスクリプトの利用

 インタラクティブシェルからスクリプトファイルを実行する方法、スクリプト内での入出力の扱い方、スクリプトの構造化(関数、スクリプトブロック)について説明しています。

エラーハンドリング

 強制終了エラー、その他のエラーについて説明しています。

出力のフォーマット、出力の取得、トレースとデバッグ

 それぞれの処理に必要なコマンドレット、リダイレクト記号について説明しています。

付録(正規表現リファレンス、自動変数、便利な.NETクラス、便利なCOMコンポーネント、WMIリファレンス、数値フォーマット文字列、日時フォーマット文字列、おもなPowerShell Verbs)

 かなり多くの項目が簡単な説明とともにリストされています。(書籍全体の約半分のページ数を占めています)

Safari収録タイトルリストに戻る
Page Top