dbじゃないoracleの話 gunosy.go#12

15
DBじゃないOracleの話 Gunosy.go#12

Upload: yuusuke-kawada

Post on 19-Jul-2015

418 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: DBじゃないoracleの話 gunosy.go#12

DBじゃないOracleの話

Gunosy.go#12

Page 2: DBじゃないoracleの話 gunosy.go#12

なに?

Goの開発環境いろいろ揃ってるから、Goを書き始めたものぐさjava使いの人も心配しなくていいよ、という感じの話です

Page 3: DBじゃないoracleの話 gunosy.go#12

だれ?

・川田優介 (@kuxuxun)

・フリーランスプログラマ

・Java -> Scala -> Haskell ->

Clojure -> Go

・https://github.com/kuxuxun

Page 4: DBじゃないoracleの話 gunosy.go#12

新しい言語を学ぶものぐさjava使いの悩み

・Eclipse、Intellij対応してない言語で開発環境整備に

苦労した思い出がある(Scalaとか。。)

・それを思い出すとちょっと面倒(エディタで書きたい)

※IntelliJは不満ないくらいに対応済らしいです。

Eclipseも未調査ですがきっといけてるはず。

・IDEが必要になるときがきっと来る

Page 5: DBじゃないoracleの話 gunosy.go#12

Goを選ぶ(個人的)理由

・ぶりぶりリファクタリングしたい

のでコンパイル言語がいい

・コンパイルさくさく

・メモリ食わない

・公式/準公式の開発支援ツールが

やたらある

Page 6: DBじゃないoracleの話 gunosy.go#12

開発支援ツール・gofmt

・golint

・gorename

・godoc

・stringer

・oracle

・などなど…

Page 7: DBじゃないoracleの話 gunosy.go#12
Page 8: DBじゃないoracleの話 gunosy.go#12

golang.org/x/tools/oracle

・リッチなIDEのようなソースコード解析を

提供してくれるツール

・各種エディタとの連携(vim,emacs, atom,sublime)

・go doc以外にも親切なマニュアルがある

“go oracle: user manual”

Page 9: DBじゃないoracleの話 gunosy.go#12

golang.org/x/tools/oracle

Page 10: DBじゃないoracleの話 gunosy.go#12

golang.org/x/tools/oracle

1 callees

呼び出しているfunctionの情報取得

2 callers

自分を呼び出しているfunctionの情報取得

3 callstack

自分を呼び出しているfunctionの階層を取得

Page 11: DBじゃないoracleの話 gunosy.go#12

golang.org/x/tools/oracle

4 describe

変数の情報を取得(変数の型など)

5 freevars

選択範囲で参照はされているけど値の代入がされて

ない変数を洗い出す

6 implements

interfaceと構造体の関連情報をいろいろ取得

Page 12: DBじゃないoracleの話 gunosy.go#12

golang.org/x/tools/oracle

7 peers

channelがmakeや参照されている箇所の情報を取得

8 pointsto

指定のポインタ変数への代入箇所一覧

9 referrers

変数を参照している箇所一覧

Page 13: DBじゃないoracleの話 gunosy.go#12

golang.org/x/tools/oracle

7 peers

channelがmakeや参照されている箇所の情報を取得

8 pointsto

指定のポインタ変数への代入箇所一覧

9 referrers

変数を参照している箇所一覧

Page 14: DBじゃないoracleの話 gunosy.go#12

ちょっと動かしてみる

コマンドライン & vim-go経由で使ってみる

https://github.com/fatih/vim-go

Page 15: DBじゃないoracleの話 gunosy.go#12

Goには強力な開発ツールがたくさん