【QiitaAPI】Qiita記事を集計してホスティングサービスのランキングを作成してみた(https://hosting-rnk.com)
概要
ホスティングサービス選びに迷ったことはないでしょうか?世の中には無数のサービスがありますが、実際にどれが人気で、どのように使われているかを把握するのは難しいものです。
そこで、QiitaのAPIを使って、Qiitaに投稿された記事をもとにホスティングサービスの人気度を集計し、リアルタイムなランキングを作成してみました。
目的と背景
ホスティングサービスを選ぶ際、多くの人は比較サイトやレビューを参考にしますが、これらはどうしても主観的な意見が含まれがちです。また、各サービスがどれくらい使われているかについてのデータが、はっきりと示されているわけでもありません。「AWS」「GCP」「Heroku」といった大手の名前はよく聞きますが、どのサービスがどんな用途でよく使われているのか、エンジニアがどれくらいの頻度でそれらを利用しているのかを知るには、実際の使用データが役立ちます。
そこで注目したのが「QiitaAPI」です。Qiitaは、エンジニアに広く利用されており、毎日多くの記事が投稿されています。このAPIを活用することで、ホスティングサービスに関する記事の数や内容を集計し、各サービスの人気度を測定できると考えました。
使用技術と手順
Qiita APIを使ったデータ収集
まず、Qiita APIを使用して投稿記事を取得する仕組みを実装しました。Qiitaには、特定のキーワードで記事を検索できる記事検索APIが提供されています。今回は「ホスティングサービス」に関連するキーワードを使用して検索を行いました。
GET /api/v2/items?page=1&per_page=20&query=qiita+user%3AQiita HTTP/1.1
Host: api.example.com
APIを通じて取得したデータには、記事の投稿日時やタグ、いいね数などの情報も含まれているため、単なる言及数だけでなく、どれだけ多くのエンジニアに支持されているかも分析できるようにしました。
データの集計とランキング化
収集したデータを整理し、各ホスティングサービスごとの記事数や「いいね」の数をもとにランキングを作成しました。記事数が多いからといって必ずしも人気があるわけではないため、記事の評価(いいね数)も考慮し、総合的なスコアを算出しました。これにより、単に投稿数だけでなく、エンジニアにとって価値ある記事が多いサービスがランキング上位に来るよう工夫しています。
苦労した点
サーバーが定期的にダウンする問題
開発を進める中で、いくつかの技術的な問題に直面しました。特に、サーバーが定期的にダウンしてしまう問題に悩まされました。原因を調査したところ、メモリ不足によってMySQLがクラッシュしていることがわかりました。この問題は、データベースのキャッシュ設定を見直し、メモリの割り当てを調整することで解決しました。
▼参考にした記事
MySQLが勝手に落ちるのを解決する
APIリクエストの403エラー
また、Qiita APIを使用している最中に、突然APIから403エラーが返される事態が発生しました。エラーメッセージから、APIリクエストが拒否されていることがわかり、調査した結果、リクエストが過剰だったためにアクセス制限がかかっていたことが原因でした。Qiita APIにはリクエスト数の制限があり、短時間に大量のリクエストを送るとアクセスが制限される仕組みです。これを回避するため、リクエスト間に1秒のインターバルを設けることで、APIの過負荷を防ぎ、安定したデータ収集を実現しました。
Thread.sleep(SLEEP_TIME); //1000ミリ秒スリープ
con.connect(); // WebAPIへ接続
最終成果
完成したランキングサイトでは、リアルタイムでホスティングサービスに関する記事を集計し、ランキング形式で表示できるようになりました。利用者は、どのホスティングサービスが現在のトレンドなのか、どのくらいのエンジニアに支持されているのかを一目で確認できます。また、各サービスに関する詳細な分析も提供しており、例えば「AWSはインフラ構築に関する記事が多いが、Firebaseはモバイルアプリ開発で人気がある」といった具体的な傾向も見えてきます。
今後は、データをさらに深掘りして、特定のホスティングサービスに関連する技術的なトピック(例:セキュリティ、スケーラビリティ、料金プラン)についての分析も行っていきたいと考えています。また、集計対象となるホスティングサービスの種類も増やし、より包括的なランキングを提供する予定です。
まとめ
Qiita APIを活用したホスティングサービスのランキングサイトを構築することで、実際のエンジニアの利用状況を反映した、信頼性の高い情報源を提供することができました。ホスティングサービスの選定に悩んでいるエンジニアにとって、リアルタイムデータに基づくこのランキングは非常に有益なツールとなるでしょう。今後はさらなるデータ分析やサービス対象の拡充を図り、エンジニアコミュニティにとって一層価値のある情報を提供していきます。
Discussion