サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 17
ken-aio.github.io
Tweet はじめに 最近は会社でGolangの利用が少しずつ広がっています。 そんな中、一人の同僚から、「Golangでプロダクションコードでは期待通りの動きをさせて、テストだとモックにする場合のGolangのやり方を教えて欲しい。」という要望がありました。 せっかくなので、ブログにまとめてみます。 対象はオブジェクト思考な言語の経験はあるけどGolangの経験は浅いような方です。 結論 簡単に書くと以下のことをやればプロダクションコードとテストコードで動作を分けることができます。 動作を分けたい対象をinterfaceを使って抽象化する プロダクションコードでは対象のinterfaceにプロダクション用の実装をDIする テストコードでは対象のinterfaceにテスト用の実装をDIする ということです。 知っている人は「そんなの当たり前じゃん!」と思うかもしれませんが、この記事ではこれ
Tweet はじめに GolangのORMである SQLBoiler を紹介します。 今回はSQLBoilerをセットアップするところまでやってみます。 SQLBoilerとは DBのスキーマ情報を読み取って、そこからstructやそれらのレシーバを自動生成してくれるORMです。 自動生成の対象にはFK成約やUnique成約を考慮して、one to one や one to manyの関数を自動生成してくる素敵なORMです。 リフレクションなどを使っていないため、他のORMと比較しても動作が早いようです。ベンチマーク結果は 公式サイト を参照ください。 また、エラーや使い方など、何か困ったことがあっても自動生成されたコードを読めば大体わかるのもいいところです。 同じようにスキーマ情報からstructなどを自動生成するORMに XORM があります。 XORMも少し使ったことがあるのですが、
Tweet はじめに GolangのORM SQLBoilerを使ってみる - セットアップ編 でセットアップ完了したので、実際にSQLBoilerを使って実装してみたいと思います。 初期化 まずは初期化を行います。 初期化ではコネクションプールを作ったり、SQLBoiler自体の設定をしたりします。 今回は発行されたSQLを見てみたいので、debugモードにします。 なお、簡単化のため、エラーが出たら全てpanicを起こしています。(良い子は真似しないように) 以下のコードで初期化出来ます。 func initDB() { dns := "user=postgres dbname=sampledb host=localhost sslmode=disable connect_timeout=10" con, err := sql.Open("postgres", dns) if err
Tweet はじめに GolangでCLIツールを作りたくて、ググった結果、cobraを使うことに決めました。 使ってみた結果、非常によかったです。 本格的なコマンドを非常に簡単に実装することができました。 cobraの使い方についてはすでに色々な情報がありますが、自分のためにもまとめておきます。 なんでcobra cobraはメジャーなCLIツールで採用されていたのが一番の理由です。 このブログを作ってるhugoもcobraを使っていました。 hugoのコードも参考にさせていただきました。 kurbernetes (kubectl) hugo cobraの始め方 cobraを始めるにあたり、以下の記事を参考にさせていただきました。 Golangのコマンドライブラリcobraを使って少しうまく実装する GolangでwebサービスのAPIを叩くCLIツールを作ろう 今回は簡単なサンプルとし
Tweet はじめに golangとechoを使って簡単にAPIサーバを作る方法をまとめます。 動機 golangでAPIサーバを作りたい場合、どんな選択をするでしょうか golangは標準のnet/httpがしっかりしているので、そもそもFWが不要、という議論もよく見かけます。 しかし、net/httpを触ってみてやっぱりFW使った方がいいなと感じました。 リクエストのパースが面倒 ミドルウェアの組み込みが面倒 http methodを意識したroutingの設定が面倒 など、net/httpも便利ですがやっぱりある程度は自分で書かないといけないと感じました。 その結果、結局オレオレFWが出来てしまう予感がして、FWを探しました。 その中でechoに出会いました。 Echoとは golangのWeb FWです。 一応HTMLも出力できるのですが、APIサーバとしてのユースケースが多いんじ
このページを最初にブックマークしてみませんか?
『ken-aio.github.io』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く