ASPフレームワーク ぴいたん

チュートリアル

ブログを作成する例を見ながら、以下を参考にちいたんフレームワークの何を、どのように使用するかを決定しましょう。

IISの設定

アプリケーションの構成のオプションで「親パスを有効にする」にチェックをしておけば、peetanのフォルダをプログラム本体のフォルダと分けて管理することができます。

アプリケーションの構成のオプション

このチュートリアルでは、下記のフォルダ構成で作成していきます。

  • blog
  • peetan


データベースを使う

現在ぴいたんフレームワークはMySQL, PostgreSQL, SQL Server, Accessに対応しています(その他にも柔軟に対応可能)。 チュートリアルではMySQLでの説明をします。データベースの初期化は、フレームワークによって呼ばれる関数config_databaseによって設定します。 以下に例を示します。どのファイルからも参照できるようにconfig.aspというコンフィグファイルを作成してそこに関数を書きます。

config.asp

<%
Sub config_database(ByRef db)
  db.add "default", "dsn=db;uid=user;pwd=pass;", DB_TYPE_MYSQL
End Sub
%>


モデルを使う

モデルはテーブルを扱うクラスです。これを用意するだけでソースを書く必要が無くなります。試してみましょう。まずブログ用に以下の様なテーブルを作成します。

※Accessのmdbファイルを使う場合は、mdbファイルのセキュリティ設定でインターネットゲストアカウントからの変更を許可するようにしてください。(Windows XPの場合、簡易ファイル共有を使用するにチェックしているとセキュリティ設定ができないので注意してください)

CREATE TABLE `blog_data` (
  `id` int(11) NOT NULL auto_increment,
  `title` text NOT NULL,
  `body` text NOT NULL,
  `modified` timestamp NOT NULL
  default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`)
);

次にモデルを作成します。わかりやすいようにmodelsフォルダ内にでも入れておきましょう。

models/blog_data.asp

Class Blog_data
  Public parent
  Public Sub Class_Initialize()
    Set Me.parent = New Model
    With Me.parent
      .SetChild Me
    End With
  End Sub
End Class

本来、ちいたんでは、モデルクラスには何も書かなくても動作するのですが、ぴいたんはレガシーASPなのでクラスの継承ができずに、仕方なくこのようなコードを必ず書かないといけません。でも、おまじないと思って書いてください。

では、このモデルを使用するために、config.asp内にフレームワークから呼ばれる関数を追加しましょう。

config.asp追加分

Sub config_models(ByRef c)
  c.AddModel "models/blog_data.asp", "Blog_data", null, null, null
End Sub


ビューを使う

ビューは表示部分です。実際のHTMLを書きます。 HTMLを書くにはなんとこれだけの方法が用意されています。

  • ASPファイルに直接書く
  • ASPファイルとテンプレートを分ける(構文解析が無い分恐らく高速)
  • 全ファイル共通のテンプレートを用意し、ASPファイルとテンプレートを分ける

詳しくはマニュアルのビューにて解説しています。今回は3番目の全ファイル共通のテンプレートを用意し、ASPファイルとテンプレートを分ける方法を使用します。

まず全ファイル共通テンプレートを用意しましょう。

template.html

<!--#include file="../peetan/render.asp"-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>Peetan blog</title>
</head>
<body>
<%=view.content%>
</body>
</html>

とまあ、こんなものでしょうか。シンプルなHTMLですが。今回の場合 view.content のところに各ページのコンテンツが表示されます。

続いてブログを書き込むページを用意します。共通テンプレートを使用しているので中身だけです。

add.html

<!--#include file="../peetan/render.asp"-->
<form method="post" action="add.asp">
タイトル<br>
<input type="text" name="blog/title"><br>
内容<br>
<textarea cols="40" rows="6" name="blog/body"></textarea><br>
<input type="submit" value="書き込み">
</form>


コントローラーを使う

コントローラーにより今まで作成したモデル、ビュー全てを連結し、動作させます。ファイルは何の指定もなければビューの拡張子をaspに変えたものです。まずは先ほどビューで作成したフォームにより、データを保存するプログラムがどれだけ少ないかご覧下さい。

add.asp

<!--#include file="./config.asp"-->
<!--#include file="../peetan/peetan.asp"-->
<%
Function action(ByRef c)
  If c.post.Count > 0 Then
    c.m("Blog_data").insert(c.data("blog"))
  End If
End Function
%>

blog_dataというモデルがここで使用されているのがおわかりでしょうか。 ビューでインプットの名前にblog/title等という変な名前を指定していたのは、 blog/で指定されているデータをコントローラ側でdata(“blog”)の連想配列に 自動的に挿入するためでした。

こうやって必要なデータだけを連想配列に集め、insertします。


一覧表示

では書き込んだデータを一覧表示してみましょう。

view.asp

<!--#include file="./config.asp"-->
<!--#include file="../peetan/peetan.asp"-->
<%
Function action(ByRef c)
  c.setv "datas", c.m("Blog_data").find("", "modified DESC", "", "")
End Function
%>

view.html

<!--#include file="../peetan/render.asp"-->
<% For Each d in data("datas").Items %>
<table>
  <tr>
    <td><%=s.html(d("title"))%></td>
    <td><%=Replace(s.html(d("body")), vbCrLf, "<br>")%></td>
    <td><%=d("modified")%></td>
  </tr>
</table>
<% Next %>

このようにsetv関数によりビュー内で値をdataとして参照することが出来ます。


データの編集

ではデータを編集してみましょう。

edit.asp

<!--#include file="./config.asp"-->
<!--#include file="../peetan/peetan.asp"-->
<%
Function action(ByRef c)
  If c.post.Count > 0 Then
    c.m("Blog_data").update(c.data("blog"))
  End If
  c.setv "data", c.m("Blog_data").findone("id=" & c.getd("id"), "")
End Function
%>

edit.html

<!--#include file="../peetan/render.asp"-->
<form method="post" action="edit.asp?id=<%=data("data")("id")%>">
タイトル<br>
<input type="text" name="blog/title" value="<%=s.html(data("data")("title"))%>"><br>
内容<br>
<textarea cols="40" rows="6" name="blog/body">
<%=s.html(data("data")("body"))%></textarea><br>
<input type="hidden" name="blog/id" value="<%=data("data")("id")%>">
<input type="submit" value="更新">
</form>


データの削除

ではデータを削除してみましょう。もうある程度予想がつきますね。

del.asp

<!--#include file="./config.asp"-->
<!--#include file="../peetan/peetan.asp"-->
<%
Function action(ByRef c)
  If c.post.Count > 0 Then
    c.m("Blog_data").del("id=" & c.post("id"))
  End If
  c.setv "data", c.m("Blog_data").findone("id=" & c.getd("id"), "")
End Function
%>

del.html

<!--#include file="../peetan/render.asp"-->
<form method="post" action="del.asp">
削除してもよろしいですか?<br>
タイトル<br>
<%=s.html(data("data")("title"))%><br>
内容<br>
<%=Replace(s.html(data("data")("body")), vbCrLf, "<br>")%><br>
<input type="hidden" name="id" value="<%=data("data")("id")%>">
<input type="submit" value="削除"><br>
</form>


まとめ

これで一通りブログっぽくなりました。このように非常に簡単にアプリケーションを作成することが出来ます。もうフレームワークを使わないプログラムややモデルのないフレームワークなんて使う気になれませんよね?

ASP.NETも素晴らしいフレームワークですが、レガシーASPで小さいプログラムを作る時はぴいたん。これが世界標準になるでしょう。(僕の)

ぴいたんフレームワークにはもうちょっと便利な機能が用意されています。是非マニュアルを参考に色々と試してみてください。


サンプル

今回のチュートリアルを形にしたものは、本体に同梱しています。ダウンロードして試してみてください。

tutorial.txt · 最終更新: 2007/11/02 09:13 by opaken
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0