「ネットストーカーみたいですね」と言われてしまった情報収集方法（GPTsもあるよ！）

## はじめに
[ジーズアカデミー 技術記事書いてみた編 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/gsacademy)の17日目を担当します[philosophy_note](https://twitter.com/philosophy_note)です。2021年に東京LAB11期を卒業して現在は卒業生の方が起業した会社でエンジニアとして働いています。

当初書く気はなかったのですが、在籍時の担任の[kano_miori](https://twitter.com/kano_miori)さんに『記事を書かないGeekなんていないよ…………ね？？？？？？？』というハラスメント（略してギーハラ）を受けたため、執筆しました。ちなみに[kano_miori](https://twitter.com/kano_miori)さんは12/22に陰キャ論かオタク限界論について執筆してくれるそうです。楽しみですね！(煽り)

https://adventar.org/calendars/8833

## エンジニアと情報収集
本題に入ります。
私は異業種からITエンジニアに転職した人間ですが、
ITエンジニアは情報収集が重要な職種であると感じてます。
特にこの1年はChatGPTの登場を契機として
そのスピードが加速する毎日だと感じています。
この記事では私がどのように情報を収集しているかをまとめるとともに
発生した課題をGPTsを使用して解決を試みた話になります。

## RSS
私は情報収集にはRSSを利用しています。
RSSリーダーというと[inoreader](https://jp.inoreader.com/ja/)や[feedly](https://feedly.com/)
が有名ですが、私はアプリを増やしたくないのでSlackをRSSリーダーにしています。
手順も次のリンクにあるように簡単です。

https://slack.com/intl/ja-jp/help/articles/218688467-Slack-%E3%81%AB-RSS-%E3%83%95%E3%82%A3%E3%83%BC%E3%83%89%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B

私は専用のワークスペースを作成し、チャンネルごとに表示するフィードを分けることで
カテゴリー分類しています。

![スクリーンショット 2023-12-12 11.54.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638565/19918675-48f2-5eac-a1ce-d58f3db20580.png)

![スクリーンショット 2023-12-16 20.01.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638565/a99990e4-4f6c-6fae-11c1-410c86ce8e62.png)

スマホからもワークスペースにアクセスできるように設定することで、
通勤時間などの空き時間に記事を確認しています。

余談ですが、私は[kano_miori](https://twitter.com/kano_miori)さんのように陰キャかつオタクで会話が苦手なので、
会話のきっかけとして、同僚のエンジニアやG'sの同期が執筆した記事の感想を言うようにしています。
**「投稿したばかりなのになんで知っているんですか、ネットストーカーですか」**
**「なんで僕の記事読んでいるんですか怖い」**
といった形で逆方向に作用しています( ；∀；)

## Notion
読んだ記事の中で気になる記事があればSlackの『後で見る』に登録し、
時間ができた際に内容を詳しく確認しています。

保管したい記事についてはNotionに専用のデータベースを作成し
WebClipper機能を使用してブックマークしています。

https://www.notion.so/help/web-clipper

収集した記事以外にも仕事や個人開発で参照した記事も全てNotionに保存することで
情報管理を一元化するようにしています。

## GPTsで検索
そうした中で課題が発生しました。
記事が増えるにつれて目的の記事を見つける手間が発生しました。
当初はタグをつけて管理していたのですが、
タグ付けするのに時間を要する点がネックでした。

そうした中で次の記事を見つけました。

https://zenn.dev/yutakobayashi/articles/gpts-notion-api

記事の通りにリバースプロキシとOpenAPIを設定し、
記事を収集しているDBとAPI経由で連携するようにしました。

なお、下の画像の歯車マークをクリックする度に
APIキーがリセットされてしまうようなので注意してください。

![スクリーンショット 2023-12-12 12.13.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638565/e20c9f03-c1fc-94d6-798a-ede31c2a2eb8.png)

検索する指示文は次のように作成しました。

```instruction.md
この GPTs は、Notion データベースを自然言語クエリで検索するために設計されています。
検索するNotionデータベースには膨大な技術記事が格納されています。
 Notion ページから関連する情報を効率的に検索します。

GPT は、Notion データベースから正確で文脈に沿った情報を提供することに重点を置いています。
ユーザーは日々の業務で使用する開発技術に関するリファレンスを検索するために使用しています。
GPT は、データのプライバシーとセキュリティの制約の中で運用され、
機密情報が細心の注意を払って取り扱われることを保証します。
また、簡潔で有益な回答を提供し、必要に応じてクエリを明確にして検索結果の精度を高めることができます。

回答する際は次の手順を守ってください
①検索クエリでデータベースの内容を検索する
②記事のタイトルを確認してその中から検索クエリとの内容の関連度を調査する
③関連度の高い順に表示する

質問の内容に直接ヒットする記事がない場合が多いです。
そのような場合は検索クエリを適宜変更する必要があります。
変更するクエリの候補をユーザーに提案し、
了承が得られたクエリで再度検索してください。

limitを10件にしてください。
検索結果は下の表にまとめてください。
表は最大10件まで表示してください。
()内はテーブルで表示してほしいNotionPageの項目になります。

| 記事タイトル | 記事の元URL | 保存日 | 
| ------------ | ----------- | ------ | 
|  (Notion Pageのタイトル) |（URLプロパティで所持しているURL）|（クリップ日時で所持している日付 ）| 
|              |             |        | 
|              |             |        |
```

実際にRSPECのベストプラクティスについて調べたところ次のような検索結果が返ってきました。

![スクリーンショット 2023-12-16 19.26.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638565/ae8d258a-f9e7-39ad-1919-93c54d93f29f.png)

NotionのDBの検索ボックスで同じ内容を検索しても1件もヒットしなかったので、
ある程度の柔軟な検索には対応してくれそうです。

## おわりに

記事内ではGPTsで上手く解決できたような書き方ですが、
実際には検索速度が遅いことや精度で課題があるので、
まだまだ改良が必要そうです。

また、slackについても、関係ない記事が多数存在し、
情報収集のノイズとなっている課題があります。
AWS Lambdaを通してフィルタリングするなどといった対応が必要そうです。
何か良い解決策などありましたら
コメントでお知らせいただけますと幸いです。

## おまけ（気に入っているRSSフィード）
### 企業テックブログ
https://yamadashy.github.io/tech-blog-rss-feed/

### Speaker Deck
https://speakerdeck.com

### Menthas
https://menthas.com

### Publickey
https://www.publickey1.jp