デジタル初心者でも「3日でWeb APIから得たデータで分析までできるのか」やってみた！

初めまして。
今回はタイトル通り、「3日でWeb APIから得たデータで分析までできるのかやってみた」編です。
一応過去に楽天APIを使ったことはあります！
[過去の記事はこちらをクリック](https://qiita.com/NagaharaHitomi/items/d7897363a2332338192e)

ですが、自力じゃなかったんです。（バリバリ人の手借りました笑）
なので今回は「自力で作る！をテーマにやってみました」という記事です。
これからAPI初めて触るよ～という方はには是非参考にして頂ければと思います。

# 3日後はどんな状態？一応立てた目標達成計画
3日というなんの根拠もない制限をつけたので、自分なりにスケジュールを立ててみました。

1日目：APIを使用した真似したいQiita記事を見つける。
　　　 Visual Studio Codeを使ってデータを取得する。
　　　 真似したQiita記事（コード）を元に自分なりにアレンジする。
　　　（休みの日なので、6時間くらいは制作に費やせる日！！）　
　　　
2日目：得た情報を分析する。
　　　（仕事の日なので2時間くらいは制作に費やせる日！！）

3日目：ひとまず完成！！！！
　　　　Qiitaに完成したものを投稿する。これは絶対する。
　　　（仕事の日なので2時間くらいは制作に費やせる日！！）

ということで、このザックリとした計画でスタートです。

　　　


# 結論、ハーフハーフの結果のわけ
計画までは良かったんですけどね・・・という話です。
自分の都合の良い解釈でハーフハーフと書きましたが、
実際3分の1くらいしか終わっておりません。笑

まぁ3日でできるはずもなく、1日目の内容が2日かかりました。
1日目に立てた計画、【真似したQiita記事（コード）を元に自分なりにアレンジ】ができなかったんです・・・

何がどうできなかったかはあとでお話します。

# 実際なにしたの？何がしたかったの？
私がしたかったことはQiita記事から【マネジメント】と【悩み】について
書かれている記事を抜き取って分析をしたかったというものです。

#### 参考にしたQiita記事
[QiitaAPIにて、小学校の「プログラミング教育」におけるトレンドを考察してみた](https://qiita.com/kokano23/items/9f4f54dc484451ce35eb)



#### 完成したもの

 ```js

// axiosモジュールを読み込む
const axios = require('axios');

// main()関数を定義する
async function main() {
    // QiitaAPIで「マネジメント+悩み」という単語で記事を検索する
    let response = await axios.get('https://qiita.com/api/v2/items?per_page=50&query=' + encodeURIComponent('マネジメント'+'悩み'));
    // 結果を出力する
    for (let i=0; i<response.data.length; i++) {
        console.log(response.data[i].tags[0].name);
    }
}

main();


 ```
参考にした記事を見てもらったら分かると思うんですが、何が変わったの？と思うぐらい
ほぼ一緒です。
でもこれに私は2日かかりました。

#### 検索結果がこちら
```js
PS C:\Users\cc_mr\OneDrive\デスクトップ\protoout\00-helloapi> node homework.js
初心者
ポエム
マネジメント
初心者
資格
色
プロダクトマネジメント
キャリア
ゲーム開発
Linux
アジャイル
DevRel
ポエム
AdventCalendar
チームビルディング
ポエム
#プロダクトマネジメント
前向きデータ整備人
agile
iOS

PS C:\Users\cc_mr\OneDrive\デスクトップ\protoout\00-helloapi> 
```
長いので一部割愛しましたが、なんだこれは！？という感じです・・・


# 初心者あるある。計画はどこで躓いた？
初めから躓きまくった3日間でしたが、これも共感してくれる方がいるはずだと思って
記録に残しておきます。


#### ①そもそもコードを変更する恐怖がある。
もう初心者あるあるだと思いますが、コードを触ることに怖さありますよね・・・
自分で変更して元あるコードがぐちゃぐちゃになったらどうしようとか、
果たしてこれであっているのか？とか不安で仕方なくなるんです・・・
英語過ぎて何書いているかわからなくなりました。


#### ②書かれてあるコードのどこを変更したらいいかわからない。
ひとまず日本語で書いてあるところは変更して、Visual Studio Codeで実行的な操作をしたのですが、前述書いたように以前楽天APIを使用してデータを抜き取ることをしたことがありました。
なので、QiitaAPIを取得してどこかに差し込む作業がいるのだと思っていた私・・・
結論、参考にした記事から自分のQiitaAPIを挿入しなくてもいいことがわかったのですが
QiitaAPIを取得から理解まで2時間くらいかかりました。



#### ③実行したけどエラーが出る。
```js
Error: Cannot find module 'C:\Users\cc_mr\OneDrive\デスクトップ\protoout\00-helloapi\homework.js'
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
    at node:internal/main/run_main_module:17:47 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

Node.js v17.6.0
PS C:\Users\cc_mr\OneDrive\デスクトップ\protoout\00-helloapi> 
```
参考にした記事から日本語の部分だけを変更して実行的なことをしても
こんなエラーが出てくるわけです。またこれで3時間くらい調べました。
変更したコードおかしいのか？と思ってスペル見たり、分析してましたが一向にエラー消えず・・・
エラーの部分をGoogle翻訳を使って検索してみて、どういうエラーが出ているかは判明できました。

結論、Visual Studio Codeのファイル名を【homework】というタイトルにしていたのですが、
【homework】の後ろに【.js】というものがなく、うまく作動しなかっただけでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1811930/aa7dcdc1-76d2-bae4-4ba6-43e893f776b7.png)
結果、ほぼ2日の時間を費やしてしまった訳です・・・

#### ④検索結果が何を示しているのかさえ、わからない。
参考記事を真似ただけなので、何がなんだかわからないんです。
本当はコードを追加・アレンジしてLGTM数が多い順とかにしたかったんですが
もうどこに、どのように挿入・変更するのかわからず、ただただ時間が過ぎました。



#### ⑤思った以上にQiita記事にするのに時間がかかる。
何がなんでも3日で記事にすることを目標にしていましたが、
そもそもコードというものに慣れてない私は、Qiita記事を書く時間も人よりかかります。
誤字脱字に気をつけるのも大事だし、せっかくならコードを皆さんが記事に反映しているように
反映させたいし・・・と思うと全部始めから調べまくったので時間もかかりました。
結局これも2時間くらいかかってます。




# 本当はこんなことしたかった！（次の目標！）

やはりデータ分析までしたかったなと思います・・・
でもこれも実力だし、仕方ないと思いつつ、
データ分析するためには、データ取得方法ももっと勉強したいと思いました！

あとは今回QiitaAPIを使って【マネジメント】と【悩み】という記事を集めたかったのですが、
別のAPI使って情報収集して比較したら面白そうだなと思ったり、
本業の仕事の方で考えるマネジメントの悩みとエンジニアの方が考えるマネジメントの悩みを
比較するのもしてみたいと思ってました。




# 私を助けてくれた救世主
まぁそんなこんなで3日間が経過したのですが、やり始めるとすぐ心が折れます笑
（だって自力で頑張ろうとしたらすぐ壁にぶち当たって全然解決しないのですから・・・）

ここで救世主の紹介なのですが、3日間なんかしらの「もくもく会」というものに参加してました。

その名も、もくもく作業するだけの会なのですが、こちらは初参戦です！
緊張気味に参加しましたが、案外オススメです！！！！

作業を頑張っている方と一緒にもくもく作業したり、
分からないことを参加されている方に質問してみたり、
何か話している方のそばに行ってラジオがてら話を盗み聞きしたり・・・笑

1人で頑張るより、仲間と頑張っている感じがして、
メンタル的にも支えられました！！



# 最後に・・・
3日間やってみて、時間もかかりましたし、最初に立てた計画も全く計画通りとは
行きませんでしたが、自力でやってみてわかったことがあります。

「人に教わるより、自力でやった方が身につく」ということです。
この言葉、エンジニア友達に言われてましたが、
知ってる人に聞く方がどうしても早いと思ってたんです。

ほぼコピペの内容で何がわかるの？という方もおられることは承知の上ですが、
Qiitaを使ってやりたいこと見つけてみたり、
これはなに書いているんだろう？と思って調べてみたりして、
分からなかったことが理解できるのが嬉しかったです。


今回の目標達成とはいきませんでしたが、デジタル初心者の方の参考になれば幸いです
長い記事に最後までお付き合いいただき、ありがとうございました。


# 参考資料
[Windows版 Node.js環境構築方法まとめ](https://qiita.com/maecho/items/ae71da38c88418b806ff)
[QiitaAPIにて、小学校の「プログラミング教育」におけるトレンドを考察してみた](https://qiita.com/kokano23/items/9f4f54dc484451ce35eb)
[Qiita API v2の仕様についての説明](https://qiita.com/api/v2/docs#get-apiv2items)
[Qiita API を使って、記事データを取得する方法](https://qiita.com/wakudar/items/8c594c8cc7bda9b93b4e)
[Google翻訳](https://translate.google.co.jp/?hl=ja)
[Qiitaの記事の書き方【研究生活ハック】](https://www.youtube.com/watch?v=pHfIs-5AJ5E)