再発見の発想法
技術者は日常的に技術用語を使って考え、問題を解決しています。技術用語の中には、技術者が長年培ってきたアイディアやグッドプラクティス、それに問題解決のエッセンスが凝縮されています。
たとえば、技術用語としての「バッファ」は、データを生産するプロセスと、データを使用するプロセスの間に置かれた緩衝領域を意味します。この技術用語の発想を日常生活に適用するなら、私たちが使っている「財布」はバッファとしての役割を持っていることがわかります。さらに、いったん蓄積させることで価値を生み出すプリペイドカードにもバッファの発想が生きていることがわかります。
また、技術用語としての「ボトルネック」は、システム全体のパフォーマンスを決定するポイントを意味します。システム全体のパフォーマンスを上げるためには、やみくもに改善するのではなく最初にボトルネックを見つける必要があります。会社の承認プロセスで、特定の人物が意志決定のボトルネックになることはよくあります。いくら他のメンバーががんばっても、ボトルネックになっている人物の承認速度を上げなければ、全体のパフォーマンスは上がりません。
本書で取り上げる技術用語はプログラミング全般、アルゴリズム、セキュリティ、マルチスレッドなど多岐にわたります。このような技術用語の意味を知り、それを用いた技術者の発想を日常生活に適用させることで、業務の改善や学業の効率化、創造力の育成などに生かすことができるでしょう。
技術者の発想に関心をもっている学生から社会人、発想力や創造力を高めたいと思っているビジネスマン、組織をうまく動かしたいと思っているリーダーなど、現代を生きるすべての読者にとって最適の読み物です。
なお、本書は、『Software Design』(技術評論社)の連載を加筆修正して書籍化したものです。
●目次
●はじめに
●第1章 あふれる量と戦う
・ランダムサンプリング
・指数関数的爆発
・ブルートフォース
・バックトラック
・データ圧縮
●第2章 速く、速く、もっと速く!
・ボトルネック
・投機的実行
・レスポンスタイム
・バッファ
●第3章 再利用のために
・ライブラリ
・エクスポート/インポート
・テンプレート
●第4章 リソースを活用する
・トレードオフ
・ガベージコレクション
・富豪的プログラミング
●第5章 セキュリティを守る
・公開鍵暗号
・二要素認証
・難読化
・中間者攻撃
・DoS攻撃
●第6章 正しく判断する
・A/Bテスト
・ベンチマーク
・評価関数
●第7章 連携プレーをスムーズに
・デッドロック
・ブートストラップ
・アイドル
●第8章 品質を上げる
・ドッグフーディング
・オーバーエンジニアリング
・バリデータ
●第9章 エラーに対処する
・フェールセーフ
・チェックサム
・S/N比
・DRY
●第10章 機械学習と人工知能
・レコメンデーション
・過学習
・チューリングテスト