python好きがGOについて調べてみた話

-----
# はじめに
元々は社内向けのLT記事でしたが
自己紹介だけ削除して公開記事に変更しました。

-----
# 今日伝えたいこと

-----
GOがなぜ選ばれているのか？

わかってるようでわかってないGOの魅力

一騎当千のPython、一致団結のGO

-----
# なぜにGO？

-----
# 2019年にエンジニアが学びたいプログラミング言語トップである！
知ってる人も多いとは思いますが、
GOはPythonをさしおいて今年の人気言語です。

![column_image12511_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/dd781622-ca91-afe6-5bde-4e71169b9843.png)
出展：https://research.hackerrank.com/developer-skills/2019

参考：https://proengineer.internous.co.jp/content/columnfeature/12511

-----
#　なぜGOが気になったのか？

-----
# 理由①：倦怠期

![388c099a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/dab47366-eeb1-fc4f-04d0-fba775f1b510.png)


-----
# 理由②：最近GOの記事をよく見かける
![tonarino_shibafu_woman.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/799984bc-8330-fff0-a255-838c596e7eb8.png)


-----
# 理由③：Simplicity
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/9d8c3e5f-55d4-df5d-e96c-79de4f7a6978.png)
公式サイトTOPページより抜粋：https://golang.org/

-----
# つかってみた

-----
# からの感想
※ついpythonと比較しているのでCとかJavaはあまり意識していませんので注意

-----
# いいと思ったところ３選

-----
# ①シンプルな文法

・制御はforとifのみ。do whileは無い。
・構造体を採用する潔さ
・雰囲気はＣに近い

-----
# ②単純に動かしたいだけならコンパイルしなくてもいい
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/7c82ec98-f120-8b79-3b5d-ba52270e7bae.png)

-----
# ③コードの個性がない（＝みんな似たようなコードになる）

-----
# いまいちと思ったところ３選

-----
# ①コードの個性がない（＝みんな似たようなコードになる）

-----
# ②pythonほど何でも出きるという訳でもない

-----
# ③ポインタがでてきた（１５年ぶり！）

-----
# Q. GOってどんなところで活躍してるの？

-----
# 答え（の一つ）：マイクロサービス

-----
大量のリクエストに対して高速にレスポンスするサービスに最適
参考：https://logmi.jp/tech/articles/320239

-----
# 事例①：メルカリ（バナー入稿ツール）
アプリがバナーを取りに行くときに適切なバナー情報を返す。
![キャプチャ6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/26025967-badc-e79b-c249-be90786bc039.png)
参考：https://www.slideshare.net/takuyaueda967/mercari-souzoh-golang

-----
# 事例②：Pairs（決済システム）
婚活サイトのPairsの決済システムでGOが活躍してます
![0_3XGsa-D7TRI7d_nd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/0117558a-b742-5adb-41d2-1cefe6281e88.png)

-----
# GO言語は実はマイクロサービスに向いている条件がそろってる！
・シンプルな言語仕様⇒小規模な機能実現を最優先とするならば、学習コストは低いほどよい
・高速、軽量⇒大量のレスポンスを高速に返すためには、高速なレスポンスと、省メモリは重要な要素
・コードの個性がない⇒開発の回転を上げるには、誰でも同程度の品質が出せることこそ重要（＝スーパーマンはいらない）

-----
# 究極の選択：Python vs GO どっちがいいの？
![sick_panic_man.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/1cfe174f-35d8-5616-e7e8-5c5f63783f8d.png)

-----
# 答え：やっぱりPython

-----
# 理由：自分がやりたいこと(機械学習、自動化、スクレイピング)を持っているから

-----
# でも・・・

-----
# GO言語はチーム開発に向いている言語であり、組織であれば抑えるべき言語の一つである

-----
# …と思いました。

-----
# それでは最後にAtCoderより、GOとpythonの上位ランク者のコード比較をしてお別れしましょう

-----
# A - Can't Wait for Holiday(AtCoder Beginner Contest 146より）

-----
![キャプチャ.3PNG.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/f7f70bcc-7788-5e30-5609-ae853d664691.png)

-----
# GO言語での提出ランキング
![キャプチャ4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/d0a8b0f2-64c8-7df8-4ffa-277803f8a623.png)

-----
# Python言語での提出ランキング
![キャプチャ5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/dd449fbf-4d73-944d-4c0c-df3721c4839b.png)

-----
# GO言語提出２位のコード

```golang
package main
 
import "fmt"
 
func main() {
	w := []string{"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}
	var s string
	fmt.Scan(&s)
  for i, v := range w{
		if s == v{
			fmt.Println(7-i)
			return
		}
	}
}
```
-----
# Python提出１位のコード

```python
print(7-["SUN","MON","TUE","WED","THU","FRI","SAT"].index(input()))
```
-----
# ご清聴ありがとうございました

-----
# オマケ：GO言語の検索のコツ
「golang」で検索してください。
「Go」で検索すると「ポケモンGO」がやまほどでてきます。