LoginSignup
252
216

More than 5 years have passed since last update.

楽ができるGolangのライブラリ達

Last updated at Posted at 2015-09-13

ライブラリ探すなら基本awesome go見とけばいいけど、いろいろ楽するためという観点で、思い出した順に適当に追記していく。気が向いたらサンプルも書く

gojson

jsonのデータを渡すとそれに対応するstructを生成してくれる。JSON APIを利用するときに楽ができる。既存APIのリプレイスをGoでやるときとかも良い。

goquery

JQueryっぽくhtmlをパースしたり検索したりして楽ができる。自前でhtmlのパースなんか書いてられない。

goreq

net/httpパッケージで、httpリクエストを飛ばすのは結構面倒だったりいろんな書き方があったりしてヘッダつけるときどれ使うと楽なんだっけとか毎回調べたりするのとても面倒なので、そこを楽するときに使うラッパ。pythonのrequestsみたいなもの

使い方は公式のREADME見れば一発で分かる。

monkey

関数ポインタ書き換えてMonkey Patchingしてくれる。LL言語でのテストコードに慣れてると気軽にMonkey Patchingするおじさんになっているのでとても良い。無理やり関数ポインタ書き換えるのでセキュアなOSだと動かなかったり、インライン化されてるとうまくいかないので-gcflags -l-が必要だったりする。スレッドセーフでもないので気をつけろ。

使い方

基本的には、関数置き換え(monkey.Patch)と置き換えたものを戻す(monkey.Unpatch)で関数を置き換える。置き換え元と置き換え先の関数のインターフェイスを揃えておく必要がある(無いと当然panicする)

特定のインスタンスに生えている関数を置き換える場合は、monkey.InstanceMethodmonkey.UnpatchInstanceMethodを利用する

render

httpレスポンスを楽に返すことが出来る。JSONのレスポンス返すのにいちいちNewEncoderとか書いてられない。jsonとかBinaryとか返すのが楽になる。

validator

structのアノテーションを元に、各要素のヴァリデーションをしてくれる。

公式に乗ってるアノテーションのサンプルはこんな感じ。数値型と文字列型で、よくあるヴァリデーションがアノテーションで書けて楽。

type NewUserRequest struct {
    Username string `validate:"min=3,max=40,regexp=^[a-zA-Z]$"`
    Name string     `validate:"nonzero"`
    Age int         `validate:"min=21"`
    Password string `validate:"min=8"`
}

nur := NewUserRequest{Username: "something", Age: 20}
if valid, errs := validator.Validate(nur); !valid {
    // values not valid, deal with errors here
}

なんか新しいのも出てた

interpose

net/http向けの便利なmiddlewareと既存のwafのmiddlewareをnet/httpで使えるようにするadaptor。

goxc

クロスコンパイルが楽になるやつ

channels

channelのラッパー集。バッファーサイズが無限の奴とか、バッファ・サイズ超えると古いやつから勝手に消えてくれる奴とかが実装されている

cron

その名の通り、cron形式の指定時間に、gorutineを動かしてくれる。自前で特定時間に動かすとかタイマー書くのはめんどうなので、cron形式で書けるので楽。普通のcronと違って秒単位まで指定できる。

Godep

普通にgo getするとmasterの最新のコミットを取ってくるので、後方互換性がない変更があると死ぬし、全体で同じ物を共有しているのでメンテしてないコードが死んだりするので、プロジェクトの毎にライブラリを管理して、Godeps.jsonにcommit idを記録してくれる。Godep経由でbuildやtestを叩くとGOPATHを書き換えて動く。Godeps.jsonから落としなおしてくれるとかはしてくれないのでそこはいけてない。

fresh

プロジェクトのディレクトリを監視して、自動でコンパイルして再起動してくれる。godep使ってる場合はこんな感じのMakefile書いとくと良いかも。

GODEP_PATH := $(shell godep path)
fresh:
    GOPATH=$(GODEP_PATH):$(GOPATH) fresh

プロジェクトのディレクトリにrunner.confというファイルを置いて設定を書くことも出来る。

gobot

arduinoとかRaspberry PiとかEdisonとかその他いろいろなロボットとか基盤をgolangから楽に使えるラッパーライブラリ。

gatt

BLEのgattプロファイルを楽に扱える奴。

252
216
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
252
216