日記の自動投稿
さて、日記が自動投稿できなかった件ですが、その後の調査でいろいろと見えてきました。
【参考の過去日記】
2006-10-30 : MT 3.33-ja
2006-10-31 : さあ自動更新!
2006-11-01 : さあ自動更新!?
そもそも、バージョン 3.3 から追加された機能に関連して、新たに初期設定しなければいけない項目というのがあるようです。そのため、それら設定について追記しておかないとうまく動作しないのではないか、というチプルの想像です。
とりあえず、自動投稿についてやらなければいけないことなどを備忘録として、以下の日記に記しておきます。
【自動投稿とは?】
もしかして、自動投稿って何? って思いながら読んでいる人がいもるかも、、、と思ったので自動投稿について簡単に説明しておきます。
自動投稿とは、未来の時間を指定して投稿する機能です。
例えば、毎日かかさず Blog の更新をしている人が、どうしても明日の更新ができない場合、明日の日時を指定してエントリーを登録しておけば、指定の時間(正確には指定に近い時間)にエントリーを公開してくれる機能です。
一ヶ月の長期海外旅行に行ったとしても、一ヶ月分の日記を事前に登録しておけば、毎日、自動的に日記を公開することもできます。
Movable Type の自動投稿には、三種類の方法があるようです。チプルのレンタルサーバーは残念ながら cron という機能を利用することができないので、必然的にバージョン 3.3 から搭載されたログ・フィードの機能を使って自動投稿を行うことになります。
ログ・フィードを使って自動投稿を実現している仕組みについてですが、詳しくはこちらで解説されているようですのでご参照ください。
【前提条件】
RSS リーダーが必要になります。
しかも、定期的に情報収集を自動で実施しているリーダーです。
例えば、最近のブラウザなどに搭載された RSS リーダーの機能でも、定期的に更新するようなリーダーなら OK だと思います。
ただ、ブラウザなどのようにクライアントマシンにインストールするタイプだと、そのツールをずっと起動していなければならず、外出時はパソコンの電源を入れっぱなしにしないといけない、という弊害があります。
なので、できればサーバー上でサービスを提供している RSS リーダーを使うのがオススメです。
チプルは Bloglines を使っています。
幸い Bloglines は一時間に一度のタイミングでアップデートをチェックしてくれるようなので、最適ですね。
一時間のうちの何分ごろにチェックしているのかは、分かりませんが。
【Movable Type の設定】
すべての設定が必要なのかよく分かりませんが、チプルが実際にやった設定はこんな感じです。
Movable Type には管理者が設定を行う環境設定ファイル mt-config.cgi というのがあります。このファイルには、Movable Type のマニュアルに記載されている各種設定項目が記載されているのですが、この設定ファイルは、以前のバージョンのファイルのままで利用が可能なのです。
逆を言えば、うっかり上書きしてしまうと、過去の設定内容が消えてしまいます。
そこで、mt-config.cgi ファイルのマージが必要になります。
以前のバージョンで利用していた内容をそのまま引継ぎ、バージョン 3.3 以降で利用する初期設定の項目を追記する作業です。
前述のマニュアルで案内されているフィード関連の項目は、以下の二つがあるようです。詳細は、マニュアルをご参照ください。
- ActivityFeedScript
- ActivityFeedsRunTasks
ただ、マニュアルによると初期値が設定されており、それぞれこのままでも問題なさそうなのですが…。
一応念のため、これらの環境変数を追記して、以下のように設定してみました。
ActivityFeedScript mt-feed.cgi
ActivityFeedsRunTasks 1
そして、次の設定のおかげで自動投稿がうまくいかなかったのですが、TempDir を設定する必要があります。この設定は必須のようです。
以前のバージョンの mt-config.cgi には、記載がありましたが無効になっておりました。
バージョン 3.3 の mt-config.cgi(mt-config.cgi-original)には何も記載がありません。
とりあえず、TempDir の設定を追記するのですが、ポイントは、絶対パスを指定することです。
相対パスでは正常に動作しませんでした。
1. FTP ソフトを起動して、サーバーにアクセスします。
2. 任意の場所に tmp ディレクトリを作成します。チプルは管理ページが保存されている mt ディレクトリ以下に tmp ディレクトリを作成しました。すでに tmp ディレクトリが存在してる場合は、作成の必要はありません。
3. tmp ディレクトリのアクセス権(パーミッション)を設定します。とりあえず面倒なので、777 あたりが良いかもしれません。チプルのレンタルサーバーは Windows サーバーなのでアクセス権は関係ありませんでした。
4. mt-config.cgi に、作成した tmp ディレクトリまでの絶対パスを指定するため、以下のような記述を追加、または修正します。
TempDir <絶対パス>/tmp
チプルの場合は、TempDir C:\<サーバーの絶対パス>\mt\tmp です。
サーバーが UNIX の場合はちょっと違うと思います。
絶対パスの記述については、管理ページの各 Blog ページからアクセスできる [設定] の [公開] タブにあるサイト・パスあたりが参考になるかと思います。
この TempDir が正しく設定されていない場合、Bloglines などの RSS リーダーが情報を取得しようとした際、以下のようなエラーがシステムのログに記録されるようです。
システムタスクを実行するためのロックを取得できませんでした。TempDir(/tmp/)に書き込みできることを確認してください。
そして、管理画面のエントリー一覧に表示されている [エントリー・フィード] という項目を確認します。この項目にリンクされている URL が RSS 取得のためのアドレスですので、コピーしましょう。
【RSS リーダーの設定】
チプル愛用の Bloglines を例に設定方法を記載します。
設定される場合は、みなさんお使いの RSS リーダーに登録してくださいね。
1. Bloglines にログインして、[My フィード] を表示します。
2. [追加] リンクをクリックして、[ブログまたはフィード URL] のフォームに先ほどコピーした [エントリー・フィード] のアドレスをペーストします。[My フィードに登録する] ボタンをクリックします。
3. 更新を表示したい任意の [フォルダ] を選択します。
4. [フィードを登録していることを] では、必ず [非公開] にチェックを入れます。ここで [公開] にしてしまうと、Bloglines の全ユーザーに URL が公開されるようですので、誰でも更新作業を行うことができちゃいます。
5. その他の設定は適当に行って、[My フィードに登録する] ボタンをクリックし、登録を完了します。
以上ですべての設定が完了です。
あとは、日記を登録する際に [指定日] を選択し、公開したい日時を設定します。
すると、指定した日時(に近い時間)に日記が公開されました。
【ご注意】
RSS として登録したエントリー・フィードはセキュリティ情報を含んでいるそうなので、他人にバレちゃうと自分の Blog が誰でも投稿できちゃいます。
そういう意味では、Bloglines などのサーバー上で動作するタイプの RSS を使う場合は、どの程度までセキュアに運用できるのか、ちょっと不安ではありますね。
ご利用の際は、自己責任で運用しましょう。
あと、[指定日] にて公開日時を設定しても、必ずその時間に公開されるわけではありません。
実際に公開されるのは、RSS リーダーがアップデートを巡回にきた時間です。
Bloglines では前述の通り一時間に一回のチェックですので、[指定日] に 0:00 を指定しても Bloglines のチェックが 0:59 だった場合、最大で 59 分遅れで公開されることになります。
きちんと指定した時間に公開しなければならない場合は、やっぱり手動で作業したほうがよさそうですね。
というわけで、上記設定を実施したところ、先日の日記から自動投稿できるようになりました。
この辺の設定、もう少し分かりやすくどっかに公開されていると便利ですよねぇ。
その分、自分で苦労して成功したときは、嬉しさもひとしおですけど(笑)。