Eureka EngineeringLearn about Eureka’s engineering efforts, product developments and more.
注:古い記事の為、内容が最新ではない可能性がありますm(_ _)m GAE/Go Datastore どうもマツウラです。 App Engineを使用するにあたって欠かせないDatastore。 Go言語での使用方法はどのようになっているのでしょうか? 公式チュートリアルを参考に簡単に見てゆきます。 参考:Go — Google Developers Entities, Properties, and Keys PUT, GET, UPDATE, DELETE まずは基本的なデータストアへのエンティティの保存、取得、更新、削除です。 簡単な例を見てみます。 次の例ではエラー処理を省略しています。 // プロパティ名は大文字で始めるよう注意してください!! // 小文字で付けたい場合はタグを使用します。 type Employee struct { Name string Role stri
注:古い記事の為、内容が最新ではない可能性がありますm(_ _)m こんにちは、マツウラです! これまで2回連続して見てきましたGo言語版のDatastoreインターフェースの機能ですが、3回目の最後は構造化プロパティについてです。 エンティティのプロパティに構造体を渡すことができる、という機能です。 参考:The datastore package - Go — Google Developers The datastore package 構造化プロパティ 構造体にその他の構造体へのポインタがあれば、ネストまたは平坦化されます。 次の定義を例にとってみます。 type Inner1 struct { W int32 X string } type Inner2 struct { Y float64 } type Inner3 struct { Z bool } type Outer s
注:古い記事の為、内容が最新ではない可能性がありますm(_ _)m どうもこんにちわ!マツウラです。 前回はDatastoreインターフェースにおいてGo言語特有の機能であるPropertyLoadSaverについてでした。 今回はプロパティのタグ付け機能について見てゆきます。 参考:The datastore package - Go — Google Developers The datastore package プロパティのタグ フィールドは`datastore:"name,options"`タグを持つことが出来ます(バッククォートも含みます)。 `name`はプロパティ名であり、"."で結合される1つ以上のGoの識別子である必要があり、小文字で始めることができます。 `name`が空であればフィールド名を使用することになります。 `name`に"-"ハイフンを付けた場合、データス
注:古い記事の為、内容が最新ではない可能性がありますm(_ _)m どうもこんにちわ!マツウラです。 今回はGo言語版のDatastoreインターフェースにおいて、 Java,Pythonとは異なる特徴的な機能を見てゆこうと思います。 参考:The datastore package - Go — Google Developers The datastore package エンティティの内容は一般的に構造体のポインタですが、PropertyLoadSaverインターフェースを実装することで任意の型で表現することができます。 構造体ポインタを使用する一般的な利用ではPropertyLoadSaverインターフェースは実装する必要はありません。 reflectionによって自動的に変換されるためです。 PropertyLoadSaverインターフェース エンティティのコンテンツはPrope
注:古い記事の為、内容が最新ではない可能性がありますm(_ _)m どうもこんにちわ!マツウラです。 今回はオペレーションを確実に実行するため用いるトランザクションについてです。 それではGo言語での使い方について見てゆきます。 参考:Go — Google Developers Transactions App Engineではトランザクションがサポートされています。 トランザクションは完全に成功、または失敗することが保証された単一のオペレーションまたはオペレーションセットです。 アプリケーションは単一のトランザクションで複数のオペレーションや計算を実行することが可能です。 トランザクションの実行にはdatastore.RunInTransactionを使用します。 次の例は単純なリクエスト回数をカウントする際にトランザクションを用いたコードです。 c := appengine.NewC
注:古い記事の為、内容が最新ではない可能性がありますm(_ _)m こんにちわ!マツウラです。 前々回、前回と引き続きGo言語によるApp Engine Datastoreクエリについてです。 今回はエンティティ全体を取得する通常のクエリに対して、任意のプロパティ値のみを取得することが可能なプロジェクションクエリについてです。 それではGo言語での基本的な使い方を見てゆきます。 参考:Go — Google Developers Projection Queries Projection Queries 多くの場合、アプリケーションが必要とするのはいくつかのプロパティだけです。 プロジェクションクエリは必要なプロパティについてのみ照会することが出来ます。 プロジェクションクエリはSQLクエリに似ています。 SELECT name, email, phone FROM CUSTOMER プロ
注:古い記事の為、内容が最新ではない可能性がありますm(_ _)m どうもこんにちわ!マツウラです。 今回は前回の基本的なクエリに続けてGo言語でのクエリカーソルの使い方について見てゆきます。 参考:Go — Google Developers Datastore Queries クエリカーソル クエリカーソルはoffsetのオーバーヘッドを発生させること無く、結果を取得出来ます。 アプリケーションは結果の最後のインデックスを示すカーソル(文字列でbase64エンコード)を取得します。 アプリケーションはこのカーソルを保存し、次のバッチの開始点として使用することが出来ます。 また、エンドカーソルを指定することで結果セットの範囲を制限することも可能です。 次はカーソルを使用した基本的な例です。 c := appengine.NewContext(r) q := datastore.NewQu
注:古い記事の為、内容が最新ではない可能性がありますm(_ _)m どうもこんにちわ!マツウラです。 前回のDatastoreのエンティティ操作に引き続き、今回はQueryについてGoでの基本的な取り扱い方を見ていきます。 参考:Go — Google Developers Datastore Queries Query 次のコードはGoでのクエリを使用した一般的な例です。 Filter(),Order()といった下記で説明している機能も使用しています。 クエリの結果として取得されるエンティティは、GetAll()に渡したスライスに格納されます。 c := appengine.NewContext(r) q := datastore.NewQuery("Person").Filter("LastName =", "Voski").Filter("Height <=", 200).Order
Eureka EngineeringLearn about Eureka’s engineering efforts, product developments and more.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く