Geekle|技術書検索サービス
評価の高い技術書を簡単に見つけられる技術書検索サービス。検索フォームに「Linux」「Python」などの技術ワードを入力すると、評価の高い技術書が検索できます。
◎サービス概要
Geekleは、評価の高い技術書を検索できるサービスです。
例えば、「Pythonの評判の良い書籍が欲しい」となったときに「Python」というキーワード(キーワードはQiitaのタグにあるものに限定されます:サジェストで表示される)で検索すると、その技術キーワードに対する「評価の高い書籍リスト」が検索結果として表示されます。
検索結果の並びはQiitaでの言及記事数をはじめ、複数の要素から総合的に算出。
【#1 書籍の検索】
【#2 書籍の検索結果表示】
【#3 書籍の詳細情報】
◎開発の動機
プログラミングを学習する中で、たくさんの書籍を購入してきました。
そのとき、候補となる本をピックアップして、一つずつ評判を確認し、本屋で立ち読みして買っていたので、「○○という技術を学ぼう→その技術の評判の良い技術書がすぐわかるサービスがあったらなー」と思っていました。
そこで、自分の希望を実現したモノを作ってみました。
◎開発について
■開発使用言語、環境等
- アプリ:Laravel + Vue.js
- バッチ(DB作成):生PHP
- DB:MySQL
- サーバーOS:Amazon Linux
- インフラ:AWS(EC2・RDS・Rout53・ALB)
- その他:Git,GitHub,Docker
■書籍DBの作成
書籍のDBは、QiitaのAPIで記事データを取得して、書籍へのリンクURLを解析し、そこから書籍の識別番号(ISBN・ASIN)を抽出後、番号を使ってopneBDやGoogleBookApiなどで書籍データを取得して構築しました。
■書籍の順位付けアルゴリズム
Qiita記事のタグをそのまま書籍のタグとして付け直し、Qiitaで言及されている記事数をカウントすることでタグ(技術ワード)ごとの書籍の順位づけを行っています。
しかし、Qiitaの記事数のみで順位付けを行うと、普遍的な名著(リーダブルコードなど)が多くのタグで上位を独占してしまうというデメリットがありました。
検索ワードが「PHP」でも「Ruby」でもリーダブルコードが一番上になってしまう。
また、出版から時間が経過している書籍の方が言及される記事数が多くなるため、新しい良本が上位に表示できなかったり、PHPとLaravelのように「言語」と「フレームワーク」の検索結果がほぼ同じになるという問題点がありました。
僕が作りたいのは「学習したい技術ごとに今選ぶべき良書がわかるサービス」だったため、なるべく情報の新しい良本が上位表示されて欲しいし、PHPなら生PHPの書籍が上位、LaravelならLaravelの書籍が上位という結果になって欲しかった。
そこで、Qiitaの記事数に加えて
・検索ワード(タグ)の文字が書籍のタイトルに含まれる場合はプラス点
・出版日時が古くなればなるほどマイナス点
などを順位付けの要素に加えて傾斜配点をかける事で検索結果を調整し、今選ぶべき良本が上位表示されるように順位付けの計算を工夫しました。