Slide 1

Slide 1 text

PHPエンジニアが 転職してGoを書き始めたら 楽しくなってきた話 シュプレ(@spre55) 1

Slide 2

Slide 2 text

1.転職してもうすぐ半年経ちます 2

Slide 3

Slide 3 text

ソーシャルゲームの会社で2年くらい勤めたタイミングで、 転職をしようと思っていたら、友人から声をかけられ そのままGCPのパートナーの会社へJOIN 転職しました 3

Slide 4

Slide 4 text

転職前までやってきたこと ブラウザで動作するソーシャルゲームを作っていた。 主に、 ◆PHP ◇SASS をかいていた。 PHPに関しては自社製MVCフレームワークをつかっていた。 4

Slide 5

Slide 5 text

転職してから GCP、中でもGAEを使った開発。 最近はGAEとGoとFirebase Auth周りをいじいじしてる。 5

Slide 6

Slide 6 text

2.今どんなことをやっているか 6

Slide 7

Slide 7 text

GAE: Google App Engine 特徴 ◆チュートリアルやって10分でHelloWorldを全世界に公開できるスピード感 ◇基本的にGoogleにお任せなので楽 (スケーリング/負荷分散/ヘルスチェックなど) 7

Slide 8

Slide 8 text

Python 2.7 / 3.7 Java 7 / 8 Node.js 8 / 10 PHP 5.5 / 7.2 Go 1.9 / 1.11 8 GAEのサポート言語

Slide 9

Slide 9 text

GAE/Go ◆Go 1.11に対応しました。  ー app.yamlに依存していた部分の緩和  ー 使ったことない人は使ってみよう! 9

Slide 10

Slide 10 text

Firebase Authentication 特徴 ◆アプリ/サービスの認証を簡単に実装できるようにしてくれるサービス ◇サインアップ/ログイン機能やソーシャル連携を手軽に実装できる 10

Slide 11

Slide 11 text

パスワード/電話番号 フェデレーションIDプロバイダ カスタムプロバイダ 各プロバイダ認証をサポート 11

Slide 12

Slide 12 text

12

Slide 13

Slide 13 text

3.Goをいじってみて感じたこと 13

Slide 14

Slide 14 text

Goの最初の印象(いじる前の印象) if err != nil { return nil, err } 14 // コードが長くなるイメージ // めんどくさそう

Slide 15

Slide 15 text

1.GOPATH ? GOROOT ? / goenv ? dep ? ◆ エディタの設定 ◇ バージョン関係管理ツール ◆ 依存関係管理ツール 15

Slide 16

Slide 16 text

2.シンタックスエラーをひたすら吐かれ・・・ ◆未使用パッケージのインポートでエラー ◇未使用変数の定義でエラー ◆「:=」で定義するところを「=」にしてた ◇型の不一致でエラー 16

Slide 17

Slide 17 text

3.配列の操作が慣れず・・・ ◆ソート ◇存在チェック ◆マージ ◇特定の値のチェック などなど 17

Slide 18

Slide 18 text

3.配列の操作が慣れず・・・ ◆PHPにおける配列 適当でよかった(全部array) ◇Goにおける配列 固定長(array)と可変長(slice)を意識する必要がある 18

Slide 19

Slide 19 text

4.DDDがわからん わからん 19

Slide 20

Slide 20 text

思ったより動的型付け言語 にあたまをやられていた 20

Slide 21

Slide 21 text

実際にPRについたコメントを載せる 21 ライブラリをコメントアウトしていたときのコメント ▼

Slide 22

Slide 22 text

実際にPRについたコメントを載せる 22 一文字変数の洗礼を受けたときのコメント ▼

Slide 23

Slide 23 text

実際にPRについたコメントを載せる 23 エラーを握りつぶしたときのコメント ▼

Slide 24

Slide 24 text

そして引き起こされるドメインモデル貧血症 24 ユースケース層が肥大化したときのコメント ▼

Slide 25

Slide 25 text

じゃあ、Goは不便なの? 25    ー そんなことはない

Slide 26

Slide 26 text

26

Slide 27

Slide 27 text

やり方はいろいろある 27 郷に入っては郷に従おう そうすると見えてくるものがある

Slide 28

Slide 28 text

社内で輪読会開いてみたり・・・ 28

Slide 29

Slide 29 text

挫折して、DDD Quicklyに走り・・・ 29

Slide 30

Slide 30 text

なんとか(ほぼ)一巡しました 30 https://www.infoq.com/jp/minibooks/domain-driven-design-quickly

Slide 31

Slide 31 text

まとめ いままで自分は,PHP の寛容さに頼って、 連想配列に適当にバンバンぶちこみ、 脳死でライブラリ使っていた・・・ それに気づかせてくれたGo そんなGoには感謝しかない 31

Slide 32

Slide 32 text

ありがとう 32

Slide 33

Slide 33 text

ありがとう 33 シュプレ@spre55

Slide 34

Slide 34 text

クラウドエースは絶賛エンジニア募集中 ◆ 一緒にGCPを盛り上げてくれるエンジニア募集 ◇ いっしょにタダ飯いこう!  興味のある方はシュプレ(@spre55)まで 34