[MT]値に日本語が含まれるかどうか判別して条件分岐する

記事のタイトルが斜体になっているデザインを実装する際、試行錯誤してみた話。

日本語が斜体になると激しく読みにくいので、日本語が含まれている場合は通常の字体で表示したい。そこで慣れない正規表現を使って頑張ってみました。

日本語が斜体になるとどうなるか # ←読みにくい

日本語が斜体になるとどうなるか # ←こっちのが当然読みやすい

<$mt:EntryTitle setvar="entry_title"$>
<mt:If test="$entry_title =~ /[^\w\s\-\&\;\:\@\|\\\/\=\(\)\'\%\$\#\!\[\]\{\}\`\*\+\?\<\>]+/">
<$mt:Var name="entry_title"$>
<mt:Else><i><$mt:Var name="entry_title"$></i>
</mt:If>

日本語自体を正規表現ではマッチさせることができないので、あらゆるアスキー文字の否定(ある文字以外の文字)という形でマッチさせてみました。マッチすると通常のMTタグが出力され、マッチしないと<i>で囲まれたMTタグが出力されます。
しかし、我ながら稚拙な書き方だと思いますし、これで例外なく正しくマッチできているのかは自信がありません。。。きっともっとスマートなやり方はあるはずです。

ちなみにtestモディファイアは中にPerlの式を書くことができるモディファイアです。
<mt:If>に仕込んでBool値が返るPerl式を記述しておけば、TRUEが返ったときに中身を実行させることができます。

WinXPローカルでXAMPPを使ってMovable Typeを動かす―2010年3月版 その3

XAMPPでMovable Typeを動作させるチュートリアルの第3弾です。

  1. XAMPPのインストール、Apacheの設定
  2. ActivePerlのインストールと設定、MySQLの設定
  3. ImageMagickのインストール、Movable Typeのインストール

今回はImageMagickのインストールと、MovableTypeのインストールを扱い、全3回の記事の最後とします。

  1. ImageMagickのダウンロードページにアクセスし、左に並んでいるメニューの中から「Release→Windows」を選択します。

    ImageMagickのダウンロード

  2. 「Windows Binary Release」という見出しのページが表示され、ダウンロードできるパッケージの一覧が表示されます。この中から「ImageMagick-6.6.0-3-Q8-windows-dll.exe」を選択します。HTTPとFTPどちらでダウンロードしても構いません。
    6.6.0-3というところはバージョンを表しているようなので、その時によって最新となるバージョンは異なっているかもしれません。
    また、お使いのマシンが64bitなら「ImageMagick-6.6.0-3-Q16-windows-x64-static.exe」を選んでください。

    ImageMagickのダウンロード

  3. ダウンロードしたインストーラーファイルを実行します。インストールウィザードが始まります。

    ImageMagickのインストールウィザード

  4. ライセンスを読み、「I accept the agreement(ライセンスに同意)」を選択して「Next」をクリックします。

    ImageMagickのインストールウィザード

  5. 「information」が表示されるので適当に読んで「Next」をクリック。

    ImageMagickのインストールウィザード

  6. インストールするディレクトリを選択する画面になります。適当に変更しても構いませんが、今回はあえてデフォルトのままでいきます。「Next」をクリックします。
    「Program Files」というようにディレクトリ名に半角スペースが入ると、この後のPerlとの連携でダメになりそうな気がするのですが・・・意外にも大丈夫なんですね。

    ImageMagickのインストールウィザード

  7. スタートメニューになんという名前で登録されるかを設定する画面になります。特に変更せず「Next」をクリック。

    ImageMagickのインストールウィザード

  8. インストールの追加オプションを選択する画面になります。ここで忘れずに「Install PerlMagick for ActiveState Perl v5.10.1 build 1007」を選択します。これでActivePerlと連携するためのPerlモジュールが一緒にインストールされます。「Next」をクリック。

    ImageMagickのインストールウィザード

  9. これでインストールのための設定は終わりとなります。「Install」をクリックしてしばらく待ちます。

    ImageMagickのインストールウィザード

  10. もう一度「Information」が表示されます。「Next」をクリック。

    ImageMagickのインストールウィザード

  11. これでインストールは完了となります。「Finish」をクリックします。

    ImageMagickのインストールウィザード

  12. さて、正しくインストールできたかどうか、mt-check.cgi(前回までの設定を正しく行っていれば http://site1.localhost/mtos/mt-check.cgi というURL)にブラウザでアクセスしてみましょう。すると、perl.exe – コンポーネントが見つかりませんというアラートが表示され、正しく実行できなくなっています。さきほどインストールしたImageMagickのdllファイルを呼び出そうとして、失敗していることが分かります。これはImageMagickインストール時に設定された環境変数が、まだシステムに認識されていないために起こる問題なので、Windowsを再起動することで解決します。作業を中断し、ひとまず一旦再起動です。

    エラーメッセージ「perl.exe - コンポーネントが見つかりません。 CORE_RL_magick_.dllが見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。」

  13. Windowsが起動したら、忘れずにApacheとMySQLを起動しましょう。デスクトップに追加されたショートカットやスタートメニューから「XAMPP Control Panel」を起動し、ApacheとMySQLの「Start」ボタンをクリックし、「Running」状態にします。
    ApacheやMySQLをシステムの「サービス」として登録するとWindowsが起動すると同時にこれらも起動するようになりますが、今回はこの設定は行いません。

    XAMPPコントロールパネルを起動する XAMPPコントロールパネル

  14. 改めてmt-check.cgiにブラウザでアクセスします。「Image::Magick」項目の黄色いエラー表示が消えていることを確認します。

    mt-check.cgiにブラウザでアクセス

  15. これでMovable Typeを使う準備がようやく整いましたので、早速インストールを行いましょう。MovableType(ここではMTOS 5.01)のファイルを保存したディレクトリ(http://site1.localhost/mtos/)にブラウザでアクセスし、「サインイン」をクリックします。

    Movable Typeのインストールウィザード

  16. するとmt-wizard.cgiというプログラムが実行され、インストールウィザードが始まります。

    Movable Typeのインストールウィザード

  17. システムチェックが実行され、必要なPerlモジュールはそろっています。Movable Typeのインストールを続行する準備が整いました。と表示されます。
    と同時にオプションのPerlモジュールのうちいくつかが見つかりませんでした。と表示されます。「オプションモジュールを表示」をクリックするとシステムにインストールされていないモジュールの一覧を見ることができます。

  18. Crypt::DSA や IPC::Run といったPerlモジュールがインストールされていないことが分かりますが、今回は使用することはないので「次へ」進みます。必要な場合は一旦インストールウィザードを中断し、前回のようにPPMを使ってインストールするといいでしょう。

    Movable Typeのインストールウィザード

  19. データベースの設定の画面となります。「データベースの種類」には「MySQLデータベース(推奨)」を選択しましょう。

    Movable Typeのインストールウィザード

  20. データベースの設定項目が出現しますので各項目を以下のように設定し、「接続テスト」をクリックします。

    データベースサーバ
    localhost
    データベース名
    mtos5 前回作成したMySQLデータベース名)
    ユーザ名
    root
    パスワード
    前々回設定したMySQL rootユーザーのパスワード

    Movable Typeのインストールウィザード

  21. データベースの設定を完了しました。と表示されます。「次へ」をクリック。

    Movable Typeのインストールウィザード

  22. 「メール設定」という画面となりますが、今回は特に設定せず「次へ」をクリック。
    もし必要となった場合、後で設定できます

    Movable Typeのインストールウィザード

  23. 「テンポラリディレクトリの設定」画面となります。テンポラリディレクトリはMovable Typeのシステムが画像などのデータやバックアップデータなどを扱う際、一時的にデータ置き場として利用されるディレクトリです。適当なディレクトリを設定しましょう。ここでは C:\Windows\Temp とし、「次へ」をクリック。

    Movable Typeのインストールウィザード

  24. これでMovableTypeの設定ファイル(mt-config.cgi)が生成され、今まで設定した情報が書き込まれます。mt-config.cgiが正しく生成されたことを確認し、「次へ」をクリック。

    Movable Typeのインストールウィザード

  25. Movable Typeにログインするためのアカウントを作成する画面になります。

    Movable Typeのインストールウィザード

    • ユーザー名
    • 表示名
    • 電子メール
    • 使用言語
    • パスワード

    以上の項目を設定できますが、ログインに使用するのは「ユーザー名」と「パスワード」だけです。
    適当に入力したら「次へ」をクリック。
    ここで設定する項目は後で変更することができます。

  26. 「最初のウェブサイト」を作成という画面となり、Movable Typeで管理するウェブサイトを設定する画面となります。

    Movable Typeのインストールウィザード

    ウェブサイト名
    Site1
    (適当なサイト名)
    ウェブサイトURL
    http://site1.localhost/
    (Movable TypeがインストールされたサイトのURL)
    公開パス
    D:\htdocs\site1
    (Movable Typeがインストールされたサイトのディレクトリ。Windows環境だとディレクトリ区切りがバックスラッシュになりますのでご注意を)
    テーマ
    クラシックウェブサイト
    (どれでもOKです。選択によって設定されるテンプレートが変更されます)
    タイムゾーン
    UTC+9(日本標準時)

    上記のように設定したら、「インストール」をクリックします。
    「ウェブサイトURL」と「公開パス」は前々回にApacheのバーチャルホスト機能で定義した同サイト内であれば、自由に設定できます。ここではサイトのルートとなるディレクトリを指定しています。

  27. しばらく待つと、インストールを完了しました!と表示されます。「Movable Typeにサインイン」をクリック。

    Movable Typeのインストールウィザード

  28. これでめでたくMovable Typeがインストールされました。ローカルマシン上で自由に使える開発環境のできあがりです!

    Movable Typeに初めてサインインしたところ

以上で全3回に渡る記事を終わります。

Apacheのバーチャルホスト設定とhostsファイルの設定をそれぞれ増やせば、管理するサイトを増やしていくこともできます。WindowsユーザーのWebデザイナーやフロントエンドエンジニアが利用するには、十分な環境となるのではないかと思います。欠点を挙げるとすると、「公開パス」でディレクトリ区切りが(Windows環境なので)バックスラッシュになることだったりします。ローカルで開発したものを本番の(Linux系の)サーバーに乗せる、という場合はこの辺りの設定を修正する必要があるということですね。

WinXPローカルでXAMPPを使ってMovable Typeを動かす―2010年3月版 その2

前回に引き続き、XAMPPでMovable Typeを動作させるチュートリアルの第2弾です。

  1. XAMPPのインストール、Apacheの設定
  2. ActivePerlのインストールと設定、MySQLの設定
  3. ImageMagickのインストール、Movable Typeのインストール

今回はActivePerlのインストールと設定、MySQLの設定を行います。

  1. ActivePerl のダウンロードページにアクセスし「ActivePerl DOWNLOAD NOW」をクリックして次のページに進みましょう。

    ActivePerlのダウンロードページ

  2. プラットフォーム別のダウンロードファイルの一覧が表示されます。一番上のRecommended version(s) for your platformにリストアップされている ActivePerl 5.10.1.1007 for Windows (x86) をダウンロードします。
    お使いのWindowsが64bit版である場合、ActivePerl 5.10.1.1007 for Windows (64-bit, x64) を選択します。

    ActivePerlのダウンロードページ

  3. ダウンロードしたインストーラを実行しましょう。インストールウィザードが開始されます。

    ActivePerlのインストールウィザード

  4. ライセンス規約に同意(I accept the terms in the License Agreement)を選択し、「Next」をクリックします。

    ActivePerlのインストールウィザード

  5. インストールするプログラムと、インストールするディレクトリを設定します。インストールするディレクトリはデフォルトで C:\Perl\ になっていますが、これを C:\usr\ に変更します。「Browser」をクリック。

    ActivePerlのインストールウィザード

  6. ディレクトリの選択画面となるので、「Folder name:」の欄に C:\usr\ と入力し、「OK」をクリックします。

    ActivePerlのインストールウィザード

  7. 「Location:」に C:\urs\ が正しく設定されたかを確認し、「Next」をクリックします。

    ActivePerlのインストールウィザード

  8. オプションを選択する画面になります。特に変更せず「Next」をクリックします。

    ActivePerlのインストールウィザード

  9. これで設定は終わりです。「Install」をクリックしてしばらく待ちます。

    ActivePerlのインストールウィザード

    ActivePerlのインストールウィザード

  10. インストールが完了したら、「Finish」をクリックしてインストールウィザードを完了します。

    ActivePerlのインストールウィザード

  11. さて、前回の記事の環境の通り、D:\htdocs\site1 というディレクトリを http://site1.localhost/ というローカルホストドメインで参照できるようにし、ここで開発を行うことを前提に話を進めましょう。

    サイトのルートディレクトリ(D:\htdocs\site1)に Movable Type(ここではMTOS 5.01) のファイルを展開し、mtos というディレクトリ名をつけます。

    MTOSのファイルを展開

  12. 念のため、インストールしたPerlが正しく動作するか確認してみます。テキストエディタを開いて以下のコードを記述し、C:\test.pl というパスで保存します。(あくまで例です。実際はどんなパスでもOKです)

    #! /usr/bin/perl
    print("It works!\n");

    Perlのテストプログラムを作成する

    これをコマンドプロンプト(※1)で以下のように入力し、Enterキーを押して実行します。

    perl c:\test.pl

    Perlのテストプログラムをコマンドプロンプトから実行してみる

    入力の次の行に It works! と表示されれば正しく実行できたということです。

    Perlのテストプログラムをコマンドプロンプトから実行してみる

    ここまでくればMovable TypeのCGIプログラムをひとまず表示はできる環境になっています。(※2

  13. http://site1.localhost/mtos/mt-check.cgi にブラウザからアクセスします。ここまでの作業が正しくできていれば、MTのシステムチェック画面が表示されるはずです。

    mt-check.cgiでのシステムチェック結果

  14. この時点では Movable Typeの構成ファイルが見つかりませんでした。 というメッセージが表示され、まだMovable Typeが正しく動作しないことが分かります。ページをスクロールしていくと、DBD::mysql というPerlモジュールがシステムにインストールされていないことが分かります。これは MySQL データベースを使用するために必要となるモジュールです。

    mt-check.cgiでのシステムチェック結果

  15. では DBD::mysql モジュールをインストールしましょう。コマンドプロンプトを起動し、ppm と入力しEnterキーを押します。

    コマンドプロンプトでppmを起動する

  16. すると「Perl Package Manager(略称PPM)」が起動します。Synchronizing Database…(データベースと同期中) とステータス表示されてしばらく固まるので、じっと待ちます。

    GUI ppmの操作画面

  17. 同期が完了して操作できるようになったら、画面左上の「View all packages」アイコンをクリックします。

    GUI ppmの操作画面

  18. そして画面上部の検索エリアに dbd-mysql と入力しましょう。すると中央のモジュール一覧に DBD-mysql と表示されるはずです。

    GUI ppmの操作画面

  19. リストアップされた DBD-mysql を右クリックし「Install DBD-mysql 4.011 + 」を選択します。これでインストールするモジュールの一覧に登録されます。

    GUI ppmの操作画面

  20. 画面右上の「→(Run marked actions)」アイコンをクリックします。

    GUI ppmの操作画面

    すると Ready to install 1 package? とアラート表示されるので「OK」をクリックします。

    GUI ppmでインストールの確認アラート

  21. しばらく待つと、DBD::mysqlモジュールのインストールが完了します。

    GUI ppmの操作画面

  22. もう一度ブラウザで mt-check.cgi にアクセスしてみましょう。サーバーにDBD::mysqlがインストールされています と表示され、エラー表示になっていなければOKです。

    mt-check.cgiでのシステムチェック結果

  23. では今度はMySQLの設定を行っていきます。今回インストールするMTOS用のデータベースを作成しましょう。まずXAMPPコントロールパネルでMySQLが「Running」状態になっていることを確認し、「Admin」ボタンをクリックします。

    XAMPPコントロールパネル

  24. するとブラウザでphpMyAdmin(MySQLデータベースをブラウザから操作できるツール)が開きます。「言語 – Language」に「日本語 – Japanese」が設定されていることを確認し、ユーザ名、パスワードを入力してログインしましょう。ここでのユーザ名は rootパスワードは前回の記事のStep16でXAMPPの管理画面から設定したパスワードになります。

    phpMyAdminのログイン画面

  25. phpMyAdminにログインすると、様々なメニューが並んだ画面が表示されます。ページ中ほどにある「新規データベースを作成する」という入力フォームから、今回使用するデータベースを作成しましょう。

    左のフィールドにはデータベース名を入力し(今回は「mtos5」とします)、隣のプルダウンメニューでデータベースの文字コードを選択します。ここでは「utf8_general_ci」を選択してください。このプルダウンメニューが結構長いのですが、一番下の方にあります。そして「作成」ボタンをクリックします。

    phpMyAdminの操作画面

  26. データベース mtos5 を作成しました。 と表示されたら完了です。

    phpMyAdminの操作画面

以上でActivePerlのインストールと設定、MySQLの設定までが完了し、今回の記事はここまでです。次回はImage Magickのインストール、そしていよいよMovable Typeのインストールを取り上げます。

  • ※1 コマンドプロンプトは、スタートアップメニューから「ファイル名を指定して実行」(もしくは「Windowsキー + r」)で cmd と入力してEnterキーを入力すると起動することができます。
  • ※2 Movable Type を含む、Perl言語で書かれた大抵のCGIプログラムはデフォルトでPerlを /usr/bin/perl というパスで参照するように書かれています。(ファイルの冒頭にPerlのパスが記述されています)Step5~7でActivePerlを C:\usr\ というパスを指定してインストールしたことにより、Perl が /usr/bin/perl で参照できるようになります。

WinXPローカルでXAMPPを使ってMovable Typeを動かす―2010年3月版 その1

3年くらい前に書いたXAMPPとMTの記事に今でもアクセスがそこそこあるので、古い内容を見ていただいてもなぁ・・・と思い、最新の情報で記事を書き直すことにしました。2010年3月7日時点の情報となります。

概要は以下となります。

  • Windows XPのローカル環境にMovable Type 5の開発環境を構築する
  • 使用するソフトウェアとバージョン(2010年3月時点で最新)
  • Apacheのバーチャルホスト機能を使い、複数のサイトを管理できるようにします
  • XAMPP内包のPerlは使わず、ActivePerlを使用します
  • データベースには、XAMPP内包のMySQLを使用します
  • Movable Typeの画像を扱う機能を使うため、Image Magickを導入します

かなり長い記事となってしまうので、3つの記事に分割して投稿します。

  1. XAMPPのインストール、Apacheの設定
  2. ActivePerlのインストールと設定、MySQLの設定
  3. ImageMagickのインストール、Movable Typeのインストール

ではまず「その1」としてXAMPPのインストールから、Apacheの設定までです。

  1. http://www.apachefriends.org/jp/xampp-windows.html
    XAMPP for Windowsのサイト

    XAMPP for Windows ダウンロードページにアクセスし「XAMPP Windows版 1.7.4, 2009/12/23」のベーシックパッケージをダウンロードします。ここではEXE版を使用します。

    XAMPP for Windowsのサイト

  2. ダウンロードしたexeファイルを実行しましょう。インストールウィザードが始まります。

    XAMPP for Windowsのインストールウィザード

  3. 「Destination folder」でインストール先のディレクトリを指定することができます。今回はデフォルトの設定(C:\)をそのまま使用します。「Install」をクリックしてしばらく待ちます。

    XAMPP for Windowsのインストールウィザード

  4. インストール処理が終わると、コマンドプロンプトが立ち上がって初期設定を聞いてきます。

    コマンドプロンプトでXAMPP for Windowsの初期設定を行っているところ

    「Should I add shortcuts to the startmenu/desktop?」(スタートメニューとデスクトップにショートカットを追加するかい?)

    「y」が最初から入力されていますので、そのままEnterを押します。

  5. 「Should I proceed?」(続行する?・・・とかって意味かな)

    「y」でEnter。

    コマンドプロンプトでXAMPP for Windowsの初期設定を行っているところ

  6. 「Should I make a portable XAMPP without drive letters?」(ドライブレターを付けないで、XAMPPのポータブル版を作成するかい?)

    「n」のままEnter。「y」にするとUSBメモリとかにインストールできるXAMPPのポータブル版になるようですが、それだとドライブレターを付加できないのでWindowsの「サービス」が使えないみたいです。(超適当訳)

    コマンドプロンプトでXAMPP for Windowsの初期設定を行っているところ

  7. …中略
    XAMPP is ready to use.

    Enterキーを押します。

    コマンドプロンプトでXAMPP for Windowsの初期設定を行っているところ

  8. 「I have set the timezone in ‘php.ini’ and ‘my.ini’ to "Asia/Tokyo".
    Yous should correct these values if my guess was wrong.」
    (php.iniとmy.iniのタイムゾーンを「Asia/Tokyo」に設定したよ。違っていたら修正することができるよ。)

    Enterキーを押します。

    コマンドプロンプトでXAMPP for Windowsの初期設定を行っているところ

  9. これでセットアップは完了となります。「1」を入力してEnterを押します。

    コマンドプロンプトでXAMPP for Windowsの初期設定を行っているところ

  10. XAMPPのコントロールパネルが起動します。

    XAMPPのコントロールパネル

  11. ApacheとMySQLの「Start」ボタンをクリックして起動させます。

    XAMPPのコントロールパネル

  12. Apacheの「Admin」ボタンをクリックします。するとブラウザが立ち上がってXAMPPのスタート画面が表示されます。

    XAMPPのコントロールパネル

  13. 「日本語」をクリックしましょう。

    XAMPPの管理画面にアクセス

  14. これがXAMPPの管理画面です。
    一応サーバーソフトウェアなので、万が一のことも考慮して最初にセキュリティの設定を行いましょう。左のメニューから「セキュリティ」をクリックします。

    XAMPPの管理画面

  15. 最初はなんのセキュリティ対策も施されていない状態なので、5くらいあるステータスが全て「要注意」か「不明」になっています。対策にはXAMPPのツールを使います。ページの中程に
    http://localhost/security/xamppsecurity.php
    というリンクがあるので、クリックします。

    XAMPPのセキュリティ管理画面

  16. するとMySQLと、XAMPPのディレクトリにパスワードを設定するためのフォームが現れます。
    「MYSQL項目:”ROOT”パスワード」というフォームから、MySQLのrootユーザーのパスワードを設定しましょう。 なお、(File: C:\XAMPP\security\mysqlrootpasswd.txt)にチェックを入れておくと、変更したパスワードがテキストファイルに書き出されます。万が一パスワードを忘れてしまったときにこれを見ればいい、というわけです。
    このディレクトリは公開ディレクトリではないので安全なハズ

    XAMPPのセキュリティ管理画面

  17. 次に「XAMPPのディレクトリ制御(.htaccess)」でユーザとパスワードを入力します。これで、この管理画面自体にベーシック認証がかかります。

    XAMPPのセキュリティ管理画面

    設定が終わったら、左のメニューの「セキュリティ」をクリックします。

    XAMPPのセキュリティ管理画面

  18. するとたった今設定したベーシック認証が行われます。ユーザー名とパスワードを入力してログイン。

    管理画面にベーシック認証がかかった

  19. 今度はセキュリティのステータスの「要注意」が「安全」に変わったことを確認します。

    XAMPPのセキュリティ管理画面

  20. では実際にWebサーバーのディレクトリにアクセスしてみましょう。ブラウザで、http://localhost/index.html にアクセスします。「It works!」というページが見えたら、正常に動作しています。
    ちなみに http://localhost/ でアクセスしようとすると、XAMPPの管理画面に飛ばされてしまいます。

    http://localhost/index.html にブラウザでアクセス

    さて、これだけだとWebサーバーを通じて見ることができるのは C:\xampp\htdocs ディレクトリだけです。これをバーチャルホスト機能を使って拡張し、複数のサイトを管理できるように変更します。

  21. C:\xampp\apache\conf\extra\httpd-vhosts.conf をテキストエディタで開きます。これがバーチャルホスト設定用のファイルです。まず ##NameVirtualHost *:80 となっている部分の ## を削除して、コメントアウトされた状態を解除します。

    httpd-vhosts.conf をエディタで開いたところ

  22. このファイルにはコメントアウトされた状態で設定の例文が示されています。このような感じで。

    ##<VirtualHost *:80>
        ##ServerAdmin postmaster@dummy-host2.localhost
        ##DocumentRoot "C:/xampp/htdocs/dummy-host2.localhost"
        ##ServerName dummy-host2.localhost
        ##ServerAlias www.dummy-host2.localhost
        ##ErrorLog "logs/dummy-host2.localhost-error.log"
        ##CustomLog "logs/dummy-host2.localhost-access.log" combined
    ##</VirtualHost>

    httpd-vhosts.conf ファイルをエディタで編集する

    ただ、動作させるだけなら DocumentRootServerName を設定するだけで良いようです。仮に site1.localhost というドメインで D:\htdocs\site1 ディレクトリを、site2.localhost というドメインで D:\htdocs\site2 ディレクトリを参照できるようにしたいとすると、以下のようにファイル末尾に設定を追加します。書き換えたら、上書き保存します。

    <Directory "C:/xampp/htdocs">
        Options +ExecCGI
        AddHandler cgi-script .cgi .pl 
        order allow,deny
        Allow from all
    </Directory>
    <Directory "D:/htdocs">
        Options +ExecCGI
        AddHandler cgi-script .cgi .pl 
        order allow,deny
        Allow from all
    </Directory>
    
    <VirtualHost *:80>
        DocumentRoot "C:/xampp/htdocs"
        ServerName localhost
    </VirtualHost>
    <VirtualHost *:80>
        DocumentRoot "D:/htdocs/site1"
        ServerName site1.localhost
    </VirtualHost>
    <VirtualHost *:80>
        DocumentRoot "D:/htdocs/site2"
        ServerName site2.localhost
    </VirtualHost>
  23. 今度はそのURLの名前解決をできるようにするための設定を行います。C:\WINDOWS\system32\drivers\etc\hosts※1)をテキストエディタを開きます。

    hostsファイルをエディタで編集する

  24. 127.0.0.1 localhost
    となっているところの次に以下の行を追加し、上書き保存します。
    127.0.0.1 site1.localhost
    127.0.0.1 site2.localhost 

    hostsファイルをエディタで編集する

  25. ここまで行った設定を反映するため、Apacheを再起動します。XAMPPコントロールパネルで Apache の「Stop」ボタンをクリックし、しばらく待ちます。すると左の「Running」表示が消えるので、再度「Start」ボタンをクリックします。

    XAMPPコントロールパネルでApacheを再起動

  26. 設定したディレクトリにブラウザでアクセスしてみましょう。D:\htdocs\site1\ に適当なhtmlファイルを置き、http://site1.localhost/ファイル名 としてアクセスし、ページが正常に表示されるか確認します。また、同様に http://site2.localhost も確認しましょう。

    バーチャルホストで設定したURLにブラウザでアクセス

    もしもサーバーエラー画面が表示される場合、httpd-vhosts.conf ファイルの記述が誤っている可能性があります。また、ブラウザのステータスバーに site1.localhost のアドレス解決をしています とか ホストを解決しています とかいうメッセージが表示される場合、hostsファイルの設定が誤っています。それぞれ設定を見直してみましょう。

以上でXAMPPのインストールからApacheの設定までが完了です。次回の記事ではActivePerlのインストールと設定、MySQLの設定を取り上げる予定です。

MTのコンテキストについての考察と解説

MovableTypeのテンプレートを書くにあたってまず理解すべきなのは、MTタグやテンプレートの種類よりも、まずコンテキストなのではないかと思います。CSSによるレイアウトを学ぶにあたって、ブロックモデルを理解すべきであるのと一緒です。というわけで、このコンテキストについて解説しようと試みます。

コンテキストとは

直訳すれば「文脈」です。ここではテンプレートにおける前後の文脈のことをそう呼びます。自然言語における人間の会話や文章にも前後の文脈というものが存在しますから、会話を例に挙げます。

Aさん:今日は天気がいいですね。
→「今日の天気」のコンテキスト

MTのテンプレートでは現在のコンテキストに適合しないMTタグを使おうとすると、エラーが出るようになっています。

コンテキストに適合しないタグを使おうとするとエラーが出る

人間の会話において、文脈に沿っていない話題や発言をすると会話が成立しなくなるのと同じです。

Aさん:今日は天気がいいですね。
→「今日の天気」のコンテキスト
Bさん:はい、僕はハンバーグが好きです。
→コンテキストに沿っていないのでエラー

コンテキストの種類と、テンプレートとの関係

MTのコンテキストは大別すると「ブログ記事」・「ブログ記事リスト(アーカイブ)」・「ウェブページ」の3つです。そしてこれはテンプレート一覧の「アーカイブテンプレート」の種類でもあります。これらのテンプレートは、最初から該当のコンテキストを持っており、「ブログ記事」アーカイブは最初から「ブログ記事」コンテキストを持っています。

「アーカイブテンプレート」の一覧の例

「ブログ記事リスト」では「日付別」・「ユーザー別」・「カテゴリ別」という、大別して3つの分類を「アーカイブマッピング」で与えることができます。このテンプレートに該当するコンテキストが与えられるだけでなく、この指定を元にページファイルが生成されます。

例えば「カテゴリ」アーカイブマッピングを選択したテンプレートでは、最初から「ブログ記事リスト」コンテキストと、「カテゴリ」コンテキストを持ちます。

コンテキストの指定方法

任意のコンテキストを作り出すために使用するのがMTEntriesや、MTArchivesMTPagesなどのブロックタグです。これらのタグで囲んだ部分はそのタグが表すコンテキストが設定され、指定の回数分繰り返されます。例えば以下の例は、「最新5件の記事のタイトル」を出力します。

<mt:Entries lastn="5">
<p><$mt:EntryTitle$></p>
</mt:Entries>

<mt:Entries>に囲まれた部分が5回繰り返されますが、その内容は「ブログ記事」コンテキストの最新5件であることを<mt:Entries lastn="5">が表しています。

このように、任意のコンテキストを作り出すMTタグは数多く存在しており、その全てはブロックタグです。ブロックタグで囲んだ内容はそのタグの属するコンテキストになる、と覚えておけばよいでしょう。

コンテキストは入れ子にできる

ブロックタグを入れ子にしたり、特定のアーカイブテンプレート内にブロックタグを記述することによって、コンテキストを入れ子にすることができます。入れ子にしたコンテキストでは、特に指定をしない限り、親のコンテキスト内で対象を絞り込んだものとなります。

例えば以下は記事ごとに、記事本文に続いてコメント一覧を表示するための記述です。

<mt:Entries lastn="5">
<div class="entry">
<h3><$mt:EntryTitle$></h3>
<div class="entry-body">
<$mt:EntryBody$>
</div>
<div class="comments">
<h4>記事へのコメント</h4>
<ul>
<mt:Comments>
<li>
<$mt:CommentAuthor$>さんのコメント:<br />
<$mt:CommentBody$>
</li>
</mt:Comments>
</ul>
</div>
</div>
</mt:Entries>

<mt:Entries><mt:Comments>を入れ子にすることによって、「特定のエントリーへのコメント」に絞り込んで出力させています。なお、特にコンテキストの指定がない状態で<mt:Comments>タグを使用すると、そのブログに対して投稿されたコメント全てが対象となります。

このエントリーの内容はMovableType4(現時点での最新製品版:Version 4.261)におけるものです。まもなく出荷となるMovableType5では「ウェブサイト」という概念が追加されるそうですし、コンテキストの種類には追加や修正があるかもしれません。