---
title: Introduction
slug: /
---

## Yew とは?

**Yew** は [WebAssembly](https://webassembly.org/) によってマルチスレッドな Web アプリのフロントエンドを作ることができる、モダンな [Rust](https://www.rust-lang.org/) のフレームワークです。

- インタラクティブな UI を簡単に作ることができる、**コンポーネントベース** のフレームワークです. [React](https://reactjs.org/) や [Elm](https://elm-lang.org/) のようなフレームワークを使用したことがある開発者は Yew を違和感なく使うことができるでしょう。
- DOM の API を呼び出すのを最小化し、開発者が Web ワーカーによって簡単に処理を軽量化できることで **素晴らしいパフォーマンス** を発揮します。
- **JavaScript との互換性** をサポートし、開発者は npm のパッケージを活用し既存の JavaScript アプリと統合させることができます。

### コミュニティに参加する 😊

- [GitHub issues page](https://github.com/yewstack/yew/issues) でバグを報告したり機能について議論できます。
- プルリクエストはぜひウェルカムです。ご協力いただけるなら [good first issues](https://github.com/yewstack/yew/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) をご確認ください。
- 私たちの [Discord chat](https://discord.gg/VQck8X4) はとても活発で質問するのに良い場所です。

### 始める準備はいいですか?

以下のリンクをクリックして初めての Yew アプリの作り方を学び、コミュニティのプロジェクト例を見てみましょう。

[始める](docs/getting-started/introduction)

### まだ満足していませんか?

このプロジェクトは先進的な技術によって成り立っており、これからの基礎となるプロジェクトを作っていきたい開発者にとっては素晴らしいものです。
ここでは Yew のようなフレームワークがどうして Web 開発における未来となると考えられるかについての理由を述べていきます。

#### 待って、どうして WebAssembly?

WebAssembly _\(Wasm\)_ は Rust がコンパイル可能な軽量で低レベルな言語です。
WebAssembly はブラウザでネイティブ並の速度で動き、JavaScript と互換性があり、そして全ての主要なブラウザでサポートされています。
アプリで WebAssembly をどう使いこなすかについては [use cases](https://webassembly.org/docs/use-cases/) のリストをご確認ください。

気をつけなければいけないこととして、Wasm は\(まだ\)Web アプリのパフォーマンスを改善する銀の弾丸ではありません。
現時点では、DOM の API を WebAssembly から使うのはまだ JavaScript から直接呼ぶよりも遅いのです。
これは [WebAssembly Interface Types](https://github.com/WebAssembly/interface-types/blob/master/proposals/interface-types/Explainer.md) が解決しようとしている今のところの課題です。
詳しい情報については Mozilla の提案が書いてある [excellent article](https://hacks.mozilla.org/2019/08/webassembly-interface-types/)
をご確認ください。

#### わかった、でもどうして Rust?

Rust は目まぐるしいほど高速に動作し、素晴らしい型と所有権モデルによって信頼性があります。
Rust には厳しい学習曲線がありますが、努力するだけの十分な価値があります。
Rust は Stack OverFlow による開発者調査で 5 年連続で最も愛されている言語に選ばれています:
[2016](https://insights.stackoverflow.com/survey/2016#technology-most-loved-dreaded-and-wanted),
[2017](https://insights.stackoverflow.com/survey/2017#most-loved-dreaded-and-wanted),
[2018](https://insights.stackoverflow.com/survey/2018#technology-_-most-loved-dreaded-and-wanted-languages),
[2019](https://insights.stackoverflow.com/survey/2019#technology-_-most-loved-dreaded-and-wanted-languages),
[2020](https://insights.stackoverflow.com/survey/2020#most-loved-dreaded-and-wanted).

同時に Rust は素晴らしい型システムと所有権モデルによって開発者がより安全なコードを書くようサポートしてくれます。
JavaScript での追跡するのが難しいバグよ、さよなら！
実際に Rust ではコードを走らせるまでもなくコンパイラによってバグのほとんどは捕捉されます。
そして心配することなかれ、アプリを走らせてエラーになったとしてもブラウザのコンソールで Rust のコードを完全に追跡することができます。

#### 代わりは?

私たちは喜んで他のプロジェクトのアイデアを共有し、このワクワクする新たな技術のあらゆる可能性を実現できるよう皆が互いに助け合えると信じています。
もし Yew がグッとこない場合は以下のプロジェクトがいいかもしれません。

- [Percy](https://github.com/chinedufn/percy) - _"Rust と WebAssembly で同一な Web アプリを作る組み立てツール"_
- [Seed](https://github.com/seed-rs/seed) - _"Web アプリを作るための Rust フレームワーク"_
