LoginSignup
1
1

More than 5 years have passed since last update.

[入門]ScalaでMVCを構築する

Posted at

はじめに

Scalaの超軽量フレームワーク「Scalatra」上でMVC構造を構築するまでを解説します。
Scalatraだけでなく、Scalaは記事が少なすぎる

タグを見るとわかるが、Scalatraに限って8です。

image.png

圧倒的少なさから入門もしにくいし、、、
そのせいで、普段はSwift,Go, Python, Rubyを書きますが、Scalaをやると非常に面白いが文献が少なかった。
なので今回はWebアプリケーション開発できるようにMVCを構築することから始めます。

ニーズ

自分は普段からRailsや、Django、Ginなどの「フルスタックフレームワーク」で開発をしたりしますが、MVC構造といってもあまりにも自由がないです。
Railsなんてブラックボックス化がひどいし、体験的なプログラミングをしてない気がします。

前提

本記事は以下のことを対象にしています。

  • すでにbstなどでビルトが済んでいる方

を対象にしています。

ディレクトリ構造

若干の違いはあるかもしれませんが、以下のようなディレクトリ構造をしているはずです。

src
├── main
│   ├── java
│   ├── resources
│   │   └── logback.xml
│   ├── scala
│   │   ├── ScalatraBootstrap.scala
│   │   └── com
│   │       └── example
│   │           └── app
│   │               └── ScalaServlet.scala
│   └── webapp
│       └── WEB-INF
│           └── web.xml
└── test
    ├── java
    ├── scala
    │   └── com
    │       └── example
    │           └── app
    │               └── MyScalatraServletTests.scala
    └── scala-2.12

初心者な私には、どこに何を配置したらいいのかわからなかったのですが、Goのpackageを思いました。
Packageとは、名前空間と覚えればオッケイ。

つまり、MVCにするならばpackageで区切ればよくて、次の問題はどのように明示的にMVCであることを透明性を保ったまま構築できるかです。

もちろんapp以下に構築するのがいいかもしれません。
先程のディレクトリツリーを抜粋して以下のように変更します。

src
├── main
│   ├── java
│   ├── resources
│   │   └── logback.xml
│   ├── scala
│   │   ├── ScalatraBootstrap.scala
│   │   └── com
│   │       └── example
│   │           └── app
│   │               └── ScalaServlet.scala
│   │               └── view
│   │               └── controller
│   │               └── model
│   └── webapp
│       └── WEB-INF
│           └── web.xml
└── test

ScalaServlet.scalaを中心に、MVCを構築すると透明性の高く、開発しやすいのでおすすめです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1