Language)から、Windows環境のエディタ上で、Shift_JIS文字コードのHTMLのWeb日記を出力・配信するjperlスクリプトを作成します。参考資料はじめに連載の第1回、第2回で見てきたように、Perlのようなテキスト処理を得意とする言語を使えば、テキストのパターンを読み取って、ある一定の規則で変換したり、加工したりすることは自由自在です。今回は、筆者が作成した「日記記述言語(DDL)」という簡易言語を使った日記の記述から、HTMLで書かれた日記に変換出力するスクリプトを作成します。最近は「ブログ」という言葉が日常会話の中で普通に使われるようになり、自分のブログを持っている人も多くなりました。お仕着せのパターン化されたブログは使いたくないという方もいると思います。ブログのデザインもバラエティーに富んでいて、実際なかなかやるなと思うようなデザインも多いのですが、記事部分の表現の自由度が低いのが一般的でしょう。今回紹介する方法は、自分のアイデアを活かしてすべてを作り出したいという方を支援するものであり、これを応用すれば、すべてを自分の好みにカスタマイズできます。System)を構築する場合に、HTML作成を支援する方法を生み出すヒントともなるでしょう。日記記述言語(DDL)と、DDLの記述をHTMLに変換する「ddl2html.pl」は、第2回の「Web日記のAtom配信」をそのまま適用できるWeb日記を生成します。その一種の変形として、「ddl2html.pl」で生成した日記を検索し、検索結果をHTMLで出力するスクリプト「renewal_r2html.pl」を作成します。生成したWeb日記のHTMLファイルをエディタ上からFTP配信するスクリプト「ftp2site.pl」も紹介します。今回は、HTML編集が目的なので、テキスト加工の自由度を最大限に確保するためにCGIは使わず、エディタ上でjperlスクリプトを動作させます。テキスト処理においてはエディタも強力なツールとなります。Windows上のエディタとして推奨するのは、TeraPadです。エディタ編集画面上の選択範囲を、標準入力としてjperlに渡し、jperlが処理して標準出力した内容に置き換えることができます。同様の機能があれば、他のエディタも使えるはずです。筆者はDanaも使用しています。5.8ではなく、Windows用のjperlを使います。JISのテキストをデフォルトで標準入出力できます。JISの場合はスクリプトがシンプルになり、効率が良いので有力な選択肢です。JISで保存されるために相性が良いのです。JISでスクリプトを書けるようになっています。Perlは本来UTF-8入出力を想定して設計されているので、Perlの内部表現を変換する過程でパフォーマンスが低下します。5.8が適しているのは、RSS/AtomのようなUTF-8のXMLを出力する場合や、XHTMLなどでUTF-8でサイトを構築する場合などです。TeraPadでは、encodingを使用したスクリプトは標準入出力の受け渡しが動作しない問題があります。encodingを使用しなくても、UTF-8の出力が文字化けしてしまう不具合があります。JISが前提となっているようです。5.8を使いたい場合やUTF-8のテキストをエディタ上に出力する場合には、Danaを使うとよいでしょう。Danaには、現在のTeraPadのような制限はありません。UTF-8でWeb日記を統一する場合には、「ddl2html.pl」をUTF-8に変換して保存して、入力(エディタの文字コード)をUTF-8にすれば問題なく使えます。対象読者Perl、CGI、テキストエディタ、HTML、HTTPサーバー(特にApache)、Webブラウザ、文字コード、コマンドプロンプトや環境変数などのWindowsのシステムについての基礎的な知識を持ち、かつ、インターネットからソフトウェアをダウンロードして、インストールできるレベルの方。必要な環境jperlと、jperlのインストールに必要なActivePerl(APi522e.exe)、Windows用エディタTeraPadとDana、WebブラウザのFirefoxのダウンロードページは以下の通りです。jperl(鈴木紀夫氏のJperl)ActivePerl(APi522e.exe)TeraPadDANAFirefoxjperlのインストール作者の鈴木紀夫氏のサイトで紹介されているインストール方法に従ってください。TeraPadエディタでの編集にスクリプトを使う方法TeraPadエディタの編集画面でテキストを範囲指定し、選択部分をPerlスクリプトで加工処理をした後、処理結果を範囲指定部分と置換する方法を説明します。TeraPad上で、編集内容が処理結果に置換される過程は次のようになります。TeraPad上での標準入出力の受け渡しこの処理を可能にするために、以下のものを入手してください。ツールTeraPadの標準入出力ツールインストールはReadme.txtに従って行い、続いてツールを設定します。ツール設定はTeraPadのツールバーから、[ツール]-[ツールの設定]-[追加]-[ツールの編集]で行います。実際の画面を示しますので、参考にしてください。TeraPadのツール設定(1)TeraPadのツール設定(2)次項の説明を読んだ後、DDL記述サンプルと本稿で作成する「ddl2html.pl」を使って編集・変換してみてください。すると以下の画面のようになるはずです。実行する際には、HTML編集画面上でDDLで記述された範囲を指定して、マウスを右クリックし、[ツール]-[ddl2html]を選択してクリックします。TeraPadにおける実行画面Web日記の作成と配信それでは、実際にサンプルコードを見ながら、Web日記の作成と配信の仕組みについて解説しましょう。DDL最初に、筆者が作成した簡易言語「DDL」について説明します。Language」の頭文字を取ったもので、もともとは筆者がWeb日記を書く際にHTMLのタグを簡単に埋め込むために作成したものでした。筆者のWeb日記のHTMLの一部とそれに対応するDDL記述を比べてみましょう。OSCON開催4日日:禅とトマトの話題</a>ネタ。updateの講演が行われた。満席、鮨詰め、立ち見は当然、部屋から人が溢れ出るほどの関心が集まったらしい。6が完成したら何が起こるのか誰もが注目していることは間違いない。4のパフォーマンスに驚いたことのある人なら、特に期待していることだろう。OSCON開催4日日:禅とトマトの話題]ネタ。updateの講演が行われた。満席、鮨詰め、立ち見は当然、部屋から人が溢れ出るほどの関心が集まったらしい。6が完成したら何が起こるのか誰もが注目していることは間違いない。4のパフォーマンスに驚いたことのある人なら、特に期待していることだろう。OR]/ul:このDDL記述サンプルで使っているものも含めて、DDLコマンドとその使い方には5種類あります。行頭に置く「コマンド名:《改行》」形式のコマンド文字列。行頭に置く「コマンド名:《改行》」形式のコマンド文字列によって、行単位でデータ行範囲を指定をする。行頭に置く「コマンド名:」形式のコマンド文字列。この後に空白文字(半角空白、タブ)を入れ、行末の改行までにデータを置く。これは段落のサンプルです。《改行》」形式のコマンド文字列。microformatsの入力用テンプレートを出力する。データの中に埋め込むコマンド。ハイパーリンクや画像ファイルを示すaタグやimgタグを生成するコマンドがある。タイトル]DDLコマンド解説では、DDLコマンドについて詳しく見ていきましょう。表1に、コマンド文字列をPerlの正規表現によるパターンマッチで示し、その意味とスクリプトによる変換動作をまとめました。変換動作の詳細は、次項で示す「ddl2html.pl」の該当部分を参照してください。DDLHEADERで指定されるヒアドキュメント部分を参照。DDLFOOTERで指定されるヒアドキュメント部分を参照。(Thu.)<DD>[改行]のように日付をDTタグとDDタグで囲んで出力します。日記を生成した時の日付が入ります。divタグに、class属性がupdatedで更新日付日時を出力します。2006-08-17T23:18:52+09:00」のようになります。カテゴリーとタイトルはセットで動作します。順序はどちらでもよいですが、並べて記述する必要があります。行末までのデータをpタグの開始タグと終了タグで括ります。文字実体参照に変換されます。範囲内の行にあるハイパーリンクなどが変換されます。