Gleam Language Tour with playground in Japanese

# For Non-Japanese

Hi, I'm debiru, and the author [this thread](https://discord.com/channels/768594524158427167/1207222173652095056).

I have translated the Gleam Language Tour into Japanese and published it. I also developed a playground where you can customize pages with JavaScript and execute code. I have provided the ability to save your code as a URL. For example, this is my code for FizzBuzz.

[https://gleam.lavoscore.org/table-of-contents/?code=aW1wb3J0IG...](https://gleam.lavoscore.org/table-of-contents/?code=aW1wb3J0IGdsZWFtL2lvCmltcG9ydCBnbGVhbS9pbnQKaW1wb3J0IGdsZWFtL2xpc3QKCi8vIFRoaXMgaXMgYSBzYW1wbGUgY29kZSBmb3Igc3R1ZGluZyBHbGVhbS4KLy8gQW5kIGhlcmUgaXMgdGhlIGNvZGUgdG8gaW50cm9kdWNlIHRoaXMgcGxheWdyb3VuZC4KLy8gWW91IGNhbiBzYXZlIHlvdXIgY29kZSBhcyB0aGUgVVJMIGJ5IGNsaWNraW5nIG9uIHRoZSBTYXZlIGJ1dHRvbiBpbiB0aGUgdXBwZXIgcmlnaHQgY29ybmVyLgoKcHViIGZuIG1haW4oKSB7CiAgZml6emJ1enooMTAwKQp9CgpmbiBmaXp6YnV6eihuOiBJbnQpIHsKICBsZXQgaW1wbF8xID0gZm4objogSW50KSAtPiBTdHJpbmcgewogICAgY2FzZSBuICUgMywgbiAlIDUgewogICAgICAwLCAwIC0%2BICJGaXp6QnV6eiIKICAgICAgMCwgXyAtPiAiRml6eiIKICAgICAgXywgMCAtPiAiQnV6eiIKICAgICAgXywgXyAtPiBpbnQudG9fc3RyaW5nKG4pCiAgICB9CiAgfQoKICBsZXQgX2ltcGxfMiA9IGZuKG46IEludCkgLT4gU3RyaW5nIHsKICAgIGxldCByZXN1bHQgPSBjYXNlIG4gJSAzIHsgMCAtPiAiRml6eiIgXyAtPiAiIiB9CiAgICBsZXQgcmVzdWx0ID0gY2FzZSBuICUgNSB7IDAgLT4gcmVzdWx0IDw%2BICJCdXp6IiBfIC0%2BIHJlc3VsdCB9CiAgICBjYXNlIHJlc3VsdCB7ICIiIC0%2BIGludC50b19zdHJpbmcobikgXyAtPiByZXN1bHQgfQogIH0KCiAgbGlzdC5yYW5nZSgxLCBuKQogIHw%2BIGxpc3QubWFwKGltcGxfMSkKICB8PiBsaXN0LmVhY2goaW8ucHJpbnRsbikKfQ%3D%3D)

In the rest of this article, I will introduce the Gleam sample code and the Gleam community along with my developments for the Japanese. That's all for non-Japanese in this article. Thanks.

# For Japanese

こんにちは。debiru です。Gleam （グリーム）というプログラミング言語があるのですが、最近（2024年2月10日頃）に v1.0.0-rc1 がリリースされました。Gleam は Rust で実装され Erlang VM (BEAM) 上で動作する言語です。

## Japanese document

Gleam の公式ドキュメントはいくつか存在しています。

- [Documentation – Gleam](https://gleam.run/documentation/)
- [Language tour - The Gleam Book](https://gleam.run/book/tour/index.html)
- [Welcome to the Gleam language tour! 💫 - The Gleam Language Tour](https://tour.gleam.run/)

この最後に挙げた Tour は 2024 年に公開されたコンテンツです。Gleam の構文や機能をプレイグラウンドでコードを実際に実行しながら学習することができます。

しかし、説明文が英語のままでは初学者はとっつきにくいですよね。

ということで、この度、この Gleam Language Tour を日本語訳して公開しました。

https://gleam.lavoscore.org/

本家 Tour では Table of Contents が常に表示されておらず使いづらかったので、ページをカスタマイズしてサイドバーに常時表示するようにしてあります。

また、プレイグラウンドのコードを URL でシェアできるように保存機能を付けました。

## Sample code - FizzBuzz

以下はサンプルで書いた FizzBuzz のコードです。

[https://gleam.lavoscore.org/table-of-contents/?code=aW1wb3J0IG...](https://gleam.lavoscore.org/table-of-contents/?code=aW1wb3J0IGdsZWFtL2lvCmltcG9ydCBnbGVhbS9pbnQKaW1wb3J0IGdsZWFtL2xpc3QKCi8vIFRoaXMgaXMgYSBzYW1wbGUgY29kZSBmb3Igc3R1ZGluZyBHbGVhbS4KLy8gQW5kIGhlcmUgaXMgdGhlIGNvZGUgdG8gaW50cm9kdWNlIHRoaXMgcGxheWdyb3VuZC4KLy8gWW91IGNhbiBzYXZlIHlvdXIgY29kZSBhcyB0aGUgVVJMIGJ5IGNsaWNraW5nIG9uIHRoZSBTYXZlIGJ1dHRvbiBpbiB0aGUgdXBwZXIgcmlnaHQgY29ybmVyLgoKcHViIGZuIG1haW4oKSB7CiAgZml6emJ1enooMTAwKQp9CgpmbiBmaXp6YnV6eihuOiBJbnQpIHsKICBsZXQgaW1wbF8xID0gZm4objogSW50KSAtPiBTdHJpbmcgewogICAgY2FzZSBuICUgMywgbiAlIDUgewogICAgICAwLCAwIC0%2BICJGaXp6QnV6eiIKICAgICAgMCwgXyAtPiAiRml6eiIKICAgICAgXywgMCAtPiAiQnV6eiIKICAgICAgXywgXyAtPiBpbnQudG9fc3RyaW5nKG4pCiAgICB9CiAgfQoKICBsZXQgX2ltcGxfMiA9IGZuKG46IEludCkgLT4gU3RyaW5nIHsKICAgIGxldCByZXN1bHQgPSBjYXNlIG4gJSAzIHsgMCAtPiAiRml6eiIgXyAtPiAiIiB9CiAgICBsZXQgcmVzdWx0ID0gY2FzZSBuICUgNSB7IDAgLT4gcmVzdWx0IDw%2BICJCdXp6IiBfIC0%2BIHJlc3VsdCB9CiAgICBjYXNlIHJlc3VsdCB7ICIiIC0%2BIGludC50b19zdHJpbmcobikgXyAtPiByZXN1bHQgfQogIH0KCiAgbGlzdC5yYW5nZSgxLCBuKQogIHw%2BIGxpc3QubWFwKGltcGxfMSkKICB8PiBsaXN0LmVhY2goaW8ucHJpbnRsbikKfQ%3D%3D)

Gleam では FizzBuzz を以下のように実装できます。

```gleam
import gleam/io
import gleam/int
import gleam/list

// This is a sample code for studing Gleam.
// And here is the code to introduce this playground.
// You can save your code as the URL by clicking on the Save button in the upper right corner.

pub fn main() {
  fizzbuzz(100)
}

fn fizzbuzz(n: Int) {
  let impl_1 = fn(n: Int) -> String {
    case n % 3, n % 5 {
      0, 0 -> "FizzBuzz"
      0, _ -> "Fizz"
      _, 0 -> "Buzz"
      _, _ -> int.to_string(n)
    }
  }

  let _impl_2 = fn(n: Int) -> String {
    let result = case n % 3 { 0 -> "Fizz" _ -> "" }
    let result = case n % 5 { 0 -> result <> "Buzz" _ -> result }
    case result { "" -> int.to_string(n) _ -> result }
  }

  list.range(1, n)
  |> list.map(impl_1)
  |> list.each(io.println)
}
```

## Gleam community

https://gleam.lavoscore.org/ トップページに以下のような記述があります。

> もし行き詰まったり、質問がある場合は、遠慮なく [the Gleam Discord server](https://discord.gg/Fm8Pwmy) でお尋ねください。もし、あなたが分かりにくいと感じたことがあれば、他の人も同じように感じている可能性があります。このツアーをより良いものにするために、私たちはそれを知りたいのです。 

https://gleam.lavoscore.org/what-next/ また、最後のページには次のように書かれています。

> [the Gleam Discord server](https://discord.gg/Fm8Pwmy) に参加して、コミュニティに会いましょう。彼らはフレンドリーで親切です！ 

Gleam コミュニティは Discord で初学者からの質問などを受け付けています。コミュニケーションする際の言語は英語ですが、和気あいあいとしているので Gleam に興味を持った方はぜひ参加してみてください。

わからないことがあれば、この Qiita ページのコメント欄でも質問してくれれば私が回答します。

みなさん Gleam 言語を触っていきましょう！