エディタの壁を越えるGoの開発ツールの文化と作成法

Takuya Ueda
Takuya UedaSouzoh, Inc. (affiliated by Mercari, Inc.) - Go Engineer
The Go gopher was designed by Renée French.
The gopher stickers was made by Takuya Ueda.
Licensed under the Creative Commons 3.0 Attributions license.
エディタの壁を超える
Goの開発ツールの
文化と作成法
2016/11/05(土)
@VimConf 2016
あまりVimの話はしません
アジェンダ
● 自己紹介
● この発表の目的
● Goの特徴と言語思想
● エディタとGoの開発ツール
● 開発ツールを支えるGoの特徴
● まとめ
自己紹介
メルカリ/ソウゾウ
上田拓也
twitter: @tenntenn
■ 好きな言語
Go, JavaScript, Lua
■ 業務
GAE/Goでメルカリアッテを作ってます
Goのコミュニティを盛り上げる仕事
Gopherを描く仕事
この発表の目的
VimmerをGo界隈に...
この発表の目的
● Goの面白い文化について知ってもらう
● Goのツールの作りやすさを知ってもらう
● Goで開発ツールを作ってもらう
○ delveプラグインほしい
Goとは?
Googleが開発しているプログラミング言語
■ 特徴
● 強力でシンプルな言語設計と文法
● 並行プログラミング
● 豊富な標準ライブラリ群
● 開発ツールの充実
● シングルバイナリ/クロスコンパイル
7
GoのSimpleとEasyの実現
■ Simple:言語自体
● 文法や言語思想
● GoroutineとChannel
■ Easy:ライブラリや開発環境
● シングルバイナリ/クロスコンパイル
● 豊富な標準パッケージ
● 開発ツール充実
各言語の構成要素が
直交するように
Goのエンジニアは
Vimをつかってるの?
Goのエディタ・IDE事情
■ 決まったものはない
● Vim
● Emacs
● IntelliJ
● VSCode
● Atom
好きなエディタ/IDEを
使うことができる!
エディタ間に差はないの?
統一感のあるコード
画像引用
:https://medium.com/@hoffa/400-000-github-repositories-1-billion-files-14-terabytes-of-
code-spaces-or-tabs-7cfe0b5dd7fd#.far3hwyby
ほとんどタブ派!
開発ツールが標準であるメリット
■ みんな同じものを使う
● 同じformatter
● 同じlinter
● 同じtestingツール
● 同じドキュメント生成ツール
■ 安心の標準ツール
● メンテされる安心感
■ エディタやIDEとの連携
● 標準だとプラグインが作られやすい
開発ツールの充実 その1
■ 開発ツールが充実している
● go build
○ ビルドを行うコマンド
● go test
○ xxxx_test.goに書かれたテストコードの実行
● go doc/godoc
○ ドキュメント生成
● gofmt/goimports
○ コードフォーマッター
● go vet/golint
○ コードチェッカー、リンター
開発ツールの充実 その2
■ 開発ツールが充実している
● guru
○ 静的解析
● gocode
○ コード補完
● errcheck
○ エラー処理のチェック
● gorename/gomvpkg
○ リファクタリングツール
開発ツールとエディタ/IDEの関係
エディタ/IDE
プラグイン
開発ツール
ここが同じなので、
あまり差分が出ない
開発ツールとして独立している利点
● エディタ間の差が少ない
● イチから作るよりプラグイン開発が容易
● ターミナルからも叩ける
● ライブラリとしても提供できる
開発ツールが作りやすい理由
■ シングルバイナリ
● 配布のしやすさ
■ クロスコンパイル
● OSに依存しないツールの作成
■ 豊富な標準パッケージ
● コマンドライン引数:flag
● ネットワーク:net
● ファイル操作:os,ioutil
● テキスト処理:bufio,strings
● ソースコード解析:go
シングルバイナリ/クロスコンパイル
■ 環境変数のGOOSとGOARCHを指定する
開発環境とは違うOSやアーキテクチャ向けに
クロスコンパイルできる
# Windows(32ビット)向けにコンパイル
$ GOOS=windows GOARCH=386 go build
# Linux(64ビット)向けにコンパイル
$ GOOS=linux GOARCH=amd64 go build
シングルバイナリになるので
動作環境を用意しなくてよい
go buildはコンパイルするコマンド
flagパッケージ
■ 簡単にコマンドライン引数を扱える
var msg string
func init() {
flag.StringVar(&msg,"m","hello","message")
}
func main() {
flag.Parse()
fmt.Println(msg)
}
フラグのパース
フラグの登録
$ ./main -m hi
hi
ファイル操作とテキスト処理
■ 簡単にコマンドライン引数を扱える
f, _ := os.Open("my.txt")
defer f.Close()
s := bufio.NewScanner(f)
for i := 1; s.Scan(); i++ {
fmt.Println(i, strings.TrimSpace(s.Text()))
}
ファイルを開く
$ echo -e " hello n world" > my.txt
$ ./main
1 hello
2 world
Playgroundで動かす
ファイルを読み込む
左右の空白を取り除く
ソースコードの静的解析
go/ast 抽象構文木(AST)を提供
go/build パッケージに関する情報を集める
go/constant 定数に関する型を提供
go/doc ドキュメントをASTから取り出す
go/format コードフォーマッタの機能を提供
go/importer コンパイラに適したImporterを提供
go/parser 構文解析の機能を提供
go/printer ASTの表示機能を提供
go/scanner 字句解析の機能を提供
go/token トークンに関する型を提供
go/types 型チェックに関する機能を提供
静的解析できて何が嬉しいのか?
● リファクタリングツール
○ 変数の宣言位置や使用箇所の抽出
○ パッケージの解析
● コードジェネレーター
○ コメントによるアノテーションの抽出
○ コードフォーマッタ
● Goのサブセットとなる言語の処理系
○ ASTの解析
○ 定数の扱い
式の構文解析
n, _ := parser.ParseExpr(`v + 1`)
ast.Inspect(n, func(n ast.Node) bool {
if n != nil { fmt.Printf("%Tn", n) }
return true
})
printer.Fprint(os.Stdout, token.NewFileSet(), n)
*ast.BinaryExpr
*ast.Ident
*ast.BasicLit
v + 1
+
v 1
構文解析
抽象構文木(AST)を探索
抽象構文木(AST)を出力
BinaryExpr
Ident BasicLit
Playgroundで動かす
コメントの抽出
const src = `package main
func main() {v := 100 /*comment for v*/}`
fs := token.NewFileSet()
f, _ := parser.ParseFile(fs,"my.go",src, parser.ParseComments)
cmap := ast.NewCommentMap(fs, f, f.Comments)
for n, cgs := range cmap {
printer.Fprint(os.Stdout, fs, n)
fmt.Println()
for _, cg := range cgs { fmt.Println(cg.Text()) }
}
v := 100
comment for v
Playgroundで動かす
構文解析
コメントと
ノードの対応を取得
宣言場所の取得
const src = `package main
var v = 100
func main() { fmt.Println(v+1) }`
fs := token.NewFileSet()
f, _ := parser.ParseFile(fs, "my.go", src, 0)
i := &types.Info{Defs: map[*ast.Ident]types.Object{}}
(&types.Config{}).Check("main", fs, []*ast.File{f}, i)
for n, o := range i.Defs { fmt.Println(n, o) }
main <nil>
v var main.v int
main func main.main()
Playgroundで動かす 宣言の取得
Usesを使えば
使用箇所も調べられる
x/tools/go
ポインタ解析
SSA
Static Single Assignment form
Goで開発ツールを作る際のポイント
■ どのOSでも動くように
● OS依存の処理を極力入れない
■ コマンドラインだけでも動く
● エディタやIDEがなくても動くようにする
■ ライブラリとしても提供する
● gofmtやgorenameみたいに公開する
ライブラリとしても提供する
■ Main関数を用意する(gorenameの例)
■ main関数からそれを利用する
ライブラリとして提供する利点
■ 他のツール内で利用しやすい
● gorenameを利用したツールを作る場合
type User struct {
Id int64
Name string
}
type User struct {
ID int64 `datastore:"Id"`
Name string `datastore:"Name"`
}
フィールド名をリファクタリングしたいけど、
データストア上のカラム名は変えたくない!
gorenameを自作ツールから呼び出して
リネームしつつstructタグを付けていくイチから作る必要がない!
まとめ
■ Goは開発ツールが充実している
● 標準で多くのツールがあり、統一感がある
■ GoはエディタやIDEを選ばない
● 開発ツールが同じなので、差が起きにくい
■ Goは開発ツールが作りやすい
● 標準/準標準パッケージに静的解析の機能が豊富
● コマンドラインツールが作りやすい
● いろんなOSのユーザにやさしい
Goでエディタに依存しない
開発ツールを作ろう
Thank you!
twitter: @tenntenn
Qiita: tenntenn
connpass: tenntenn
follow me
1 of 32

Recommended

オススメの標準・準標準パッケージ20選 by
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選Takuya Ueda
14.1K views26 slides
goパッケージで型情報を用いたソースコード検索を実現する by
goパッケージで型情報を用いたソースコード検索を実現するgoパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現するTakuya Ueda
3K views19 slides
Gopher Fest 2017参加レポート by
Gopher Fest 2017参加レポートGopher Fest 2017参加レポート
Gopher Fest 2017参加レポートTakuya Ueda
12.7K views33 slides
Go mobileでモバイルアプリを作ろう by
Go mobileでモバイルアプリを作ろうGo mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろうTakuya Ueda
5.9K views74 slides
Go初心者向けハンズオン コマンドラインツールを作ろう by
Go初心者向けハンズオン コマンドラインツールを作ろうGo初心者向けハンズオン コマンドラインツールを作ろう
Go初心者向けハンズオン コマンドラインツールを作ろうTakuya Ueda
14.6K views28 slides
Goでwebアプリを開発してみよう by
Goでwebアプリを開発してみようGoでwebアプリを開発してみよう
Goでwebアプリを開発してみようTakuya Ueda
4.5K views26 slides

More Related Content

What's hot

メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法 by
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法Takuya Ueda
10.1K views40 slides
条件式評価器の実装による管理ツールの抽象化 by
条件式評価器の実装による管理ツールの抽象化条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化Takuya Ueda
4.7K views32 slides
Go入門 by
Go入門Go入門
Go入門Takuya Ueda
34.2K views131 slides
GoによるiOSアプリの開発 by
GoによるiOSアプリの開発GoによるiOSアプリの開発
GoによるiOSアプリの開発Takuya Ueda
16.3K views43 slides
GAE/GoでWebアプリ開発入門 by
GAE/GoでWebアプリ開発入門GAE/GoでWebアプリ開発入門
GAE/GoでWebアプリ開発入門Takuya Ueda
8.3K views50 slides
Cloud Functionsの紹介 by
Cloud Functionsの紹介Cloud Functionsの紹介
Cloud Functionsの紹介Takuya Ueda
2.8K views19 slides

What's hot(20)

メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法 by Takuya Ueda
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
Takuya Ueda10.1K views
条件式評価器の実装による管理ツールの抽象化 by Takuya Ueda
条件式評価器の実装による管理ツールの抽象化条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
Takuya Ueda4.7K views
GoによるiOSアプリの開発 by Takuya Ueda
GoによるiOSアプリの開発GoによるiOSアプリの開発
GoによるiOSアプリの開発
Takuya Ueda16.3K views
GAE/GoでWebアプリ開発入門 by Takuya Ueda
GAE/GoでWebアプリ開発入門GAE/GoでWebアプリ開発入門
GAE/GoでWebアプリ開発入門
Takuya Ueda8.3K views
Cloud Functionsの紹介 by Takuya Ueda
Cloud Functionsの紹介Cloud Functionsの紹介
Cloud Functionsの紹介
Takuya Ueda2.8K views
Go1.8 for Google App Engine by Takuya Ueda
Go1.8 for Google App EngineGo1.8 for Google App Engine
Go1.8 for Google App Engine
Takuya Ueda3.3K views
Goでかんたんソースコードの静的解析 by Takuya Ueda
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
Takuya Ueda6.7K views
Goとテスト by Takuya Ueda
GoとテストGoとテスト
Goとテスト
Takuya Ueda7.9K views
今日から始めるGopher - スタートGo #0 @GDG名古屋 by Takuya Ueda
今日から始めるGopher - スタートGo #0 @GDG名古屋今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
Takuya Ueda6.1K views
粗探しをしてGoのコントリビューターになる方法 by Takuya Ueda
粗探しをしてGoのコントリビューターになる方法粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法
Takuya Ueda2.7K views
GAE/Goとsyncパッケージ by Takuya Ueda
GAE/GoとsyncパッケージGAE/Goとsyncパッケージ
GAE/Goとsyncパッケージ
Takuya Ueda6.5K views
Goだけでモバイルアプリを作ろう by Takuya Ueda
Goだけでモバイルアプリを作ろうGoだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろう
Takuya Ueda9.9K views
Goにおける静的解析と製品開発への応用 by Takuya Ueda
Goにおける静的解析と製品開発への応用Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用
Takuya Ueda2.4K views
メルカリ・ソウゾウでは どうGoを活用しているのか? by Takuya Ueda
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda12.7K views
PyCon JP 2016 ビギナーセッション by Tetsuya Morimoto
PyCon JP 2016 ビギナーセッションPyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッション
Tetsuya Morimoto1.4K views
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer by Hirokazu Fukami
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 SummerGoのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Hirokazu Fukami8.3K views
エキスパートGo by Takuya Ueda
エキスパートGoエキスパートGo
エキスパートGo
Takuya Ueda26K views

Similar to エディタの壁を越えるGoの開発ツールの文化と作成法

Go静的解析ハンズオン by
Go静的解析ハンズオンGo静的解析ハンズオン
Go静的解析ハンズオンTakuya Ueda
2.6K views25 slides
Go Friday 傑作選 by
Go Friday 傑作選Go Friday 傑作選
Go Friday 傑作選Takuya Ueda
2.7K views17 slides
今日から始める Go言語 と appengine by
今日から始める Go言語 と appengine今日から始める Go言語 と appengine
今日から始める Go言語 と appenginea know
8.6K views56 slides
Goで言語処理系(の途中まで)を作ろう by
Goで言語処理系(の途中まで)を作ろうGoで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろうEsehara Shigeo
4.8K views79 slides
初心者向けGo言語勉強会 by
初心者向けGo言語勉強会初心者向けGo言語勉強会
初心者向けGo言語勉強会leverages_event
2K views139 slides
ドキュメントの話、しませんか? #428rk01 by
ドキュメントの話、しませんか? #428rk01ドキュメントの話、しませんか? #428rk01
ドキュメントの話、しませんか? #428rk01Takeshi Komiya
3.4K views22 slides

Similar to エディタの壁を越えるGoの開発ツールの文化と作成法(20)

Go静的解析ハンズオン by Takuya Ueda
Go静的解析ハンズオンGo静的解析ハンズオン
Go静的解析ハンズオン
Takuya Ueda2.6K views
Go Friday 傑作選 by Takuya Ueda
Go Friday 傑作選Go Friday 傑作選
Go Friday 傑作選
Takuya Ueda2.7K views
今日から始める Go言語 と appengine by a know
今日から始める Go言語 と appengine今日から始める Go言語 と appengine
今日から始める Go言語 と appengine
a know8.6K views
Goで言語処理系(の途中まで)を作ろう by Esehara Shigeo
Goで言語処理系(の途中まで)を作ろうGoで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろう
Esehara Shigeo4.8K views
ドキュメントの話、しませんか? #428rk01 by Takeshi Komiya
ドキュメントの話、しませんか? #428rk01ドキュメントの話、しませんか? #428rk01
ドキュメントの話、しませんか? #428rk01
Takeshi Komiya3.4K views
Go言語ってどんな言語? 導入実績や気になるトレンド by Atsushi Yasuda
Go言語ってどんな言語? 導入実績や気になるトレンドGo言語ってどんな言語? 導入実績や気になるトレンド
Go言語ってどんな言語? 導入実績や気になるトレンド
Atsushi Yasuda1.9K views
Programming camp 2008, Codereading by Hiro Yoshioka
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
Hiro Yoshioka303 views
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践 by LINE Corporation
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
LINE Corporation4K views
TechDo Goハンズオン#3 by privatemy
TechDo Goハンズオン#3TechDo Goハンズオン#3
TechDo Goハンズオン#3
privatemy152 views
20160730 fluentd meetup in matsue slide by cosmo0920
20160730 fluentd meetup in matsue slide20160730 fluentd meetup in matsue slide
20160730 fluentd meetup in matsue slide
cosmo09204.9K views
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 by Katsuhiro Morishita
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Katsuhiro Morishita71.4K views
OSSで楽に作るGo言語クライアントツール by Tano Makoto
OSSで楽に作るGo言語クライアントツールOSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツール
Tano Makoto1.2K views
Python界隈の翻訳プロジェクト by Tetsuya Morimoto
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
Tetsuya Morimoto3.5K views
The History of Groovy #GroovyBase by kyon mm
The History of Groovy #GroovyBaseThe History of Groovy #GroovyBase
The History of Groovy #GroovyBase
kyon mm4.8K views
Pyconjp2014_implementations by masahitojp
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
masahitojp4.7K views
Easy scripting in Go by naoty_bot
Easy scripting in GoEasy scripting in Go
Easy scripting in Go
naoty_bot718 views
実践Go ツールの作成から配布まで by Yusuke Miyake
実践Go ツールの作成から配布まで実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで
Yusuke Miyake7.7K views

More from Takuya Ueda

Goにおけるバージョン管理の必要性 − vgoについて − by
Goにおけるバージョン管理の必要性 − vgoについて −Goにおけるバージョン管理の必要性 − vgoについて −
Goにおけるバージョン管理の必要性 − vgoについて −Takuya Ueda
13.1K views18 slides
WebAssembly with Go by
WebAssembly with GoWebAssembly with Go
WebAssembly with GoTakuya Ueda
4.2K views18 slides
静的解析を使った開発ツールの開発 by
静的解析を使った開発ツールの開発静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発Takuya Ueda
4.6K views49 slides
そうだ、Goを始めよう by
そうだ、Goを始めようそうだ、Goを始めよう
そうだ、Goを始めようTakuya Ueda
2.6K views36 slides
マスター・オブ・goパッケージ by
マスター・オブ・goパッケージマスター・オブ・goパッケージ
マスター・オブ・goパッケージTakuya Ueda
1.3K views56 slides
メルカリ カウルのマスタデータの更新 by
メルカリ カウルのマスタデータの更新メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新Takuya Ueda
2.4K views23 slides

More from Takuya Ueda(11)

Goにおけるバージョン管理の必要性 − vgoについて − by Takuya Ueda
Goにおけるバージョン管理の必要性 − vgoについて −Goにおけるバージョン管理の必要性 − vgoについて −
Goにおけるバージョン管理の必要性 − vgoについて −
Takuya Ueda13.1K views
WebAssembly with Go by Takuya Ueda
WebAssembly with GoWebAssembly with Go
WebAssembly with Go
Takuya Ueda4.2K views
静的解析を使った開発ツールの開発 by Takuya Ueda
静的解析を使った開発ツールの開発静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
Takuya Ueda4.6K views
そうだ、Goを始めよう by Takuya Ueda
そうだ、Goを始めようそうだ、Goを始めよう
そうだ、Goを始めよう
Takuya Ueda2.6K views
マスター・オブ・goパッケージ by Takuya Ueda
マスター・オブ・goパッケージマスター・オブ・goパッケージ
マスター・オブ・goパッケージ
Takuya Ueda1.3K views
メルカリ カウルのマスタデータの更新 by Takuya Ueda
メルカリ カウルのマスタデータの更新メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新
Takuya Ueda2.4K views
Static Analysis in Go by Takuya Ueda
Static Analysis in GoStatic Analysis in Go
Static Analysis in Go
Takuya Ueda4.1K views
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話 by Takuya Ueda
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
Takuya Ueda3.6K views
Google Assistant関係のセッションまとめ by Takuya Ueda
Google Assistant関係のセッションまとめGoogle Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめ
Takuya Ueda3.7K views
Namespace API を用いたマルチテナント型 Web アプリの実践 by Takuya Ueda
Namespace API を用いたマルチテナント型 Web アプリの実践Namespace API を用いたマルチテナント型 Web アプリの実践
Namespace API を用いたマルチテナント型 Web アプリの実践
Takuya Ueda2.8K views
Mobile Apps by Pure Go with Reverse Binding by Takuya Ueda
Mobile Apps by Pure Go with Reverse BindingMobile Apps by Pure Go with Reverse Binding
Mobile Apps by Pure Go with Reverse Binding
Takuya Ueda5.5K views

Recently uploaded

Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 by
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
73 views26 slides
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
23 views38 slides
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
129 views42 slides
The Things Stack説明資料 by The Things Industries by
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
71 views29 slides
定例会スライド_キャチs 公開用.pdf by
定例会スライド_キャチs 公開用.pdf定例会スライド_キャチs 公開用.pdf
定例会スライド_キャチs 公開用.pdfKeio Robotics Association
121 views64 slides
Windows 11 information that can be used at the development site by
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development siteAtomu Hidaka
88 views41 slides

Recently uploaded(11)

速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.71 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka88 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda376 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4353 views
光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga18 views

エディタの壁を越えるGoの開発ツールの文化と作成法