[go: up one dir, main page]

この記事は Hiranya Jayathilaka、ソフトウェア エンジニアによる The Firebase Blog の記事 "Introducing Firebase Admin SDK for Go" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

このたび、Firebase Admin SDK for Go が一般公開されました。拡大し続けている Admin SDK ファミリーにはすでに Java、Python、Node.js のサポートが含まれており、今回 4 つ目のプログラミング言語として新たに Go が加わりました。アプリのデベロッパーが Firebase Admin SDK を使うと、信頼された環境からプログラムを介して Firebase サービスにアクセスできるようになります。Firebase Admin SDK は、エンドユーザーがウェブブラウザやモバイル端末から Firebase にアクセスできるようにする Firebase クライアント SDK を補完するものです。Firebase Admin SDK for Go の最初のリリースでは、Firebase Authentication 機能のうち、カスタム トークン作成と ID トークン検証の機能がサポートされます。

Firebase Admin SDK for Go の初期化

他の Firebase Admin SDK と同様に、Go Admin SDK もさまざまな認証方法やクライアント オプションを使って初期化できます。次のコード スニペットは、Firebase Console または Google Cloud Console で取得したサービス アカウント認証情報を使って SDK を初期化する方法を示しています。
import (
  "golang.org/x/net/context"

  firebase "firebase.google.com/go"
  "google.golang.org/api/option"
)

opt := option.WithCredentialsFile("path/to/key.json")
app, err := firebase.NewApp(context.Background(), nil, opt)

Google App Engine や Google Compute Engine などの Google のインフラ上でコードを実行している場合、SDK は環境からアプリのデフォルト認証情報を自動検出します。その場合、Go Admin SDK を初期化する際に明示的に認証情報を指定する必要はありません。
import (
  "golang.org/x/net/context"

  firebase "firebase.google.com/go"
)

app, err := firebase.NewApp(context.Background(), nil)


カスタム トークンの作成と ID トークンの確認

Firebase Admin SDK for Go の最初のリリースでは、カスタム トークンの作成Firebase ID トークンの検証機能がサポートされています。カスタム トークンを作成すると、独自のユーザーストアや認証メカニズムを使ってユーザー認証を行えるようになります。
client, err := app.Auth()
if err != nil {
  return err
}

claims := map[string]interface{}{
  "premium": true,
  "package": "gold",
}
token, err := client.CustomToken("some-uid", claims)

作成されたカスタム トークンをクライアント端末に送信すると、Firebase クライアント SDK を使った認証フローを行うことができます。また、ID トークンの検証により、サーバー上で現在アプリにログインしているユーザーを確実に特定できるようになります。
client, err := app.Auth()
if err != nil {
  return err
}

decoded, err := client.VerifyIDToken(idToken)
uid := decoded.UID

Firebase Admin SDK for Go の詳しい使用方法については、Admin SDK セットアップ ガイドをご覧ください。

次のステップ

Go Admin SDK の機能は今後さらに強化され、ユーザー管理や Firebase Cloud Messaging など、他にも有用な API が実装される予定です。また、この SDK は、オープンソースです。そのため、Github レポジトリをご覧いただいたり、問題の報告やプル リクエストの送信によって開発プロセスに参加していただくことは大歓迎です。Golang gopher の皆さん、ぜひ Firebase のコーディングをお楽しみください。


Reviewed by Khanh LeViet - Developer Relations Team

Posted by 山口 能迪 Developer Advocate

10 月 17 日(木)に、シドニーより Go 言語の開発コアメンバーである Andrew Gerrand が来日し、Go 言語のコードラボを行います。

今回は、「Whispering Gophers: networking programming in Go」というテーマで、Go 言語を使ったアプリケーションを実際に開発していただくことで、Go 言語を体験していただく内容となっています。

Go 言語は、並行モデルをもった楽しい新しいプログラミング言語であり、楽しく素直にネットワーク プログラミングを行うことができます。このコードラボでは、ピアツーピアで参加者同士が通信するチャット ネットワークを構築します。Go 言語の並列性プリミティブや標準ライブラリをハンズオンで体験していただきます。

Go 言語をもっと知りたいという方は、ぜひご参加ください。

<イベント概要>

名称:Go 言語 コードラボ
日時 : 2013 年 10 月 17 日(木) 19:00 - 22:00 (受付 18:30 - 19:30 )
※軽食とドリンクをご用意する予定です
会場 : Google 東京オフィス
東京都港区六本木 6 - 10 - 1 六本木ヒルズ森タワー
主催 : Google
定員 : 30 名
会費 : 無料
関連情報 :
whispering-gophers
Go Concurrency Patterns
Advanced Go Concurrency Patterns

※プログラムは変更する場合があります。

<申込方法>

申し込みフォームよりお申し込みください。
先着順による受付です。定員になり次第、受付を締め切ります。

定員に達しましたので、受付を終了しました。

なお、参加証は 10 月 10 日(木)より順次ご登録いただいたメール アドレス宛に順次お送りする予定です。



Google Developer Day 2011 のブレイクアウトセッションのご紹介、今回は Andrew Gerrand による 「Google クラウド技術を駆使した統合アプリケーションの構築」 です。



セッション内容:

本セッションでは、 Google Cloud Storage、Channel API、App Engine などの Google クラウド技術を組み合わせて Go 言語でアプリケーションを開発する方法をご紹介します。

動画はこちら:



スライドはこちら


[Go 言語とは、Google が多くのコントリビュータの皆さんと共に開発している新しいオープンソースのプログラミング言語で、昨年 11 月 10 日に 1 周年を迎えました。そこで、Google でソフトウェア エンジニアとして働きつつ Go 言語のコントリビュータとしても活躍している鵜飼 文敏に Go 言語についてインタビューを行いました。]

山崎: Go 言語の一周年おめでとうございます。
鵜飼: もう一周年、早いものです。プログラミング言語が普及するには 5 年、10 年といわれているのでまだまだこれからですね。

山崎: この機会に改めて Go 言語とは何であるか、その魅力について教えてください。
鵜飼: 静的型付けコンパイラ言語のよさに Lightweight Language の使いやすさをブレンドしたような言語です。規模が小さい頃からどのような構造にするかキチンと設計しなくても、作っていくにつれて改善していくことがしやすくなっています。Lightweight Language のように簡単なエラーも実行時にならないとチェックされないということもなく、コンパイル時にチェックできるのがうれしいところです。

山崎: 先日 Go 言語一周年を記念して、Developer Advocate である Andrew Gerrand が来日し、Tech Talk が開催されました。いかがでしたか?
鵜飼: 大勢の方に参加してもらって、質疑も活発におこなわれて、多くの人に興味を持ってもらえている感じがしました。
山崎: シャイな方が多い日本なのでスピーカーの Andrew にはあまり質問が出ないかも。。。と伝えてあったのですが、熱心な質問が止まりませんでしたね。関心の高さが伺えました。

[Go 言語 TechTalk には約 100 人の皆さんにご来場頂きました]

山崎: この一年を振り返って、どのような変化がありましたか?
鵜飼: 言語仕様も細かく変わっていっていますね。Windows でもだいぶ使えるようになってきています。あとサードパーティ製ライブラリが使いやすくなってきています。 http://godashboard.appspot.com/package をみるとたくさんのライブラリが作られていることがわかります。

山崎: Google が新しい言語を作る意義はどのようなところにあるのでしょうか?
鵜飼: プログラミング言語というのは、ソフトウェアの設計やプログラマの生産性に影響を与えます。過去の経緯にとらわれずに現在必要とされている特徴をそなえたプログラミング言語を新しく作ることで、プログラミングをより楽しくし生産性をあげていきたいと考えています。

山崎: このブログは developer の皆さんに向けたブログです。Developer にとって Go 言語はどのような意義がありますか?また、Go 言語はどんなことに向いているのか、向いていないのかなどのアドバイスがあれば教えてください。
鵜飼: Go 言語に限らず新しいプログラミング言語を学ぶことはプログラミングの考え方を広げる上でいい経験になります。Go 言語は UNIX や Plan9 をはじめ多くのシステムプログラムを作ってきた優れた開発者たちが作った言語ですから、彼らにとっていいプログラムを書きやすい言語になっているはずなので、いいプログラムを書きやすくなっていると思います。ネットワークサーバーなんかに向いていますね。最適化やガーベジコレクションの実装などは改善の余地があるので、高性能が厳しく要求されるところに使うのはまだ早いかもしれません。まだ若い言語ですから、いろいろな分野で使ってみて、必要な機能などがあれば提案してみるといいかもしれませんね。その機能が汎用的に有用そうであれば採用されるかもしれません。

山崎: 鵜飼さんは 20% プロジェクトとして Go 言語に関わっておられると伺いましたが、20% プロジェクトについてもう少し教えてください。
鵜飼: Google では 20% ほどの時間を自分のメインの仕事以外に使っていいことになっています。Go 言語のチームではありませんが、Go のパッケージなどを作ったりするのに 20%の時間を使ったりしました。このように他のチームを助ける以外にも、まったく新しいプロジェクトを始める時も 20% の時間である程度のプロトタイプやモックを作るところから始めることがよくあります。

山崎: ありがとうございました。

=================================================
鵜飼 文敏プロフィール

Google のソフトウェア エンジニアとして 2006 年から働いています。現在は Google Chrome および WebKit の開発をしています。Go 言語のコントリビュータでもあります。著書に「Binary Hacks」があり、「Code Reading」「Code Quality」「Write Great Code」などの監訳もしています。



Google Developer Day 2010 のブレイクアウトセッションのご紹介、今回は Google のソフトウェア エンジニアの鵜飼 文敏による「プログラミング言語 Go」についてのセッションです。



セッション内容:
プログラミング言語 Go は Google が 2009 年秋にオープンソースで公開した新しいプログラミング言語です。C や C++ のようなコンパイル言語の良さをもちつつ、Python のような動的言語でのプログラムの書き易さを兼ねそなえた特徴をもっています。クラスを使わないオブジェクト指向の言語で、コンカレントに実行するための仕組みも備えています。 プログラミングをより速く、より生産的に、そしてより楽しくしてくれる新しいプログラミング言語 Go について説明します。
以下、動画とスライドです。