DMMは日本で最大級の動画配信サービスを提供しています。
昨今はニーズの多様化と高品質への対応が急務となっており、動画配信基盤の刷新に取り組んでいます。モノリシックなシステムをマイクロサービス化すべく、Ruby on Rails・AngularJS・Go を利用しています。本セッションでは、それらのアーキテクトや開発フローについて判りやすく説明します。
77. Ruby vs Go!
フレームワーク
Go
Rails or Sinatra
フレームワークのルールに従う
フレームワークとgemで賄う
言語仕様のルールに従う
いろいろ
(revel, gorilla, goji, gin,
gizmo, gocraft, go kit…)
必要なものを組み立てる
Ruby
78. Ruby vs Go!
開発方法の比較
(なし)
rails / runner / rake …
bundle / gems / gulp …
RSpec
便利だが覚えることが多い
RCover
Autodoc
peek / New Relicなど
go build
go run hoge.go
go get (バージョン管理不要)
go test
普通のプログラム(assertなし)
go test -cover
go doc
go test -pprof
ビルド
実行
依存設定
単体テスト
カバレッジ
ドキュメント
プロファイラ
79. Ruby vs Go! ∼ コードの比較
数字の文字配列を2倍にしてカンマ区切りの文字列を表示
Ruby
1 p ["1","2","3","4","5"].map {|n| n.to_i * 2}.join(‘,')
> "2,4,6,8,10"
80. Ruby vs Go! ∼ コードの比較
数字の文字配列を2倍にしてカンマ区切りの文字列を表示
Go
1 package main
2
3 import (
4 "fmt"
5 "strconv"
6 "strings"
7 )
8
9 func main() {
10 ary := [...]string{"1", "2", "3", "4", "5"}
11 nums := make([]string, len(ary))
12
13 for i, n := range ary {
14 if num, err := strconv.Atoi(n); err == nil {
15 nums[i] = strconv.Itoa(num * 2)
16 }
17 }
18
19 fmt.Printf("%+vn", strings.Join(nums, ","))
20 }