Slide 1

Slide 1 text

GopherCon報告会 “Becoming a Go Contributor" "Machine Learning on Go Code" mercari.go #3 伊藤勇希 @acomagu

Slide 2

Slide 2 text

自己紹介 - 伊藤勇希 @acomagu / ペギー伊藤 - 会津大学

Slide 3

Slide 3 text

GopherConに行ってきました

Slide 4

Slide 4 text

見たもの/参加したもの - ワークショップ "Testing" - Pre-Conference Party - "The Scheduler Saga" - "An Over-Engineering Disaster with Macaroons" - "Go for Information Displays" - "Asynchronous Networking Patterns" - "Machine Learning on Go Code" - "Writing Accessible Go" - "Becoming a Go Contributer" - "The Go Programmer's Guide to Secure Connections"

Slide 5

Slide 5 text

見たもの/参加したもの - ワークショップ "Testing" - Pre-Conference Party - "The Scheduler Saga" - "An Over-Engineering Disaster with Macaroons" - "Go for Information Displays" - "Asynchronous Networking Patterns" - "Machine Learning on Go Code" - "Writing Accessible Go" - "Becoming a Go Contributer" - "The Go Programmer's Guide to Secure Connections"

Slide 6

Slide 6 text

Index - “Becoming Go Contributer” スライド: https://kev.inburke.com/slides/becoming-go-contributor 動画: https://www.youtube.com/watch?v=HZYrSIC6LFA - “Machine Learning on Go Code” スライド: https://github.com/ardanlabs/training-ai/tree/master/machine-learning-with-go 動画: https://www.youtube.com/watch?v=Lt3qZAwQX3w - 全体の感想

Slide 7

Slide 7 text

Becoming Go Contributer by Kevin Burke “どうやったらGoのコントリビュータに なれるか?”

Slide 8

Slide 8 text

引用: https://kev.inburke.com/slides/becoming-go-contributor

Slide 9

Slide 9 text

引用: https://kev.inburke.com/slides/becoming-go-contributor

Slide 10

Slide 10 text

どうするか

Slide 11

Slide 11 text

1. Exampleの追加 - 例はとても密度が高い情報。 超便利。 - e.g. fmtパッケージは大きい割に Exampleが少ないのでみんなコ ントリビュートしよう 画像引用: https://kev.inburke.com/slides/bec oming-go-contributor

Slide 12

Slide 12 text

2. ドキュメントの追加/改善 - ドキュメントはすぐ古くなる - e.g. scrypt.Key() のオススメのパラメー タの情報が2009年で止まっていた 画像引用: https://kev.inburke.com/slides/bec oming-go-contributor

Slide 13

Slide 13 text

2. ドキュメントの追加/改善 引用: https://kev.inburke.com/slides/becoming-go-contributor

Slide 14

Slide 14 text

どうコントリビュートするか

Slide 15

Slide 15 text

どうコントリビュートするか - 初めは小さいもの - Kevinの最初のコミットは1文字だった - 小さいコントリビュートだからと言って重要ではないわけではない。Bradfitzの Gerrit Commitの半分は20LOC以内 - golang.org/x がオススメ - Get Help - https://go.googlesource.com/scratch <- ここでGerritの使い方が学べる - #gocontributing / #goreviews <- Slack もある - メーリングリストもある

Slide 16

Slide 16 text

感想 - Goのコントリビュートの仕方はバグ修正やtypo修正だけではないことがわかった - 「悪いところを修正する」→「どう改善できるか」という考え方 - 人のコミットをもっと追ってもいいかも - 例えば「Exampleが欲しい...」と思った時がコントリビュートチャンスかもしれない

Slide 17

Slide 17 text

Machine Learning on Go Code by Francesc Campoy Flores “Goのソースコードへの機械学習で 何ができるか?”

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

関連領域 - 自然言語処理 - データマイニング - グラフ指向機械学習

Slide 20

Slide 20 text

自然言語との比較 自然言語: 正しくない結果 → アートになる プログラミング言語: 正しくない結果 → コンパイルできない

Slide 21

Slide 21 text

データ解析 - コードとは何か? - 文字の羅列 - トークンの羅列 - AST - コントロールフローのグラフ - 今回は文字の羅列で見る

Slide 22

Slide 22 text

引用: https://speakerdeck.com/campoy/machine-learning-on-go-code

Slide 23

Slide 23 text

引用: https://speakerdeck.com/campoy/machine-learning-on-go-code

Slide 24

Slide 24 text

学習/予測 - Recurrent Neural Networks (RNN) 画像引用: https://speakerdeck.com/campoy/machine-learnin g-on-go-code

Slide 25

Slide 25 text

学習/予測 - charRNN: 次の文字を予測する 画像引用: https://speakerdeck.com/campoy/machine-learnin g-on-go-code

Slide 26

Slide 26 text

引用: https://speakerdeck.com/campoy/machine-learning-on-go-code

Slide 27

Slide 27 text

引用: https://speakerdeck.com/campoy/machine-learning-on-go-code

Slide 28

Slide 28 text

まだ使い物にならない...

Slide 29

Slide 29 text

今コードにMLをどう使うか - バグの発見 - 頭の良い補完 - 関数の内容から関数名の予測 - コードレビュー - プログラミング教育

Slide 30

Slide 30 text

引用: https://speakerdeck.com/campoy/machine-learning-on-go-code

Slide 31

Slide 31 text

思ったこと - diffを見ながらのレビューはいまだにしんどいものがあるので、楽にしたい - どこをMLに置き換えられるか考えるのは楽しい - 例えば JavaScript のコードジャンプとか... - Go”で”MLってどうなんだろう?

Slide 32

Slide 32 text

GopherCon全体の感想 - どのセッションも興味深かった 。あらゆる環境でGoを使っている人がいるから、 カンファレンスも必然的に面白くなるんだなという印象を受けた - みんな議論好き - ベーコンはポテトチップス並にカリカリ - ここで受けた刺激をモチベーションとして来年のGopherConまで頑張っていきたい

Slide 33

Slide 33 text

ありがとうございました!