SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Scala+Liftによる実践Webアプリケーション開発

ScalaによるWebアプリケーションフレームワーク「Lift」とは

Scala+Liftによる実践Webアプリケーション開発(1)

  • X ポスト
  • このエントリーをはてなブックマークに追加

Liftのアーキテクチャ

 では、Liftがどんなアーキテクチャのフレームワークなのか、簡単に説明します。以下に概要図を示します。

図3:Liftのアーキテクチャ図
図3:Liftのアーキテクチャ図

 LiftはSnippetアプローチを採用した、"View First"というコンセプトのアーキテクチャを採用しています。

 開発者が作成するのは、以下の4つの要素です。

1. アプリケーション設定 Boot.Scala

 データベースへの接続設定やURLに対してマッピングを定義する設定を行います。設定は全てScalaのプログラムで行います。

 Liftでは、ほぼ全ての設定をこのBoot.Scalaで行いますので、大量のXMLファイルを管理する必要はありません。

2. テンプレート(XHTML)

 ブラウザに表示するためのHTMLのテンプレートです。テンプレートはXHTMLで作成します。テンプレート内に動的な出力を埋め込みたい場合は、出力を生成するSnippetをXHTML内にXMLタグとして埋め込みます。

 ファイルはXHTMLファイルですので、そのままブラウザに表示することができます。

 デザイナーが作成したHTMLファイルにプログラマがXMLタグを埋め込む、プログラマがラフなXMLとHTMLでプロトタイプを作り、デザイナーに修正してもらう、など、プログラマとデザイナーが協業しやすいようになっています。

3. Snippet

 Liftでは、ブラウザからのHTTPリクエストに対してテンプレートを基に出力を生成します。テンプレートのレンダリングの過程で、テンプレート内のXMLタグに対応するSnippetをLiftが呼び出すことで、動的な出力を生成する形になります。

 Snippetは、後述するModelを利用した動的な出力の生成などを行います。また、Snippetで出力を生成する際に、特定のHTML上のコンポーネントに対してのイベントハンドラを、独自に用意したFunctionオブジェクトに割り当てる(Function Mapping)ことが可能であり、さらに、Snippet自体が状態を保持することが可能になっているおかげで、Snippet=コンポーネントという形での開発が可能です。

4. Model

 LiftでのModelは、データベースのテーブルと1対1で対応するように定義します。Modelのクラスひとつがデータベースの1テーブルに対応する形になります。

 Modelを使ったデータ操作では、基本的にプログラマがSQLを発行する必要はありません(APIを利用することで直接SQLを発行することは可能です)。

 Modelには基本的なCRUD操作(Create、Read、Update、Delete)に対応するAPIが用意されていますし、検索条件もModelのAPIを利用して動的にプログラミングすることができます。

 もちろん、テーブル間の親子関係の定義も可能ですし、Modelを検索、登録、更新、削除を行う画面を簡単に作成することが可能です。

次のページ
Quick startによるHello world

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Scala+Liftによる実践Webアプリケーション開発連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 尾崎 智仁(オザキ トモヒト)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4310 2009/09/16 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング