SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

はじめて Go を触る際に参考にさせていただいた情報のメモ

leave a comment

以前作成した、Zaiba2 の SQL Server / SQL Database のメトリクス情報の取得は、PowerShell / PowerShell Core で実行可能なスクリプトとして実装していたのですが、TICK Stack の標準のメトリクスの仕組みでは、Go が使用されている Telegraf が使用されています。

Telegraf には、新しい Input Plugin を組み込むことができるのですが、それには Go を使用したコーディングが必要となるので、この機会に勉強をしてみました。
その際に、Go を始めるにあたって参考にした情報をメモとして。
テストコードの記述や、Release にコンパイル済みモジュールが追加できていないのですが、Go 版の Zaiba2 のメトリクス収集は zaiba2go として GitHub に放流してあります。

■開発環境

vim-go / GoLand / Visual Studio Code あたりが、Go の開発で使われる機会が多いのでしょうか。
メインで使用している PC には、Visual Studio Code が入っているので、今回は Visual Studio Code を使用しています。
Visual Studio + Go の開発は、Go 本体と Visual Studio Code の Go の Extension を入れることで対応できますので、次の URL を参考にモジュールを導入し、開発環境を整えています。

まだ、最初の方しか読めていないのですが、Go ならわかるシステムプログラミング という書籍では、開発環境として Visual Studio Code のインストールが紹介されていますので、書籍としてはこちらを参考にしてもよいかと。
(ただし、初学者が最初に読む本としては少々難しい気がしますので、この本とは別にファーストステップの準備はした方がよいかと)

■Go の基本を学ぶ

開発環境が整ったら、Go の基本を学んでいきます。
Go の本家のサイトは、The Go Programming Language になるかと思いますので、ここから必要な情報を探していくのが公式の情報の追い方になるのかと。
ドキュメントについては Documentation から確認することができますが、最初に学ぶのは、Tour of Go でしょうか。
ブラウザ上で Go Playground を使用しながら学ぶことができますので、まずは、このサイトの内容を一通り実施してみるところから始めると良いのではないでしょうか。
今まで、他のプログラミング言語に振れていた方であれば、Tour of Go を実施した後に、Documentation の Effective Go で効果的な Go の記述方法を学習したり、The Go Programming Language Specification で言語仕様を確認したり、Packages で様々なパッケージの使い方を学習することになると思います。
私のような、運用スクリプトのようなものを作成するようなコーディングレベルだと、これらのドキュメントをいきなり見るのは難易度が高いので、kindle unlimited で読むことができる 最初に ログラミング経験者がGo言語を本格的に勉強する前に読むための本 に目を通してから、スターティングGo言語 を読んで Tour of Go で学習した内容の理解度を深めることにしました。
その他の入門の書籍としては、プログラミング言語Go改訂2版 基礎からわかる Go言語 といった書籍がありますが、一番最初に読むのは、スターティングGo言語か、改訂2版 基礎からわかる Go言語 のどちらかが良いかなと思いました。(個人的には、この 2 種類の書籍だと、スターティングGo言語の方が読み進めやすかったです)
ある程度開発ができる方でしたら、プログラミング言語Go だけで大丈夫かなと思いますが、今までプログラミングをあまりしていなかった場合は、前述の 2 冊から選んだ方がよい気がしています。
一通り、入門が終わったら、みんなのGo言語【現場で使える実践テクニック】を読むことで実践的な Tips を身に着けられるのかと。

■Go から SQL Server に接続する方法を学ぶ

SQL Server のメトリクスを収集するプログラムの作成が目的ですので、Go から SQL Server を操作する方法がわからないとお話になりません。
Go から RDBMS に接続する際には、SQLInterface / SQLDrivers を使用することになりますので、これらの Wiki が公式のドキュメントとして参考になります。
SQL Server への接続については、GoとSQL Server がとても参考になりました。
SQL Server への接続については、go-mssqldb が使われているものを知っていたので、今回はこちらのドライバーで勉強することにしました。
SQL Server + Go の組み合わせですが、実は Microsoft もファーストステップのドキュメントを公開しています。
次のドキュメントが MS から公開されているものとなりますので、SQL Server へのクエリ実行については、まずはこれらのドキュメントを確認すると良いかと。

プロダクションで使用されている Go のプログラムですが、SQL Server on Linux の Pacemaker の Resource Agent の一部のモジュールが Go で書かれており、GitHub で公開が行われています。

可用性グループやフェールオーバークラスターのヘルパーが Go で書かれていますので、実運用に適した Go による SQL Server のアクセスを行うコードについてはこちらを参考にするのよさそうですね。
最終的な目的は TICK Stack の Telegraf の Plugin としての実装なのですが、既に SQL Server 用の Plugin は公開されており、https://github.com/influxdata/telegraf/tree/master/plugins/inputs/sqlserver から確認できますので、実際に SQL Server を使用した Plugin を作成する場合には、これを参考にすると良いのではないでしょうか。
ここまでの学習内容で zaiba2go をざっくりと書き上げたところです。
まだまだ、触り始めたばかりで Go を使う入り口に立手ていると言うのも難しいレベルなのですが、オライリーからも何冊か気になる書籍が出ていますので、この機会に実務でも多少使えるように学習したいと思います。

Share

Written by Masayuki.Ozawa

12月 27th, 2018 at 12:21 am

Posted in Go,SQL Server

Tagged with ,

Leave a Reply