読者です 読者をやめる 読者になる 読者になる

the industrial

都内で働くITエンジニアの日記

golang製Web Framework 「echo」事始め

はじめに

なんだか今日は早く目が覚めてしまったので、久しぶりの朝活。

golang

最近 golang が気になり過ぎているのと、Webアプリ作るフレームワークも出てきている様なので、JavaScalaときて、第三の言語として扱えたらいいなーなんて思い、今年は真面目に勉強してみようかと。

実は前から既にちょくちょく書いていたのだけど、ちゃんとメモなりなんなりに残すのが大事なんだよね。

golang で書けるフレームワーク

フレームワークは僕が調べた中では、 martini というものが一番人気らしいのだけど、みんなが使っているものを勉強してもなーという天邪鬼な所があるので(Scalaの勉強を始めた時、周りの誰も使っていなかった)、 各フレームワークのベンチマーク を参考に、 echo というフレームワークを試すことにした。

なお、フレームワーク選びについては、下記Qiitaの記事を参考にさせていただいた。僕のブログ、というかこのエントリー含めてただのメモに比べると、こういう有益な記事には頭が上がらないっすね。

概観からGoのWebFrameworkを選ぶ

golang のインストール

いつも通りにbrew

$ brew install go

$GOPATH の設定

GOPATHが無いと色々不便(というか動かない?)みたい。

bashrcのPATHに、下記の様な感じで追加する。

export GOPATH=$HOME/.go
export PATH=$PATH:$GOPATH
$ go version
go version go1.7.5 darwin/amd64

echo の入手

go get コマンドで入手

go get -u github.com/labstack/echo

入手すると、 $GOPATHディレクトリに格納される(ココらへんは go get コマンドの話か)。

Helloworld

メモとか言っておきながら、やっぱり参考にする オフィシャルサイトのガイド そのまま。

HelloWorld

package main

import (
    "net/http"

    "github.com/labstack/echo"
)

func main() {
    e := echo.New()
    e.GET("/", func(c echo.Context) error {
        return c.String(http.StatusOK, "Hello, World!")
    })
    e.Logger.Fatal(e.Start(":1323"))
}

起動

$ go run helloworld.go
⇛ http server started on [::]:1323

localhost:1323 にアクセスすると、 Hello, World! と表示されるハズ。

echo のサンプルソース

下記に echo のサンプルソースが存在する。非常に参考になる。

~/.go/src/github.com/labstack/echo/cookbook
  • auto-tls
  • cors
  • crud
  • embed-resources
  • file-upload
  • google-app-engine
  • graceful-shutdown
  • hello-world
  • http2
  • jsonp
  • jwt
  • middleware
  • streaming-response
  • subdomains
  • twitter
  • websocket

見た感じ、crudやらfile uploadやらtwitter oath認証やらなんでも揃っているので、組み合わせるだけでアプリが作れそうな勢いw

次回は、このcrudを参考にし、MVCモデルの様にアプリを構築出来るようにするための第1歩として

  • router.go
  • listUser.go
  • createUser.go
  • updateUser.go
  • deleteUser.go

に分割してみる。

Supersetを試してみる

Supersetとは

Superset

宿泊施設マッチングサイトAirBnB(エアビーアンドビー)が提供する、データ可視化ツール

Supersetをインストールし、DBとつなぎ、Queryを書き、ヴィジュアライズしてダッシュボードを構築することで

マーケティングなどに役立てることが出来る

インストール方法

基本的にはオフィシャルサイトにある Superset’s documentation の通りにやっていけば良い

ここではMacOSにインストールする方法をメモっておく

Python の実行環境構築

SupersetはPython製なので、先ずはPython実行環境の構築

とは言っても、Homebrewで一発

$ brew install python

pkg-config、libffi、openssl をインストール

他に、pkg-configlibffiopenssl 等が必要となるそうなので、インストール

$ brew install pkg-config libffi openssl

pip について

pip | wikipedia

pip は、pythonのためのライブラリ管理ツール

homebrewやnodebrewみたいなもの

cryptography のインストール

cryptography

Python製の暗号化ライブラリ

env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include" pip install cryptography

env については、 opensslcryptography を結びつける設定かな?

あまり詳しくなくて申し訳無し

virtualenv

Pythonの仮想環境を構築できるパッケージ。

こちらも、 Superset’s documentation を参考にインストール

pip install virtualenv

こちらの記事がとても詳しく書かれていたので、参考に

VIRTUALENV について | 今日のPython

superset のインストール

pip install superset

Adminユーザーを作成する

下記コマンドを実行すると、氏名、メルアド、パスワードを聞かれるので入力する

ここで入力した情報が初回ログインユーザーとなる

fabmanager は、 SupersetSQLiteにデータ登録するコマンド?

fabmanager create-admin --app superset

DBのイニシャライズを行う

これは、 Superset’s documentation に記載されたコトそのまま・・・

実際に何するかまでは調べていない

superset db upgrade

初期データを登録(多分スキップ可能)

これも、 Superset’s documentation に記載されたコトそのまま・・・

Supersetを利用する上で例となる、ものすごく豊富なデータを登録してくれる(スクリプトだと思っている)

superset load_examples

権限などの初期化

これも、 Superset’s documentation に記載されたコトそのまま・・・

superset init

サーバー起動

下記コマンドでSupersetを起動する

superset runserver

その後、 http://localhost:8088 にアクセスするとログイン画面が表示される

fabmanager で登録したユーザーでログインできる

MySQLに接続する

SQLAlchemyについて

SQLAlchemy

SQLAlchemyPythonのためのO/Rマッパーとのこと

Python界(とSuperset)のことは何もしらないので間違っていたら申し訳ないのだけど

SupersetはこのORMを採用している

MySql Connector (PyMySQLのインストール)

SQLAlchemyとは別に、MySQLにつなげるConnectorが必要になる

僕が試したのは PyMySQL 。これが良いものかどうかはワカラナイけど、とりあえずこれでつなぐことが出きた。

PyMySQLpip でインストールする。

pip install PyMySQL

MySql接続設定

上部の SourcesDatabases+ボタン から、 SQLAlchemy URI というフォームに

mysql+pymysql://{mysql_user}:{mysql_password}@localhost:3306/{database_name}

的なニュアンスでDB情報を入力

Test Connection で確認。

最後に

最後に、とか書いてるけど、とりあえずセットアップぐらいまでの手順しかまとめられなかった。

ただ、 superset load_examples をやってあげれば、それはもうエゲツないデータが登録され、グリグリしたなんかもう良くわからないグラフをダッシュボードから見ることが出来るので、是非お試しを。

エゲツないグラフは github のREADME.mdでgif確認出来るので、見てみると良い。

使い方はノリでできそう。

もう暫く触ってみたい。

シング・ストリート

シング・ストリート 未来へのうた(字幕版)

傑作!

 

最近、娘ちゃんが寝た後に嫁ちゃんと映画をよく観るのだけど、せっかくだから面白い映画を観たいモノ。そして、実際ヒットが続いて嬉しい。

 

アイルランドに住む冴えない男の子が、好きになった女の子の気をひく為にバンドを組むお話。

 

家庭環境とか、学校での厳しい規則、いじめから現実逃避する為に、バンドを組んだ仲間と曲を書き、それが力になって行く様は観ていて気持ち良い。

 

初めはもう笑っちゃうくらい見た目がダサいのだけど、どの曲もとてもとても良い曲。

 

物語が進むにつれて次第に様になって行き、ラストに至っては「初めから最後までずっとかっこよかったんじゃないかな?」と錯覚するほど、めちゃくちゃカッコイイんだ。

 

主人公の兄ちゃんが、とにかく弟に何でも教えてあげる、またこれがいい男。役者が気になって調べたら、まだ日本語のウィキペディアが無いみたい。Jack Reynor - Wikipedia

 

登場人物全員が良い味出してる、傑作映画!

 

究極のダサカッコイイ。

スタートレック イン トゥー ザ ダークネス

スター・トレック イントゥ・ダークネス (字幕版)

なんだかハマりだした笑

 

観る前は全く興味なかったのだけど、観てみるとこれが意外に面白い。エイブラムスさんマジックかな?

 

そんで、前作よりもこのイントゥーザダークネスの方が面白かった!

 

何よりベネディクト・カンバーバッチが良すぎ。

 

新作のビヨンドも早く観たいな(プライム化して欲しいな…w

 

論点思考

論点思考

ボストンコンサルティンググループで15年間コンサルをこなして来た著者の経験から基づく、問題の本質を見極める手法を紹介する本。

 

社内で結構読んでる人が多かったので、お借り。

 

読む前はボストンコンサルティング凄いでしょー!?といった内容になるんじゃないかと思ってたのだけど、なかなかどうして、基礎からスキーム、実例を絡めた紹介で面白かった。

 

まあ、これを実践出来るかどうかが問題なんだけどね笑

 

ビリギャル

映画 ビリギャル Blu-ray プレミアム・エディション

 面白かった!

 

一年で偏差値を40上げて、慶応大学に合格するという実話を基にした映画。

 

家庭の事情やら、日本の教育体制やら、色々なメッセージはあるんだろうけど、何より一番頑張るのは子供なんだなあと。

 

それにはやる気が必要で、この話に出てくる予備校の先生が神がかっている。とにかく良いところは褒めて、ダメな所はじゃあどうしたら良くなるのかと寄り添い、これこそが教育なんだ。

 

映画としても上手くまとまってるし、役者はみんな上手いし、久々に良いもの見た気分。

スタートレック

スター・トレック (字幕版)

 

前々から気になってたのだけど、やっと鑑賞。

 

あまり期待してなかったのだけど、思ったより面白かった。

 

王道SFって感じで、宇宙工学あり、ヒューマンドラマあり、続編が気になる!