Skip to content

Instantly share code, notes, and snippets.

@sickhye
Created May 19, 2019 13:05
Show Gist options
  • Save sickhye/2db7355954c94866c2262fc268a90da5 to your computer and use it in GitHub Desktop.
Save sickhye/2db7355954c94866c2262fc268a90da5 to your computer and use it in GitHub Desktop.
Go Conference 2019 Spring(Tokyo) Session Slide

Go Conference 2019 Spring(Tokyo)

Session1 (Short)

11:10 - 11: 30

H1 (S): Hacking Go Compiler Internals 2

Since the previous talk at Go Con 2014 Autumn, lots of things in the internals have changed. In this talk, I will try to give an overview of Go compiler internals and update the information as much as possible, along with my new hacks.

A1 (S): Case studies of designing developer friendly libraries

ライブラリやツールなど、自分以外の人間が「ユーザ」となる開発では、その Interface / Experience が重要であり、生産性や開発の楽しさにも直結します。本セッションでは、自身のこれまでの経験・まわりからのフィードバックから集めた、Developer にとってより良い Interface / Experience なライブラリ・ツールを作るための Tips や考え方を紹介します。

B1 (S): How a "not the greatest engineer" achieved his first contribution to Go

Every engineer dream of contributing to open source projects. But it's not easy, is it? I had the idea too, but I gave it a try and my first commit was merged to Go! Let me share my experience, it might encourage you to start the challenge. It wasn't easy, but not as hard as you imagine!

C1 (S): Golang JP Google+ Community Survey Results

Golang JP Google+ Community was closed on April 2, 2019. There were about 950 posts in 8 years and 4 months. I surveyed these posts as the last work of a coordinator. Let's look back on trends and events of Go in Japan from this survey results! q@w@p

Session2 (Short)

11:30 - 11:50

H2 (S): Security Scan for golang Using Open Source

This topic will cover how to find security issue golang code using open source Static Analysis Security Testing. So that developer can found & fixed the security issue since on development stage, without waiting for penetration testing stage

  • Speaker: Harley Davidson Karel
  • Twitter: harleydavidkar1
  • Slide: Not Found

A2 (S): Better asset bundling tool than the best

I am creating new asset bundling tool. It will have some new features that the existing tools don't have

B2 (S): エラー設計について/Designing Errors

これこそGoにおけるエラーハンドリングのベストプラクティス。

C2 (S): Subee: Pub/Sub Worker Framework Implementation

マイクロサービス間で非同期処理を実現するために,メッセージキュー(Google Cloud Pub/Sub,Apache Kafka…etc)を用いた方法などが存在します.メッセージをキューと呼ばれる領域に保持し,メッセージを取得する側の処理が完了するのを待たずに次の処理を実行できるといった特徴があります.メッセージを取得する側では,単一メッセージまたは,複数メッセージを扱うWorkerを実装する必要があります.そこで,これらの要件を満たす,Pub/Sub Worker FrameworkであるSubeeを開発しました.本セッションでは,実装時に意識したこと,実際の利用方法について紹介します.

Session3 (Short)

13:45 - 14:05

H3 (S): 標準パッケージのみで大量のPNG画像をいかに高速に処理するか

Goの標準パッケージimage/pngを愚直に使って大量のPNG画像を処理すると、非常に遅い。 そこでサンプルのソースコードに対して、プロファイリングツールのpprofを用い、どの関数がボトルネックになっているかを調査します。 そして、「ボトルネックの発見」と「ソースコードの修正」を繰り返しながらインクリメンタルに処理を高速化する例を示します。

A3 (S): Goによる外部プロセス起動ベストプラクティス及びtimeoutパッケージ徹底解決

Goで外部プロセスを起動する方法をシステムプログラミングにまで踏み込んで解説します。また、外部コマンドのタイムアウトを正しくハンドリングするための、github.com/Songmu/timeoutパッケージの解説もおこないます。これはGNU timeoutのGo portingですが、GNU版との差異についても解説します。

B3 (S): Gopherと行く Langな旅

Go書こうかなぁどう書いたらいいんだろう? 新しく言語書きたいけど、Goではああいう書き方できるのかな? の疑問・不安を解決します

Hands-on

13:45 - 15:15

C3-5: Hands-on: Go と Google Cloud Functions で楽しもう

Google Cloud Functions は、2019年1月に Go でも書けるようになりました。 4月には α であるものの、Go1.12 のランタイムも対応しています。 はじめて経験される方でも Go と Google Cloud Functions を楽しめるような codelab を提供する予定です。

Session4 (Short)

14:10 - 14:30

H4 (S): 煩雑な運用をGoを使って楽にする

プロジェクトを運用していると日々様々なタスクが発生します 例えばExcelでやりとりされるデータを適切に処理する必要があったり、Google Driveに保存してあるファイルを処理しつつバージョン管理する必要があったり、特定のファイルを大量に生成する必要があったり などです そんなGoで開発/運用されているのプロジェクトで起きた課題をどのように解決し、またその過程で嵌った点などを紹介できればと思います

A4 (S): Design considerations for container-based Go applications

Go言語でのアプリケーション開発で、特にコンテナを前提とする場合の設計考慮点について話します。 例えば、Go言語でAPIを開発する場合、コンテナとして動かすことを前提とするケースが多いと感じます。コンテナベースで動かすことを前提とした場合、コンテナイメージ作成・アプリケーション監視において、考慮すべき点が出てくるでしょう。このトークでは、Go言語での実装にまで踏み込んだ上で、コンテナベースアプリケーションにおける設計の考慮点について話します。

B4 (S): Go1.9 で作られた App Engine のサービスを Go1.11 に移行した話

GAE/Go1.9 で運用されてきた MicroServices で作られたプラットフォームサービスを GAE/Go1.11 に移行する中で得た知見を紹介します。

Session5 (Long)

14:35 - 15:15

H5 (L): Writing Go Analyses with go/analysis (from Go Team)

The Analysis API is used to write analyses (like those in go vet and go lint) that canhelp surface bugs and show code improvements to users. I'll show how to use andwrite analyses, and see their results, so you can help improve your code quality.

  • Speaker: Michael Matloob
  • Slide: Not Found

A5 (L): Expand observability in Go

Go standard toolkit provides benchmark, tracer and profiler out of the box and its ecosystem provides those extensions that fit large-scale systems. In this talk, I'll introduce how you can start implementing performant applications with standard tools, and how you can expand it to larger scale app.

B5 (L): Design pattern for Image and text composition in Go

Owing to sophisticated standard or semi-standard packages, Go lets you process image and text composition so simply. However, a lot of references show only how to simply process images. In my talk session, I will explain one of a design pattern to combine them flexibly depending on a real business.

  • Speaker: Seiji Takahashi
  • Twitter: __timakin__
  • Slide: Not Found

Session6 (Short)

15:50 - 16:10

H6 (S): Dive into Buildkit LLB with Go

Dockerに正式統合されたBuildKitをGoで扱う方法について発表します。

BuildKit は Goで実装されている為、Goのソースコードを読むことでGoを使ったDockerfile解析ツールや、独自のBuildKit LLB frontendを作成できます。

今回の発表ではGoでどのようにBuildkitが記述されているかをコードを追いながら、Goを使ったDoコンテナイメージフロントエンドの解析ツールの作り方や、独自のコンテナイメージフロントエンドの作り方にも触れて行く為、Goでコンテナ技術を理解する大きな1歩になるでしょう。

A6 (S): Building FIDO2 server in Go

FIDO2 (WebAuthn) is an authentication standard which enables passwordless authentication. I'll introduce the mechanism of FIDO2 and how we can implement its server-side processing, especially the signature algorithm, in Go. I'll also mention its integration with existing API servers written in Go.

B6 (S): GoでAPIサーバをはやくつくる

クリーンアーキテクチャで依存関係を整理しつつ、コード生成(wire, grpc, xorm, gotests, implなど)を利用してGoでAPIサーバを作る方法を説明しますhttps://techbookfest.org/event/tbf06/circle/46360001

C6 (S): Golang で Docker ベースの CI を作る

Continuous Integration (CI) は開発者にとってなくてはならないものですが、 CI定義などの学習/メンテナンスのコストや、ローカル開発環境との差分に悩まされることもあります。 そこで、Dockerfile のみで定義を行うCIサーバーを開発しています。 GolangにはCIサーバーの開発に必要な機能を実現するための仕組みが数多く備わっており、本発表ではそれらについて紹介したいと思います。

Session7 (Short)

16:15 - 16:35

H7 (S): We want AWESOME CLI tool & development

golang と言えば CLI ツール、CLI ツールと言えば golang、といった純粋想起が醸成されつつあります。初学者から達人まで、あらゆる Gopher が CLI ツールを開発し、CLI ツールの開発は難しくないと思われがちです。しかし、「優れた」設計・テスト・UI・ビルド・リリース・アップデート・CI・ドキュメンテーションなど、「より」CLI ツールを洗練するために考慮すべき点はあります。一方でその知見はあまり集合知として語られず、「達人」であっても疎かになっている点はあります。そこで今回は CLI ツール開発の包括的知見を紹介したいと思います。

A7 (S): database/sql入門

これから始める人のためにdatabase/sqlパッケージの使い方をまとめます。 アプリケーションコード内での使い方だけではなく、環境構築方法、マイグレーション方法、単体テストや結合テスト、CI上でのテストの仕方も紹介します。 以下のような気持ちの初心者にオススメです。

B7 (S): Fuzzy finder as a Go library

fzf や peco のような、インタラクティブにリストから特定の要素を検索・選択できるようなツールの登場は、コマンドラインにおける表現をより一層豊かにさせました。しかし、行指向には限界があり、こういった fuzzy finder はその能力を十分に発揮することができていません。このセッションではコマンドライン fuzzy finder が抱える問題を説明し、その問題を fuzzy finder をライブラリとして提供することで解決することを試みた話をします。

C7 (S): JavaプログラムをGoに移植するためのテクニック――継承と例外

Javaプログラムの設計や構造をそのままGoに移植しようとするとき、言語構造の違いに直面します。 Javaではクラスによるオブジェクト指向と例外機構が標準的に使われますが、Goでは構造体とインターフェイスを用いる他、例外機構ではないエラーハンドリングによって、元のJavaプログラムと同等の機能を実現する必要があります。 ここでは、ZXingというJavaのバーコードライブラリをGoに移植しているgozxingプロジェクトの経験から、Javaプログラムの特に継承と例外について、Goでどのように実現したかを紹介します。

Session8 (Long & Short)

16:40 - 17:20

H8 (L): Building Modules Discovery (from Go Team)

At some point, we all find ourselves wanting to use a third-party Go package in our Go code. This talk discusses strategies for discovering, evaluating and maintaining Go packages and modules. It also shares new tools that the Go team is building to make this process better.

  • Speaker: Julie Qiu
  • Slide: Not Found

A8 (L): Implementing Quota as a Service

Quota、あるいはRate Limitという単語を聞いたことがありますか?あるサービスのリソース単位の割当量をQuota、その中でも特に、APIのリクエスト数など、ある一定時間に対してかけられた制限をRate Limitなどと呼びます。本セッションでは、Quota as a Serviceを実装するに至った経緯や、実際に実装していくにあたって検討したアルゴリズムやOSSとして公開されているQuotaライブラリについて紹介・解説、実装で考慮する必要があった課題とその解決についてお話します。

B8 (L): CPU, Memory and Go

基本的なCPUやメモリを簡単に触れ、Goの最適化、コンパイラの最適化、Goで実装したときのCPUやメモリの振る舞いを紹介します。 またこれら最適化の様子やパフォーマンスを実際にGoの標準ツールを使いながら確認していきます。

C8 (S): Dark side of the reflect (Short Session)

Golang has a feature called reflect. Generally, it is said that using reflect is antipattern, but sometimes we face the scene to use it. This talk will describe the golang's reflect function through the experience of writing ORM from scratch using reflect in our products.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment