Arcブラウザの履歴のエクスポートを行い、日々の振り返りに役立てよう
生成AIを活用したArcブラウザ履歴エクスポートツールの開発
"本記事の文章や、言及するコード、画像についても生成AIで作成しています"
インフラエンジニアのKensei(@fullen789)です。今回は、生成AIを活用してArcブラウザの閲覧履歴をエクスポートするPythonスクリプトを開発し、GitHubで公開した経験についてお話しします。この記事では、開発プロセス、生成AIとの協働、そして直面した課題とその解決方法について詳しく説明します。
生成AIはClaude(Proプラン)をメインにPerplexity(Proプラン)やChatGPT(Free)も併用しました。
背景:なぜこのツールを開発したのか
生成AIでツールを作りたい、コードを書きたいという気持ちはあっても、具体的な用途がなければモチベーションにつながりません。日々の業務を振り返る中で、メインで使用しているArcブラウザの履歴をエクスポートすることで、日々や1週間の振り返りに活用できるデータが得られるのではないかと考えました。
最近読んだ「あっという間に人は死ぬから 「時間を食べつくすモンスター」の正体と倒し方」(佐藤舞 著)の影響もあり、1週間の振り返りにブラウザの履歴を活用できないかというアイデアが生まれました。
開発プロセス:生成AIとの協働
約2時間でコード作成からGitHubでの公開まで進めることができました。以下、主要な開発ステップとそれぞれにおける生成AIの活用方法を紹介します。
1. コードの生成
Claudeを使用してコードの生成を行い、Macで動作確認を繰り返しました。より汎用的なコードにするため、helpコマンドの追加や引数の追加なども行いました。
動作確認環境
- Mac M2チップ / macOS Sonoma
- Python3 3.9.6
- sqlite3 3.43.2
スクリプトの主な機能
- 引数なし、または引数を指定して履歴を全件CSVで出力
- Arcが動作中でもHistoryファイルを安全に扱うため、デスクトップにコピーしてから処理
- 指定の日付範囲の履歴をクエリしてCSV出力
2. GitHubへの公開準備と公開
READMEやライセンスファイルの作成も生成AIの支援を受けて行いました。GitHubへの公開が初めてだったため、手順を確認しながら実施しました。
3. CSV分析用のプロンプト生成
生成したCSVを効果的に分析するため、Claudeを使ってプロンプトを作成しました。このプロンプトにより、日付ごとにアクセスした記事情報をまとめることができます。
与えられたCSVデータを分析し、以下の条件に従って情報を抽出してください:
1. データを日付ごとに分類してください。
2. 各日付について、以下の条件を満たすエントリーのみを抽出してください:
- タイトルが具体的な記事やサービスを指しているもの
- 一般的な検索エンジン(Google, Perplexity等)、AIアシスタント(Claude, ChatGPT等)、翻訳サービス(DeepL, Google翻訳等)は除外すること
3. 抽出したエントリーについて、以下の情報を含めてください:
- タイトル(urls.title)
- URL
4. 結果を日付の新しい順に表示し、各日付のエントリーをリスト形式で出力してください。
5. 特定の日付に該当するエントリーがない場合は、「該当する記事やサービスはありません。」と表示してください。
6. 出力形式は以下の通りにしてください:
YYYY-MM-DD:
1. [タイトル]
[URL]
2. [タイトル]
[URL]
出力例
以下は、指定された条件に基づいてCSVデータを分析し、情報を抽出した結果です。
### 2024-08-28:
1. keyaki80/arc-history-exporter: arc-history-exporter python
[https://github.com/keyaki80/arc-history-exporter](https://github.com/keyaki80/arc-history-exporter)
2. arc-history-exporter/README.md at main · keyaki80/arc-history-exporter
[https://github.com/keyaki80/arc-history-exporter/blob/main/README.md](https://github.com/keyaki80/arc-history-exporter/blob/main/README.md)
3. langgenius/dify: Dify is an open-source LLM app development platform. Dify's intuitive interface combines AI workflow, RAG pipeline, agent capabilities, model management, observability features and more, letting you quickly go from prototype to production.
[https://github.com/langgenius/dify](https://github.com/langgenius/dify)
4. LLM アプリケーションが簡単に作れるという話題の Dify 試してみた
[https://zenn.dev/aldagram_tech/articles/7c168a667b06e4](https://zenn.dev/aldagram_tech/articles/7c168a667b06e4)
5. 噂のノーコードAIシステム開発環境Difyを使ってツールを作ってみた。使った感想|shi3z
[https://note.com/shi3zblog/n/necd6de514475](https://note.com/shi3zblog/n/necd6de514475)
6. Difyで作ったAIチャットアプリでペンテストを一部自動化できるか試してみた: NECセキュリティブログ | NEC
[https://jpn.nec.com/cybersecurity/blog/240628/index.html](https://jpn.nec.com/cybersecurity/blog/240628/index.html)
4. コードの動作フロー図作成
スクリプトの構造と機能を視覚化するため、Mermaid記法を使用してフローチャートを作成しました。
5. 社内LT用スライドの生成
ClaudeでMarpを使用してプレゼンテーションスライドを生成しました。
直面した課題と解決策
開発プロセスでいくつかの課題に直面しましたが、生成AIと人間の協力によって解決することができました。
1. Arcの履歴情報へのアクセス方法
Arcブラウザには履歴のエクスポート機能がなかったため、ファイルから直接アクセスする方法を模索しました。Chromeと同様のファイル構造を持つことを発見し、SQLiteでデータにアクセスできることを確認しました。
2. SQLクエリの問題
当初、テーブル構造を考慮せずにSQLを生成したため、正しい結果が得られませんでした。Qiitaの記事を参考にしつつ、テーブル構造の情報を生成AIに提供することで、適切なSQLクエリを作成することができました。
3. WHERE句の動作不良
SQLのWHERE句が正しく動作しない問題に遭遇しました。ChatGPTを使ってSQLコードをチェックし、時間形式の変換に関する問題を特定・修正しました。
まとめ:生成AIとの協働がもたらした成果
このプロジェクトを通じて、生成AIと協働することで驚くほど速く開発を進められることを実感しました。「天井が低い環境で育ったノミは、天井が高い環境になっても高く飛べない」という研究結果が示すように、生成AI以前の思考では想像できないほどの生産性向上を体験しました。
今回の経験は、生成AIを適切に活用することで、アイデアから実装、公開までのプロセスを大幅に加速できることを示しています。同時に、人間の創造性や問題解決能力と生成AIの処理能力を組み合わせることの重要性も再確認しました。
今後も生成AIを活用しつつ、より効率的で創造的な開発プロセスを探求していきたいと思います。
開発したツールのソースコードはGitHubで公開しています。
吉日IOブッククラブという、読書会を企画、開催しています。毎週土曜日開催しています。
Discussion