post Image
Web Frameworkとして検討する言語とフレームワーク

はじめに

今までは、Webアプリの開発というとRailsという感じでした。しかし、今日ではRailsを参考に多くのWeb Frameworkも登場しているので、それらについておすすめのものを検討してみます。

Ruby on Rails

Rubyでは、RailsというWeb framework(Webフレームワーク)が有名ですね。

しかし、速度が遅いなどと言われているのが少し気になります。

Elixir on Phoenix

Elixirでは、Phoenixがあります。Phoenix-frameworkは、Rails風なリッチなフレームワークである割にデフォルトでもそこそこ速いらしいです。

これは興味があったので試してみました。Dockerでやる場合は以下。

https://github.com/xtity/docker-centos7-elixir-phoenix

$ docker run -d -p 80:4000 --name phoenix -t xtity/docker-centos7-elixir-phoenix

それ以外は本体にインストールすることになるけど、以下のような感じです。

$ brew install elixir

$ mix local.hex

$ mix archive.install https://github.com/phoenixframework/phoenix/releases/download/v0.14.0/phoenix_new-0.14.0.ez

使い方はテンプレートを作成し、サーバーを起動。localhost:4000にアクセスする感じ。

$ mkdir phoenix

$ cd phoenix

$ mix phoenix.new ./hello_phoenix

$ cd hello_phoenix

$ mix phoenix.server
----------------------------
$ curl 127.0.0.1:4000

サンプルとしてチャットアプリのコードが公開されています。

https://github.com/chrismccord/phoenix_chat_example

Demo

また、デモはHerokuを使用していて、これはWebアプリなどを無料で公開できるサーバーを管理できるサービスという感じのものです。これについては後述します。

Go on Revel

Goでは、まず、ちょっと重めのRevelを使ってみます。

http://qiita.com/2KB/items/7a743033d8d1a87f1b72

$ go get github.com/revel/revel

$ go get github.com/revel/cmd/revel
$ cd $GOPATH

$ revel help
usage: revel command [arguments]

The commands are:

new         create a skeleton Revel application
run         run a Revel application
build       build a Revel application (e.g. for deployment)
package     package a Revel application (e.g. for deployment)
clean       clean a Revel application's temp files
test        run all tests from the command-line

Use "revel help [command]" for more information.

$ revel new myapp

$ tree myapp
myapp
├── README.md
├── app
│   ├── controllers
│   │   └── app.go
│   ├── init.go
│   ├── routes
│   │   └── routes.go
│   ├── tmp
│   │   └── main.go
│   └── views
│       ├── App
│       │   └── Index.html
│       ├── debug.html
│       ├── errors
│       │   ├── 404.html
│       │   └── 500.html
│       ├── flash.html
│       ├── footer.html
│       └── header.html
├── conf
│   ├── app.conf
│   └── routes
├── messages
│   └── sample.en
├── public
│   ├── css
│   │   └── bootstrap.css
│   ├── img
│   │   ├── favicon.png
│   │   ├── glyphicons-halflings-white.png
│   │   └── glyphicons-halflings.png
│   └── js
│       └── jquery-1.9.1.min.js
└── tests
└── apptest.go

$ revel run myapp
------------------------
$ curl 127.0.0.1:9000

APIとして機能させるために、JSONを返すようにしてみます。

$GOPATH/src/myapp/app/controllers/app.go
package controllers

import "github.com/robfig/revel"

type User struct {
Name string
}

type App struct {
    *revel.Controller
}

func (c App) Index() revel.Result {
//return c.Render()
return c.RenderJson(User{"go test"})
}

アクセスすると、こんな感じで返します。

$ revel run myapp
------------------------
$ curl localhost:9000
{
"Name": "go test"
}

あと、Golangには、Beego, Martini, Gojiなどがあって、Beegoは中国っぽいのでみんな避けてる感じなのと(中国が嫌いとかではなく、マルウェア的な意味で)、Martiniは軽量で使いやすいということで人気ぽいです。

しかし、Martiniには黒魔術を常用するという問題があり、この問題は根本的なものであるため、現在でも解決されていないと思われます。これは、Go言語のシンプル理念とは相反するものであり、メンテナンスのコストが増大する可能性がありますので、あまり使いたくない感じします。

したがって、個人的には、Gojiを使ってみたい。

PaaS

Herokuとは、Webアプリなどを無料(無料で使える料金プランがあるという意味)で公開できるサーバーを管理できるサービスという感じのものです。

こういったサービスは、Heroku, Modulus, DigitalOcean, OpenShiftなんかが有名ですよね。

データベースは、HerokuのPostgreSQLとAmazon RDSのPostgreSQLが有名です。これに関しては、Heroku PostgreSQL vs. Amazon RDS for PostgreSQLを読まれてみても面白いかもしれません。

Herokuは、新しい料金体系が発表されたことから移行先が検討されています。

個人的には、OpenShiftがおすすめかなあと思っています。


『 Go 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。