[フレーム]
BT

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

寄稿

InfoQのすべての体験をアンロックして、そのメリットを最大限に活用しましょう

ログインして、InfoQのすべての体験をアンロックしましょう!お気に入りの著者やトピックの最新情報を入手し、コンテンツと交流し、限定リソースをダウンロードできます。

ログイン
または

アカウントをお持ちでない方

登録
  • あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。
  • 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。
  • 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。

Topics

地域を選ぶ

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

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

2021年3月22日 読了時間 4 分

作者:

翻訳者

原文(投稿日: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 ニュースレター

毎週火曜日に前週のまとめコンテンツをお送りいたします。(日本語版は不定期リリース)25万人のシニアな開発者コミュニティーにぜひご参加ください。 サンプルを見る

We protect your privacy.

BT

AltStyle によって変換されたページ (->オリジナル) /