思うところあって、ROSをいじっている。いずれ成果物を出そうと思っているけれど、それはまた別の話。
そんなわけで、ROS(2)の本をいくつか買っている。
時々あちこちで言っているのだが、「入門」の時はその分野は素人である。だから、どんな「入門書」が良いかはわからないものだ。なので、何かに入門しようと思う時、身近に「師匠」がいなければ、手当たり次第に「入門書」を読破するということにしている。内容の重複とか気にしても始まらない。金のある限り、入門書あるいはそれに近い本を買ってとにかく読む。
というわけで表題の本を買ったのだが、こいつがゴミ以下だ。
怒りのあまりAmazonに怒りのレビューを書いたのだが、どうも怒り過ぎてrejectされてしまったので、ここに書いておく。
羊頭狗肉とはこの本のことですね。
「プログラミング」ということで、プログラムのことが書いてあるのかと思ったら、最初の1/3は環境設定の話です。しかも、Dockerの操作の話ばかり。こういった目的でのDockerは依存する他のソフトウェアとかの説明が省けるのは好都合でしょうが、その部分の理解が全く得られません。
その次に続くのがコマンド等の操作、肝心の「プログラミング」は多めに数えて全体の1/4です。しかも値段の割にページ数が少ないので、例題的なものを1つ説明してあるだけ。何の身にもなりません。
本体価格3,200円の本である。これでページ数は200ページない。版が大きければそんなものかと思わんではないが、これはB5変形。つまり雑誌よりもちょっと小さいサイズだ。文字はトラ技よりも大きい。だからぱっと見スカスカである。
↑のレビューでも書いたように、前半1/3はDockerを使っての環境設定の話だ。てか、こういった時のDockerの使い方なんてのは、料理番組の「一晩置いたものがこちらです」と同じようなもので、「環境設定面倒臭いでしょ、こっちでまとめておいたんでこれを使ってね」という意味でしかない。なので、「Dockerを使って」の部分に「ROS」は何の関係もない。
Dockerは嫌いだ。なぜかというと、問題を先送りにしてしまうからだ。Dockerで解決できる問題の多くはDockerを使わずに解決すべきだった問題なのだ。Dockerに包むことで問題の解決を放棄できてしまう。
— Ryou Ezoe(江添 亮) (@EzoeRyou) September 16, 2020
つまり、プログラミングでつまづきやすい「環境設定」の問題を先送りしているに過ぎない。
「先送り」してしまっていつので、ソフトウェアの依存関係の話はしないで済む。それで済むのは良いんだが、何の知識も得られない。Gazeboとか自分でbuildして動かそうと思うといろいろ厄介なのであるが、それについての知識は得られない。まぁ表題が「プログラミング」と書かれているので、依存関係の話はどうでも良いと言えばどうでも良いのだが、それだったらそこの部分を端折ってくれた方が「中身」が増えてくれる。
そこまでやってやっと「プログラミング」の話になるかと思えば、しばらく操作の話が続く。シミュレータがどうだとか、そういった話だ。あのさ、「プログラミング」の本だったよね?
まぁ操作のことが書いてあるのは悪くはない。問題は「B5変形」で「トラ技よりも大きな文字」であるということ。つまり、それが結構ページを食ってしまうのだ。中身が薄い割にページを食うので、「プログラミング」の分量が減ってしまう。最終的に「プログラミング」は全体の1/4しかない。
じゃあすらすらと読めるかと言えば、そんなに甘くはない。
この本のデザインはとても残念(婉曲表現)のである。
この左端の数字は、どうやら行番号らしい。その後にあるのがコード本体だ。
知ってる言語で書かれたコードなら、「下手くそなレイアウトだなぁ」でいいのだが、「なんとか設定ファイル」だったりすると、それがコードの一部のように見えてしまうものもある。しかも、この番号があるものもあればないものもある。その規則は… わからなかった。
ぱっと見た感じでも
同人誌の方がマシ
と言っても良いようなデザインだ。別の言い方をすると
LaTeXのデフォルトレイアウトの方がマシ
と言ってもいい。つまり、「素人編集」の方がまだマシと言って良いデザインなのだ。出版社仕事しろ。特にコード部分が綺麗かどうかで理解度はまるで違うことを理解しろ。てめーは素人未満だ。
これは一例であるが、こういった酷さは随所にある。
こういったレイアウトとか、はっきり言えば
Jupyter notebookでも見る方がマシ
である。てか、この原稿、ipynb形式だったりしないか? それをそのまま印刷したりしてないだろうな?
まぁそんなわけで、内容の絶対量も、書籍としての出来も、とても値段相応とは言えないシロモノでしかない。金をドブに捨てたような気分になって、今も落ち込んでいる。冗談じゃない、マジで落ち込んだ。
著者はどうやらこの分野の権威らしいので、どうしてこんな残念な本になったのか知りたいものである。
とは言え、この構成にはちょっとだけ見覚えがある。それはネットでこういったものを探しているとしばしば出て来る、
(学部レベルの)演習のレジメ
とよく似ている。最初の方に環境の説明が結構な分量があって、コマンド操作とかあって、ちょっとだけプログラミングが出ている。
大学の演習であれば、「本筋と関係ない部分は覚えなくてもいいからここを読んで適当にやってね」とばかりにDockerでの環境準備やそのコマンド操作、また演習に必要なコマンドを細かく説明してあっても、
必要ならそこをまた読む
ために、そこそこの分量で書いてあっても問題ない。本筋の「プログラミング」の部分の分量が少なくても、それこそが「演習」のキモであるから、TAがアシストしながら学生が決められた課題について、課題を1つ2つやる… で十分である。そうやって「単位」となる。
そう思って見ると、この本の謎構成や謎レイアウトも納得が出来る。要するに「演習のレジメ」を書籍として出版したものなのである。きっとマジで元はipynb形式で書かれたのだろう。
そんなわけで、そういったものが必要な人、たとえば「ROSプログラミング」という演習の講義を持っている教官や学生には必要十分なのかも知れない。しかし、「これからROSプログラミングを勉強するぞー」と思っている人にとっては、
内容がないよう
としか思えない、ゴミ未満のコスパの悪い書籍でしかない。要するに私はターゲットから外れていたのである。個人的には星一つつけるのも惜しい。