@@ -45,175 +45,7 @@ categories:
4545>
4646> ~~ Alice Novel に関しては、機能実装を進めても面白いかもしれません。~~
4747
48- Alice Novel については、5月末に Microsoft Store にて v0.9.3 が公式リリースされました。v0.9.4 の開発もかなり進んでいるため、これのリリースを早期に対応する予定です。その次のバージョン v0.9.5 では、大規模なリファクタリング、現在の Anproj + Anov for Alice Novel 形式から、後述する commonnovel-spec v0.1.0 で制定した仕様に合わせる予定です。
49-
50- Alice Console に関しては、Alice Novel と同様に、commonnovel-spec v0.1.0 に適合させることと、` test ` (1節に同じ命令が2つ被っている場合に警告) や ` format ` (命令が1つもない節 (改行) を削除、不要なスペースの削除) などのコマンド実装を考えています。
51-
52- 今までの考えとしては、Anov Syntax for Alice Novel と Anov Syntax for Alice Console の仕様を統一化して Common Novel とし、細かい部分については Flavor (イメージとしては [ MFM] ( https://misskey-hub.net/docs/for-users/features/mfm/ ) 、[ GFM] ( https://github.github.com/gfm/ ) 、[ GLFM] ( https://docs.gitlab.com/user/markdown/ ) など) としてアプリケーションごとの個別仕様として定義するつもりでした。(ここでは、"旧 Common Novel 方式"とする)
53-
54- しかし、Anov Syntax の仕様は、1節ずつ読み込むという特殊方式であり、あまり一般化に向いていません。
55-
56- そこで、` .ipynb ` (Jupyter Notebook) 形式のように、Json を利用する方式を考えました。[ ^ discuss-11 ] (ここでは、"新 Common Novel 方式/Common Novel - Json 方式"とします)
57-
58- [ ^ discuss-11 ] : https://github.com/orgs/AliceNovel/discussions/11
59-
60- これの利用方法としては、今まで通り Anov Syntax で書いた ` .anov ` ファイルを、Alice Console などで ` .an ` (` .ns ` (Novel Script)?) 形式に変換し、それを Alice Novel や Alice Console、Aqua Notesで読み込むという方式です。(C# を IL に変換するみたいな形です)
61-
62- 今まで:
63- ``` mermaid
64- flowchart TD
65-
66- anov-novel[.anov - Anov Syntax for Alice Novel] -- Alice Console (pack command) --> anproj[Anproj File-format] --> novel[Alice Novel]
67- anov-cli[.anov - Anov Syntax for Alice Console] --> console[Alice Console]
68- ```
69-
70- 新方式:
71- ``` mermaid
72- flowchart TD
73-
74- anov-novel[.anov - Anov Syntax for Alice Novel] -- Alice Console (pack command) --> an[Common Novel - Json-type]
75- anov-cli[.anov - Anov Syntax for Alice Console] -- Alice Console (pack command) --> an
76- anov-others[その他の形式] -- 対応する変換ツール --> an
77-
78- an --> novel[Alice Novel]
79- an --> console[Alice Console]
80- an --> web[Aqua Notes]
81- an --> others[その他のアプリケーション]
82- ```
83-
84- (Alice Console の場合は、基本 Hot Reload (JIT コンパイル相当) をするので、体感として Common Novel に変換している感じはないが、内部的には変換されている)
85-
86- 結論として、
87- - Common Novel は Advanced Novel (Anov Syntax) を置き換えるものではない
88- - Common Novel は Advanced Novel (Anov Syntax) の** 処理** を合理化・高速化するための開発方針
89- - Common Novel の処理系は今まで (Advanced Novel (Anov Syntax)) とはかなり異なる
90- - 今までは Alice Novel、Alice Console、Aqua Notes では Anov Syntax 自体を直接読み込んでいたが、これからはCommon Novel に切り替え、読み込みの処理速度改善と、汎用性・冗長性の上昇を目指す
91-
92- なお、具体的な構文は、` .ipynb ` (Jupyter Notebook) 形式を参考にしています~~ が、` metadata ` 項目はなく、今までの ` package.json ` を ` config.json ` として管理する予定です~~ (未定です)。例を以下に表示します:
93-
94- 以前の Anov 形式:
95- ``` anov
96- > green-park.png
97- - Alice
98- [Hi, there.]
99-
100- - Rabbit
101- [Hi, Alice.]
102-
103- [Nice to meet you.]
104-
105- ```
106-
107- 新 Common Novel 形式:
108- ``` json
109- {
110- "cells" : [
111- {
112- "lines" : 1 ,
113- "characrter-name" : " Alice" ,
114- // "character-image": "",
115- "background-image" : " green-park.png" ,
116- "messages" : " Hi, there."
117- },
118- {
119- "lines" : 2 ,
120- "characrter-name" : " Rabbit" ,
121- "background-image" : " green-park.png" ,
122- "messages" : " Hi, Alice."
123- },
124- {
125- "lines" : 3 ,
126- "characrter-name" : " Rabbit" ,
127- "background-image" : " green-park.png" ,
128- "messages" : " Nice to meet you."
129- }
130- ]
131- }
132- ```
133-
134- 画像をまとめる、拡張性のためにプラグイン (または Extension) 要素を追加する、分岐のためのフラグを用意するなども考えられます:
135- ``` json
136- {
137- "cells" : [
138- {
139- "lines" : 1 ,
140- "characrter-name" : " Alice" ,
141- // 画像をまとめる
142- "image" : {
143- "frontground" : " alice-normal.png" ,
144- "background" : " green-park.png"
145- },
146- "messages" : " Hi, there."
147- },
148- {
149- "lines" : 2 ,
150- "characrter-name" : " " ,
151- "image" : {
152- "background-image" : " frutiger-aero.png"
153- },
154- "messages" : " Let's search!" ,
155- // プラグイン専用要素 (プラグインの性質によって config.json などで設定してもいいかも)
156- "plugin" : [
157- {
158- "name" : " aliceproject-search.dll" ,
159- "search-engine" : " google"
160- },
161- {
162- "name" : " aliceproject-compression.dll" ,
163- "image" : " image/webp" ,
164- "audio" : " none" ,
165- "video" : " video/webm"
166- }
167- ]
168- },
169- {
170- "lines" : 3 ,
171- "characrter-name" : " Rabbit" ,
172- // 選択
173- "selection" : {
174- "apple" : " " ,
175- "lemon" : " " ,
176- "grape" : " "
177- },
178- "image" : {
179- "froutground-image" : " fruits.png"
180- },
181- "messages" : " Select fruit you like."
182- },
183- {
184- "lines" : 4 ,
185- "characrter-name" : " Rabbit" ,
186- // 分岐 ("または"と"かつ" (AND, OR, XOR) をどのようにするかは微妙)
187- // 当てはまる場合は、この行を表示、当てはまらない場合はスキップされる
188- "if" : {
189- "apple" : " true" ,
190- "lemon" : " false" ,
191- "fruits" : 2
192- },
193- "image" : {
194- "background-image" : " green-park.png"
195- },
196- "messages" : " Nice to meet you."
197- }
198- ]
199- }
200- ```
201-
202- Alice Novel 向けのゲーム作成についても考えています。しかし、これについては Ivy Cafeteria ですでに SRFB の開発計画があるため、こちらの完成を考えたほうが良いかもしれません。(というか、現状はそのつもりです)
203-
204- (おまけ: 拡張子名の選考)
205-
206- 採用:
207- - ` .anov ` : Anov (** A** dvanced ** Nov** el / ** A** lice ** Nov** el) Syntax >> 無難
208- - ` .fan ` : 新 Common Novel (** F** ormatted ** A** dvanced ** N** ovel) >> ゲームは楽しい (fan) とあっていていいと思った
209-
210- 非採用:
211- - ` .an ` : Anov (** A** dvanced ** N** ovel / ** A** lice ** N** ovel) Syntax >> 短い (と、当時は考えていたが、今考えると悪くない)
212- - ` .ns ` : 新 Common Novel (** N** ovel ** S** cript) >> Json 形式であり、Script らしくない
213- - ` .annb ` : 新 Common Novel (** A** dvanced ** N** ovel ** N** ote** B** ook) >> N が2回被るのと、発音が ` .anov ` とほとんど同じなのが微妙
214- - ` .ne ` : 新 Common Novel (** N** ovel ** E** lements / ** N** ovel ** E** ssence) >> 悪くないが、E が割と謎
215- - ` .cn ` : 新 Common Novel (** C** ommon ** N** ovel) >> 中国の国別コード (.cn) と被る
216- - ` .cnov ` : 新 Common Novel (** C** ommon ** Nov** el) >> ` .anov ` と類似しているため、ややこしい
48+ 詳細は [ Alice Novel v0.9.5 の予定と、新しい構文] ( https://alicenovel.web.app/ja/blog/20250605 ) をご覧ください。
21749
21850#### Ivy Cafeteria
21951
0 commit comments