Web App Specification Language(Wasp)は最近アルファ版でリリースされた。これにより、開発者はより少ないコードで最新のWebアプリケーションを作成できるようになる。Elmと同じように、WaspはHaskellで書かれたドメイン固有言語である。シングルページアプリケーションのみを扱うElmとは異なり、Waspはマルチページアプリケーションもサポートする。アルファリリース版は現在、フロントエンドとバックエンド(React/Node/Express/Prisma)をカバーする単一のWebスタックを活用している。
Web App Specification Languageは、より少ないコードでWebアプリを構築するためのプログラミング言語として、それ自体を表現している。フロントエンド、バックエンド、デプロイメントはすべて1つの簡潔なDSLとして記述される。Waspのドキュメントでは次のように説明されている。
[…] Waspはすべてを一度に実行しようとしているのではなく、スタックのすべてのパーツ(クライアント、サーバ、デプロイメント)を相互に接続することによって生じる偶発的な複雑さに焦点を合わせています。
現在、WaspはReactとNodeをサポートしています。そして、それらに依存する形でWebコンポーネントとサーバのクエリとアクションを定義しています。
Waspは、.wasp
ファイルをWebアプリケーションを構成するアセットにコンパイルする。
(出典: wasp-langウェブサイト )
Wasp言語は、アプリ、ページ、ユーザ、認証、ルートなど、共通のWebアプリケーションの概念を素晴らしものにする。コード例を次に示す。
// todoApp.wasp:
app TodoApp {
title: "ToDo app",
favicon: "./todo-logo.png"
}
route "/" -> page Main
page Main {
component: import Main from "@ext/pages/Main"
}
query getTasks {
fn: import { getTasks } from "@ext/queries.js"
}
entity Task {=psl
id Int @id @default(autoincrement())
description String
isDone Boolean @default(false)
psl=}
entity User {=psl
id Int @id @default(autoincrement())
email String @unique
password String
psl=}
auth {
// Expects entity User to have email(String) and password(String) fields.
userEntity: User,
methods: [ EmailAndPassword ]
}
前術の例で、psl
はPrismaスキーマ言語を参照している。その言語は、Task
エンティティをPrismaモデルとして記述するために使用される。バックエンドクエリは、query
キーワードで記述される。アプリケーションページはReactコンポーネントで実装される(page Main
)。エンティティの更新と作成は、action
キーワードで記述される。ドキュメントには、よくあるtodoアプリのチュートリアルの全コードが含まれている。
Webアプリケーションフレームワークの最近の開発の多くは、シンプルさと生産性の追求によって推進されている。SvelteフロントエンドUIフレームワークは「コードを少なくする」を当面のモットーにしており、ドメイン固有言語(DSL)とコンパイラも含まれている。Svelteはサーバレスアプリケーションフレームワークになる可能性がある。Next.jsは、主要な設計目標をパフォーマンスと開発者のエクスペリエンス(ゼロ設定)としている。Next.jsは、Reactの上にそのアプリケーションフレームワークを構築するものでる。Zero Serverは、ルーティング、バンドル、トランスパイルのための通常のプロジェクト構成を抽象化して、容易に開始できるようにすることも目指している。ただし、Zero Serverを使用すると、開発者は幅広いスタック(Node、React、HTML、MDX、Vue、Svelte、Pythonなど)からテクノロジーを選択できる。RedwoodフルスタックのサーバレスWebアプリケーションフレームワークは、Ruby on RailsエクスペリエンスをJavaScriptにもたらすよう努めている。Integrated Haskell Platformは、タイプセーフなWebアプリを構築するための最速の方法を提供する独創的なフレームワークを目指している。
シンプルさと生産性の向上は、簡潔なDSLの使用、設定より規約、自動化(ツール)、独創的なアーキテクチャとスタックによって達成されることがよくある。
Visual Studioを使用する開発者は、Wasp言語拡張を使用できる。Waspはまだアルファ版であり、現在急速に開発が進んでいる。開発者はいつでもWaspから脱退し、Waspによってコンパイルされたアセットから開発を続けることができる。
Waspは、MITライセンスの下でリリースされたオープンソースプロジェクトである。コントリビューションは大歓迎であるが、Waspの行動規範に従う必要がある。