Googleのソフトウェアエンジニアリング ―持続可能なプログラミングを支える技術、文化、プロセス
by Titus Winters, Tom Manshreck, Hyrum Wright, 竹辺 靖昭, 久富木 隆一
はじめに
本書は『Googleのソフトウェアエンジニアリング』と題されている。ソフトウェアエンジニアリングとは、厳密には何を意味するのだろうか。「ソフトウェアエンジニアリング」を「プログラミング」あるいは「コンピューターサイエンス」と峻別するものは何か。また、過去50年にわたり著されてきたこれまでのソフトウェアエンジニアリングに関する文献の全集に付け加えるに足る独特な観点を、何故Googleが持っていることになるのだろうか。
「プログラミング」と「ソフトウェアエンジニアリング」という用語それぞれに異なる強調部分と異なる含意とがあるにもかかわらず、我々の業界内ではかなり長い間、相互に区別なく使われてきた。大学生は、コンピューターサイエンスを学んだ上で、「プログラマー」としてコードを書く仕事に就職する傾向がある。
しかし「ソフトウェアエンジニアリング」には、何らかの現実的で精密なものを構築するべくある種の理論的知識を応用することを意味するかのような、「プログラミング」よりは重々しい響きがある。機械エンジニア、土木エンジニア、航空エンジニア、他のエンジニアリング学問分野のエンジニアたちは皆、エンジニアリングを業務として実践する。これらのエンジニアたちは皆、実社会で働き、何らかの現実的なものを創造するために自己の理論的知識を応用している。他のエンジニアたちが創造するものと違って触れることはできないが、ソフトウェアエンジニアもまた「現実的な何か」を創造しているのだ。
比較的確立された他のエンジニアリング専門職と異なり、現在のソフトウェアエンジニアリングの理論やプラクティスは、同程度に厳格であるとはいえない。計算の誤りが現実の損害を引き起こしかねないので、航空エンジニアは厳格なガイドラインとプラクティスに従わなければならない。プログラミングは概して、そのような厳格なプラクティスには伝統的に従ってきていない。しかしながら、ソフトウェアが我々の生活にさらに統合されていくに従い、ソフトウェアエンジニアもさらに厳格なエンジニアリングの方式を採用し、そうした方式に頼らなければならない。本書が、ソフトウェアに関するより信頼性の高いプラクティスへと至る道を読者が見出す一助となることを願っている。 ...