Slide 1

Slide 1 text

Go のライブラリやっていき @osamingo Gopher Dojo 1st Grad Ceremony 2018/05/16

Slide 2

Slide 2 text

Agenda 1. 自己紹介 (30 sec) 2. ライブラリ作るモチベーション (1 min) 3. ライブラリの公開方法 (20 sec) 4. ライブラリを使ってもらうには (3 min) 5. まとめ (10 sec) Gopher Dojo 1st Grad Ceremony 2

Slide 3

Slide 3 text

自己紹介 主森 理 - Osamu TONOMORI 株式会社メルペイ Software Engineer (Backend) https://{twitter,github,etc.}.com/ osamingo Gopher Dojo 1st Grad Ceremony 3

Slide 4

Slide 4 text

ライブラリ作るモチベーション Gopher Dojo 1st Grad Ceremony 4

Slide 5

Slide 5 text

あぁ、不便だなぁ… Gopher Dojo 1st Grad Ceremony 5

Slide 6

Slide 6 text

このロジック切り出した方が良いのでは Gopher Dojo 1st Grad Ceremony 6

Slide 7

Slide 7 text

有名なエンジニアになりたいんや! Gopher Dojo 1st Grad Ceremony 7

Slide 8

Slide 8 text

正直、モチベーションなんてなんでも良い Gopher Dojo 1st Grad Ceremony 8

Slide 9

Slide 9 text

ライブラリの公開方法 Gopher Dojo 1st Grad Ceremony 9

Slide 10

Slide 10 text

ライブラリの公開方法 1. GitHub にアカウントを作ります。 Gopher Dojo 1st Grad Ceremony 10

Slide 11

Slide 11 text

ライブラリの公開方法 1. GitHub にアカウントを作ります。 2. Public リポジトリを作ります。 Gopher Dojo 1st Grad Ceremony 11

Slide 12

Slide 12 text

ライブラリの公開方法 1. GitHub にアカウントを作ります。 2. Public リポジトリを作ります。 3. Go のソースコードを Push します。 Gopher Dojo 1st Grad Ceremony 12

Slide 13

Slide 13 text

終了 Gopher Dojo 1st Grad Ceremony 13

Slide 14

Slide 14 text

補足 gem, npm など中央集権的なリポジトリが、 存在しないので即時公開となる Gopher Dojo 1st Grad Ceremony 14

Slide 15

Slide 15 text

補足 gem, npm など中央集権的なリポジトリが、 存在しないので即時公開となる (良くも悪くも) Gopher Dojo 1st Grad Ceremony 15

Slide 16

Slide 16 text

ライブラリを使ってもらうには Gopher Dojo 1st Grad Ceremony 16

Slide 17

Slide 17 text

品質を担保する為の3つのチェックポイント Continuous Integration Documentation Static Code Analysis Gopher Dojo 1st Grad Ceremony 17

Slide 18

Slide 18 text

Continuous Integration 基本中の基本 正常なビルド、テストを保証する ライブラリという観点だと、Travis CI がオススメ! Matrix に環境を整えられるので、 Build Tag 利用時などに便利 language: go go: - '1.8.x' - '1.9.x' - '1.10.x' - 'tip' Gopher Dojo 1st Grad Ceremony 18

Slide 19

Slide 19 text

Continuous Integration Covarage 集計には、CodeCov がオススメ! Chrome Extention が、バリ便利 Ref. GitHub を快適にブラウジングするための3 種の神器 Gopher Dojo 1st Grad Ceremony 19

Slide 20

Slide 20 text

Documentation README は、ちゃんと書きましょう! 何が嬉しくなるライブラリなのか、1 文で理解できるように 特に License はちゃんと明記しないと、使う側も困ります Benchmark の結果を乗せると、優位性が明らかになって良い # Machine: MacBook Pro (Retina, 15-inch, Mid 2015) # CPU : 2.8 GHz Intel Core i7 # Memory : 16 GB 1600 MHz DDR3 BenchmarkEncoder_Encode-8 20000000 107 ns/op 46 B/op 1 allocs/op BenchmarkEncoder_Decode-8 30000000 46.8 ns/op 0 B/op 0 allocs/op PASS ok github.com/osamingo/indigo/base58 3.730s Gopher Dojo 1st Grad Ceremony 20

Slide 21

Slide 21 text

Documentation GoDoc のありがたさたるや ホスティングしなくて良い コードにコメントすれば自動生成 Example 書けば、ドキュメント上で実行できる https://godoc.org/github.com/{account_name}/{repository_name} Gopher Dojo 1st Grad Ceremony 21

Slide 22

Slide 22 text

Static Code Analysis Go Report Card 必ず利用してほしい gofmt , go vet , gocyclo , golint , ineffassign を計測してくれる それだけでなく、 License の有無や、Misspell も判定してくれる 頑張って、評価 A+ をとりましょう 類似サービスとして、CODEBEAT, CODE CLIMATE もある Gopher Dojo 1st Grad Ceremony 22

Slide 23

Slide 23 text

こんな感じになると気持ちいい Gopher Dojo 1st Grad Ceremony 23

Slide 24

Slide 24 text

まとめ ライブラリを作るモチベーション なんでも良い ライブラリの公開手順 GitHub にリポジトリ作れば完了 ライブラリを使って貰うには 3 つのチェックポイントを満たす Gopher Dojo 1st Grad Ceremony 24

Slide 25

Slide 25 text

Thank you for your attention! Gopher Dojo 1st Grad Ceremony 25