「100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊」に寄稿しました

100人のプロが選んだソフトウェア開発


今年で10周年を迎えた「Developers Summit
そんなデブサミ10周年を記念した特別企画として、書籍「100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊」が刊行されます。


先日のデブサミ2012内のブースにて先行販売が行われ、サイン会も行われるなど盛況だったのではないかと思います。目次を眺めるとなかなか凄い面子(著者一覧は本エントリの最下部に記載)がズラリと。そんな書籍に、僭越ながら私も寄稿させていただきました。


100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊

100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊


この書籍は、特定の(具体的な)誰かを思い浮かべながら、その人への手紙を書くように本のガイドを書いてみるといった企画・コンセプトで、デブサミの歴代の登壇者を中心に執筆された書籍です。私の書いた部分はさておき、色々な意味で100通りの個性が出ていて面白い書籍になっていますので、是非一度お手にとってみてください。


尚、翔泳社様のご好意により、原稿をブログで公開してOKとのことなので以下に公開します。私が選んだ書籍は迷うことなく直球ストレートで「大規模サービス技術入門」。送りたい相手は"新人のインフラエンジニア"になります。


[Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ)

[Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ)


デブサミ2012のセッションで和田さん(@t_wada)が「"自分語り"はデブサミの華だ!」とおっしゃっていましたが、私もまさにその通りだと思っていて、なぜ私がバックエンドのインフラエンジニアになったのか、どういう過程で知識をつけてきたのか、その上でなぜ本書を薦めるのかを、ひたすら自分の話(物語)を書くというプレイをしてみました。

誰か1人でも、インフラ系のエンジニアを目指してみたくなったり、様々な迷いから抜け出せる何かを感じてもらえたら嬉しいです。

大規模Webサービスを支えるインフラを学ぶ

Webが生活の一部になっている今、これを支えるインフラは、電気や水道などと同様、安定した形での提供が求められています。そして、Webサービスが大規模になるにつれ、安定したサービス提供に対する難易度は上がります。そういったサービスを実現するためには、インフラを理解するエンジニアが必要不可欠であり、多くの知識と情熱が求められます。


私は、2004年に新卒でSIerに就職し、アプリケーションエンジニアとしてキャリアをスタートさせました。最初の2年は主に2件のSI案件(新規案件と超大規模案件)に携わっていたのですが、社会人3年目から社内Webシステムに携わることになったことが、私にとっての1つの転機でした。本格的なアジャイル開発で進むPJの中、初期は3人くらいの小さなチームだったため、私は開発を進めつつ、そのシステムインフラの面倒を見ることにしました。その理由は以下の通りです。

  • 大学時代に、学校構内のネットワークおよびサーバ管理をしていた経験もあり、従来よりインフラの世界に興味があった。
  • 基本的に周りでは誰もやりたがらない仕事だった。人がやりたがらない仕事こそ、やる価値があると思っている。
  • アクセスが多くなった時に技術的にどうしていくべきなのかを、自分で考えて構築/運用してみたかった。


その社内Webシステムは、当時流行していたWeb2.0の概念をふんだんに取り入れたものであり、私も、そのインフラ部分をGoogleやmixiのように、チープなマシンをたくさん並べて大きなものに見せるとカッコいいんじゃないかと考えました。それまで見てきたような、高価なベンダー機器と保障で固められたシステムではなく、オープンソースソフトウェア(OSS)や安いハードウェアを並べて構築/運用し、トラブルがあっても外部ベンダーには依存せず現場エンジニアの技術力で担保するスタンスです。
しかし、こうしたインフラを作るための情報は、当時のインターネット上には多くなく、体系的な書籍にいたっては皆無だったと記憶しています。特に、HAを組むためのソフトウェアは商用製品ばかりでした。

そんな中、インターネット上のメディアサイトやブログ等で、OSSを使ったインフラ向けの情報を収集する日々を送りました。同時にそれらを業務や個人的な趣味の範囲で、実際に自分の手で試してみることで、小さなピース(新技術の情報)を少しずつ自分の学びとして吸収できたと思います。
それから年月が経ち、私は社内のWebシステムだけではなく、インターネット上での法人向けのSaaS事業に携わり、蓄えたノウハウをベースに、OSSとクラウドサービスを活用したインフラを構築/運用を任されるまでに成長しました。そしてその頃には、これまでインターネット上に散見されていた、大規模なWebサービスのバックエンドを支えるテクノロジーに関するノウハウをまとめた書籍が何冊か出版されるようになりました。


その中の1冊が本書です。数十億PV/月(当時)の訪問がある「はてな」のWebサービスを運営する技術者によって書かれたもので、一般的なハードウェアとOSSで構成された大規模なWebサービスがどういったアーキテクチャ・思想で作られているかが解説されています。「はてな」で実際に起こった事例をベースに、アプリケーションの実装面の話も含め、あらゆる視点からWebサービスの全体像がわかる構成になっており、大規模なWebシステムがどう構成されているかを俯瞰するのに最適だと思います。

本書を手にした時は、改めて体系的に勉強できる喜びと同時に、あと数年早く出会えていれば!といった嫉妬も感じました。私が長い時間をかけ、色々なWebサイトやブログから学んできたことがまとまっていたからです。

こういった書籍を読むと、インフラの仕事は地味で泥臭い印象を持つかもしれません。でも、やりがいは凄くあると思います。大規模サービスを支えるためのインフラとアプリケーション実装についての理解が深まれば、エンジニアとしての幅が大きく広がるはずです。


100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊

100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊

100人のスーパープログラマ・起業家・CIOが選んだブックガイド!

ソフトウェア技術者のための名著案内です。国内最大級の開発者向けカンファレンス「DevelopersSummit」の
ベストスピーカーを中心とした、100名の執筆陣が書籍を選定・紹介します。

【選者(敬称略)】
あんざいゆき / 西脇資哲 / naokirodion / 川島義隆 / 小松健作 / 阪井誠 / 近藤淳也 / 山口徹 / Jenkinsのリーダー /
CodeZine元管理人 / CodeZine斉木 / 並河祐貴 / ヨシオリ / 羽生田栄一@HHany / 細川泰秀 / 及川卓也 / 徳力基彦 /
@matsunobu / Yugui / KazumaO / 羽田野太巳 / あまのりょー / 牧大輔 / 高橋晶 / 懸田剛(a.k.a kkd) / 和田卓人(t_wada) /
Personal-PMer冨永章 / 猪股健太郎 / 坂井恵 / Ken.T / 思想系プログラマ / 梅田弘之 / 所由紀 / adamrocker / bash0C7 /
栗原潔 / 倉貫義人 / 関将俊 / 漆原茂 / 渋川よしき / 角 征典(kdmsnr) / 田中洋一郎 / naoya / 小野和俊 / 福地雅之 /
まつもとゆきひろ(Matz) / Kassi / 砂金信一郎 / 白石俊平 / 高橋征義 / 平鍋健児 / よしおかひろたか / 舘野祐一 /
米持幸寿 / 矢野りん / 隈元章次 / 前田修吾 / 角谷信太郎 / かるばどす / ruimo / ミック /
平初 / 牛尾剛 / kazkawamura / 西村直人 / Ryuzee / やっとむ / 徳丸浩 / arton / 藤貫美佐 / 市谷聡啓 / 吉川日出行 /
木村明治 / 萩原剛志 / 一志達也 / masayh / 宮川義之 / 岩永信之 / 東賢 / 高橋義典 / 浅井智也 / 是井真 / 浮川初子 /
bleis-tift / 石川初 / 関治之 / 鈴木雄介 / 吉田パクえ / Akky Akimoto / 榊原彰 / oota_ken / 赤坂玲音 / 高井直人 /
タケハラマサシ / 辰巳敬三 / 川口恭伸 / @kenn / 野村恭彦 / 竹迫良範 / CodeZine 中川 


[Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ)

[Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ)