6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[OCI]Autonomous AI DatabaseからQiita APIをコールして、自分が投稿した記事のPVトップ10を調査してみた

Last updated at Posted at 2025-10-15

はじめに

Qiitaへの公開記事の投稿が200件になりました。

これを記念して、Autonomous AI DatabaseからQiita API v2をコールして自分が投稿した記事の情報を取得、その情報を表に格納して、PVトップ10を確認してみました。

この記事を執筆している時点の全体公開記事の投稿は200件です。
スクリーンショット 2025-10-15 22.35.41.png

また、限定公開の記事は2件あります。
スクリーンショット 2025-10-15 22.35.54.png

1. 表の作成

Qiita API v2をコールして取得した記事の情報を格納する表qiita_post_pvを作成します。
ここでは、記事のタイ鳥、ページビュー、限定公開かどうかのフラグを格納することを想定しています。

SQL> CREATE TABLE qiita_post_pv (
  2  	 title	  VARCHAR2(1000),
  3  	 pageview NUMBER,
  4  	 private  BOOLEAN
  5  );

表が作成されました。

SQL>

2. Qiita APIをコールして、自分が投稿した記事の情報を取得

DBMS_CLOUD.SEND_REQUESTファンクションでqiita API v2の「/api/v2/authenticated_user/items」をコールして、自分の投稿の情報を取得し、タイトルとページビュー、プライベートかどうか(TRUE/FALSE)を表qiita_post_pvに格納します。

SQL> set define off
SQL> DECLARE
  2  	 per_page  NUMBER := 50;
  3  	 resp	   DBMS_CLOUD_TYPES.RESP;
  4  	 i         NUMBER;
  5  	 j         NUMBER;
  6  	 cnt	   NUMBER := 0;
  7  	 posts	   NUMBER;
  8  	 pages	   NUMBER;
  9  	 title	   VARCHAR2(1000);
 10  	 page_view VARCHAR2(100);
 11  	 private   VARCHAR2(10);
 12  
 13  BEGIN
 14  
 15  	 resp := DBMS_CLOUD.SEND_REQUEST(
 16  		     uri     => 'https://qiita.com/api/v2/authenticated_user/items?page=1&per_page=1',
 17  		     method  => DBMS_CLOUD.METHOD_GET,
 18  		     headers => JSON_OBJECT('Authorization' VALUE 'Bearer XXXXXXXXXXXXXXXXXX')
 19  		 );
 20  
 21  	 posts := JSON_VALUE(DBMS_CLOUD.GET_RESPONSE_HEADERS(resp).TO_CLOB, '$."Total-Count"');
 22  
 23  	 pages := CEIL(posts/per_page);
 24  
 25  	 FOR i IN 1 .. pages LOOP
 26  	     resp := DBMS_CLOUD.SEND_REQUEST(
 27  			 uri	 => 'https://qiita.com/api/v2/authenticated_user/items?page='||i||'&per_page='||per_page,
 28  			 method  => DBMS_CLOUD.METHOD_GET,
 29  			 headers => JSON_OBJECT('Authorization' VALUE 'Bearer XXXXXXXXXXXXXXXXXX')
 30  		     );
 31  
 32  	     FOR j IN 0 .. (per_page-1) LOOP
 33  		 title := JSON_VALUE(DBMS_CLOUD.GET_RESPONSE_TEXT(resp), '$['||j||'].title');
 34  		 page_view := JSON_VALUE(DBMS_CLOUD.GET_RESPONSE_TEXT(resp), '$['||j||'].page_views_count');
 35  		 private := JSON_VALUE(DBMS_CLOUD.GET_RESPONSE_TEXT(resp), '$['||j||'].private');
 36  
 37  		 INSERT INTO qiita_post_pv VALUES (title, page_view, private);
 38  
 39  		 cnt := cnt+1;
 40          EXIT WHEN(cnt >= posts);
 41  		 
 42  	     END LOOP;
 43  	 END LOOP;
 44  
 45  	 COMMIT;
 46  END;
 47  /

PL/SQLプロシージャが正常に完了しました。

SQL> 

3. 表に格納されたデータの確認

表qiita_post_pvの総レコード数を確認します。

SQL> SELECT COUNT(*) FROM qiita_post_pv;

  COUNT(*)
----------
       202

1行が選択されました。

SQL> 

表qiita_post_pvに格納されているレコードのうち、privateがTRUEのレコード数を確認します。

SQL> SELECT COUNT(*) FROM qiita_post_pv
  2  WHERE private = TRUE;

  COUNT(*)
----------
	     2

1行が選択されました。

SQL> 

この数字は、限定公開記事の数と一致しています。

表qiita_post_pvに格納されているレコードのうち、限定公開の記事にレコード数を確認します。

SQL> SELECT COUNT(*) FROM qiita_post_pv
  2  WHERE private = FALSE;

  COUNT(*)
----------
       200

1行が選択されました。

SQL>

この数字は、全体公開記事の数と一致しています。

自分が投稿した記事の情報が漏れなく取得できていることが確認できたので、PVトップ10の記事を確認してみたいと思います。

SQL> set linesize 200
SQL> col title for a120
SQL> SELECT * FROM qiita_post_pv
  2  ORDER BY pageview DESC
  3  FETCH FIRST 10 ROWS ONLY;

TITLE															                                                           PAGEVIEW    PRIVATE
------------------------------------------------------------------------------------------------------------------------ ---------- ----------
Oracle Database 23c Free - Developer ReleaseをOracle Linux 8にインストールしてみた                                                12467          0
[OCI]Windows Server 2019 Standard 日本語化手順                                                                                  12235          0
Autonomous Database:SELECT AI機能を使用してOpenAIを利用した自然言語によるクエリ実行を試してみた(日本語でも実行できた)                     10330          0
[OCI]Oracle Database CloudでCDB内にキャラクタセットの異なるPDBが混在する環境を作ってみた                                                 8138          0
[OCI]Oracle Cloud Infrastructure コンソールにサインインする際の手間を省力化するTips                                                    7672          0
[OCI] gcsfuseを使用してGoogle Cloud Storage バケットをComputeインスタンスにファイルシステムとしてマウントしてみた                          7153          0
[OCI]Oracle Linux 8にOracle Instant Client 21c+SQL*Plus+Apache 2.4+PHP 7.4+php-oci8-21cをセットアップしたときのメモ                 6658          0
[OCI]Autonomous Database : Aurora PostgreSQLに対するデータベース・リンクを作成してデータを参照してみた                                   5938          0
Autonomous Database:DBMS_SCHEDULERで実行するジョブ内のSQLをパラレル実行させてみた                                                     5897          0
[OCI]最新版:Autonomous Databaseでsysdate、systimestampが日本時間を返すようにする方法                                                 5577          0

10行が選択されました。

SQL>

ということで、私が投稿したQiitaの記事のページビューTop10が確認できました。
最もPVが多かったのはこちらの記事で、12,467ページビューでした。

参考情報

Qiita API v2 ドキュメント:投稿
DBMS_CLOUD REST API

6
2
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
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?