WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

TWiki : 簡易データベースでリンク集を作る(前編)

TWiki のカスタマイズが一段落したところで、今回から TWiki の特徴のひとつである簡易データベース機能をご紹介しようと思います。TWiki では各ページにユーザー定義のさまざまな属性を付加することができ、これをもとにページを検索・カテゴライズできるようになっています。この機能を利用すれば TWiki 上でさまざまなアプリケーションが実現できます。いくつかの例がこちらのページで紹介されています。

この機能は従来の Wiki の適用範囲を大幅に拡張するもので、非常に興味深いです。TWiki はある意味で、Web アプリケーションを簡単に構築するためのプラットフォームとしての正確を持っていると言えるでしょう。

ここでは例として、簡単なリンク集を作ってみようと思います。

データ構造を定義してみる

まずは、各ページに付加するデータ構造を定義します。このデータ構造を、TWiki Forms と呼びます。それには、データ構造を表現するテーブルを TWiki ページとして作成し、それをフォームとして登録するという手順を踏みます。順を追ってみていきましょう。

フォームのデータ構造を定義する

新しく TWiki ページを作成し、そこにデータ構造の定義を TWiki のテーブルとして記述します。とにかくやってみましょう。Sandbox Web のトップページに行き、「Create by Name」のボタンで "MyLinksForm" というページを作成します。そして、以下の内容を入力してください。

| *Name* | *Type* | *Size* | *Values* | *Tooltip message* | *Attributes* |
| SiteName | text | 40 | | Site name | M |
| URL | text | 40 | | Site location | M |
| Category | select | 1 | Windows,Linux,MaxOS | Category | M |

それぞれのフィールドの詳細は後述します。

TWiki Forms として登録する

このままでは単にテーブルを記述した Wiki ページですが、そのページ名を TWiki VariablesWEBFORMS に設定することで、それが TWiki Forms として扱われます。"WebPreferences" のページを編集し、WEBFORMS の設定(おそらく空の設定が記述されていると思います)を以下のようにします。

   * Set WEBFORMS = MyLinksForm

これで "MyLinksForm" がフォームのデータ構造として登録されます。もし複数のフォームを使用したいときは、コンマ区切りで指定します。

MyLinksForm のデータをページに付加する

それでは、上記のデータを実際にページに適用してみましょう。Sandbox Web トップページの「Create by Name」で「MyLink0」というページを新規作成してください。編集ページの右下に、「Add form」というリンクが追加されているはずです。それをクリックしてください。以下のようなフォームを選択するページが表示されます。

さっそく "MyLinksForm" を選択し、「Change form」ボタンを押してください。すると、以下のようにページ内容のテキストボックスの下に、先ほど定義したデータ構造を入力するためのフォームが現れました!

このように、TWiki のテーブルとしてデータ構造を指定するだけで、それに合わせた入力フォームが自動生成されます。これはお手軽ですね。カテゴリーのフィールドがきちんとコンボボックスになっている点もポイント高いです。フォームにデータを入力して保存すると、ページの表示結果は以下のようになります。

このように、入力したフォームの情報は通常のページ内容の下に表示されます(スキン次第ですが)。画像からもわかるように、テキストには TWiki の Wiki 文法が使えます。

これだけではなんの役に立つのかよくわかりませんが、TWiki の強力な検索機能と組み合わせることでフォームに入力したデータを有効に利用できます。それらの詳細は、次回でご紹介しようと思います。

データ構造定義の詳細

先ほどはさらっと流してしまいましたが、"MyLinksForm" で記述したようなフォーム定義テーブルの詳細をご紹介しておこうと思います。

テーブルの各カラムの意味

フォーム定義テーブルの各カラムは次のような意味を持っています。

カラム名定義内容
Nameフィールドの名前
Typeフィールドのデータ型
Size入力フォームのサイズなど
Values初期値など
Tooltip messageツールチップに表示する文字列
Attributes非表示・必須属性の指定

Name, Tooltip message に説明の必要はないと思います。その他のカラムについて、以下でご説明します。

データ型

Type はそのフィールドのデータ型を指定します。そのデータ型によって、Size, Valus カラムの意味が微妙に変化します。TWiki Forms で利用できるデータ型と、それを指定した場合の Size, Values'' カラムの意味を以下にまとめました。

checkbox
複数のチェックボックスで構成されるデータです。Size カラムには 1 行に並べるチェックボックスの数を指定します。Value カラムには、各チェックボックスのラベルをコンマ区切りで指定します。
checkbox+buttons
checkbox とほぼ同じですが、SetClear のボタンが表示されます。
radio
複数のアイテムからひとつを選択するラジオボタンです。Size, Values カラムの意味は checkbox と同じです。
label
編集禁止テキストです。Values カラムに表示する文字列を指定します。
select
Size カラムが 1 の場合はドロップダウンリスト、それ以外なら リストボックスになります。Values カラムにはアイテムのラベルをコンマ区切りで記述します。
text
1 行の文字列です。Size カラムにはテキストボックスの横幅を文字数で指定します。Values カラムにはデフォルトの文字列を指定します。
textarea
複数行の文字列です。Size カラムにはテキストボックスのサイズを "<桁数>x<行数>" のフォーマットで記述します。Values カラムの意味は text と同じです。

Attributes について

Attributes カラムには、H, M のどちらか、もしくは両方が指定できます。以下のような意味を持っています。

文字機能
H非表示フィールドになります
M入力が必須のフィールドになります

MyLinksForm では全てのフィールドに M が指定されているので、テキストを入力しないで保存しようとするとエラーになります。

今回はデータ構造の定義と、それを手動でページにアタッチする方法をご紹介しました。これだけではあまり役に立ちませんが、次回ご紹介する検索機能とその結果をページに挿入する機能を利用すれば、簡易データベース(今回はリンク集)が完成します。中途半端で申し訳ありませんが、今回はここまでです。

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles