*

たったの15分でできるGAE/GO入門 標準APIその1

公開日: : 最終更新日:2016/05/19 投稿者: GAE

知っておけば必ず開発が楽になる!

GAE/Go入門の本連載ですが、前回は第一弾として「PaaS最前線!たったの15分でできるGAE/GO入門!」という記事を書かせていただきました(※1)。第二回となる今回はGAEで標準で用意されているAPIをGOで実装する方法を学んでいきます。メール送信やユーザ認証等、GAEでは開発で役にたつAPIが標準で用意されていますので、これらのサービスを学ぶことで開発がより楽になることは間違いありません。ただ、全てのAPIを説明すると15分以内では収まらなくなってしまうので、今回のテーマ(標準API)については、内容を3回に分けさせていただきます。

それでは、さっそく学んでいきましょう!!

※1 前回の記事はおかげさまで多くの皆様にアクセスしていただき、現在GoogleやYahooの検索エンジンで「GAE GO」と検索すると、公式を押しのけて一番トップに表示されるようになりました(2016/2/4現在)。

本記事で学ぶ内容

本記事の流れは以下の通リです。標準APIの概要を説明後、3つの標準APIを学んでいきます(※2)。

  1. GAEの標準APIの概要
  2. サンプルプログラムからAPIを理解する
    1. ユーザ認証APIを学ぶ
    2. メール送信APIを学ぶ
    3. Memcacheを学ぶ

※2 合計6つのAPIを学ぶ予定ですが、本記事では3つのAPIを取り上げます。残り3つのAPIについては次回学ぶ予定です。

GAE標準APIの概要

GAEにおける標準APIとは、GAEのライブラリに標準的に組み込まれているAPIを指します。標準APIを利用するために、ユーザはわざわざ外部からライブラリをインストールする必要は全くありません。

GAEの標準APIは以下の通リです。ユーザ認証やメール送信等、アプリケーションの基本的となる機能が提供されています。今回はその中から主なAPI(以下1~6)を2回の記事に分けて取り上げていきます。

標準API一覧

  1. ユーザ認証
  2. メール送信
  3. Memcache
  4. タスクキュー
  5. ロギング
  6. BlobStore
  7. XMPP
  8. Namespace
  9. Search API
  10. データストア(※3)

※3 データストアAPIについては内容が盛り沢山のため、一つのテーマとして次回以降に取り上げる予定です。

サンプルプログラムからAPIを理解する

事前準備

本章では実際にサンプルプログラムのデプロイをおこないますので、最初に以下URLの(1)を参考にGCPプロジェクトの作成をおこってください(※4)。
GCPプロジェクトの作成が完了したら、(2)-(4)のURLを参考に「アプリケーションディレクトリの作成」「app.yamlの作成」「AppEngine SDKのインストール」を完了させてください。

※4 既にGCPプロジェクトを作成済みの場合はスキップして構いません。

1.事前準備 (PaaS最前線!たったの15分でできるGAE/GO入門!)
http://www.apps-gcp.com/gae-go-gettingstart-01/#i-4

2.アプリケーションディレクトリの作成
http://www.apps-gcp.com/gae-go-gettingstart-01/#1

3.app.yamlの作成
http://www.apps-gcp.com/gae-go-gettingstart-01/#3_appyaml

4.AppEngine SDKのインストール
http://www.apps-gcp.com/gae-go-gettingstart-01/#AppEngine_SDK

ここまでやっておけば、後はサンプルのコピペ&デプロイでプログラムの動作確認がおこなえるようになります!それでは実際にサンプルプログラムを動作させることで各サービスを理解していきましょう!

ユーザ認証APIを学ぶ

ユーザ認証APIは、Googleアカウントによるユーザ認証機能を提供します。ログイン中であるか否かだけでなく、ログインしているユーザの情報(Email等)も取得することができます。開発時にはGoogleアカウントを利用したユーザ認証の仕組みをこのAPIを利用して簡易に実装することができるようになります。

サンプルプログラムの説明

以下のコード(サンプルコード1)は、ユーザ認証APIのサンプルプログラムとなります。動作仕様は下記の通リです。サンプルコード1のコメント[1]-[5]については「コードの詳細説明」をご確認ください。

【動作仕様】

  1. ユーザが非ログイン状態の場合はログインリンクを表示し、ログイン状態の場合はユーザのEmailアドレスとログアウトリンクを表示する。
  2. 1でログインリンクをクリックした場合Google認証画面に遷移し、ログインが成功すると、1の画面にリダイレクトされる。画面にはログインユーザのEmailアドレスとログアウトリンクが表示される。
  3. 1のログイン状態、または2のログイン状態からログアウトリンクをクリックした場合は、Google認証によるログイン状態が無効化され、非ログイン状態で1の画面にリダイレクトされる。

サンプルプログラム1. ユーザ認証

コードの詳細説明

サンプルプログラム1でコメントされている[1]-[5]の詳細は以下の通リです。

[1] ユーザ認証をおこなう上で必須となるモジュールです。

[2] userモジュールを利用して現在ログイン中のユーザを取得します。

[3] nil(=NULL)の場合は非ログイン状態となります。

[4] ログインURLを生成します。LoginURLの2つ目の引数は「ログイン後のリダイレクト先URI」となります。

[5] ログアウトURLを生成します。LogoutURLの2つ目の引数は「ログアウト後のリダイレクト先URI」となります。

動作確認

以下の手順に従って動作を確認してください。

1.アプリケーションディレクトリ(※5)直下にauth.goというファイルを作成し、サンプルコードをコピー・保存します。

※5 本章の最初に作成したアプリケーション用ディレクトリです。

2.以下のコマンドを実行しアプリをデプロイします。

$ goapp deploy アプリケーションディレクトリ名

3.以下URLにアクセスします。

http://[作成したプロジェクトのIDを指定].appspot.com/welcome

4.画面を開くと、非ログイン状態の場合ログインリンクが表示されますので、「Sign in」リンクをクリックしてください。

image02

画像1. ログインリンクの表示

5.Googleのログイン画面が表示されますので、お手持ちのGoogleアカウントでログインしてください。

image03

画像2. Googleアカウント認証

6.認証が成功するとログインユーザのEmailアドレスとログアウトリンクが表示されますので、今度は「Sign out」リンクからログアウトをおこなってください。

image05

画像3. ログアウトリンクの表示

7.ログアウトが成功すると、4の画面に戻ってきます。

image02

画像4. ログアウト成功

以上が「ユーザ認証」のサンプルコードの動作となります。実際に動作させることでサンプルコードの流れも理解できたのではないでしょうか。次は「メール送信」を学びます。

メール送信APIを学ぶ

メール送信APIは、1件以上の宛先に対してメールを送信するためのAPIです。メール送信は本格的なWebアプリケーションを開発する場合基本となる機能と言えます。開発者はメール送信APIを利用して簡易にメール送信機能を実装することができます。

サンプルプログラムの説明

以下のコード(サンプルコード2)は、2件の宛先に対してメール送信をおこなうサンプルプログラムとなります(※6)。サンプルコード2のコメント[1]-[7]については「コードの詳細説明」をご確認ください。

サンプルコード2. メール送信

コードの詳細説明

サンプルプログラム1でコメントされている[1]-[7]の詳細は以下の通リです。

[1] メール送信をおこなう上で必須となるモジュールです。

[2] メールのSubjectです。

[3] メールの本文です。

[4] 送信元のEmailアドレスです。前述した通リ指定できるのはGCPプロジェクトの権限を保持しているユーザのEmailアドレスとなります。

[5] 送信先のアドレスを配列で定義します。

[6] 送信メッセージの作成をおこないます。各パラメータについては[2]-[5]をご確認ください。

[7] メール送信を実行します。エラーが発生した場合はif文内のコードが実行されます。エラーハンドリングは適宜おこなってください。

※6 送信元のアドレス(Sender)には、GCPのDeveoperコンソールのAppEngine設定で管理されているEmailアドレスを指定します(画像5参照)。GCPプロジェクトを作成した際のEmailアドレスは、その管理アカウント一覧に自動的に追加されますので、SenderにはGCPプロジェクト作成時のEmailアドレスを指定すれば問題ありません。ただ、もしその他のアドレスを利用したい場合は、以下のURL(画像5の画面)にアクセスし、送信に利用したいEmailアドレス(GmailまたはGoogle Appsアカウント)を追加してください。

https://console.cloud.google.com/appengine/settings?project=[プロジェクトIDを指定]

image08

画像5. AppEngine設定

動作確認

以下の手順に従って動作を確認してください。

1.アプリケーションディレクトリ(※7)直下にmail.goというファイルを作成し、サンプルコード2をコピー・保存します。送信元[4]と送信先[5]については適宜変更をおこなってください。

2.以下のコマンドを実行しアプリをデプロイします。

$ goapp deploy アプリケーションディレクトリ名

3.以下URLにアクセスし、メール送信を実行します。

http://[作成したプロジェクトのIDを指定].appspot.com/sendEmail

4.送信が成功すると、以下のようにメールの受信が確認できます。

image06

画像6. 受信メール

以上が「メール送信」のサンプルコードの動作となります。最後は「Memcache」を学びましょう。

Memcacheを学ぶ

Memcacheは、最大1MBのデータをメモリ上にキャッシュするためのAPIです。開発者は、Google Cloud Datastoreのような永続ストレージ上に保存されているデータをMemcacheに保存することで、アプリケーションの性能(高速なデータ読み出し)を向上させることができます(※7)。

※7 性能向上に加えて、永続ストレージへのread数を減らせることにもなるのでGAEの課金料金も抑えることができます。

サンプルプログラムの説明

以下のコード(サンプルコード3)は、Memcache APIのサンプルプログラムとなります。Key-Value形式のデータをMemcacheに保存後、保存データのKeyからキャッシュデータを参照するサンプルとなります。サンプルコード3のコメント[1]-[4]については「コードの詳細説明」をご確認ください。

サンプルプログラム3. Memcache API

コードの詳細説明

サンプルプログラム1でコメントされている[1]-[4]の詳細は以下の通リです。

[1] Memcacheをおこなう上で必須となるモジュールです。

[2] キャッシュデータを作成します。Keyには文字列、データ本体(Value)にはbyte形式のデータを指定してください。

[3] キャッシュデータの追加をおこないます。エラーハンドリングは適宜おこなってください。

[4] キャッシュデータの参照をおこないます。エラーハンドリングは適宜おこなってください。

動作確認

以下の手順に従って動作を確認してください。

1.アプリケーションディレクトリ直下にmem.goというファイルを作成し、サンプルコード3をコピー・保存します。

2.以下のコマンドを実行しアプリをデプロイします。

$ goapp deploy アプリケーションディレクトリ名

3.以下URLにアクセスし、キャッシュデータの保存・参照プログラムを実行します。

http://[作成したプロジェクトのIDを指定].appspot.com/mem

4.実行すると以下のようにキャッシュされたデータが表示されます。

image04

画像7. サンプルプログラム3の実行

5.次はGCPのDeveloperコンソールからMemcacheに保存されているデータを確認します。
以下のURLにアクセスし、Memcacheの管理画面にアクセスしてください。

https://console.cloud.google.com/appengine/memcache?project=[プロジェクトIDを指定]

6.Memcache管理画面の表示後「Find a key」リンクをクリックしてください。

image07

画像8. Memcache管理画面

7.「Key type」には”Go String”を選択し、「Key」にはプログラム上で指定したキー文字列を入力してください。ただし、Namespaceは空のままにしておいてください(※8)。「Find」ボタンを押下すると、検索でヒットしたKeyが表示されるのでキー名をクリックしてください(画像10参照)。

※8 Namespace(ネームスペース)は空のままにしておいてください。Memcacheはネームスペース毎にデータを保持することができますが、今回のサンプルではネームスペースは指定していません。ネームスペースを未指定でMemcacheにデータを保存した場合、空のネームスペースにデータは保存されます。

image00

画像9. キャッシュデータの検索

8.キー名をクリックすると、キャッシュデータの詳細画面に遷移します。以下(画像10)のように保存されているキャッシュデータが確認できます。キャッシュデータを編集したい場合は「Value」の値を書き換えて「Update Value」ボタンを押下してください。

image01

画像10. キャッシュデータの閲覧

以上で「Memcache」の説明は完了です。

まとめ

以上で「たったの15分でできるGAE/GO入門」の”標準APIその1”は終了です。
サンプルコードとプログラムの動作を通して各APIの理解は深まったでしょうか。疑問点や修正点がある場合はtwitter等で直接ご指摘いただければ幸いです。次回記事は”標準APIその2”となります。apps-gcpではGAE/GO以外にも様々なGCP関連の記事を投稿していますので、ぜひ定期的にチェックしてください!

この記事を書いた人

tomorier
tomorier
普段はGCP専門のエンジニアをやっています。
最近は個人的な活動としてGOとswiftでアプリ作ってます。

関連記事

静的HTMLをGAE上で公開する

みなさんこんにちは。 本日は、静的HTMLをGAEで公開する手順を紹介します。 本サイトを運営し

記事を読む

1つのエンティティにプロパティをいくつまで作れるか

1つのエンティティにプロパティをいくつまで作れるか 1つのエンティティにプロパティをいくつまで

記事を読む

Search API詳細解説 Part6「Search API 詳細 限界値編」

みなさん、こんにちは。 前回はSearch APIの反映速度について調べてみましたが、いかがだった

記事を読む

Search API詳細解説 Part3「Search APIの使い方 検索編」

Search API詳細解説シリーズ タイトル Part1Search API 概要説明

記事を読む

GAE負荷テスト その1「Hello World!」

2011年11月にGAEのプレビューが終わり、早数ヶ月経ちました。 これからGAEでの開発に乗り出

記事を読む

GAEのスケーリング 前編 <仕組みについて>

今回は、こちらの公式ドキュメントをもとに、GAEのスケーリングの仕組みと最適化のやり方について紹介し

記事を読む

Search API詳細解説 Part5「Search API 詳細 反映速度編」

Search API詳細解説シリーズ タイトル Part1Search API 概要説明

記事を読む

AppEngineでTwilioを試してみた(基本編)

AppEngineでTwilioを試してみた(基本編) AppEngineでTwilioを試し

記事を読む

WordPressをGAEで簡単に使う10のステップ

2015/10/05 テーマやプラグインの追加・変更方法について下部に追記しております。 み

記事を読む

東京リージョン内でのGAE・GCS・GCE間の通信はこのくらいだった

11月8日に Google Cloud Platform にて待ちに待った日本リージョンがリ

記事を読む

PAGE TOP ↑