試して学ぶ Dockerコンテナ開発 技術書感想

「試して学ぶ Dockerコンテナ開発」 という本で少しDockerの基本を勉強することにした。パラっと見た感じしっかりコードが書いてあって読みやすそうだったので。 こちらの本、amazonのレビューに書いてある通り、全くの初心者向けではなく、ある程度Dockerを触ったことがある人向け。かといって発展的かといえばおそらくそんなこともない。

docker初心者向けではない

初心者向けではないという点はわかりやすい。dockerの基本コマンドなどの初歩的解説が1章に辞書的にずらーっと書かれている。その後に丁寧な解説がところどころ(突然)あるが、網羅的でもなく、出てきたら気分で補足しているんじゃないかと疑いたくなった。

とはいえ、私はdockerを最低限は触ったことがあったので、この点は問題なかった。むしろ、くどくどした解説がないながら基礎的なコマンドで有用だが意外と知らなかったものを知れたので、私にはありがたかった(docker-compose ps など)。ちなみに、著者はこの本の前にdockerの入門書を書いてるらしく、この本の位置づけは実際の開発環境の構築方法にフォーカスしたものであるので、初歩的解説がないと文句をつけるのはお門違いである。

docker 以外の説明も省きがち

だからこそ、問題があったというか残念だったのは、docker以外の解説も省き気味で、触ったことのないフレームワークなどは正直よくわからなかったということだ。 本の通りに進んでいても時々「ん?」ってなったり、「え、ここって何やってるの?」と思ったときに疑問が解決されることは期待できない。

例えばでいうと、sampleとしてPHPのWebフレームワークであるLaravelが用いられているが、ここに用いられるコマンドの解説はない。私はPHPもLaravelも聞いたことしかないので、一言どういうコマンドかくらい教えてほしいなーと思いながら読み進めている。もちろん、ググれば解決するし、そういう解説を増やすと冗長になってしまうのはわかるが*1

私が知らないだけで多くの人が知っていることで、知ってる人にとってはわざわざ説明するものではないのでしょう。

実際読んでみて(動かしてみて)どうだったか

2章は問題なくすすんでたんですが、3章の中盤から対処できないエラーに捕まるようになりました。本の通りに前から順番に実行していったんですが。

混乱した要因として、一つのことをやるのにいくつか別々の手法を紹介していることがあります。もちろんそれ自体は視野が広がっていいのですが、次に進むときに「じゃぁ結局どの手法を使った場合の続きを書いてるの?」となります。どれでも変わらないはずではありますが、微妙に手順かぶったりしてるのでエラー捕まった時に原因の特定がしづらかったです。Dockerでせっかくバージョンまで指定しているのは丁寧なのに、もったいないなぁという感じです。

残念ながら、chapter 3 でパッケージのバージョンがコンフリクトしたエラーで読むのをやめました。本自体一年以上前なので、バージョン指定してないパッケージの依存関係がずれてしまったのが原因です。もちろん、調べて回避する方法もありそうですが、この問題はどちらかというとframeworkの話であり、ruby(3章はrailsでした)にあまり興味がなく、その先の話が面白くなさそうだったので、この章は途中でやめることにしました。

しかし次の章も同様にうまくいかず、結局本自体読むのをやめました。

OSの違いとか依存関係周りに悩まされるのが嫌でdocker使ってるので粘るとこは間違えたくない、と言い訳だけ残しておきます

検討しているひとへ

  • 内容的に適しているのは、
  • docker を多少さわったことはあって ruby on rails での開発を経験したことがある人 だと思います。

HP等探しましたが、誤植訂正や正誤表はないみたいなので、コードがうまくいかなかったときは誤植も適宜疑ってみてください。

*1:その他

解説なく出てきたので調べたものをメモると、 * Laravel: PHPのwebフレームワーク * artisan : Laravel で使う専用コマンド * gem: ruby 用のインストールライブラリ。python でいうpip みたいな? * bundler: gem の環境統一のためにライブラリのバージョンとか依存関係を管理するツール