Movable Typeの記事をメールで投稿できる環境

2018年4月25日(水) 23:36 | 日記

当サイト「フォーキー☆カーニバル」を始めたのが2005年11月ですから、12年半も続いたことになります(前身のゲーム関連の日記を加えると14年)。当初は毎日のように記事を書いていましたが、近年は本人が飽きてきたのと、別の場所で短文を書くことが増えたという事情で、更新頻度が月1ペースまで落ち込んでいました。でも自分の人生も折り返し地点を過ぎたことだし、日々の生活の思いやできごとがその場限りで忘れ去られてしまうのはもったいない気がしたので、できる限り記録を残しておいた方がいいだろうと思って、これからは更新頻度を増やそうと思い立ちました。いつまで続くか分かりませんが、ダイエットと同じように飽きるまで続けてみようと思います。

そんな前置きをしたところで、今日の日記は「Movable Typeの記事をメールで投稿する」という話です。

あらためて、Movable Typeを使っている理由

Movable Type(MT)というのはこのサイトを生成するためのプログラムで、よくあるブログサービスと同じように、ブラウザーで管理画面を開いて記事を投稿する仕組みです。ブログサービスは登録すれば誰でも簡単に使えますが、MTはレンタルサーバーに自分でインストールして、設定もすべて自分で行う必要があります。デザインテンプレートも用意されていますが、このサイトはデザインもすべて自分で作りました。
MTは商用でサポートありの場合は有償で、しかもかなり高額です。個人かつ非商用の場合は無料で利用できます。
以前は別のブログサービスを使っていて、2007年の頭にMTに切り替えました。それ以来、かれこれ11年にわたってMTを使っています。

日記の移転が完了しました(2007年1月5日)

毎月のレンタルサーバー代500円は負担していますが、一般のブログサービスのような広告もなく、カスタマイズは100%自由なので、ウェブデザインやサーバーの使い方を覚える意味でも重宝しています。ブログのプログラムといえばWordPress(WP)が有名で、機能はWPの方が桁違いに豊富なのですが、動的にページを表示させるWPと対照的に、MTは静的なHTMLを生成するからサーバーの負担が少なくてサイトの表示が速いのと、あとは細かいところですが「各記事について通し番号で自動的にURLを生成する」というのがWPでは難しかったので、MTを選んでいます。

MTのソフトウェア版では、初期設定ではメール投稿ができない

先ほど「機能はWPの方が桁違いに豊富」と書きました。WPで普通にできてもMTではできないことがいくつかあります。そのひとつがメール投稿です。
出先で日記を更新する際は、特に携帯電話しかない環境では、わざわざ管理画面を開いて編集するのはかなりの手間です。ブラウザー上で長文を入力すると動きが重くなりますし、画像のアップロードの操作もめんどうです。そもそもMTのスマホ用管理画面は機能があまり充実していなくて、たとえば「記事の公開日時を投稿時点の時刻に変更する」という拡張機能がスマホ版管理画面だと使えず、スマホ版でいったん記事を未公開の状態で保存しておいてから、PC版の管理画面に切り替えて公開するという手間をかけていました。
昔はMTのメール投稿サービスを無償で提供している会社があって、そこのサービスを利用していたのですが、何年も前にサービスを終了してしまいました。
ここ数年は出先から日記を書くことも少なく、たまの機会にはいちいち管理画面を使って更新していたのですが、今後日記を書く機会が増えることを考えると、このまま不便さを放置しておくわけにはいきません。どうにかして、メールで投稿できる環境を作る必要があります。

MTには自分でサーバーにインストールして使うソフトウェア版のほかに、既存のサーバーにアクセスして使うクラウド版というのがあって、そちらはメール投稿ができるらしいのですが、僕が使っているソフトウェア版の場合、プラグイン(拡張機能)を自分でインストールする必要があります。
実は何年も前から、プラグインを入れてメールで投稿できる環境を作ろうとしていたのですが、今までそうしなかったのには理由があります。
僕のMTの環境では、プラグインが使えなかったのです。

メール投稿ができるようにするための準備

ここから先はMTに詳しい人向けの話になります。
MTは2009年のバージョン5以降、「ウェブサイト」を親として、その配下に「ブログ」がぶら下がるという構造になりました。
僕はバージョン3.3からMTを使い始めて、そこから4、5、6とバージョンアップしてきました。5月にはバージョン7の正規版が出るそうです。
この「ウェブサイト」にもMT4以前の「ブログ」と同様に記事が投稿できて、「ブログ」と同様の使い方ができるので、バージョン5を導入するときに、僕は「ブログ」ではなく「ウェブサイト」の方に記事を移すことにしました。本当に細かいことなのですが、「ブログ」で管理すると、パラメーターの「blog_id」の数値が「1」ではなく「2」になるのがなんとなく気持ち悪かったという、ただそれだけの理由です。
ところが、メール投稿のプラグインはこの「ウェブサイト」に対応していなくて、どうやら「ブログ」でないと使えないらしいのです。

それなら「ブログ」を作って、「ウェブサイト」の記事をすべて「ブログ」にコピーしたうえで「ウェブサイト」の記事を消せばいいじゃないかと思われるかもしれませんが、記事に付随するコメントの扱いがデータベース上で煩雑になるのと、各記事の「entry_id」という数値が1から始まらなくなるなど、いろいろめんどうなことが発生します。データベースを直接編集すればどうにかなるとは思いますが、難しいので断念しました。
それで僕がやったのは、もうひとつサイトを作るという方法です。新たにMTをサーバーにインストールして、元のサイトと同じデザインテンプレートを「ブログ」の方に適用させたうえで、「ブログ」に記事やコメントなどをインポートしました。見た目もアドレスもまったく同じサイトができた段階で、「folky.saloon.jp」のドメインの参照先を新しいサイトにするように、レンタルサーバーのコントロールパネルからDNSの設定を変更しました。
ついでに、PHPもMySQLも新しいバージョンが出ていたので、最新のものを適用しました。

MailPackというプラグインを導入

ようやく本題です。
MTのブログ記事をメールで投稿するためのプラグインはいくつかありますが、いろいろ比較した結果、「MailPack」というプラグインを使うことにしました。

Movable Typeで簡単携帯投稿!メール投稿プラグイン:MailPack

特に複雑な設定は必要なく、投稿するカテゴリーごとにメールアドレスを設定するだけです。メールアドレスはこのサイトをアップしているレンタルサーバーで発行しました。
ただひとつ問題があって、これは僕のサーバー環境のせいかもしれませんが、一度登録したメールアドレスの設定の確認や変更をしようとすると、エラーが出て編集画面に入れません。編集する代わりに「削除して、再び新規登録する」という方法を取ればいいのですが、ちょっとだけ不便です。

MTの管理画面での設定だけではなく、サーバーが定期的にメールの有無を確認する目的で、cronで「run-periodic-task」を実行する必要があります。こちらはサーバーのコントロールパネルから、該当するcronを3分おきに実行するようにしました。cronの詳細は上記サイトの参照先にあります。
その際に、僕のサーバーの環境(さくらインターネット)では、run-periodic-taskのファイルのパーミッションを755(もしくは705でも可)にしておく必要がありました。

さらに個人的な好みで、MTの設定に合わせてプログラムを一部変更しました。
具体的にはlibディレクトリにあるpost_entry.pmというファイルを以下のように編集しました。

・32行め
$INSERT_TAG_CONNECTION = '<br/><br/>';

$INSERT_TAG_CONNECTION = '<br />';

これは送信した画像を記事本文の冒頭に表示させる場合に、画像のあとに入るHTMLタグです。brタグ2個ではなく1個にしたかったので、このような変更を行いました。

・154~158行めをコメントアウト
# $text = '<p>' . $text . '</p>';
# $text =~ s/\r\n\r\n/<\/p><p>/g;
# $text =~ s/\n\n/<\/p><p>/g;
# $text =~ s/\r\n/<br \/>/g;
# $text =~ s/\n/<br \/>/g;

普段記事を投稿するときはいつも「改行を変換」の形式にしているため、改行や空行は更新時にbrタグやpタグに変換されますので、個人的にこの設定が必要ありませんでした。リッチテキスト形式などで記事を書いている人は、おそらく上記の設定が必要となります。

・293行め
my $path = "files";

my $path = "image";

画像をアップしたときに、保存するディレクトリ名はデフォルトでは「files」となります。僕の環境では「image」というディレクトリに画像などを格納しているので、環境に合わせて変更しました。

旧サイトの方で動作を確認して、これですべてうまくいきました。
ようやく、何年ぶりかで携帯電話から日記を更新できます。

コメントを投稿

※サーバーの状況によって、投稿完了まで時間がかかることがあります。
※投稿内容がすぐに反映されないことがありますが、ページを再読み込みするとコメントが表示されます。
※入力したURLは公開されますが、メールアドレスは公開されません(管理者に対してのみ通知されます)。