SlideShare a Scribd company logo
1 of 38
Download to read offline
のサービスを
Go言語で作ってる話
     / 橋本祥一
• はしもと よしかず(橋本 祥一)
• ハンドル名:kamicup
• 株式会社ソウ CTO
• 実働4人でサービス開発
• 広く浅くなんでもやる(エンジニア&経営)
1時間リフォーム
【大工さんの空き時間に簡単な作業を頼める】
新築・
注文住宅
リフォーム
NEW!
大工さんの空き時間に

簡単な作業を頼める
1時間リフォーム
住まいに関する

小さな悩み
大工さんなら
朝飯前 です!
たとえば、どう使う?
おもしろい使い道
考えたら教えてください(^^)
(ここまで宣伝)
あまりにGo実用事例を聞かないので…
「とりあえずここに居るよ!」
と表明するための発表ですw
ずいぶん長いこと

Java使いでした
• 95 HTML/JSの延長でJDK1.1のbetaで遊びはじめた
• 00 航空機器設計の数値計算で個人的にJava使ってた
• 01 EDIと文書系のXML移行期に社内の陣頭対応
• 03 RSS流行り始め頃にデスクトップ用ツール作ったり
• J2ME CLDC/MIDPでアグリゲータ作ったり
• PalmOS/Winの同期アドオン(Conduit)作ったり
• 社内のワークフロー系システムをJ2EEベースで作ったり
• サーバー/デスクトップ/モバイル/ネットワーク
• アプリレイヤー/ミドルレイヤー(フレームワーク
やらSocketサーバやら)/アーキテクチャ
• きほん何でもJavaで作って
• 必要なとこはC/C++で書いてJNIでネイティブ対応
ここ数年
• iOSアプリはObjective-Cで
• そのバックエンドはJavaで
• (Androidはめんどいので退却)
• 動的なウェブサイトはJavaか、必要に応じPHPで
• RoRとかPlayは使い捨て(デモ用途)で
etc.
PHP
HTML
JS
Java
Obj-C
こんな割合でしたが
• とはいえ、別に言語に拘る気もないので、状況に合
わせて何でも使う。
• Coumfyのプロトタイピングの当初に、kwmt27が
「Goがいい」とか言い出したので、
• まぁいいやと思って、Go使い始めた結果・・・
etc.
PHP
Java
HTML
JS
Obj-C
Go
いまこんな割合に
以前ならJavaで作ってた類のものはGoで作るようになった
Goやってみて

どうだったか
• 1日目 … チュートリアル「A Tour of Go」やった
• 2日目 … 言語仕様を読んで、試しに書き始めた
• 3日目 … 慣れたJavaと同じ早さで書ける気がする
• 1週間後 … なんかすごいサクサク進んでる・・・
• シンプルなので(基礎力さえあれば)導入容易
• ふつうに使える( ・ ・)!! 言語&処理系だと思う
• コンパイラ言語の安定感(スクリプト言語のデバッグとか・・・ムキー!)
• 記述がシンプル(書くのがラクで、読みやすい)
• 素直でハマりどころが少ない
• 決して、尖った言語ではない(むしろ平凡で、実用
性のために割り切ってる感あり)
どういう構成で

使ってるか
Go1.1.2の頃にMax
で同時500接続ぐらいだったので手前
にNginx置くことに
go get github.com/go-sql-driver/mysql
go get github.com/coopernurse/gorp
go get github.com/gorilla/sessions
go get github.com/srinathgs/mysqlstore
go get github.com/nfnt/resize
go get code.google.com/p/goauth2/oauth
go get code.google.com/p/google-api-go-client/analytics/v3
使ってるGoライブラリ
Nginx
Go製アプリ
MySQL
FastCGIプロトコル
HTTPプロトコル
使ってるWeb API
Facebook (OAuth2, GraphAPI)
WebPay
PayPal
Google APIs
Chatwork
geocoding.jp
ajaxzip3
データ永続化(セッションも)
さくらVPS-1G
ファイルシステム
fastcgi cache
使ってるGoライブラリ
Nginx
Go製アプリ
MySQL
FastCGIプロトコル
HTTPプロトコル
使ってるWeb API
Facebook (OAuth2, GraphAPI)
WebPay
PayPal
Google APIs
Chatwork
geocoding.jp
ajaxzip3
データ永続化(セッションも)
ファイルシステム
fastcgi cache
go get github.com/go-sql-driver/mysql
go get github.com/coopernurse/gorp
go get github.com/gorilla/sessions
go get github.com/srinathgs/mysqlstore
go get github.com/nfnt/resize
go get code.google.com/p/goauth2/oauth
go get code.google.com/p/google-api-go-client/analytics/v3
コンパイル&スタティックリンクされ
て単一バイナリ実行ファイルになってるの
で、そのファイルだけ持っていけば他のサー
バでもすぐ動く。(実行環境のためにイン
タプリタとかランタイム・ライブラリとか
アプリケーション・サーバーとか、そうい
うの一切要らねぇから!)
さくらVPS-1G
Go使ってると言うと
聞かれがちなこと
人材面で困らない?
• たしかに経験者は少ないよね。
• でも学習コストが低いから、他の言語で基礎ができ
てるエンジニアなら、ちょっと勉強してもらったら
3日目には戦力になると思う。
MVC Frameworkあるの?
• 何個かあるみたいだけど、うちは使ってない。
• Viewは標準のテンプレートエンジンで充分。
• フレームワークって、それ自体の学習コストは成果
に無関係なので、チームの作業効率が落ちないなら
使わなくても。。。
日本語の情報が少なくない?
• まぁしょうがない。
• 最近は本も出てるみたい?
• 「バカ」を付けてもいいぐらい単純で素直な言語な
ので、情報を探しまわらなきゃならないような事態っ
てそんなに無いよ。
WebAPIにGoのライブラリが無い
• そやね。(́・ω・`)
• でも、非公式ライブラリはGitHubとかにあったり
するし、いまどきウェブAPIは大抵RESTでjsonな
んやから、自分で書いてもそんなに大変じゃないよ。
使ってるGoライブラリ
Nginx
Go製アプリ
MySQL
FastCGIプロトコル
HTTPプロトコル
使ってるWeb API
Facebook (OAuth2, GraphAPI)
WebPay
PayPal
Google APIs
Chatwork
geocoding.jp
ajaxzip3
データ永続化(セッションも)
ファイルシステム
fastcgi cache
go get github.com/go-sql-driver/mysql
go get github.com/coopernurse/gorp
go get github.com/gorilla/sessions
go get github.com/srinathgs/mysqlstore
go get github.com/nfnt/resize
go get code.google.com/p/goauth2/oauth
go get code.google.com/p/google-api-go-client/analytics/v3
Google APIs以外は自分でラッパー書
いたけど、必要なとこだけ書いてるの
で、どれもせいぜい数時間∼1日ぐら
いしかかかってないと思う。
例えばWebPayなら140行。
さくらVPS-1G
エンジニアにとって
気持ちいい言語!
あと、普通に「使え」ます。

More Related Content

Similar to [Golang] Go言語でサービス作ってる話

プレゼンテーション 7
プレゼンテーション 7プレゼンテーション 7
プレゼンテーション 7Kato Tomo
 
\広報でもできる!/GitHubでらくらく原稿確認!
\広報でもできる!/GitHubでらくらく原稿確認!\広報でもできる!/GitHubでらくらく原稿確認!
\広報でもできる!/GitHubでらくらく原稿確認!Sachiko Imaoka
 
2017-08-17 サイボウズワークショップ発表資料
2017-08-17 サイボウズワークショップ発表資料2017-08-17 サイボウズワークショップ発表資料
2017-08-17 サイボウズワークショップ発表資料Cybozucommunity
 
プレゼンテーション 7 (4)
プレゼンテーション 7 (4)プレゼンテーション 7 (4)
プレゼンテーション 7 (4)Kato Tomo
 
サービス開発者の読書会#4
サービス開発者の読書会#4サービス開発者の読書会#4
サービス開発者の読書会#4Sosuke Kimura
 
Potatotips 7 20140515 での話し
Potatotips 7 20140515 での話しPotatotips 7 20140515 での話し
Potatotips 7 20140515 での話しKazuaki Matsuo
 

Similar to [Golang] Go言語でサービス作ってる話 (7)

プレゼンテーション 7
プレゼンテーション 7プレゼンテーション 7
プレゼンテーション 7
 
\広報でもできる!/GitHubでらくらく原稿確認!
\広報でもできる!/GitHubでらくらく原稿確認!\広報でもできる!/GitHubでらくらく原稿確認!
\広報でもできる!/GitHubでらくらく原稿確認!
 
2017-08-17 サイボウズワークショップ発表資料
2017-08-17 サイボウズワークショップ発表資料2017-08-17 サイボウズワークショップ発表資料
2017-08-17 サイボウズワークショップ発表資料
 
プレゼンテーション 7 (4)
プレゼンテーション 7 (4)プレゼンテーション 7 (4)
プレゼンテーション 7 (4)
 
サービス開発者の読書会#4
サービス開発者の読書会#4サービス開発者の読書会#4
サービス開発者の読書会#4
 
20120515 アジャイルサムライ読書会 第4回
20120515 アジャイルサムライ読書会 第4回20120515 アジャイルサムライ読書会 第4回
20120515 アジャイルサムライ読書会 第4回
 
Potatotips 7 20140515 での話し
Potatotips 7 20140515 での話しPotatotips 7 20140515 での話し
Potatotips 7 20140515 での話し
 

[Golang] Go言語でサービス作ってる話