Qiitaの記事数から春に受験する情報処理技術者試験を決定する

#### 目次
[ 1.はじめに ](#1-はじめに)
[ 2.実現したいこと ](#2-実現したいこと)
[ 3.結果](#3-結果)
[ 4.考察](#4-考察)
[ 5.結論](#5-結論)
[ 6.調査環境と筆者のスキル ](#6-調査環境と筆者のスキル)
[ 7.実際にできたこと ](#7-実際にできたこと)
[ 8.今回実施したことの感想 ](#8-今回実施したことの感想)


## 1. はじめに
先日、秋期情報処理試験を受験してきました。
受験動機が「高度試験を1つぐらい取っておきたい」と少々消極的なため、春・秋ともに受験できる「情報処理安全確保支援士」に挑戦中です。
しかし、春季試験は自己採点するまでもなく不合格。
秋季試験は自己採点をしたものの、自信を持って「〇」をつけられる回答がなくおそらく不合格でしょう。
2023年度春季試験までのモチベーションを維持するために、Qiita利用者がどの試験に興味があるか調べてみました。

## 2. 実現したいこと
1. Qiitaで調査するタグ一覧を作成する
2. QiitaAPIを使用し、試験名や試験名の略称がQiitaタグとして採用されているか？
タグがある場合、タグのフォロワー数と記事数を抽出する
3. 2で抽出した結果を試験種類毎にカウントする
4. 情報処理技術者試験の受験者数と比較し、どの試験に注目が集まっているか推測する
5. 2023年度春季試験に受験する試験科目を選定する

## 3. 結果

|No | 資格名 | 令和3年受験者数 |フォロワー数 | 記事数 |
|--:|:--|--:|--:|--:|
|1|ITパスポート試験|122,127|13|152
|2|情報セキュリティマネジメント試験|16,231|2|20
|3|基本情報技術者試験|60,529|99|945
|4|応用情報技術者試験|48,270|81|258
|5|情報処理安全確保支援士|16,354|48|109
|6|ITストラテジスト試験|5,669|2|3
|7|システムアーキテクト試験|5,369|1|5
|8|ネットワークスペシャリスト試験|13,832|20|66
|9|ITサービスマネージャ試験|2,851|0|1
|10|プロジェクトマネージャ試験|10,184|11|22
|11|データベーススペシャリスト試験|10,648|7|27
|12|エンベデッドシステムスペシャリスト試験|2,798|5|20
|13|システム監査技術者試験|2,552|0|0

※ タグ情報の抽出は2022年10月14日時点の件数です。
※ 検索対象タグはページ下部に記載しております。
※ 受験者情報は令和3年の受験者数です。春・秋ともに行われる試験は秋期を採用しました。
※ ITパスポートは通年実施のため、年度合計人数を単純に2で値を採用しました。

https://www.jitec.ipa.go.jp/1_07toukei/_index_toukei.html

## 4. 考察
上記表から基本情報技術者試験・応用情報技術者試験・高度試験は受験者数とフォロワー数および記事数と比例するといえそうです。
ただ、ITパスポートおよび情報セキュリティマネジメント試験は受験者数と比べて、フォロワー数および記事数はそこまで多くないようです。
逆に基本情報技術者試験は他の受験区分と比べて記事数が圧倒的に多いといえます。

また、高度試験にスポットをあてると「情報処理安全確保支援士」は受験者数とフォロワー数および記事数は高度試験の中でももっとも多い試験といえます。
これは、次回の受験までに参考にする記事が見つかりそうです。

意外なのは「システム監査技術者試験」がタグとして登録していない点です。
国家試験のためすべての試験名称がタグとして登録されているかと思っていましたが、
「システム監査技術者試験」はタグがありませんでした。
ただ、試験名で記事を検索すると「システム監査技術者試験」をテーマとして作成した記事が数件見つかりました。
なので、「システム監査技術者試験」を受験しているQiitaユーザーの方はいらっしゃるようです。

## 5. 結論
上記調査結果を受け、2023年度春季試験は「情報処理安全確保支援士」を受験することにしました。
受験できる回数が多いメリットもそうですが、記事数やフォロワー数が多いので勉強のモチベーションが下がったらQiitaの記事を参考にしてモチベーションアップできればと思います。

## 6. 調査環境と筆者のスキル
VS Code
Node-RED

普段はSaaSアプリ開発を担当
node-redは先週の水曜日に導入
JavaScriptはなんとなくわかるレベルで開発経験なし

## 7. 実際にできたこと
1.Node-REDを使ってQiitaAPIを読んでみる（10分）
Node-REDははじめて使用するため、適当なAPIを呼び出ししてみます。
とりあえず、問題なく使用できることを確認できました。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885686/3f088925-c93d-a3d1-40bc-2e42dcb535fc.png)

 ```
[{"id":"c53196dd7a2581dd","type":"tab","label":"フロー 5","disabled":false,"info":"","env":[]},{"id":"b25099f1d4de2dab","type":"http request","z":"c53196dd7a2581dd","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"https://qiita.com/api/v4/tags/ITストラテジスト試験","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"x":410,"y":220,"wires":[["2839fc5146803a08"]]},{"id":"dcdd045077fd1b82","type":"inject","z":"c53196dd7a2581dd","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":200,"y":220,"wires":[["b25099f1d4de2dab"]]},{"id":"2839fc5146803a08","type":"debug","z":"c53196dd7a2581dd","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":650,"y":220,"wires":[]}]
 ```

2.情報処理技術者試験名でタグ情報を出力する（10分）
情報処理試験名でTagが存在するか、試しに「基本情報技術者試験」でAPIを呼び出ししてみます。
一番受験者の多い試験ということもあり、タグもちゃんとあるようです。
```
 [{"id":"2004130bbbfa0b3d","type":"debug","z":"84ccad4591f74f4c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":730,"y":80,"wires":[]},{"id":"fa21d7bd54f45636","type":"http request","z":"84ccad4591f74f4c","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"https://qiita.com/api/v2/tags/基本情報技術者試験","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"x":490,"y":80,"wires":[["2004130bbbfa0b3d"]]},{"id":"89a60061d6f85eb2","type":"inject","z":"84ccad4591f74f4c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":260,"y":80,"wires":[["fa21d7bd54f45636"]]}]
 ```
3.複数のタグ情報のAPI呼び出しを一括でできるようフローにループ処理を追加する（20分）
「Loop」専用ノードを調べましたがありません。
Node-REDの導入を手伝っていただいた講師の方に質問したところ、参考の記事を教えていただきました。
教えていただいた記事と自身で調べた記事を元に、1フローで複数回のAPIを呼び出すことに成功しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885686/e0f94ec9-cc27-049c-45e1-3888490b957f.png)

```
 [{"id":"1f1ec7aa728a6a63","type":"tab","label":"フロー 3","disabled":false,"info":"","env":[]},{"id":"027b44f913b69e39","type":"http request","z":"1f1ec7aa728a6a63","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"x":230,"y":220,"wires":[["15013486107986f9"]]},{"id":"a391fcc31d3ac38c","type":"inject","z":"1f1ec7aa728a6a63","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"","payload":"","payloadType":"str","x":170,"y":140,"wires":[["4c2cb9dc03aafe39"]]},{"id":"15013486107986f9","type":"debug","z":"1f1ec7aa728a6a63","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":550,"y":220,"wires":[]},{"id":"759134ae439a0eba","type":"function","z":"1f1ec7aa728a6a63","name":"","func":"msg.url = msg.payload;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":571,"y":167,"wires":[["027b44f913b69e39"]]},{"id":"4c2cb9dc03aafe39","type":"function","z":"1f1ec7aa728a6a63","name":"for each item","func":"if( msg.i     == undefined ) msg.i = 0;\nif( msg.items == undefined ) {\n\tmsg.items = [\n\t\n\"https://qiita.com/api/v2/tags/基本情報技術者試験\",\n\"https://qiita.com/api/v2/tags/応用情報技術者試験\",\n\"https://qiita.com/api/v2/tags/ITストラテジスト試験\",\n\"https://qiita.com/api/v2/tags/システムアーキテクト試験\",\n\"https://qiita.com/api/v2/tags/プロジェクトマネージャ試験\",\n\"https://qiita.com/api/v2/tags/情報処理技術者試験\",\n\"https://qiita.com/api/v2/tags/ネットワークスペシャリスト試験\",\n\"https://qiita.com/api/v2/tags/データベーススペシャリスト試験\",\n\"https://qiita.com/api/v2/tags/情報処理安全確保支援士\",\n\"https://qiita.com/api/v2/tags/ITパスポート試験\",\n\"https://qiita.com/api/v2/tags/情報セキュリティマネジメント試験\",\n\"https://qiita.com/api/v2/tags/エンベデッドシステムスペシャリスト試験\",\n\"https://qiita.com/api/v2/tags/ITサービスマネージャ試験\",\n\"https://qiita.com/api/v2/tags/システム監査技術者試験\"\n\n\n\t];\n}\n\nmsg.payload = msg.items[ msg.i ];\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":395,"y":162,"wires":[["f651eeddbb92ad54","759134ae439a0eba"]]},{"id":"f651eeddbb92ad54","type":"function","z":"1f1ec7aa728a6a63","name":"++","func":"if ( (msg.i += 1) < msg.items.length ) {\n\treturn msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":396,"y":114,"wires":[["4c2cb9dc03aafe39"]]}]
```

1. ExcelファイルにリストアップしたQiitaタグ情報をAPIを使って（断念）（120分）
1フローで複数回のAPIを呼び出せるのは便利ですが、調査したいタグはもっとたくさんあります。
できれば、Excelファイルにリスト化してリストに記載したタグを一括で呼び出ししてほしいと思い、
ファイルを参照するノードを探し、ストレージの「read file」ノードを上手く使えば実現できそうです。
ただ、ここで壁にぶち当たりました。
そもそも、Node-RED自体はどこにあるのか、何を参照しているのかわからないということです。
試しに、ローカルパスを設定するも
<font color="Red">「"Error: ENOENT: no such file or directory, open」</font>
となりますし、Node-RED自体がどこにあるのか、分からないので相対パスも設定できず、
別の方法を検討することにしました。
　
1. 参照するファイルをGoogle スプレッドシートに変えてみる （断念）（120分）
参照先フォルダーが分からないなら、クラウド上にあるファイルならどうか？と思い、
リンク先の記事を参考に参照先ファイルをGoogle スプレッドシートに変更しました。
Google スプレッドシート用ノード追加とGCP設定に時間がかかりましたがなんとか実行‼
するもAPIの権限エラーでファイルを参照できず、断念しました。

https://qiita.com/tatsuya1970/items/1fd593306334bdfbf509

## 8. 今回実施したことの感想
今回は、Node-REDに慣れるためにできるだけNode-REDを使用するようにしました。
ただ、もともとゼロから開発環境を作成すること自体はじめてなので、やりたいことに合わせて構築環境に手を加えることができませんでした。
途中（というか最初の頃から）、この作業ならPower Automate Desktopでいいのでは？と思いながら進めていました。
SaaS製品でもそれぞれの得意・不得意がありそうなので、今後はこの辺りを見極めて作業ができるようになりたいです。

また、抽出対象のタグを選定に苦労しました。
たとえば、「プロジェクトマネージャ試験」は末尾の試験部分を抜いてタグ検索するとフォロワー数・記事数ともに増えますが、明らかにIPAの試験以外の記事も検索対象となります。
そのため、試験名称のタグのみカウント対象としました。
他にも名称変更や英字略称をカウント対象に含めるか検討しましたが、抽出対象や範囲があいまいになってしまうため、あくまでもIPAの試験名称を対象としています。
時間が許すようでしたらタグとの関連性も調査したかったのですが調査方法が分からず、今後自身のスキルが上がったらまた挑戦してみたいです。


## 9. 調査対象のタグ

ITパスポート試験/ITパスポート
情報セキュリティマネジメント試験/情報セキュリティマネジメント
基本情報技術者試験/基本情報技術者
応用情報技術者試験/応用情報技術者
情報処理安全確保支援士
ITストラテジスト試験/ITストラテジスト
システムアーキテクト試験/システムアーキテクト
ネットワークスペシャリスト試験/ネットワークスペシャリスト
ITサービスマネージャ試験/ITサービスマネージャ
プロジェクトマネージャ試験
データベーススペシャリスト試験/データベーススペシャリスト
エンベデッドシステムスペシャリスト試験/エンベデッドシステムスペシャリスト
システム監査技術者試験/システム監査技術者


##### 10.追記 
1.ローカル環境のExcelファイルの情報取れそう
enebularに変えたら上手くいきそう。ノード内に一時変数をどう設定していいのかわからないので模索中。
https://qiita.com/cocoNeko35/questions/0aa01ddf7bbeef930d50