Tech Sketch Bucket of Technical Chips by TIS Inc.

書籍「Serverspec」はOSSの開発を継続する秘訣が満載

Pocket

出版から1か月以上が経ち、既に非常に多くの書評が各所から投稿されているので今更感がありますが、オライリー社から出版されている以下のServerspec本を読んだのでその感想を少しまとめたいと思います。

O'Reilly Japan販売サイト

IMAG2300

書籍は、以下のような縁もあり、Serverspecの作者でありServerspec本の著者である宮下さん及び出版社のオライリーさんより頂戴いたしました。ありがとうございます。

ThinkIT Serverspec連載記事

ThinkIT 宮下さんへのインタビュー記事

感想

全体を読んでの感想としては、ただ単にServerspecをこれから使ってみようとか使い方を調べようといった人だけが読むには非常にもったいないぐらいいろいろな情報が詰め込まれた本だと思います。

Serverspecの技術的な解説だけでなく、著者がどういった思いを持って開発を実施しているのかが随所に盛り込まれており、開発内容の意図が非常によく分かる内容となっています。さらに、OSS開発を長く継続し、改善を続けるためにどういったポイントを意識しているのかも非常によくまとまっており、OSSを開発しようとしている・開発している方々はぜひ一読するといいのではないかと思います。もちろん技術的なことについてもその使い方から内部のアーキテクチャまで非常深くまでまとめられており、使ったり、カスタマイズしたりあらゆる側面で有益な情報が解説されています。私もServerspecは以前から使っていましたが、「へーなるほど」という様々な使い方の知見を得ることができました。

目次

本書は以下のような構成でまとめられています。

  • 第1章:Serverspecの紹介
  • 第2章:初めてのServerspec
  • 第3章:Serverspecの本格利用
  • 第4章:Serverspecの内部の詳細
  • 第5章:他ツールとの連携
  • 第6章:トラブルシューティングとデバッグ
  • 第7章:Serverspecの今後
  • 付録A:リソースタイプリファレンス
  • 付録B:Serverspec/Specinfra v2での変更点
  • 付録C:SpecinfraのServerspec以外の利用例
  • 付録D:Windowsのテスト
  • 付録E:Serverspecを活用するために参考になる書籍や雑誌

第1章:Serverspecの紹介

Serverspecが生まれた経緯の紹介から始まり、作者の開発に対する思いが最も詰め込まれている章かと思います。特に「1.5 Serverspec開発の哲学」は非常に参考になります。

  • 導入までの敷居を下げる
  • 特定のサーバ構成管理ツールに依存しない
  • 1つのことをうまくやる
  • 開放/閉鎖原則
  • 他人のために開発しない
  • はやめのリリース、しょっちゅうリリース

全てのことが全てのソフトウェア開発に当てはめることができるというわけではないですが、開発を継続しよりよいものとして成長させるモデルを実現するには欠かせない概念かと思います。自分が関わる開発のシーンでもこういった思いは心のどこか片隅において行いたいと思いました。

第2章:初めてのServerspec

ここはQuickStart的な位置づけの解説です。インストールから最初のアクション、テスト実行まで非常にわかりやすくコンパクトにまとめられています。Serverspecをまず使ってみようという方はここからスタートです。

第3章:Serverspecの本格利用

この章ではより具体的にテストコードの書き方やServerspecのspec_helper.rbやRakefile等各ファイルの内容・書き方についての解説がされています。非常に多くの書き方のテクニックがまとまっています。

どのような観点でテストコードを書けばいいのか?といった作者の考え方もまとめられています。Serverspecを使うことが目的になってしまわないよう本来の意図に立ち返って考えてみるのに有用な内容かと思います。

第4章:Serverspecの内部の詳細

ここではServerspecの内部のアーキテクチャが非常に細やかにまとめられています。ServerspecとSpecinfraの関係性等まとまっており、どういった処理を経てテスト実行しているのかがここを読めば非常に納得できます。より凝ったことをするためにリソースタイプやマッチャを自作したいという方はこの辺りを読んでServerspecのお作法に則って開発するのがいいのではないでしょうか。

第5章:他ツールとの連携

Serverspecはサーバ稼動状態をテストするという非常に絞った機能を実現しますが、他ツールとの連携の可能性を非常に多く含んでいます。この章ではそういった可能性を実際の連携例の紹介をもとに解説されています。Vagrant、Consul、Infrataster、Test Kitchen、Nagios、AWSなど様々なツールと協調させることでさらなる効果を発揮します。

私もこの5章を読んで試しにこんなことをやってみました。

Qiita:Zabbixに登録されているホスト情報をもとにServerspecを自動実行

いろいろとアイデアを考えてみるきっかけにもなる内容になっています。

第6章:トラブルシューティングとデバッグ

実際に使っていてうまくいかない時にはここを読むといいでしょう。私は特にpryを使ったデバッグ方法を試したことがなかったので非常に参考になりました。

PryのGitHubリポジトリ

第7章:Serverspecの今後

Serverspecは既にある程度完成されていて、今後はServerspecをいかに活用するかという方向に注力したいとのことです。急成長してきたServerspecもv2になり完成度も非常に高まっています。新しいツールだからと敬遠するのではなく、まずは使ってみるのがいいと思います。

最後に

Serverspecはサーバエンジニアにとって非常に有用なツールの1つであることは間違いないかと思います。楽して安定した稼働の実現のためにますます活用するといいのではないでしょうか。

このような素敵な書籍をお送りいただいた宮下さん、出版社の方々に改めて感謝いたします。

エンジニア採用中!私たちと一緒に働いてみませんか?