CacheUpIt とは

CacheUpIt とは、
  • 指定された URL の更新を定期的にチェックし
  • 更新があればそれをダウンロードし
  • 指定された URL にアップロードする
常駐型の Perl スクリプトである。web コンテンツに対する一種の同期プログラムと思えばよいだろう。

動作要件

CacheUpIt が動作するためには次の Perl モジュールが動作する Perl 5.6 以上を備え、なおかつ curl コマンドが使用できるシステムで動作する。
  • Getopt::Long
  • Pod::Usage
  • Sys::Syslog
  • File::Path
  • File::Temp
今のところ Mac OS X や Linux をターゲトにしている。上記モジュールや curl コマンドは Mac OS X や Linux のディストリビューションの通常のインストールの仕方なら既に含まれている。

ダウンロード

現在のところ CacheUpIt はブログ「.Mac Tips」のエントリ「CacheUpIt バージョンアップ: ファイルの加工が可能に」から最新版が入手できる。

アップデートのアナウンス

アップデートはブログ「.Mac Tips」でアナウンスされるのでそちらを参照すること。このページは更新に対してメンテしないかもしれない。

注意

CacheUpIt の目的からもうお分かりだと思うが、CacheUpIt はインターネットに常時接続されたマシン上で実行する必要がある。CacheUpIt が実行されているマシンが停止している間は HaloScan の RSS も更新されない。

手順

以下、CaheUpIt の 2005 年 8 月 5 日時点での最新バージョン 1.6 を対象にして、Mac OS X における HaloScan のコメントのためだけに絞った CacheUpIt の設置手順を示す。
  1. CacheUpIt-1.6.tar.gz をダウンロードし、デスクトップに置く。
  2. デスクトップに置いた CacheUpIt-1.6.tar.gz ファイルをダブルクリックして解凍する。

    この結果、デスクトップに CacheUpIt-1.6 フォルダが作成される。もし CacheUpIt-1.6.tar ファイルが作成されていたら不要なので削除してよい。

  3. デスクトップの CacheUpIt-1.6 フォルダの中のファイル CacheUpIt を /usr/local/bin にコピーまたは移動する。

    Mac OS X ユーザは a match in her pocket を使うと簡単に /usr/local/bin/ にインストールできるらしい。ここではこれを使わずに説明しておく。

    まず、Finder のメニュー項目 [移動]-[フォルダへ移動...] で移動先のパス名を入力するポップアップを表示させ、そこに /usr/local と入力し [移動] ボタンをクリックする。そうすると /usr/local/ フォルダが Finder で開かれる。そこでメニュー項目 [ファイル]-[新規フォルダ] を実行し、作成されるフォルダの名前を bin とする。

    もし /usr/local/ フォルダを開く時点でそのようなフォルダがないという旨のエラーが出るようであれば、上記方法で /usr/ フォルダを開いてその下に local フォルダを作成する。そして更に bin フォルダを作成すればよい。

    そのフォルダに、デスクトップの CacheUpIt-1.6 フォルダの CacheUpIt をドラッグ&ドロップする。

  4. 次のような内容の設定ファイルを作成する。

    ファイル名やフォルダは特に指定しないが、日本語が含まれないようにしたほうがトラブルが起きにくい。実はこのファイルは設定ファイルそのものではない。本当の設定ファイルはホームの下の .CacheUpIt.conf というファイルなのだが、このファイルは隠しファイルで通常はファインダーからは見えない。このため直接このファイルを作成するとその後編集できなくなる人が出てくると思われるため、以下、一旦通常ファイルを作成してそれをホームの下の .CacheUpIt.conf にシンボリックリンクするという手順にしてある。Linux などを使用している人は同じ操作では通用しないので注意。

    $Conf{cache} = [
        {
            name    => 'HaloScan/RSS',
            uri     => 'http://www.haloscan.com/members/rss.php?user=HaloScan アカウント',
            interval    => 3    # 15min
            upload      => {
                place   => 'upload1',
                fname   => 'haloscan.xml',
            },
        },
    ];
    
    $Conf{uploadPlace} = {
        upload1     => {
            uri     => 'アップロード先のフォルダの URL',
            user    => 'アップロード先のログイン ID',
            passwd  => 'アップロード先のパスワード',
        },
    };
    $Conf{cache} = [
        {
            name    => 'HaloScan/RSS',
            uri     => 'http://www.haloscan.com/members/rss.php?user=myname',
            interval    => 3    # 15min
            upload      => {
                place   => 'upload1',
                fname   => 'haloscan.xml',
            },
        },
    ];
    
    $Conf{uploadPlace} = {
        upload1     => {
            uri     => 'http://idisk.mac.com/myname/Sites/',
            user    => 'myname',
            passwd  => 'password',
        },
    };
    入れ替え事項の説明
    HaloScan アカウント
    HaloScan で取得したアカウント。
    アップロード先のフォルダの URL
    アップロード先のフォルダの URL。これの後ろに '/' と 8 行めの fname で指定したファイル名(haloscan.xml)とを付け加えたものがアップロード先のファイルの URL になる。提示した例では http://idisk.mac.com/myname/Sites/haloscan.xml になる。
    アップロード先のログイン ID
    アップロード先でログインする必要があるときはその ID で入れ替える。ログインする必要がないときは user => 'アップロード先のログイン ID', という行そのものを削除すること。
    アップロード先のパスワード
    アップロード先でログインする必要があるときはそのパスワードで入れ替える。ログインする必要がないときは passwd => 'アップロード先のパスワード', という行そのものを削除すること。
    説明
    このファイルは、何をダウンロードしどこになんというファイル名でアップロードするかを CacheUpIt に教えるためのファイルである。詳しくは CacheUpIt のアーカイブに同梱してあるマニュアルを参照してほしい。注意しなければならないのは、このファイルはアップロード先のパスワードが書かれる点である。このためたとえ自分のみが使用するマシンであっても念のために他のユーザには読み書きできないようにする必要がある。
  5. ターミナルを起動し、ln -s とタイプし、スペースを一つ以上追加する。
  6. ステップ 5 で開いたターミナルにステップ 4 で作成した設定ファイルをドラッグ&ドロップする。
  7. 続いて ~/.CachUpIt.conf とタイプして改行する。
    説明
    改行して何らかのメッセージが出るようであれば何かを間違えている。スペースがちゃんと開いているかなどを確認しつつもう一度ステップ 5 からやり直すこと。
  8. ターミナルはもう用がないので閉じる。

起動設定

CacheUpIt を起動は次の手順で行う。
  1. ターミナルを開く。
  2. 保存した CacheUpIt 本体をターミナルウィンドウにドラッグ&ドロップする。
  3. 続けて & をタイプしてから改行する。
  4. ターミナルはもう用がないので閉じる。
マシンを起動するたびにこれを実行するのが面倒なときには起動項目に入れるとか cron に登録するなど工夫をすればよい。筆者は Mac OS X 上で運用していないので起動項目に直接入れて問題ないかどうか確認していない。