shigechi-64's diary

自由・自主・自立・自尊

レポート「Webエンジニアの教科書」

今日からソフトウェア開発者になった人に本気で勧める5冊 - @ledsun blog

↑こちらの記事に習って読んだ本のレポートを残そうと思います。

今回はこちらの本。

Webエンジニアの教科書

Webエンジニアの教科書

要約

Webサービスの開発に携わるエンジニアを「Webエンジニア」と定義し、非常に幅広いその技術領域の導入部分が一通り解説されています。

Ruby on RailsPHPでの開発、NoSQLデータベース、フロントエンド、Fluentdなどのログ集約ツール、データの可視化、VagrantやDockerなどによる環境構築の自動化などのトピックが網羅されています。

扱う領域が幅広い為、それぞれのトピックについてはそれほど突っ込んだ内容ではありませんが、Webエンジニアとして知っておく必要がある領域をさっと一回りして全体を掴むのには適した書籍ではないかと思います。

面白かった章とその理由

個人的には環境構築の自動化についての章が興味深かったです。

その理由としてはまず自動化の必要性が理解できたということです。新規サーバの追加、ライブラリやミドルウェアの導入、新しい技術の検証のための環境構築などは、個人開発のみを行っている場合はそれほど頻繁に行うものではないと思いますが、実際の現場ではそれなりに必要になってくると思います。その方法としてVagrantやDockerなどの仮想化技術やAnsibleのようなプロビジョニングツールの導入方法や使い方などが紹介されています。

導入自体はそれほど難しくはないので、実際にVagrantを使って仮想マシンを立ち上げてその中でRubyのプログラムを動かしてみたりしました。一度立ち上げてしまえば普通のサーバと同じように扱えるので、やったことがない人も一度試してみるといいかと思います。思った以上に簡単にまっさらなサーバができてしまいます。

こうした環境構築はプログラミングの勉強をしていくうえで躓きやすいポイントなので知識は必ず必要になってくると思いますが、理解してしまったあとは作業化するので自動化してしまうのが望ましいのだろうと思いました。

理解できなかった章とその理由

理解できなかったというか、理解はできたけどピンとこなかった章はGoogle Chartなどを使ったデータの可視化の章です。

これは技術というよりも、どちらかというとビジネスサイドに近い部分でサービスの質を高めていく為の方法論かなと思います。
必要性は理解できるし、そのやり方が書いてあるのは有用ではありましたが、今現在サンプルデータをとって解析しなければならないほどのサービスを自身でもっておらず、そうしたサービスを展開している会社に勤めているわけでもないのでいまひとつピンとこなかったというのが正直なところでした。

が、Webサービスを展開してそれを改善していくには必須の要素なので抑えておく必要はあるとは思いました。

仕事に活かせそうな知識、活かせそうな状況と活かし方

まだ仕事をしていないのであまり偉そうには書けないのですが(^_^;)

Chapter6のログについての章は、実際の現場で必ず必要になってくる知識なのかなと思いました。↑のデータの可視化と同じで、個人開発しかしていない今の自分にはそこまで必要ではないのですが、実際にWebサービスを運用する側になった場合には絶対に避けて通れない部分だと思います。

ログの解析が有効となるケースとしては、本文にも記述がありますが

  • バグの調査
  • 不穏な兆候の検知
  • 仮設に対する検証
  • 監査ログ

などがあるでしょう。それぞれの場合において、ログをきちんと解析できれば有用な情報を得られるかと思います。

この本ではログ集約ツールとしてFluentdが紹介されていますが、私個人としてはそもそもApacheやNginxのログの見方をちゃんと知らないので、まずはそこから勉強しないとな・・・と思いました。