Java?Ruby?
そろそろGoで行ってみませんか?
http://qiita.com/hoshi-k
公開版資料
2015年12月31日
紅白歌合戦が
郷ひろみさんの
「2億4千万の瞳」で開幕
某ポータルを慣れ親しんだ
Railsで作るのもなーと思いつつ、
素敵な言語を探している自分
❝この星の片隅2億の瞳が
素敵な事件(こと)を探してるのさ
という歌声が流れる中
そして、ゆく年くる年を見ながら、
やっぱりRailsで作るほうがいいかー
と思っているとき
除夜の鐘が鳴り響く
GoooooN
そういや、郷ひろみさんも
「Go!Go!(Goで行け)」
って、言ってた!!
Goで書けというお告げ
がキタ━━(゚∀゚)━━!!
2015年12月31日
23:50
Go言語採用決定
そして、徹夜する
Go言語とは
2009年にGoogleにより発表
2012年にv1.0リリース
2015年にv1.5リリース(最新版)
CやC++などが使用される領域で,

より効率良く実装することを目的に作られた
Golangのマスコット
Gopher君
Go言語の特徴(Official)
シンプルな言語である。
コンパイル・実行速度が早い。
安全性が高い。
同期処理が容易に行える。
なにより楽しい。
オープンソースである。
C言語 < Go < Python
動的型付言語のように実装できる静的型付言語
型推論が可能
ガベージコレクタによりメモリ管理は不要
メモリ管理が必要なC言語に近いパフォーマンス
依存性管理を重視したパッケージ機構
マルチコンパイルが可能&1バイナリでデプロイ
コンパイル処理時間の短縮を重視
並列処理機構を重視
Go言語の特徴(by hoshi)
Docker
Go言語で実装されたミドルウェアの代表例
Cloud Foundry
性能要件の厳しいPaaSソフトウェアもGo
IronWorker(iron.io)
Railsから移行して、30台のサーバを2台へ
Drone(drone.io)
docker利用のCIサーバもGo
Gunosy
日本の代表的なキュレーションメディアもGo
Ameba Ownd
サイバーエージェントもGoでいくつもサービス提供中
Go言語 採用事例
1/1より開発中の某ポータルより
採用アーキテクチャ、開発環境
開発言語 Go、HTML5/CSS3/JavaScript
Webフレームワーク Gin Web Framework
ORマッパー GORM
データベース sqlite3
全文検索、形態素解析 sqlite3 fts4、kagome
開発環境
SublimeText3、GoSublime、goemon
goimports
エンタープライズ的にいうところの
単票参照画面のビジネスロジックは・・・
//	GET	/posts/:id

func	PostShow(c	*gin.Context)	{

	 tx	:=	BeginTran()

	 defer	tx.Commit()

	 var	(

	 	 post					Post

	 	 category	Category

	 	 tags					[]Tag

	 )

	 tx.First(&post,	c.Param("id"))

	 tx.Model(&post).Related(&category,	"Category")

	 post.Category	=	category

	 tx.Model(&post).Related(&tags,	"Tags")

	 post.Tags	=	tags

	 RenderHTML(c,	http.StatusOK,	"show_post",	gin.H{

	 	 "post":	&post,

	 })

}
Java Ruby Go
生産性 △ ◎ ⃝
開発者調達容易性 ◎ △ ✕
コーディングスタイルの

統一容易性 ◎ △ ⃝
WEBフレームワークの

充実度 ◎ ◎ ⃝
非同期・バッチなど、

分散処理の実装容易性 △ ⃝ ◎
実行速度 ⃝ △ ◎
コンパイル速度 ✕ ⃝ ◎
サーバリソース消費 △ ✕ ◎
楽しさ(主観) ✕ △ ⃝
エンタープライズ観点であえて比較してみる
Java7以前 Java8
Scala
Ruby
Go
Elixir
プログラミング言語の移行パターン
分散処理に強く、可用性が高く、
リアルタイム処理が得意な言語がトレンド
2016年初頭の結論
基幹系Webシステムの開発言語としては厳しい
経験者調達はRubyよりもさらに困難
Webフレームワークは群雄割拠でスタンダートが存在しない
組み込みのテンプレートエンジンは癖が強く機能不足
いわゆるORマッパーはシンプルなものしか存在しない
ミドル、バッチ・APIサーバの開発言語としては優秀
クライアントサイドMVCと組み合わせ、これまでのノウハウを

フレームワーク化することで、数億円規模の案件では投入可能性あり
分散処理の実装容易性により、これまでのバッチ処理を

非常に少ないリソースで高負荷でもリアルに処理することができる
クラウドにおけるミドルウェアとして、社内共通基盤で採用予定
というわけで、
2016年は
Goで行きます!!
目指せ!エキゾチックフューチャー
fin.
No Programming, No Life

Java?ruby? そろそろgoで行ってみませんか?