QiitaのAPIから投稿記事を取り出し、技術書籍を紹介している箇所を集計して、ランキングサイトを作った。作った本人が言うのも何だけど、できあがった技術書ランキングがやたらエンジニア指向で便利で面白いなー、と。
技術書ランキングをQiita記事の集計から作成した
テック・ブック・ランク
エンジニアにとって技術書の選定はまーまー苦労する。単なる発行部数ランキングでは「人気あるからって技術書として参考になるとはかぎらない」と、なってしまいがち。ブログでオススメされている書評なんかも参考にするが、結局それらは書評を書いた人の主観で書かれたのであって客観的指標にはなりえない。
そこで「Qiitaにある技術ブログ記事内で紹介されている書籍情報を集計すればひと味違った書籍ランキングになるのでは?」と考えた。
で、以下の条件に当てはまる本を「いい本」とした
- たくさんのQiita記事で紹介されている本
- 人気のあるQiita記事で紹介されている本
- 新しい記事で紹介されている本
結果としてできあがったランキングの総合部門トップ6はこんな感じになった。当たり前だけど「売れてる本」と「技術記事で紹介したい本」はちょっと違う。本当の意味で有用な技術本というのは後者の「紹介したい本」の要素が多いかな、と。
いい感じに古くからずっと支持されている古典的名書と最新の人気ある書籍がトップに入っている。「リーダブルコード」なんかはいつまでも廃れることのない名著だし、最近出たばかりの「エンジニアリング組織論への招待」や@jnchitoさんの「プロを目指す人のためのRuby入門」がトップ10に入っていて、気に入っている。ちなみに恣意的に特定の本のランクを上げたりは絶対にしていない。同じルールの元で公平に集計測定した結果がこれ。
Qiita記事にあるタグがいい効果を発揮している。Qiita記事に貼ってあるタグはそのまま紹介されている書籍のタグとした。つまりタグ=>記事=>書籍となっているのでタグと書籍の関係は直接ではなく、ゆるーく繋がっているだけ。そこがいいなと思っている。
例えば「人工知能は人間を超えるか」という本の場合、この本には20以上のタグが付いている。
ウェブサイトで見ていただくとドーナツグラフでタグの分析結果が見れるようにした。
PythonやTesorFlowのタグが付いているが本書にはこれらの技術に関する言及は無い。でもタグがあって、それは「この本を紹介するエンジニアはだいたいPythonやTesorFlowに関係する記事を書いてますよ」という意味になる。このゆるーい関係のタグ付けがいいと思った。他にもRubyの本にGitHubがタグ付けされていたり、書籍の内容には関係無さそうだけど実務では関係あるタグ付けがなされている。
自分で作ったサイトながら、そのタグをクリックして関連タグで人気順にソートされた技術本ランキングを次々に眺めるのが面白くて、しばらくサイト内を巡回していた。例えばAという技術のタグを押しても全てがAに関する書籍ではなかったりするので、「おーこんな本もあったのか」という発見がある。なのでタグを目立つようにして、検索窓は右上に必要な時だけ表示する仕組みにした。サイトのコンセプトとして検索してピンポイントで必要な書籍情報だけを見るよりも、タグをクリックしていろいろ巡回して見た方がこのサイトは面白いと思ったからだ。
本についてはその本を読むこと以前に「その本との出会い」がとても重要だと思っている。売れている順や人気順のランキングならばアマゾンので十分だ。
テック・ブック・ランクは他には無い「本との出会い」がある。なぜならそのランキングに使っている指標が限りなくエンジニア目線を元にした指標だからだ。人工知能の本にTesorFlowのタグを付ける、なんてやるのはエンジニアだけだろう。
Qiitaの技術記事ってそれなりにちゃんと書かないとLike数なりView数なりで人気を得ることは難しい。なのでそれらと連動した技術本のランキングもそれなりに信用に値するかな、と思っている。
それとご自身で投稿したQiita記事で技術本を紹介されていたら、それがテック・ブック・ランクにちゃんと反映されているか確かめてみたら面白いかも。というかもし反映されてなかったら、ご連絡いただければ幸いです。APIからの本のリンク読み取りっていろいろ種類があって全てはカバーできていないので。
テック・ブック・ランクが皆さんの「こんな本があったのか!」をたくさん提供することを願って公開した。ご感想なり、批評なりなんでもコメントください。
技術書ランキングをQiita記事の集計から作成した
テック・ブック・ランク
テック・ブック・ランクのサイト構築に使った技術
- Rails
- GraphQL
- React + Redux
- GCP
- Heroku
- CloudFlare
読書会系統の記事の重複が多いので
それらは除いた方がいいかもしれませんね
これはいいですね。。
タグページとかでQiitaで人気の書籍とか紹介できたら面白そう
コードコンプリートのpointが少ない。。ちょっと残念。
この二冊は著者本人が宣伝しているのでランキングに入るのも必然のような気がします。
本人以外が紹介しているかどうかでフィルター掛けたらどうなりますかね!
k-shimojiさん、アドバイスありがとうございます。
同じこと考えたんですが、著者とQiitaIDをマッチングさせる確実な方法が無いので断念しました。上位の目立ってる著者にだけ手動でフィルターかけるのは不公平になりますので、やってません。
ご指摘の二冊は確かに著者がQiita記事を書かれていますが、それを読んだ人からのLike数で支持を得て、そこが順位ポイントになってます。どんなに著者がQiitaで記事をかかれても、Likeで支持されない記事は順位ポイントに反映されないのでいいかな、と思いました。
これは……素晴らしい。
集合知の有効活用ですね。
何らかのタグに関する書籍の一覧を見たときに、そのタグが表示されていると親切かな、と思いました。
例えば、
https://www.techbookrank.com/booklists/5ab6c4fe30e8410004196587
はタグ
SQL
に関する書籍の一覧ですが、表示された画面にはSQL
という文字が無いので、後から見たときに「あれこれ何のページだっけ?」となりました。algさん、貴重なアドバイスありがとうございます!
後でおっしゃる通りの機能を実装します。なかなか作ってる本人はそういう所に気が付かないものなので、ありがたいです。
あとは、「特定のタグを含まない」という検索もできると助かるかもしれません。
例えば、タグ
Python
のランキングhttps://www.techbookrank.com/booklist/5ab6c39830e8410004195bdc
には、
機械学習
MachineLearning
深層学習
DeepLearning
などのタグを含むものが多くなっています。しかし「Pythonを初めて扱うので、純粋なPythonの良書が知りたい。機械学習は特に興味がない。」という人には、機械学習に関する書籍はちょっと邪魔になるかもしれません。
そういうときに、Googleのような
Python -機械学習 -深層学習
という検索ができるとありがたいですね。(「本との出会い」という意味では、出会いが狭くなってしまう懸念もありますが……)
勝手に期待しておりますので、無理のない範囲でメンテしていただけると嬉しいです。