BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 新しいHaskellベースのWeb App Specification Languageがアルファ版でリリースされた

新しいHaskellベースのWeb App Specification Languageがアルファ版でリリースされた

ブックマーク

原文(投稿日:2021/01/18)へのリンク

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 compilation
(出典: 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 ]
}

前術の例で、pslPrismaスキーマ言語を参照している。その言語は、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の行動規範に従う必要がある。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT