What is S4?

ありがちなケース

具体的にどうするおつもり?

システム導入にはコストかかりますよ?

高額出してもまともに使われる可能性低いですよ? (つまり八割方無駄)

ということで

オープンなシステム探す?

目的に見合った機能のものを探すのが辛い。

フレームワーク使って作る?

人が作ったフレームワークに乗っかるのが鬼辛い。

「どうせそんなもん役に立ちませんよ」と分からせたいだけなのに…

Ruby on Railsの「規約」を覚える時間で、フルスクラッチで Web アプリ書けないか?

:

:

メンドクサイなあ………

:

シェルスクリプトでなんとかなんねーかな

:

なっちゃいました

S4

ソースはシェル屋さん標準のコロン区切り:

シリアル:ser:p:serial:
なまえ:name:s:text:maxlength="40"
ひとこと:memo:s:textarea:cols="40" rows="5"
添付ファイル:file:m:image:multiple

第5フィールドはおなじみ HTML の input 要素の属性。 これを変換。ApacheとCGIの設定は自分でね。

./s4-start.sh

もうちょっと項目を足した定義ファイルでの サンプル

で、

そもそも何でこれを…

eポートフォリオ

今は学生の提出レポートや面談結果などを集約する勉学用SNSみたいなのがある。 有名どころ:

レポート提出・回収、科目ごとのグループと会話、自己評価・相互評価、 ミニテスト作成・集計、アンケート作成・回収、… お決まりの機能がいくつか。

全部使う?

まず、使う教員が限られる。使う教員でも、 使う機能が限られる。

やすいもので160まんえん

モッタイナイ。

金じゃなくて、それを導入するのに動く人間の時間と手間が。

s4 - SNS by Shell Script + SQLite3

s4で作った

99%シェルスクリプトで(バイナリデータをsplitするところだけperl)。

RDBの構築法

正規化とか(ユーザは)しない。シェル屋・スクリプト屋の大好きな 「ハッシュ」と「配列」を意識してもらう。

ハッシュ的データ → s (single)

ある種類に対応する値が一つ(唯一性保証; 例:性別)

配列的データ → m (multiple)

ある種類に対応する値が複数(例: 住所、電話番号)

上述の定義ファイル

シリアル:ser:p:serial:
なまえ:name:s:text:maxlength="40"
ひとこと:memo:s:textarea:cols="40" rows="5"
添付ファイル:file:m:image:multiple

特定のデータ集合 foo に対して、

に分割して格納する。スキーマが変わっても ALTER TABLE 不要

s4ではこの分割格納に必要な CREATE TABLE から格納・問い合わせの面倒を見ている。

以上

あとはメンドイので省略。

遊んでね。


yuuji@example.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]