0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

cursor×GitHubで、AIの恩恵を受けながらクロスデバイスでのドキュメント管理を実現した話

Posted at

はじめに

初めまして!AI戦略室という部署でエンジニアをしているYuitoと申します。
私はwebマーケ会社で4年ほどSEOマーケターをしていましたが、25年10月にエンジニアにジョブチェンジをしました。

今回は、エンジニアの技術を学んでいく中で、その仕組みを応用したドキュメント管理方法について、思考の整理も兼ねてまとめてみました。

背景

元々はPCもスマートフォン(以下、スマホ)もApple製品を利用しており、Apple純正のメモアプリを使ってクロスデバイスでドキュメントを管理していました。
しかし、少し前にスマホをiPhoneからGoogle Pixelに変更したことで、上記の管理方法ができなくなってしまいました。。。

また、当時cursorでのドキュメント編集・保存のメリットを感じていたため、ローカルとクラウドを接続できる手段を探していました。
最適な方法を模索する中で、GitHubの活用に行き着きました!

本記事では、その仕組みと実装方法を紹介します。

実現した仕組み

構築したシステムは、以下の3つの要素で構成されています。

まず、ローカルPC上のドキュメントをGitHubのリポジトリと連携させ、スマホからはGitHub公式アプリを使って編集できるようにしました。
これにより、PCとスマホの両方から同一のドキュメントにアクセスできる環境を整えることができました!

次に、ローカルファイルの保存をトリガーとして、Gitのコミットとプッシュを自動化するスクリプトを作成しました。これにより、手動でコミットやプッシュを行う必要がなくなり、ローカルでの変更が自動的にGitHubに反映されるようになりました。
めちゃくちゃ便利です!

最後に、このスクリプトを常にバックグラウンドで実行できる状態にしました。
Macのログイン時に自動起動するように設定することで、ターミナルを開くことなく、ファイル変更の監視と自動プッシュが継続的に動作するようになりました。

背景と設計の経緯

PCでのドキュメント管理をローカルに移行した理由

PCでのドキュメント管理をクラウドからローカルに変更した理由は、cursorを活用したドキュメント編集を行いたかったためです。

cursorのエージェント機能は本当に強力で、ドキュメントの作成・保存・活用を効率的に行えます!
例えば、PDFファイルを参照したい場合、従来のAIチャットツールではファイルをアップロードする必要がありましたが、cursorではファイルをメンションするだけで参照できます。
また、生成した内容を直接ファイルとして保存できるため、GPTのようにチャットで流れてしまったり、別のメモアプリに保存し直す必要がありません。これが地味に便利なんですよね。

参考動画:【非エンジニアのCursor活用術】超必見!話題のAIコードエディタを徹底解剖!年商30億円CEOが最近ハマっているAI系YouTube「ジェネトピ」コンビが活用例まで解説!

スマホへの同期手段の選定

スマホへの同期手段として、最初はObsidianのRemote Syncを試しましたが、うまく同期できなかったため断念しました。。。

そこで、GitHubを使ってローカルとクラウドを接続する方法を採用しました!スマホ側ではGitHub公式アプリを使用することで、PCと同じドキュメントを編集できる環境を構築できました。

(追記:この記事を書き終わってから知ったのですが、スマホのobsidianアプリとGithubの連携の仕方を見つけました。また追って記事にしたいと思います!)

自動化の実装

ローカルファイルの保存をトリガーとして、Gitのコミットとプッシュを自動化するスクリプトを作成しました。これにより、毎回手作業でコミットとプッシュを行う必要がなくなり、ローカルでの変更が自動的にGitHubに反映されるようになりました!

ただし、このスクリプトを毎回ターミナル上で実行状態にする必要があったため、バックグラウンドで常に実行される状態を構築しました。
macOSのLaunchAgentを活用することで、ログイン時に自動起動し、プロセスが常に監視を続ける仕組みを実現できました。

なお、PCからスマホへの同期は実現しましたが、スマホからPCへの同期については、編集頻度が低いことから優先度が低く、今回は実装していません。必要になったら追加する予定です。

実装手順

それでは、Macログイン時にターミナルを開かなくても自動でGitのプッシュスクリプトをバックグラウンドで実行するための手順を説明します!

前提条件

まず、作業対象のディレクトリ構成を確認します。以下のような構成を想定しています。

~/git/XXXXXX/
│
├── auto-gpush-watch.sh     ← 自動 push 本体スクリプト
├── .git/                   ← Gitリポジトリ
└── (監視したいファイル群)

1. fswatchのインストール

ファイル変更を監視するために、fswatchをインストールします。Homebrewを使用して以下のコマンドを実行しましょう。

brew install fswatch

2. 自動プッシュスクリプトの作成

~/git/XXXXXX/auto-gpush-watch.shに以下のスクリプトを保存しましょう。

#!/bin/bash
WATCH_DIR="$HOME/git/XXXXXX"
LOG_FILE="$HOME/git/XXXXXX/auto-gpush.log"

cd "$WATCH_DIR" || exit

echo "[$(date)] auto-gpush-watch.sh started, watching $WATCH_DIR" >> "$LOG_FILE"

fswatch -o "$WATCH_DIR" | while read f; do
  echo "[$(date)] Change detected, running git push" >> "$LOG_FILE"
  git add .
  git commit -m "Auto update: $(date '+%Y-%m-%d %H:%M:%S')" >> "$LOG_FILE" 2>&1
  git push origin main >> "$LOG_FILE" 2>&1
done

保存後、実行権限を付与します。

chmod +x ~/git/XXXXXX/auto-gpush-watch.sh

このスクリプトは、fswatchを使って指定ディレクトリの変更を監視し、変更が検知されると自動的にgit addgit commitgit pushを実行します。ログはauto-gpush.logに記録されるので、何か問題があったときにも確認できますね!

3. LaunchAgentの設定

macOSのLaunchAgentを使用して、スクリプトを自動起動するように設定します。~/Library/LaunchAgents/com.auto-gpush.plistに以下の内容を保存しましょう。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key><string>com.auto-gpush</string>
  <key>ProgramArguments</key>
  <array>
    <string>/bin/bash</string>
    <string>/Users/name/git/XXXXXX/auto-gpush-watch.sh</string>
  </array>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
  <key>StandardOutPath</key><string>/Users/name/git/XXXXXX/launchd.log</string>
  <key>StandardErrorPath</key><string>/Users/name/git/XXXXXX/launchd-error.log</string>
</dict>
</plist>

この設定により、ログイン時に自動的にスクリプトが起動し、プロセスが終了しても自動的に再起動されます(KeepAlivetrueのため)。これで、一度設定すればずっと動き続けてくれます!

4. LaunchAgentのロード

作成したLaunchAgentをロードして、自動起動を有効にしましょう。

launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.yuito.auto-gpush.plist

5. 動作確認

LaunchAgentが正しく登録されているか確認しましょう。

launchctl list | grep auto-gpush

正常に登録されていれば、com.yuito.auto-gpushが表示されます。これで準備完了です!

6. 初期同期の実行

最後に、GitHubリポジトリとの初期同期を行いましょう。

cd ~/git/XXXXXX
git add .
git commit -m "initial sync"
git push origin main

これで、以降はローカルファイルの変更が自動的にGitHubにプッシュされるようになります!ファイルを保存するだけで、GitHubに反映されるので本当に便利です。

まとめ

本記事では、cursorとGitHubを組み合わせることで、AIの恩恵を受けながらクロスデバイスでのドキュメント管理を実現する方法を紹介しました!

cursorの強力なエージェント機能を活用してローカルでドキュメントを編集し、GitHubを介してスマホからも同じドキュメントにアクセスできる環境を構築しました。さらに、ファイル変更の自動検知とGitの自動プッシュを実装することで、手動作業を最小限に抑えながら、常に最新の状態をクラウドに同期できる仕組みを実現できました。

この方法により、PCとスマホの両方から効率的にドキュメントを管理できるようになり、デバイスを切り替えても作業の継続性が保たれます。
同様の課題を抱えている方の参考になれば嬉しいです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?