yasel(仮)
概要
- Yet Another S-Expression Language の略。「痩せる」。
- この名前は仮のもので、将来により良い名前を思い付いたら変更する可能性が高い(あまり気に入ってない)。
- 後述の目的を満たす言語(プロトコル)が必要であった為、策定する事にした。
目的
大目的
- 人間がコンピュータへとコミュニケーションを取る際の、(コミュニケーション用の)良い言語が必要だと感じた為、これを策定する事にする。
- 人間は自然言語を解釈し、コンピュータはバイト列を解釈する。なので、既存の、人間からコンピュータへのコミュニケーションは「人間がJSONやらXML等でコンピュータに情報を与える」もしくは「コンピュータに自然言語を解釈させる」の二種類しかなかった。
- しかし、前者は人間に負担がかかり、後者はコンピュータに負担がかかり、なかなかコストの高い処理であった。
- そこで、「人間にもコンピュータにも解釈しやすい人工言語」を策定し、より良い「人間からコンピュータへのコミュニケーション」を実現したい。
- 尚、「コンピュータから人間へのコミュニケーション」については、既に充分に発達しているように思える為、ここでは主目的とはしない事にする(勿論、これが可能であって損な事はないが)。
大目的を達成する為に必要となる小目的
- 人間が入力しやすい事。
- その際には「携帯端末から入力」「音声端末から入力」という状況も考慮されている事。
- 入力(可能なら出力も)が、文字列以外の音声等であっても機能できる事。
- コンピュータが解釈しやすい事。
- (人間は入力中に推敲したりするので)人間にも解釈しやすい事。
- (コンピュータだけではなく、人間にも)validationが比較的簡単に行える文法である事。
その他の条件
- 既存の言語での単語(名詞)がそのまま利用可能である事。
- しかし、既存の言語の構文等を流用する事は考えない事。
- 但し、既存の携帯端末等は、「既存の言語を入力しやすいよう」に作られている為、入力受け付けに関しては、影響を受けざるを得ない点には注意する。
- 基本仕様はルールだけ決定し、実際の細かい書式については、サブセットという形を取る。これによって、「日本語ユーザ向けのyaselサブセット」「英語ユーザ向けのyaselサブセット」のように、複数の形態を取れるようにする。
仕様策定の際の方針について
- 今のところは、大雑把な感じで。
- とりあえず、将来になっても(おそらく)変更されない部分について書いていく。
- 将来に変更される可能性の高そうな、仕様の内の細かい部分は、「YASEL/X.Y」等の各バージョンのページを作り、そっちに書く。
基本仕様
- yasel(仮)で記述された文章にはバージョンというメタ情報が存在し、そのバージョン毎に細かい仕様が違うものとする。
- 同様に、サブセットというメタ情報も存在し、これは「日本語」「英語」等に相当する。
- このサブセットにも個別にバージョンがつけられる。おそらく「japanese-0.0」のような文字列になるだろうと思われる。
- サブセットは複数選択が可能なものとする。サブセット同士がコンフリクトを起こす場合の処理については、今のところは未定。
- 現在のところは、文字列表現は基本的にはutf-8で行われる前提とする。
- 前述のバージョンやサブセットと同じく、encodingもメタ情報として選択可能にしてもいいかも。あとでもう少し考える。
- yasel(仮)のドキュメントは、基本的にはrfc822等と類似のフォーマットで、「ヘッダ(メタ情報)部分」と「ドキュメント本体」をやりとりするものとする。
- 但し、人間がyaselのドキュメントを編集する際には、ヘッダ部分は意識させるべきではない。
- yaselのドキュメント本体は、当然、文字列表現が可能であるものとする。
- コンピュータがyaselのドキュメントを読み込んだ場合、それはS式と類似の内部構造に変換されるものとする、が、その際に元の文字列表現も保存される必要があるものとする(この点がS式と異なる)。
各バージョンの固有仕様
TODO
- より良い名前を考える事。
- 名前候補案
- cselp(common s-expr language protocol)
- 他には?
最終更新 : 2009/11/26 20:08:56 JST