The Go Blog

Goの外部ライブラリに注目

Andrew Gerrand
2011年6月3日

Goの作者たちがGoの標準ライブラリの改良に懸命に取り組む中、より大きなコミュニティは外部ライブラリの成長するエコシステムを創り出してきました。この記事では、いくつかの人気のあるGoライブラリと、それらの使用方法について見ていきます。

Mgo(「マンゴー」と発音)は、MongoDBデータベースドライバーです。MongoDBは、ドキュメント指向データベースであり、幅広い用途に適した多くの機能を備えています。mgoパッケージは、レコードの挿入や更新といった基本的な操作から、より高度なMapReduceGridFS機能まで、MongoDBを操作するための豊富で慣用的なGo APIを提供します。Mgoは、自動クラスタ検出や結果のプリフェッチなど、多くのクールな機能を備えています。詳細とサンプルコードについては、mgoのホームページをご覧ください。大規模なデータセットを扱う場合、Go、MongoDB、mgoは強力な組み合わせです。

Authcookieは、ユーザー認証クッキーを生成および検証するためのWebライブラリです。Webサーバーが特定のユーザーに紐付けられ、指定された時間後に期限切れとなる暗号的に安全なトークンを発行することを可能にします。既存のWebアプリケーションに認証を追加するのを簡単にするシンプルなAPIを備えています。詳細とサンプルコードについては、READMEファイルをご覧ください。

Go-charsetは、Goの標準UTF-8エンコーディングとさまざまな文字セット間の変換をサポートします。go-charsetパッケージは、変換を行うio.Readerおよびio.Writerを実装しているため、既存のReaderやWriter(ネットワーク接続やファイルディスクリプタなど)をラップでき、他の文字エンコーディングを使用するシステムとの通信を容易にします。

Go-socket.ioは、WebサーバーがWebブラウザにメッセージをプッシュできるクライアント/サーバーAPIであるSocket.IOのGo実装です。ユーザーのブラウザの機能に応じて、Socket.IOは、最新のWebソケット、AJAXロングポーリング、またはその他のメカニズムのいずれであっても、接続に最適なトランスポートを使用します。Go-socket.ioは、Goサーバーと幅広いブラウザの豊富なJavaScriptクライアントとの間のギャップを埋めます。go-socket.ioの感覚を掴むには、チャットサーバーの例をご覧ください。

これらのパッケージがgoinstallableであることは言及する価値があります。最新のGoのインストールがあれば、単一のコマンドでそれらすべてをインストールできます。

goinstall launchpad.net/mgo \
    github.com/dchest/authcookie \
    go-charset.googlecode.com/hg/charset \
    github.com/madari/go-socket.io

goinstallでインストールすると、同じパスを使用してパッケージをインポートできます。

import (
    "launchpad.net/mgo"
    "github.com/dchest/authcookie"
    "go-charset.googlecode.com/hg/charset"
    "github.com/madari/go-socket.io"
)

また、それらはGoシステムの一部となったため、godocでドキュメントを検査できます。

godoc launchpad.net/mgo Database # see docs for Database type

もちろん、これは氷山の一角に過ぎません。パッケージダッシュボードには、他にも多くの優れたGoライブラリがリストされており、今後さらに増えるでしょう。

次の記事: Goプログラムのプロファイリング
前の記事: GIFデコーダ:Goインターフェースの練習
ブログインデックス