-
9:00~21:00の公開(現在停止中)
- 気軽に日本語でプログラミングが書けるそんなアプリになっています。
- ドキュメントも用意しているのでプログラミングの入り口。そんな風になればいいなと思っています。
- フレームワーク: React
- デプロイ: AWS EC2
- 開発環境: Docker, Git
【ユーザー体験の向上】
- 日本語でコードを打つため、半角と全角の切り替えを使用するとユーザー体験の低下につながります。そのため全て全角で書けるように実装いたしました。
- コードスペースとドキュメントページを行き来することが想定されるので、コードをローカルストレージに保存することでページ遷移時も入力値を保持できるようにしました。
【ターゲットの理解】
- 「プログラミングの専門学校に興味があるけど合わなかったらどうしよう」という人に向けての比較的学習コストが低く、実際のプログラミング言語に近いという特性を持った言語として開発しました。
| コードスペース | ドキュメントページ |
|
|
- 日本語で変数を定義するのは危険なのでオブジェクトのキーとして定義
変数 = ハローワールド
// vars["変数"] = "ハローワールド"- 構文解析を使用していないのでゴリゴリの正規表現を使用
-> そうすると、"二次元配列"や"関数の中の関数"などを認識できないのでそこはループを使用
const initial_types = {
space: /^[ ]*$/,
if: /^条件1 (.+)$/, // If文
elseIf: /^条件[23456789] (.+)$/, // Else if文
else: /^例外$/, // Else文
for: /^ループ (.+) => (.+)$/, // For文
print: /^表示((.*))$/, //出力関数
assign: /^([^=]+) = ([^=]+)$/, // 代入式
funcs: /^(?:[^。]+(?:。[^。]+)+)$/,
}
const arg_types = {
funcs: /^(?:[^。]+(?:。[^。]+)+)$/,
func: /^(.+)((.*))$/, // 関数
list: /^「(.+?(?:、.+)*)」$/, // リスト
item: /^(.+?)((?:「(.*?)」)+)$/, // リストの値
num: /^ー?[0123456789]+$/, // 数字
fin: /( + | ー | * | | | % )/
}
const func_types = {
int: /^数字((.*))$/,
str: /^文字((.*))$/,
split: /^分割((.*))$/,
input: /^取得((.*))$/,
push: /^追加((.*))$/,
delete: /^削除((.*))$/,
len: /^個数((.*))$/,
range: /^数列((.*))$/,
}- 引き算の記号を
ーにしたためハローワールドが"ハロ" - "ワ" - "ルド"などになってしまった。そのため記号を使用する際は全て前後に全角スペースを入れるように実装した - 割り算の記号で
/をできない(全角のみで実装予定のため)ので|で割り算を実装$で論理和を実装 - ループ処理を実装する際に代入する変数を作らないといけないためa~zを使う様に指定した
ループ 「0、1、2」 => 値
// for (const a of [0, 1, 2]) {
// vars["値"] = a;const abc_list: string[] = [
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
];
