2 Commits

Author SHA1 Message Date
Kawamata Akira
3a44094757 - Operator precedence order Unary operator> * /> + -> Comparison operator> and, or, xor
- Change the value when the comparison operator is established from 1 to -1
 - Change prompt to OK
 - Fixed a bug that negative numbers were output as positive numbers by print / debug
 - Changed so that loop can escape in next even if for closing price does not match exactly

Version 0.03 - from wonbe003.lzh
2000-11-07 17:00:00 +09:00
Kawamata Akira
ee82c35364 scan_XX took a bug that does not work
Version 0.02 - from wonbe002.lzh
2000-11-07 12:00:00 +09:00
6 changed files with 330 additions and 37 deletions

95
janken.wb Normal file
View File

@@ -0,0 +1,95 @@
100 rem じゃんけんゲーム for ワンべぇ
110 rem Nov.6,2000 by autumn
200 T=40 'waitvbする長さ
900 randomize tick
1000 cls
1010 print " ■  ■              ■"
1020 print " ■ ■ ■             ■"
1030 print " ■  ■              ■"
1040 print " ■  ■■   ■ ■■     ■"
1050 print " ■       ■ ■      ■"
1060 print " ■       ■ ■■■    ■"
1070 print " ■       ■■   ■  ■ ■  ■"
1080 print " ■      ■■    ■  ■■■   ■"
1090 print " ■      ■■    ■  ■ ■   ■"
1100 print " ■    ■   ■ ■■  ■  ■   ■"
1110 print " ■    ■   ■■■   ■   ■ ■■"
1120 print " ■   ■■   ■     ■   ■ ■"
1130 print " ■■■■■    ■    ■    ■■■"
1140 print "   ■■      ■        ■"
1200 waitvb T
2000 cls
2010 print "       ■        ■"
2020 print "  ■    ■        ■"
2030 print "  ■    ■       ■"
2040 print " ■■    ■       ■"
2050 print " ■  ■■■■■■■    ■"
2060 print " ■  ■■■■      ■"
2070 print " ■     ■      ■■■   ■"
2080 print " ■     ■     ■■■■    ■"
2090 print " ■     ■     ■  ■    ■"
2100 print " ■     ■     ■  ■■  ■"
2110 print " ■     ■    ■    ■  ■"
2120 print "  ■    ■    ■    ■ ■■"
2130 print " ■    ■■    ■    ■■■"
2140 print "      ■           ■"
2200 waitvb T
3000 a=rnd(3)
3010 goto 4000+(a*1000)
4000 cls
4010 print "              ■"
4020 print "      ■ ■     ■■■■■■"
4030 print "     ■■  ■      ■■■■"
4040 print "    ■■ ■  ■"
4050 print "   ■■   ■"
4060 print "   ■     ■     ■■■■■"
4070 print "  ■          ■■■■■■■"
4080 print " ■■          ■     ■■"
4090 print " ■■                ■■"
4100 print "  ■■               ■■"
4110 print "   ■■              ■■"
4120 print "    ■              ■"
4130 print "    ■■            ■■"
4140 print "     ■■         ■■■"
4150 print "      ■■       ■■■"
4160 print "               ■"
4200 goto 7000
5000 cls
5010 print "                 ■"
5020 print "  ■              ■"
5030 print " ■               ■  ■"
5040 print " ■ ■■          ■■■■■■"
5050 print "■■■■■     ■    ■■ ■"
5060 print " ■        ■       ■ ■■"
5070 print " ■        ■    ■■■■■■"
5080 print " ■        ■■■  ■■  ■"
5090 print " ■■■■■    ■        ■"
5100 print " ■■  ■    ■     ■■■■■"
5110 print "■■    ■   ■    ■■   ■"
5120 print "■     ■ ■■■■   ■"
5130 print "     ■  ■ ■■■  ■"
5140 print "   ■■■  ■ ■  ■ ■■"
5150 print "  ■■■   ■■      ■■■■"
5160 print "                 ■■■"
5200 goto 7000
6000 cls
6010 print "         ■■■    ■"
6020 print " ■     ■■■ ■    ■"
6030 print "  ■    ■ ■ ■    ■"
6040 print "  ■     ■ ■  ■■■■■■■"
6050 print "  ■ ■■■■■■■  ■■■    ■"
6060 print " ■■ ■■■■■      ■  ■"
6070 print " ■      ■      ■■■■■"
6080 print " ■      ■      ■■■■■■"
6090 print " ■      ■     ■■  ■  ■"
6100 print " ■      ■    ■■ ■ ■  ■"
6110 print " ■   ■■■■    ■  ■■   ■"
6120 print " ■  ■■  ■■   ■  ■■   ■"
6130 print " ■  ■   ■■■  ■  ■    ■"
6140 print " ■■  ■■■  ■  ■ ■■■  ■■"
6150 print "     ■■       ■■  ■■■"
6160 print "                  ■"
7000 locate 0,16:print " **PUSH START TO EXIT**";
7010 locate 0,17:print "**ANOTHER BUTTON TO AGAIN**";
7100 d=wait
7200 goto 1000

78
shoot.wb Normal file
View File

@@ -0,0 +1,78 @@
1000 rem シューティング by ワンべぇ
1005 rem Nov.7,2000 by autumn
1010 rem a,b 自機座標
1020 rem c,d 自ミサイル座標
1030 rem e,f 敵座標
1040 rem @(n*2*0),@(n*2+1) 敵ミサイル座標(nは07)
1050 rem g ミサイル生成カウンタ
1060 rem h ミサイル生成タイミングカウンタ
2000 rem 座標の初期化
2010 a=14:b=16
2020 c=-1:d=-1
2030 e=15:f=2
2040 for i=0 to 7:@(i*2)=-1:@(i*2+1)=-1:next
2050 g=0:h=0
3000 rem 開始を待つ
3010 cls
3020 locate 3,6:print "PUSH BUTTON TO START"
3030 locate 3,10:print " (NOT START BUTTON)"
3040 z=wait
3050 cls:locate 10,8:print "GO!";
3060 waitvb 30
4000 rem 表示を更新
4010 cls
4020 locate a,b:print "▲";
4030 locate e,f:print "▼";
4040 if c>=0 then locate c,d:print "|";
4050 for i=0 to 7
4060 if @(i*2)>=0 then locate @(i*2),@(i*2+1):print "*"
4070 next
5000 rem 当たり判定
5010 if (c=e)and(d=f) then goto 8000 '自ミサイルが命中・勝利
5020 for i=0 to 7
5030 if (a=@(i*2))and(b=@(i*2+1)) then goto 9000 '敵ミサイルが命中・敗北
5040 next
6000 rem 敵移動処理
6010 r=rnd(2)
6020 if (r=0)and(e<26) then e=e+1
6030 if (r<>0)and(e>0) then e=e-1
6100 rem 敵ミサイル移動処理
6110 for i=0 to 7
6120 @(i*2+1)=@(i*2+1)+1
6130 if @(i*2+1)>16 then @(i*2)=-1:@(i*2+1)=-1
6140 next
6200 rem 敵ミサイル生成処理
6210 h=h+1
6220 if h>3 then h=0
6230 if h<>0 then goto 6300
6240 @(g*2)=e:@(g*2+1)=f+1 '新しいミサイル
6250 g=g+1:if g>7 then g=0
6300 rem 自機移動処理
6310 s=scan
6320 if s and scan_x2 then if a<26 then a=a+1
6330 if s and scan_x4 then if a>0 then a=a-1
6400 rem 自ミサイル移動処理
6410 if c>=0 then d=d-1:if d<0 then c=-1:d=-1
6500 rem 自ミサイル発射処理
6510 if s and scan_a then if c<0 then c=a:d=b-1
6800 waitvb 3
6900 goto 4000
8000 rem 勝利
8010 X=e:Y=f:gosub 10000
8020 locate 10,10:print "YOU WIN!"
8030 goto 9500
9000 rem 敗北
9010 X=a:Y=b:gosub 10000
9020 locate 10,10:print "YOU LOSE..."
9500 locate 0,12:print "PUSH START BUTTON TO EXIT"
9510 locate 0,13:print " ANOTHER IS AGAIN"
9520 z=wait
9900 goto 2000
10000 rem 爆発表現
10010 for i=0 to 9
10020 locate X,Y:print "+";
10030 waitvb 10
10040 locate X,Y:print "×";
10050 waitvb 10
10060 next
10090 return

165
wonbe.c
View File

@@ -18,7 +18,7 @@
#include "win32text.h" #include "win32text.h"
#endif #endif
char myVersion[] = "0.01"; char myVersion[] = "0.03";
#ifdef WW #ifdef WW
#define MEMMOVE mymemmove #define MEMMOVE mymemmove
@@ -163,7 +163,6 @@ KEYWORDITEM keywords[] = {
{ KEYWORD_OR,"or" }, { KEYWORD_OR,"or" },
{ KEYWORD_XOR,"xor" }, { KEYWORD_XOR,"xor" },
{ KEYWORD_NOT,"not" }, { KEYWORD_NOT,"not" },
{ KEYWORD_SCAN,"scan" },
{ KEYWORD_WAIT,"wait" }, { KEYWORD_WAIT,"wait" },
{ KEYWORD_RND,"rnd" }, { KEYWORD_RND,"rnd" },
{ KEYWORD_ABS,"abs" }, { KEYWORD_ABS,"abs" },
@@ -178,6 +177,7 @@ KEYWORDITEM keywords[] = {
{ KEYWORD_SCAN_Y2,"scan_y2" }, { KEYWORD_SCAN_Y2,"scan_y2" },
{ KEYWORD_SCAN_Y3,"scan_y3" }, { KEYWORD_SCAN_Y3,"scan_y3" },
{ KEYWORD_SCAN_Y4,"scan_y4" }, { KEYWORD_SCAN_Y4,"scan_y4" },
{ KEYWORD_SCAN,"scan" }, /* scanはscna_Xより後になければならない */
{ KEYWORD_THEN,"then" }, { KEYWORD_THEN,"then" },
{ KEYWORD_CHR,"chr" }, { KEYWORD_CHR,"chr" },
{ KEYWORD_TO,"to" }, { KEYWORD_TO,"to" },
@@ -795,7 +795,7 @@ SHORT calcValue()
return -1; return -1;
} }
SHORT expr() SHORT expr4th()
{ {
SHORT acc; SHORT acc;
acc = calcValue(); acc = calcValue();
@@ -808,12 +808,6 @@ SHORT expr()
if( ch != ' ' && ch != '\t' ) break; if( ch != ' ' && ch != '\t' ) break;
} }
switch( ch ) { switch( ch ) {
case '+':
acc = acc + calcValue();
break;
case '-':
acc = acc - calcValue();
break;
case '*': case '*':
acc = acc * calcValue(); acc = acc * calcValue();
break; break;
@@ -828,15 +822,54 @@ SHORT expr()
} }
} }
break; break;
case KEYWORD_AND: default:
acc = acc & calcValue(); executionPointer--; /* unget it */
return acc;
}
if( bForceToReturnSuper ) return -1;
}
}
SHORT expr3nd()
{
SHORT acc;
acc = expr4th();
if( bForceToReturnSuper ) return -1;
while( TRUE ) {
BYTE ch;
while( TRUE ) {
ch = *executionPointer++;
if( ch != ' ' && ch != '\t' ) break;
}
switch( ch ) {
case '+':
acc = acc + expr4th();
break; break;
case KEYWORD_OR: case '-':
acc = acc | calcValue(); acc = acc - expr4th();
break;
case KEYWORD_XOR:
acc = acc ^ calcValue();
break; break;
default:
executionPointer--; /* unget it */
return acc;
}
if( bForceToReturnSuper ) return -1;
}
}
SHORT expr2nd()
{
SHORT acc;
acc = expr3nd();
if( bForceToReturnSuper ) return -1;
while( TRUE ) {
BYTE ch;
while( TRUE ) {
ch = *executionPointer++;
if( ch != ' ' && ch != '\t' ) break;
}
switch( ch ) {
case '>': case '>':
{ {
BYTE ch2; BYTE ch2;
@@ -845,10 +878,12 @@ SHORT expr()
if( ch2 != ' ' && ch2 != '\t' ) break; if( ch2 != ' ' && ch2 != '\t' ) break;
} }
if( ch2 == '=' ) { if( ch2 == '=' ) {
acc = (acc >= calcValue()); acc = (acc >= expr3nd());
if( acc != 0 ) acc = -1;
} else { } else {
executionPointer--; executionPointer--;
acc = (acc > calcValue()); acc = (acc > expr3nd());
if( acc != 0 ) acc = -1;
} }
} }
break; break;
@@ -860,17 +895,51 @@ SHORT expr()
if( ch2 != ' ' && ch2 != '\t' ) break; if( ch2 != ' ' && ch2 != '\t' ) break;
} }
if( ch2 == '=' ) { if( ch2 == '=' ) {
acc = (acc <= calcValue()); acc = (acc <= expr3nd());
if( acc != 0 ) acc = -1;
} else if( ch2 == '>' ) { } else if( ch2 == '>' ) {
acc = (acc != calcValue()); acc = (acc != expr3nd());
if( acc != 0 ) acc = -1;
} else { } else {
executionPointer--; executionPointer--;
acc = (acc < calcValue()); acc = (acc < expr3nd());
if( acc != 0 ) acc = -1;
} }
} }
break; break;
case '=': case '=':
acc = (acc == calcValue()); acc = (acc == expr3nd());
if( acc != 0 ) acc = -1;
break;
default:
executionPointer--; /* unget it */
return acc;
}
if( bForceToReturnSuper ) return -1;
}
}
SHORT expr()
{
SHORT acc;
acc = expr2nd();
if( bForceToReturnSuper ) return -1;
while( TRUE ) {
BYTE ch;
while( TRUE ) {
ch = *executionPointer++;
if( ch != ' ' && ch != '\t' ) break;
}
switch( ch ) {
case KEYWORD_AND:
acc = acc & expr2nd();
break;
case KEYWORD_OR:
acc = acc | expr2nd();
break;
case KEYWORD_XOR:
acc = acc ^ expr2nd();
break; break;
default: default:
executionPointer--; /* unget it */ executionPointer--; /* unget it */
@@ -982,7 +1051,7 @@ void printOrDebug( BOOL bPrint )
break; break;
default: default:
{ {
WORD val; SHORT val;
#ifdef WW #ifdef WW
static static
#endif #endif
@@ -1183,6 +1252,20 @@ void st_next()
} }
/* count step and loop again */ /* count step and loop again */
*(stacks[stackPointer-1].pvar) += stacks[stackPointer-1].step; *(stacks[stackPointer-1].pvar) += stacks[stackPointer-1].step;
/* counter overflow? */
if( stacks[stackPointer-1].step > 0 ) {
if( stacks[stackPointer-1].limit < *(stacks[stackPointer-1].pvar) ) {
/* loop done */
stackPointer--;
return;
}
} else {
if( stacks[stackPointer-1].limit > *(stacks[stackPointer-1].pvar) ) {
/* loop done */
stackPointer--;
return;
}
}
executionPointer = stacks[stackPointer-1].returnPointer; executionPointer = stacks[stackPointer-1].returnPointer;
} }
@@ -1456,7 +1539,7 @@ void editLine()
delta = from-target; delta = from-target;
MEMMOVE( target, from, (WORD)(dataTop-(from-wa)) ); MEMMOVE( target, from, (WORD)(dataTop-(from-wa)) );
dataTop -= delta; dataTop -= delta;
clearRuntimeInfo(); /*clearRuntimeInfo();*/
} else { } else {
WORD len; WORD len;
len = skipToEOL(waCoockedLine+2)-waCoockedLine+1; len = skipToEOL(waCoockedLine+2)-waCoockedLine+1;
@@ -1472,7 +1555,7 @@ void editLine()
MEMMOVE( target+len, target, (WORD)(dataTop-(target-wa)) ); MEMMOVE( target+len, target, (WORD)(dataTop-(target-wa)) );
MEMMOVE( target, waCoockedLine, len ); MEMMOVE( target, waCoockedLine, len );
dataTop += len; dataTop += len;
clearRuntimeInfo(); /*clearRuntimeInfo();*/
} else { } else {
/* replace line */ /* replace line */
WORD lost; WORD lost;
@@ -1488,7 +1571,7 @@ void editLine()
MEMMOVE( nextline+delta, nextline, (WORD)(dataTop-(nextline-wa)) ); MEMMOVE( nextline+delta, nextline, (WORD)(dataTop-(nextline-wa)) );
MEMMOVE( target, waCoockedLine, len ); MEMMOVE( target, waCoockedLine, len );
dataTop += delta; dataTop += delta;
clearRuntimeInfo(); /*clearRuntimeInfo();*/
} }
} }
} }
@@ -1540,14 +1623,36 @@ BOOL convertInternalCode( BYTE * waCoockedLine, const BYTE * waRawLine )
acc *= 10; acc *= 10;
acc += *src - '0'; acc += *src - '0';
src++; src++;
}
if( acc < 0 ) { /* overflow case */ if( acc < 0 ) { /* overflow case */
syntaxError(); syntaxError();
return FALSE; return FALSE;
} }
}
*((SHORT*)dst) = acc; *((SHORT*)dst) = acc;
dst += 2; dst += 2;
} }
#if 0
/* 以下のコードは、2項演算子の-を負数と解釈することがあるので使えない */
} else if( *src == '-' && (*(src+1) >= '0' && *(src+1) <= '9' ) ) {
WORD acc;
/* 負数の10進のとき */
*dst++ = 0x01;
src++;
acc = *src-'0';
src++;
while( TRUE ) {
if( *src < '0' || *src > '9' ) break;
acc *= 10;
acc += *src - '0';
src++;
if( acc > 32768 ) { /* overflow case */
syntaxError();
return FALSE;
}
}
*((SHORT*)dst) = -((SHORT)acc);
dst += 2;
#endif
} else if( (*src >= 'a' && *src <= 'z') || (*src >= 'A' && *src <= 'Z') ) { } else if( (*src >= 'a' && *src <= 'z') || (*src >= 'A' && *src <= 'Z') ) {
BYTE next = *(src+1); BYTE next = *(src+1);
if( (next >= 'a' && next <= 'z') || (next >= 'A' && next <= 'Z') ) { if( (next >= 'a' && next <= 'z') || (next >= 'A' && next <= 'Z') ) {
@@ -1701,7 +1806,7 @@ void interpreterMain()
void interactiveMain( FILE FAR * fp ) void interactiveMain( FILE FAR * fp )
{ {
if( fp == NULL ) { if( fp == NULL ) {
commonPrint(NULL,"*Ready\n"); commonPrint(NULL,"OK\n");
} }
while( TRUE ) { while( TRUE ) {
BOOL b; BOOL b;
@@ -1737,6 +1842,9 @@ void interactiveMain( FILE FAR * fp )
if( waCoockedLine[0] == 0x01 ) { if( waCoockedLine[0] == 0x01 ) {
/* 行エディタを呼び出す */ /* 行エディタを呼び出す */
editLine(); editLine();
if( fp == NULL ) {
clearRuntimeInfo();
}
} else { } else {
/* その行を実行する */ /* その行を実行する */
executionPointer = waCoockedLine; executionPointer = waCoockedLine;
@@ -1785,6 +1893,7 @@ BOOL do_merge( const BYTE * filename )
} }
interactiveMain( fp ); interactiveMain( fp );
fclose( fp ); fclose( fp );
clearRuntimeInfo();
if( bForceToReturnSuper ) return FALSE; if( bForceToReturnSuper ) return FALSE;
return TRUE; return TRUE;
} }

BIN
wonbe.exe

Binary file not shown.

BIN
wonbe.fx

Binary file not shown.

View File

@@ -1,6 +1,6 @@
ワンべぇ: WONBE, WonderWitch BASIC Environment ワンべぇ: WONBE, WonderWitch BASIC Environment
暫定マニュアル Ver 0.01 暫定マニュアル Ver 0.03
2000年11月6 2000年11月7
株式会社ピーデー 株式会社ピーデー
川俣 晶 川俣 晶
Copyright 2000 (c) by Pie Dey Co.Ltd. Copyright 2000 (c) by Pie Dey Co.Ltd.
@@ -44,12 +44,12 @@
 ごく軽いBASIC言語です。  ごく軽いBASIC言語です。
 昔あったTiny BASICに近い構文を持っています。  昔あったTiny BASICに近い構文を持っています。
 データ型は、符号付き16bit整数だけです。  データ型は、符号付き16bit整数だけです。
 定数は、-3276832767の10進数か、0x00000xffffの16進数で記述できます。  定数は、-3276732767の10進数か、0x00000xffffの16進数で記述できます。-32768は変数には記憶できますが、ソースには書けません。(-32767-1のように書いてください)
 変数は、グローバル変数として、AZのアルファベット大文字1文字のものが26個あります。  変数は、グローバル変数として、AZのアルファベット大文字1文字のものが26個あります。
 ローカル変数として、azのアルファベット子文字1文字のものが26個あります。ローカル変数はgosubステートメントを実行したときに新しい領域が割り当てられ、returnステートメントを実行したときにgosubする前の領域が戻ってきます。  ローカル変数として、azのアルファベット子文字1文字のものが26個あります。ローカル変数はgosubステートメントを実行したときに新しい領域が割り当てられ、returnステートメントを実行したときにgosubする前の領域が戻ってきます。
 配列変数は@(インデックス)という形式の1次元配列だけが使用できます。使用可能なサイズは、プログラム記憶領域(48Kバイト)の残りサイズに等しくなります。インデックスは0から始まります。(例: for i=0 to 9:print @(i):next)  配列変数は@(インデックス)という形式の1次元配列だけが使用できます。使用可能なサイズは、プログラム記憶領域(48Kバイト)の残りサイズに等しくなります。インデックスは0から始まります。(例: for i=0 to 9:print @(i):next)
 演算子の優先順位はありません。(1+2*3は9になります)  演算子の優先順位は「単項演算子 > */ > +- > 比較演算子 > and,or,xor」となります。(比較演算子は、<と>と=で記述する演算子すべて)
 計算順序は、括弧()を使って明示的にコントロールしてください  計算順序は、括弧()を使って明示的に変更できます
 オーバーフロー、アンダーフローのチェックはありません。溢れは無視されます。ただしゼロ除算はエラーになります。  オーバーフロー、アンダーフローのチェックはありません。溢れは無視されます。ただしゼロ除算はエラーになります。
 ステートメントなどのキーワードはすべてアルファベット小文字で入力します。大文字を使っても小文字になります。  ステートメントなどのキーワードはすべてアルファベット小文字で入力します。大文字を使っても小文字になります。
@@ -96,7 +96,7 @@ return
for 変数=式 to 式 for 変数=式 to 式
for 変数=式 to 式 step 式 for 変数=式 to 式 step 式
 変数の値を変化させながらnextまで繰り返します。  変数の値を変化させながらnextまで繰り返します。
 終了値は厳密であることに注意が必要です。for i=1 to 2 step 2:nextは、無限ループになります。なぜなら変数iは永遠に2にならないからです。このような仕様にしておかないと、終了値を超えたら終わるという判定だと、ループの終値が32767のときに機能しないためです  最後の変数の値が終値に一致せず、終値+ステップ値がオーバーフローする場合は無限ループする可能性があります。そのような値は指定しないように注意してください
例: for i=0 to 10 step 2 例: for i=0 to 10 step 2
next next
@@ -219,6 +219,17 @@ tick
・自作ソフトの実行手段としてのワンべぇの添付 ・自作ソフトの実行手段としてのワンべぇの添付
 自作ソフトを配布するためにwonbe.fxを一緒に渡すことを許可します。アーカイブへの同梱、CD-Rメディアなどへの焼き込み、通信ケーブルによる転送、どれも可です。ただし、ワンべぇの動作に関しては何も保証はできませんので、リスクは自分で負ってください。利用にあたっては、ロイヤリティなどはありませんので、報告も送金も必要ありません。  自作ソフトを配布するためにwonbe.fxを一緒に渡すことを許可します。アーカイブへの同梱、CD-Rメディアなどへの焼き込み、通信ケーブルによる転送、どれも可です。ただし、ワンべぇの動作に関しては何も保証はできませんので、リスクは自分で負ってください。利用にあたっては、ロイヤリティなどはありませんので、報告も送金も必要ありません。
● 変更履歴
2000年11月7日 Ver 0.03
・演算子の優先順位 単項演算子 > */ > +- > 比較演算子 > and,or,xor
・比較演算子成立時の値を1から-1に変更
・プロンプトをOKに変更
・print/debugで負数が正数として出力されていたバグを解消
・forの終値がピッタリ一致しなくてもnextでループ脱出するように変更
2000年11月7日 Ver 0.02 scan_XXが機能しないバグを取った
2000年11月6日 Ver 0.01 最初のバージョン
● 問い合わせ先 ● 問い合わせ先
株式会社ピーデー http://www.piedey.co.jp/ 株式会社ピーデー http://www.piedey.co.jp/
川俣 晶 autumn@piedey.co.jp 川俣 晶 autumn@piedey.co.jp