サンデープログラミング
最近、ホームページを更新するのが、何やら億劫になっていました‥。何が面倒かと言うと、HTML文書の追加や編集が‥(^^;。
そこで、このページのように「見出し+本文」だけで構成されるようなシンプルなページの作成用に、テキストファイルをHTML文書に変換するツールを作ろうと思いたちました。
ちなみに、同じようなツールは結構有るだろう?と検索してみましたが、やはり有りますね。
まぁ、 Cygwin もインストールしてあるワケだし AWK か Perl のスクリプトでも良いかな‥とも思ったのですが、意外と頻繁に使用するツールになるかもしれないと考え、 GUI を持たせるコトにします。
言語については VB で作ってみましょう。
2003-08-23 ドキュメント(文書)を書くというコトは‥?
Q:HTML は何の略か? A: HyperText Markup Language の略である
開発にあたって、ツールの機能であるテキストファイルから HTML 文書への変換について、再考してみます。
今回のツールで情報源として扱うテキストファイルとは、文字コードだけが収納されているプレーンなテキストファイルを指します。 そう、いわゆる Windows において「メモ帳で編集してください‥(※1)」と紹介されるコトの多いデータファイルです。
それに対して変換後の生産物となる HTML 文書は‥?実は、こちらもプレーンなテキストファイルですね。ただし、HTML の仕様に定められた記述の仕方で、「ここから見出し」「見出しの文章」「‥ここまで見出し」といった具合に、文書の構造を示す要素としての情報が含められています。これらの要素としての情報を文章に含めるコトを「マークアップ」と呼びます。
要素の情報は、見出しを例に挙げると「<h1>見出し</h1>」といった感じで記述します、これらの要素の情報を更に簡略化したコードで記述するコトで、HTML 文書作成の作業効率をアップするのが、本ツールの開発目的です。
ではここで、改めて文書の基本的な構造について分析してみましょう。
HTML に変換するにあたって、文書の構造上での主な要素を挙げてみると「章、節、項、文節、段落」といったトコロでしょうか。例として次のような構成の文書が考えられます。
- 文書名‥「Microsoft Windows に関する私的レポート」
- 第1章‥「見出し:Microsoft Windows 9X の光と影」
- 第1節‥「見出し:Windows の光」
- 第1項‥「見出し:世の中には未だ君達が知らないエキサイティングなコトが有るんだ!」
- 文節1‥「見出し:コマーシャルにローリング・ストーンズ」
- 文節2‥「見出し:アイコンの魔力」
- 文節3‥「見出し:インテル入ってる」
で、上記の構造において、最下層・最小単位となる段落とは、まとまりのあるひとつの文章です。(※2)
リンクなどを除くと、上記の構造をマークアップするコトで、HTML 文書化は実現するように思います。更に現実の使用に耐えうるものにするためには、「引用」や「参照」、そして「強調」「リンク」といった要素も必要だと思われます。
これらを踏まえて、次のように変換コードと HTML 文書としての要素表現の対応を設定してみました。
| 要素名 | テキストファイル中に記述するコード | HTML |
|---|---|---|
| 文書名 | #title,文書名+改行 |
<title>〜</title> <h1>〜</h1> |
| 章 | #-,章の名前+改行 | <h2>〜</h2> |
| 節 | #--,節の名前+改行 | <h3>〜</h3> |
| 項 | #---,項の名前+改行 | <h4>〜</h4> |
| 文節 | #----,文節の名前+改行 | <h5>〜</h5> |
| 段落 | なし | テキストファイル上での表現(改行や空白の挿入など)を再現 |
| 引用 | #quotation,引用元の情報,引用元の URL または書籍名+改行+引用文+改行+#quotation_end | 段落と同様にテキストファイル上での表現(改行や空白の挿入など)を再現 |
| 強調 | #[ 強調したい文・単語 ] | <em>〜</em> |
| リンク | #<リンク先タイトル,リンク先 URL> | <a href="・・・・" title="・・・・">〜</a> |
| 表 | #table,テーブルの外観に関する情報(検討中)+改行+列名・・+改行+列情報+改行(繰り返し)+#table_end | <table>〜</table> |
| 図 | #image,図のタイトル,図の URL +改行 | <a img="・・・・" title="・・・・"> |
| メタキャラとなる#のエスケープ | # | #をそのまま表示 |
この表を元に、更に詳細を詰めてコーディングへ進むコトにします。また、章、節、項、文節までの階層は、単純に見出しの階層として扱う事で、全ての階層を持たない文書であっても変換可能とします。
(※1)‥管理人はテキストファイルの編集に EmuraSoft の EmEditor を数年来愛用しています
(※2)‥段落の始まりは1文字分字下げします。段落の終わりには、次の段落までの仕切りとして1行分の空行を挿入する場合も有ります。英文の場合、段落間の空行挿入を必須として、段落の始まりでは字下げしないパターンも有ります。
ただし、文字色、背景色などの配色が良く考えられているサイトであっても、コンピュータのディスプレイで文章を読むという行為は、多くの人にとって決して楽なコトではありません。長い文章はプリントアウトして紙で読む人も少なくないと思われます。
そこで私は、場合によっては段落を改める箇所でなくても改行を挿入するコトを良しとしています。また、段落ごとに空行が挿入されている場合、日本語の文章においても字下げは行わない方が見易い場合が有るとも考えています。
2003-08-22 開発スタート。
どんな機能を持たせるか列挙してみると‥
- 変換用キャラクタによるテキストファイルのHTML文書化( PukiWiki のように、「行頭にハイフンが挿入されている行を見出しとしてマークアップする」というような指定を行う)
- ドラッグ&ドロップ対応 (入力ファイルをショートカットアイコンにドロップすると、入力ファイルと同一フォルダ等に出力ファイルを作成する)
- 複数ファイルを一括変換
- サイトの構成に準じたナビゲーションのためのリンク自動挿入 (「戻る」「ホーム」などのリンクを設置可能とする)
まずは、これらの機能を実現出来るよう頑張ってみます。