SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
PHPerが
golangで
もがいてる話
Keisuke Utsumi @KLab Osaka
第1回 関西golang勉強会
2015/10/12
おまえだれやねん
うつみ けいすけ
KLab (Osaka) Developer
よく忘れるもの:名刺
マイブーム:禁酒ダイエット
刺青エンジニアって覚えてください
ダイビング好き
Golang(ここ最近),PHP,C#
チューニング好き(ISUCON5予選落ちたorz
関西ゲーム勉強会運営
PHPカンファレンス関西実行委員
犬と爬虫類が好き
※この発表は私個人の見解であり、
所属する組織の公式見解ではありません。
Agenda
質問タイム
プロダクトでgoを勝ち取った話
PHPerが悩んだgoの話
まとめ
Agenda
質問タイム
プロダクトでgoを勝ち取った話
PHPerが悩んだgoの話
まとめ
質問タイム
Agenda
質問タイム
プロダクトでgoを勝ち取った話
PHPerが悩んだgoの話
まとめ
KLabでのgolang実績
プロダクトとしてはない(開発中のものはある
運用中の案件でのツールはたくさんある
負荷試験ツール
MySQLプロファイラ etc…
エンジニア中心で情報共有活発
ISUCON予選で利用
新規案件の技術選定が始まる
今まではPHPでゲームサーバーを構築
山程ノウハウある(開発も運用も
PHPで動く前提の爆速サーバーもある
独自ライブラリ等の資産もいっぱいある
何よりPHPerいっぱい居る
でもね
次の案件、PHPさんでは
役 不 足 
なんですよ。
_人人人人人人_
> 常時接続 <
 ̄Y^Y^Y^Y^Y ̄
_
人
人
人
人
人
人
_
>
 
常
時
接
続
 
<
 ̄
Y^Y^Y^Y^Y ̄
_人人人人人人人人人人人人_
> 求められる双方向通信 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
_
人
人
人
人
人
人
_
>
 
常
時
接
続
 
<
 ̄
Y^Y^Y^Y^Y ̄
_人人人人人人人人人人人人_
> 求められる双方向通信 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄_人人人人人人人人人_
> 捨てられるHTTP <
 ̄Y^Y^Y^Y^Y^Y^Y^Y ̄
_
人
人
人
人
人
人
_
>
 
常
時
接
続
 
<
 ̄
Y^Y^Y^Y^Y ̄
_人人人人人人人人人人人人_
> 求められる双方向通信 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
_
人
人
人
人
人
人
人
人
人
_
>
 
捨
て
ら
れ
る
HTTP 
<
 ̄
Y^Y^Y^Y^Y^Y^Y^Y ̄
_人人人人人人人人人人人人_
> 大規模人数による同期 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
_
人
人
人
人
人
人
_
>
 
常
時
接
続
 
<
 ̄
Y^Y^Y^Y^Y ̄
_人人人人人人人人人人人人_
> 求められる双方向通信 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
_
人
人
人
人
人
人
人
人
人
_
>
 
捨
て
ら
れ
る
HTTP 
<
 ̄
Y^Y^Y^Y^Y^Y^Y^Y ̄
_
人
人
人
人
人
人
人
人
人
人
人
人
_
>
 
大
規
模
人
数
に
よ
る
同
期
 
<
 ̄
Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
_人人人人人人人人人人人人人人人人人人人人人人_
> PHPってもうオワコンでしょ?っていうDisり <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
_
人
人
人
人
人
人
_
>
 
常
時
接
続
 
<
 ̄
Y^Y^Y^Y^Y ̄
_人人人人人人人人人人人人_
> 求められる双方向通信 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
_
人
人
人
人
人
人
人
人
人
_
>
 
捨
て
ら
れ
る
HTTP 
<
 ̄
Y^Y^Y^Y^Y^Y^Y^Y ̄
_
人
人
人
人
人
人
人
人
人
人
人
人
_
>
 
大
規
模
人
数
に
よ
る
同
期
 
<
 ̄
Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
_人人人人人人人人人人人人人人人人人人人人人人_
> PHPってもうオワコンでしょ?っていうDisり <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
サーバー言語選択
あ、PHPさんおつかれっしたー。から始まる
膨大なゲームロジックをサーバー側で書く
膨大な数の擬似3D(2D)空間の座標演算
高速なmutex制御や堅牢な並列/並行処理
TCP(RPC/ProtocolBuf)との親和性
C++ と golang
golang はみんながビギナー
ゲーミングエンジニアはC++ の人が多い
C++ ならゲーミングライブラリとか豊富
Linux 上でC++ 書いた人居ない
じゃあみんなビギナーだね(にっこり
勝者:golang
開発環境構築は一瞬
C++で試しに最低限の環境をメンバーに提供
しようとしたら1週間かかった
LL言語ライクにかける
ワクワクできる
Gopherかわいい
Agenda
質問タイム
プロダクトでgoを勝ち取った話
PHPerが悩んだgoの話
まとめ
標準ツールが優秀過ぎて悩んだ
go get
go fmt
go test
go test -bench
go get
++)依存関係を解消しつつ、実行環境にパッケー
ジのダウンロードとインストールを行ってくれる
++)コンパイル&インストール は go install
--)でもリポジトリ管理には向かないので、git
subtreeなどで管理した方がいい場面もある
--)バージョンを固定できない
go fmt
golang 側で細かなコーディングルールが設定されている
ぐっちゃぐちゃに書いてもcommit前にこれやっとけば安心
IDEごとでのフォーマッタとかいらんかったんや
まじで宗教戦争終わった。
goimportsと合わせてやると尚良し
Makefileとか作って、fmt&importsをさくっとできるように
しておくと便利 例) make code-clean
go test ( -bench
{hoge}_test.go ってファイルにテスト書くだけ
Bench{Hoge}ってメソッドでベンチマーク取れ
る
ライブラリ選定するときにめっちゃ便利
要素が少なすぎて悩んだ
struct
func
interface
goroutine
chan
特にinterface,君は何者だ…
メソッド群を定義することによって、別のもの
も同じ要素を持つものとして扱える
しかもimplementsを宣言しなくていい
interface{}って定義すると何でも渡せる
抽象化っぽい(≠抽象化)こともできるし
まだまだ使いドコロはいっぱいありそう
差分構造化に向かない
構造体の埋め込みがある
埋め込みは匿名フィールドに定義されるだけ
よって、継承とは全くの別物であるのに、似たよ
うな書き方ができてしまう
リスコフの置換原則(LSP)とは全く考え方が違
う(当たり前
Agenda
質問タイム
プロダクトでgoを勝ち取った話
PHPerが悩んだgoの話
まとめ
goに入ればgoに従え
golang を始めてすぐのころはある程度簡単に取り扱える(素
晴らしい
goらしさというものを意識せずに続けると、これ、俺でも
すぐできそう!!!!という錯覚を引き起こす
そして再度goらしさを求める旅にでる(now
PHPに比べ、言語の設計思想をきちんと み取り、コード
に反映させることの比重がとても大きい
それによる恩恵も大きい
goで大規模負荷分散サーバー書きたい人
是非声かけてください!!!!
一緒に勉強しましょう。
(コワイヒトジャナイヨ
[告知]関西ゲーム勉強会・2015冬
2015/11/28(土) 14:00~
株式会社サイバーエージェント様大阪オフィス
https://ksgs.doorkeeper.jp/events/31863
https://www.facebook.com/ksgstudy

Contenu connexe

Tendances

php-timecopを実戦投入してみた
php-timecopを実戦投入してみたphp-timecopを実戦投入してみた
php-timecopを実戦投入してみた
Yoshio Hanawa
 
日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡
日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡
日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡
Rina Fukuda
 

Tendances (20)

WordPress 多言語化プラグインqTranslateの紹介
WordPress 多言語化プラグインqTranslateの紹介WordPress 多言語化プラグインqTranslateの紹介
WordPress 多言語化プラグインqTranslateの紹介
 
CakePHPとYii_エンジニア勉強会20130820
CakePHPとYii_エンジニア勉強会20130820CakePHPとYii_エンジニア勉強会20130820
CakePHPとYii_エンジニア勉強会20130820
 
php-timecopを実戦投入してみた
php-timecopを実戦投入してみたphp-timecopを実戦投入してみた
php-timecopを実戦投入してみた
 
フレームワーク使おうぜ!
フレームワーク使おうぜ!フレームワーク使おうぜ!
フレームワーク使おうぜ!
 
第1回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第1回 初心者向け Ruby on Rails 勉強会 in 門前仲町第1回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第1回 初心者向け Ruby on Rails 勉強会 in 門前仲町
 
5分でわかるPhalconPHP
5分でわかるPhalconPHP5分でわかるPhalconPHP
5分でわかるPhalconPHP
 
PHPの今とこれから2015
PHPの今とこれから2015PHPの今とこれから2015
PHPの今とこれから2015
 
PHPから離れて感じるPHPの良さ
PHPから離れて感じるPHPの良さPHPから離れて感じるPHPの良さ
PHPから離れて感じるPHPの良さ
 
難しいよね、コードレビュー
難しいよね、コードレビュー難しいよね、コードレビュー
難しいよね、コードレビュー
 
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
 
日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡
日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡
日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡
 
安全なテーマ作成のためのPHPの知識
安全なテーマ作成のためのPHPの知識安全なテーマ作成のためのPHPの知識
安全なテーマ作成のためのPHPの知識
 
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
 
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性
 
Phpでアプリケーションサーバー
PhpでアプリケーションサーバーPhpでアプリケーションサーバー
Phpでアプリケーションサーバー
 
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
 
アダプターパターンを使って リリースブランチを排除
アダプターパターンを使って リリースブランチを排除アダプターパターンを使って リリースブランチを排除
アダプターパターンを使って リリースブランチを排除
 
Gitライフをはじめましょう〜GUIツールで簡単運用 Mac編〜
Gitライフをはじめましょう〜GUIツールで簡単運用 Mac編〜Gitライフをはじめましょう〜GUIツールで簡単運用 Mac編〜
Gitライフをはじめましょう〜GUIツールで簡単運用 Mac編〜
 
IDEALIZE YOU
IDEALIZE YOUIDEALIZE YOU
IDEALIZE YOU
 
20090801phpstudy Sanemat
20090801phpstudy Sanemat20090801phpstudy Sanemat
20090801phpstudy Sanemat
 

En vedette

ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
Yosuke Furukawa
 

En vedette (20)

FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
 
マスターオブゴールーチンアンドチャネル スタートGo #1
マスターオブゴールーチンアンドチャネル   スタートGo #1マスターオブゴールーチンアンドチャネル   スタートGo #1
マスターオブゴールーチンアンドチャネル スタートGo #1
 
【初心者向け】Go言語勉強会資料
 【初心者向け】Go言語勉強会資料 【初心者向け】Go言語勉強会資料
【初心者向け】Go言語勉強会資料
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
Gunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlGunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http url
 
私なりのGo言語のご紹介
私なりのGo言語のご紹介私なりのGo言語のご紹介
私なりのGo言語のご紹介
 
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
 
TalknoteとGolang
TalknoteとGolangTalknoteとGolang
TalknoteとGolang
 
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
 
Golangによるubicの試作
Golangによるubicの試作Golangによるubicの試作
Golangによるubicの試作
 
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
 
GCP HTTPロードバランサ運用例
GCP HTTPロードバランサ運用例GCP HTTPロードバランサ運用例
GCP HTTPロードバランサ運用例
 
Google mesa
Google mesaGoogle mesa
Google mesa
 
Yahoo! JAPANのCloud Foundry導入状況
Yahoo! JAPANのCloud Foundry導入状況Yahoo! JAPANのCloud Foundry導入状況
Yahoo! JAPANのCloud Foundry導入状況
 
女性のためのC++コミュニティ Ladies++
女性のためのC++コミュニティ Ladies++女性のためのC++コミュニティ Ladies++
女性のためのC++コミュニティ Ladies++
 
Go+revel
Go+revelGo+revel
Go+revel
 
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
 
alphawing meets heroku
alphawing meets herokualphawing meets heroku
alphawing meets heroku
 
Github第8章
Github第8章Github第8章
Github第8章
 
らくちん Go言語
らくちん Go言語らくちん Go言語
らくちん Go言語
 

Similaire à PHPerがgolangでもがいてる話@第1回 関西Golang勉強会

今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
Takuya Ueda
 
YAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaXYAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaX
Kazuyuki Todo
 
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発
shoma h
 

Similaire à PHPerがgolangでもがいてる話@第1回 関西Golang勉強会 (20)

Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分
 
社内勉強会1 go lang
社内勉強会1 go lang 社内勉強会1 go lang
社内勉強会1 go lang
 
Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発
 
DroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for AndroidDroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for Android
 
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
 
YAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaXYAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaX
 
OSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツールOSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツール
 
ペアプロはリモートでもできる!
ペアプロはリモートでもできる!ペアプロはリモートでもできる!
ペアプロはリモートでもできる!
 
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発
 
勉強会の活動内容、目的について
勉強会の活動内容、目的について勉強会の活動内容、目的について
勉強会の活動内容、目的について
 
Studentgo1
Studentgo1Studentgo1
Studentgo1
 
ゴルフ
ゴルフゴルフ
ゴルフ
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話
 
Pythonで始める競技プログラミング
Pythonで始める競技プログラミングPythonで始める競技プログラミング
Pythonで始める競技プログラミング
 
ISUCON5 予選をPHPで戦った話
ISUCON5 予選をPHPで戦った話ISUCON5 予選をPHPで戦った話
ISUCON5 予選をPHPで戦った話
 
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けようDjango ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
 
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションPyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッション
 
Java使いがphp使いにクラスチェンジした話
Java使いがphp使いにクラスチェンジした話Java使いがphp使いにクラスチェンジした話
Java使いがphp使いにクラスチェンジした話
 
Pythonでpdfをいじってみる
PythonでpdfをいじってみるPythonでpdfをいじってみる
Pythonでpdfをいじってみる
 
Gopenflow demo v1
Gopenflow demo v1Gopenflow demo v1
Gopenflow demo v1
 

PHPerがgolangでもがいてる話@第1回 関西Golang勉強会