AIとコーディング-Safariの履歴をCSVに抽出するAppleScriptを作る
この記事では、macOSのAppleScriptを使用してSafariのブラウザ履歴をCSV形式に変換し、そのデータを簡単に分析する方法をご紹介します。
また、ChatGPT-4oやClaude3といったAIツールを活用して、コーディング、そしてコードレビューを行っています。
コードは全量この記事内でご紹介しています。ご自由にお使いください。
ただし、実行に際して問題が生じた場合、責任は負いかねますのでご了承ください。
URLを連携して、AppleScriptに変換してもらう
これがChatGPTの良いところですね。
URLを一緒に連携して、AppleScriptで動かしたい、というのを伝えるとそれだけでコードを作ってくれます。
以下の記事を参考にさせていただきました。
出来上がったコードはバグだらけ-テストと設計の重要性
断っておくと、このタイミングで出来上がるコードはバグだらけです。というか動きません。これはある種当たり前です。
人間が書くコードも概ねそのようなものです。動くと信じてコンパイルしたり、ビルドする際にコケることもあります。そこで修正を繰り返して、とりあえずぱっと見良さそうなものが出来上がります。そこから更にレビューやテストをして、品質を上げるのです。
現時点のChatGPTは自分で実際に動かして、確認をしているわけではないので、その辺はこちらが確認する必要があります。というか、そうでもしてくれないと人間のやることがなくなります。
AIによるコーディングが当たり前になると、より一層テストフェーズが重要になってくるように思います。ちなみに、条件を全網羅してAIにテストさせれば良いじゃないか、と思うかもしれませんが、ことはそう単純ではありません。
テストにも定石はありますが、ある種経験則から来る、人間らしい勘もまだまだ必要なところかなと思います。加えて、バグは早めに見つけたほうがコストがかからないので、AIに指示を出すところ(仕様を決めるところ等)もおざなりにはできません。
ただ、今の時代、一昔前と違ってゴリゴリいちからコーディングするよりも、既存のパッケージを組み合わせてごにょごにょすることが多いように思います。とはいえ、この原則は今の時代も、今後も変わることは無いと思います。ただ、AIの力でコーディングそのものの負担は軽くなるため、人間が意識を向けるべきところは、ちょっと変わってくるのかなと思います。
とりあえず動くものを別のAIにレビューしてもらう
とりあえず動くようには、人間側と協力すればさほど難しくはありません。人間側は事象をひたすらAI(ChatGPTなど)に報告すれば、どんどん修正してくれます。
しかし、できあがったコードはいささかぐちゃぐちゃに見えます。そこで、このコードをClaude3に連携してレビューしてもらいます。AI同士の相互レビューですね。別に、ChatGPTに異なるセッションを作って、そこで見てもらっても良いとは思います。
個人的な感想ですが、やはりAIによってコーディングにもクセがあるような気がします。なので、可能な限り複数のAIに見てもらうと、品質が向上するような気がします。
もっとも、レビュー結果そのものを鵜呑みにする必要はありません。今回であれば、エラーハンドリングはあっても良いと思います。ファイルの上書きに関しては、元ファイルを編集するわけでは無いので、不要と判断します。ファイルのクリーンアップはあった方が良いので採用しましょう。
ブラウザ履歴のCSV書き出し
さて、こちらが本題ですが、Safariのブラウザ履歴をCSVに書き出すことで、そのままでは難しいデータ分析や解析を行うことができます。
「訪問頻度」や「時間別」の傾向を探るのに役立てられるでしょう。
なお、URLのパラメーターには個人情報が含まれることがあります。そうでなくても、機微な情報が含まれることもあります。取り扱いにはご注意ください。
コード実行と手順
1.フルディスクアクセスを許可する
システム環境設定を開き、「セキュリティとプライバシー」を選択、または検索します。
「フルディスクアクセス」を選択し、「スクリプトエディタ」にアクセス許可を与えます。
2.SQLite3のインストール
ターミナルを実行して、以下コマンドを実行。(すでにインストールされていれば不要です)
brew install sqlite3
3.AppleScript
次に、以下のAppleScriptコードをスクリプトエディタに貼り付けて実行します。このコードは、Safariの履歴データベースをコピーし、SQLite3を使用して履歴データをCSVファイルに変換します。(画像でもこの記事の下部に連携します。)
set csvFilePath to (POSIX path of (path to desktop)) & "SafariHistory.csv"
set historyDBPath to (POSIX path of (path to desktop)) & "History.db"
try
try
do shell script "cp ~/Library/Safari/History.db " & quoted form of historyDBPath
on error errMsg
error "History.dbのコピーに失敗しました: " & errMsg
end try
try
do shell script "
sqlite3 -csv -header " & quoted form of historyDBPath & " \"
select datetime(v.visit_time + 978307200, 'unixepoch', 'localtime') as visit_date, i.url
from history_visits as v
join history_items as i
on v.history_item = i.id
order by visit_date desc;
\" > " & quoted form of csvFilePath
on error errMsg
error "SafariHistory.csvの作成に失敗しました: " & errMsg
end try
if not (do shell script "test -f " & quoted form of csvFilePath & " && echo exists") is "exists" then
error "SafariHistory.csvの作成に失敗しました。"
end if
display dialog "Safariの履歴が以下の場所にエクスポートされました: " & csvFilePath & "
SafariHistory.csvの取り扱いにはご注意ください。"
do shell script "rm " & quoted form of historyDBPath
on error errMsg
display dialog "エラーが発生しました: " & errMsg
end try
ファイル操作をするので、セキュリティーのレベルによっては、エラーが発生する可能性があります。
ChatGPTでデータ分析
生成されたCSVファイルをChatGPTにアップロードし、訪問頻度や時間帯別のアクセス解析を依頼します。例えば、「訪問頻度や時間帯別のアクセス解析をお願いします」と入力すると、以下のようなグラフや、詳細な分析結果が得られます。
なかなか興味深い結果です。曜日別のグラフも作ってもらいましたが、それだと差はありませんでした。時間帯を見ると面白く、生活スタイルが垣間見えます👀
話はそれますが、次に取るべきアクションも表示するようになりました。
「Can you analyze visit duration?」や「How to improve visit patterns?」といった選択肢は、前まで表示されていなかったように思います。
まとめ
現時点でChatGPTなどのAIを駆使したコーディングは、それ単体では人間を凌駕する働きはしません。しかし、人間側が協力的であれば、AIも能力を発揮し、効果的に開発が行えるようになります。今後、AIは品質を向上させて成長するでしょうが、人間の持つ直感やセンスは依然として重要です。それぞれの得手不得手を理解し、共に建設的に歩むことが重要です。
コード(画像)
この記事が気に入ったらサポートをしてみませんか?