プログラミング初心者の救世主？！Jasmine Tea を徹底解説😎

こんにちは、プログラミング言語 Jasmine Tea を開発している Tably 株式会社のゆりこです。
Jasmine Tea アドベントカレンダー23日目で今更？！な内容かもですが、
そもそもJasmine Teaってナニソレおいしいの？🍵という方々もたくさんいらっしゃると思いますので、
Jasmine Teaがどんな言語なのか、何がすごいのか？！を私なりに語ってみようと思います。

#### 私の自己紹介
社会人になってからプログラミングを独学で勉強し、現在は主にウェブフロントエンド関連技術担当。

## Jasmine Teaナニソレおいしいの？🍵
[Jasmine Teaのウェブサイト](https://jasminetea.app)によると、
Jasmine Tea は **プログラミング初心者向けに特化** して開発された **テキストプログラミング言語**です。

2025 年からセンター試験にプログラミングが導入されたり、文系出身の人間であってもプログラミングを学ぶことがキャリアにおいて重要になってきているなど、
現代人の多くがプログラミングに触れる機会が増えてきていますよね。

ただ、、、元プログラミング初心者かつ独学で学んだ身として断言できるのが、

**プログラミングって最初のハードルが高すぎる！！！(泣)**

何度も何度も挫折を繰り返して今やっとなんとか仕事になっているのですが(💦)、
今振り返ると以下の3 つの要因が私のやる気を完全に阻害していました。

### 既存言語で初心者が打ちのめされやすい要因 Top 3 (独断)

#### 1.環境構築がイミフすぎる
当時の私: VSCode てなんやねん？ていうかそもそも `cd` て何？ `homebrew` が Mac だと必要？ググっても呪文しか出てこん。ああ、また Terminal がエラー出してる。。泣きそう。。あれ結局私って何がしたかったんだっけ？🥺

まあググってもググっても呪文のラビリンスに閉じ込められ、
何度も環境構築にトライするも挫折、を繰り返していました。
そもそもターミナルが分からない！という人に環境構築をいきなりさせるのはかなり酷な気がします。

#### 2. ブロックコーディングを試すも、それが実社会のプログラミングとどう繋がるのかわからない

当時は Scratch とかが出てき始めた頃だったのでチャレンジするものの、
(対象年齢が違うので当たり前だけど) どうしても子供っぽすぎるのと、
Scratch でプログラミングをかけるようになったとしても、それはブロックプログラミングができるようになっただけで、そこから JavaScript や Python にいきなり移行するにはかなりハードルが高いと感じました。

#### 3. `print("Hello World")` ができたところで、「だから何？」となる
初心者向けに Python や JS を解説しているのを見ると、大体定石としてまずコンソールに色々表示するところから始めると思います。
でも、個人的にはコンソールに Hello World が表示されたり、1+1 の結果が表示されたりしても、
「ふーーーーん。。。で、これの何がすごいんだっけ？？？」という圧倒的ポカーン感が拭えず。。
そこで、HTML や CSS を使ってウェブサイトに色々表示するのを試したところ、確かに面白いなーとは思ったものの、
JavaScript を使うとなるといきなり DOM とか言われて ？？？？？ となる始末。。。

結局、今ある既存のプログラミング言語を学ぼうとすると、上記 3 つの原因によりせっかくの学習意欲を削がれてしまい、
もうプログラミングなんて辞めちまえ！！！という悪魔の声にそそのかされてしまいます。(自分の意志が弱いのもありますが。。。。)


そんな中、プログラミング初心者向け言語 Jasmine Tea は、一体何が画期的なのでしょうか？

### Jasmine Tea は "プログラミング初心者向け特化" の "テキスト" プログラミング言語

Jasmine Tea が画期的な理由は、"プログラミング初心者向け特化" であることと、"テキストプログラミング言語" であることの 2 点です。

#### 初心者向け言語なので、環境構築ゼロ & 自分の努力がすぐに見える！
Jasmine Tea がすごいのは、全てブラウザで動くので面倒な環境構築がゼロなところです。

[Jasmine Tea のホームページ](https://jasminetea.app/) から [試してみる](https://jasminetea.app/request-trial) をクリックすると、
こんな感じでエディターと実行画面、そしてオフィシャルチュートリアルに秒速でたどり着けます。

![Screenshot 2023-12-23 at 9.35.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1220850/1ff11ef5-97ba-590b-f002-4426da881096.png)

そして、Jasmine Tea は初心者向けに特化したプログラミング言語なので、書き方も超イージーかつ、コンソールではなくちゃんと実行画面に自分の書いたプログラミングの成果が表示されます。

私が個人的に好きなのはスプライトを動かすコードです。

まず、こんな感じでドラッグアンドドロップでスプライトを設定します。

![sprite_select.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1220850/2a338331-9cfb-2bb4-8c28-57a841943abf.gif)

そしたら、スプライトを表示してみましょう！これが、なんとたった 1 行でできます。

```
// スプライト 0 番を 座標 (100, 100) の場所に表示
show 0, (100, 100)
```

スプライトを動かすには、`direction`, `distance`, `move` 命令を使うだけで OK です👍

```
// スプライト 0 番を 座標 (100, 100) の場所に表示
show 0, (100, 100)
// スプライト 0 番の動く方向を右 (3) に決定
direction 0, 3
// スプライト 0 番の動く距離を 50 に決定
distance 0, 50
// スプライト 0 番を上記の通り動かす
move 0
```

これだけで、`print("Hello world")` だけじゃなく、スプライトを表示して歩かせることができるようになりました！

![sprite_move.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1220850/95e2ffda-9839-c2c2-98bf-9169be2033b3.gif)

難しい関数もないし、import もないし、もはや print も必要ありませんが、
プログラミングでコンピューターに指示を出してコードを書く！というエッセンスを体験することができます。


#### 初心者向け言語なのに、ちゃんと実社会に通じるコードが書けるようになる！
Jasmine Tea は初心者向けですが、
ブロックなどではなく **テキストを使ってプログラミングを書く言語** です。
なので、変数の代入、関数の作り方、データ型、条件分岐、繰り返し等、どのプログラミングにもあるコンセプトを、ブロックでごまかさずにテキストプログラミングとして学ぶことができます。

ですので、Jasmine Tea で一回学んでおけば、かなりスムーズに JavaScript や Python 等の既存の言語に移行することができるのです！

例として、JavaScript と Jasmine Tea の条件分岐の記載方法を比較してみようと思います。 (オフィシャルドキュメントは[こちら](https://jasminetea.app/docs/migration/index#jasmine-tea%E3%81%A8%E4%BB%96%E8%A8%80%E8%AA%9E%E3%81%A8%E3%81%AE%E9%81%95%E3%81%84))

JavaScript:
```
let x = 100;
let y;

if (x > 100) {
    y = "x は 100 より大きいです"
} else if (x < 100) {
    y = "x は 100 より小さいです"
} else if (x === 0) {
    y = "x は 100 ぴったりです"
} else {
  // 上記以外だったときの処理
}
console.log(y)
```

Jasmine Tea:
```
let x = 100
let y$ = ""

if x > 100 then
  y$ = "x は 100 より大きいです"
else if x < 100 then
  y$ = "x は 100 より小さいです"
else if x = 100 then
  y$ = "x は 100 ぴったりです"
else
  // 上記以外だったときの処理
end if
print y$
```

Jasmine Tea が JavaScript の書き方とかなり近しいのがわかると思います。

ただ、Jasmine Tea の方では、初心者が混乱しがちな JavaScript 特有の難しさ (`console.log` や `===` と `==` と `=` の違いなど) は省いて、より初心者向けにシンプルな形になっているのも特徴的です。

## おわりに
Jasmine Tea の魅力がわかっていただけたでしょうか？✨
個人的には、プログラミング初心者に特化した言語って、ちょうど抜けていた部分というか、あったら良かったけどなかったサービスと思ったので、
ぜひ皆様にもっと知ってほしい！と思いました。

また、Jasmine Tea は一応中高生向けの言語として設計はされているものの、
Scratch 等ですでにプログラミングを少しかじったことのある小学生が JavaScript や Python に移行するためのステップとして使っていただくことも、
文系出身の社会人が教養としてプログラミングを身につけるための第一歩として使っていただくこともできると思います。

Jasmine Teaを使って、Happy Programming 人生をより多くの人に味わってもらえたら嬉しいです。

### 参考リンク
- [Jasmine Tea ホームページ](https://jasminetea.app/)
- [Jasmine Tea 公式ドキュメント](https://jasminetea.app/docs)
- [Jasmine Teaから他言語への移行ガイド](https://jasminetea.app/docs/migration/index)