4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

オライリー本の表紙動物を1432匹、全部数えて分類してみた

4
Posted at

はじめに

この記事は人間が書いてます
データ抽出や分類はClaudeに手伝ってもらいました

エンジニアなら一度はオライリー本のお世話になっていると思います。
プログラミング言語の仕様書代わりに使う『Programming Perl』のような分厚い本もあれば、手元に置いておく『〜Pocket Reference』のような薄い本もあります。
初めて開いたときは正直歯が立たなかったことを覚えています。
それでも少しずつ読めるようになってくると、エンジニアとして一段レベルが上がった感覚があります。
また、「オライリー本を読みこなせないやつはエンジニアを名乗るな」という声を聞いたこともあります。

それはそうとして、表紙の動物のイラスト、けっこうリアルに描かれていることに気づいた人は多いと思います。
版画調の緻密なタッチで、毛並みや鱗の質感まで描き込まれています。
先日、机に積んであった数冊を娘に見せたところ「怖い」と言われました。

cry_naku_girl.png

かわいいデフォルメの動物キャラクターを想像していたようで、リアルすぎる版画のヘビやワニに驚いたようです。

そう言われてみると、そもそもこの表紙の動物は今まで何種類、何冊分あるのか気になりました。
分野ごとに動物の傾向があるのかも気になったので、公式のデータを集めて調べてみました。

何冊分のデータがあるのか調べる

O'Reillyはoreilly.com/animals.cspというページで、表紙の動物と書籍タイトルの対応表を公式に公開しています。
このページはアルファベット順に動物名を並べたインデックスで、1ページに20件ずつ表示され、x-oというクエリパラメータでページを送る仕組みでした。

直接curlでアクセスするとAkamaiのアクセス制限で弾かれましたが、ブラウザと同じUser-Agentを付けると取得できました。

curl -s -L -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" \
  "https://www.oreilly.com/animals.csp?x-o=0" -o page_0.html

x-oを0から20刻みで最後まで送って全ページを保存し、HTML内のanimal-rowブロックから動物名と書籍タイトルの組をPythonの正規表現で抜き出しました。

blocks = re.findall(r'<div class="animal-row">(.*?)</div>\s*</div>', html, re.S)

ページ上部には「1 to 20 of 1511」という表示が最後まで出続けますが、実際にデータが入っているのはアルファベット順で「Zebu Cow」までで止まり、それ以降のページは空でした。
公式ページ自体が表示している総数と、実際に取得できる件数が一致していないことになります。

最終的に取得できたのは1432件の動物と書籍の組でした。
これが現時点でO'Reillyが自社サイトで公開している、表紙動物の実データ全件です。

生物としての内訳を集計する

1432件の動物名を、鳥類、哺乳類、魚類、爬虫類、昆虫、両生類、クモ形類、その他無脊椎動物というグループにキーワードベースで分類しました。
固有種名までは辞書がないと機械的に判定しきれないため、一部(1.5%)は分類不能として残しています。

分類 件数 割合
鳥類 526 36.7%
哺乳類 432 30.2%
魚類 165 11.5%
爬虫類 95 6.6%
昆虫 88 6.1%
その他無脊椎動物 45 3.1%
両生類 31 2.2%
クモ形類 11 0.8%
動物以外 17 1.2%
分類不能 22 1.5%

鳥類と哺乳類だけで全体の7割弱を占めています。
両生類やクモ形類は合わせても3%に届かず、かなりの少数派でした。

yamori.png

同じ動物が何度も登場するケース

1432件のうち61種類の動物は、複数の書籍で使われてました。
合計すると131件、全体の1割弱がこの「使い回し」に該当します。

最多はSalmon-multiple(4冊、CSSのFonts、Selectors、Values関連の姉妹本)と、Thirteen-lined Ground Squirrel(4冊、C++のPocket Reference、kurz & gut、Nutshellなどの姉妹本)でした。
共通しているのは、同じ言語や同じ技術で「Pocket Reference」「kurz & gut」「Definitive Guide」のようなシリーズを組む本で、同じ動物を使い回しているパターンです。
1冊ごとに新しい動物を探すのではなく、シリーズとしての統一感を優先していると見てよさそうです。

動物じゃない表紙も混じっていた

分類作業の途中で、そもそも動物ではない表紙が17件見つかりました。
内訳は人物の版画イラストが14件、植物(木や花)が3件です。

人物版画14件の中身を見ると、7件がセキュリティ関連の書籍に集中していました。

  • Frontier Man using a telescope → Security Monitoring
  • Soldier with Bayonet → Snort Cookbook
  • Soldiers or rangers, with rifles → SELinux
  • Warriors, Group → Security Warrior
  • Woman on Circus Trapeze → Network Security Tools
  • Woman Blacksmith → Linux Networking Cookbook

セキュリティ分野の書籍だけ、動物ではなく「戦士」や「見張り」を思わせる人物モチーフを選ぶ編集上の傾向があるように見えます。

分野と生物に相関はあるのか

動物の分類と、書籍タイトルから機械的に判定した技術分野を掛け合わせて、観測件数と期待件数(両者が無関係だった場合に統計的に見込まれる件数)の比率を出してみました。
比率が1を大きく超えているほど、その組み合わせが偶然以上に頻発していることになります。

動物 分野 観測件数 期待件数 比率
昆虫 データベース(主にOracle) 24件 6.6件 3.65倍
両生類 AI/機械学習 6件 1.9件 3.19倍
爬虫類 プログラミング言語 22件 10.5件 2.10倍
鳥類 クラウド/DevOps 50件 30.5件 1.64倍

最も強い相関はOracle関連書籍と昆虫でした。
Bumblebee(Oracle 8i Internal Services)、Cicada(Oracle Essentials)、Dung Beetle(Oracle RMAN Pocket Reference)、Scarab Beetle(Oracle SQL*Loader: The Definitive Guide)、Stag Beetle(Oracle PL/SQL Programming)と、Oracle関連だけで昆虫表紙がずらりと並びます。
Oracleのシリーズだけ、昆虫を割り当てる編集方針があったと考えるのが自然です。

2番目に強かったのはPythonという言語名と爬虫類の組み合わせです。
African Rock Python(Programming Python)、Burmese Python(Architecture Patterns with Python)、Carpet Python(Python for DevOps)、Mojave Rattlesnake(Mastering Python for Bioinformatics)と、ヘビやトカゲがPython本にかなりの頻度で採用されていました。
言語名の「Python(ニシキヘビ)」と表紙モチーフが直結している、数少ない事例です。

snake_dokuhebi_kiba.png

Kubernetesやクラウド系の書籍では、Eagle、Falcon、Condorといった猛禽類が目立ちました。
African Fish Eagle(Kubernetes Security and Observability)、Andean Condor(Cloud Native Infrastructure)、Asian Golden Eagle(Google Cloud Cookbook)など、インフラを俯瞰する分野に空を飛ぶ動物を割り当てる傾向が見えます。

bird_taka.png

両生類とAI/機械学習の組み合わせも比率としては高く出ましたが、該当が6件しかないため偶然の範囲である可能性も残ります。
Axolotl(Machine Learning for Email)やHands-On Machine Learning本の各種サンショウウオがこれにあたります。

おわりに

娘が「怖い」と言った理由が、調べていくうちに少しわかった気がします。
Mojave RattlesnakeやBurmese Pythonのように、実在の危険な生物を写実的なタッチでそのまま表紙に使っている本が実際にありました。
かわいくデフォルメされたマスコットではなく、図鑑さながらの動物画だからこそ、子どもの目には怖く映ったのだと思います。

「オライリー本を読みこなせればエンジニアとして一人前」という話をよく耳にしますが、表紙の動物までちゃんと見ている人は意外と少ないかもしれません。
Oracle本の昆虫や、Python本のヘビのように、分野と動物の対応にはそれなりの必然性がありました。
次に本棚のオライリー本を手に取ったときは、中身だけでなく表紙の動物にも少し目を向けてみてはいかがでしょうか。

最後まで読んでいただきありがとうございました。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?