Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Goでのモデル 取扱説明書 / Golang How To Deal With Models

Yukichi Tamura
December 18, 2018

Goでのモデル 取扱説明書 / Golang How To Deal With Models

アプリケーションにおく各レイヤでのモデルや定数などの構造体をうまく扱う方法を考えてみます。

Yukichi Tamura

December 18, 2018
Tweet

Other Decks in Technology

Transcript

  1. Copyright©HRBrain, Inc. All Rights Reserved ⾃⼰紹介 Tamura Yukichi CyberAgent, Inc

    2014 〜 HRBrain, Inc 2018/8 〜 サーバーサイド。 たまにReact。 趣味でVue (Nuxt) 。 Twitter, Github: uqichi
  2. Copyright©HRBrain, Inc. All Rights Reserved データ(構造体)定義の例 UseCase Repository Handler .PEFM

    &OUJUZ 3FRVFTU 3FTQPOTF DB Table JSON JSON JSON Web APIを例 *OQVU 0VUQVU
  3. Copyright©HRBrain, Inc. All Rights Reserved データ(構造体)定義の例 UseCase Repository Handler .PEFM

    &OUJUZ DB Table JSON JSON JSON Web APIを例 3FRVFTU 3FTQPOTF *OQVU 0VUQVU
  4. Copyright©HRBrain, Inc. All Rights Reserved 構造体の変換 golang.org/pkg/encoding/gob Package gob manages

    streams of gobs - binary values exchanged between an Encoder (transmitter) and a Decoder (receiver). A typical use is transporting arguments and results of remote procedure calls (RPCs) such as those provided by package "net/ rpc". The implementation compiles a custom codec for each data type in the stream and is most efficient when a single Encoder is used to transmit a stream of values, amortizing the cost of compilation.
  5. Copyright©HRBrain, Inc. All Rights Reserved • type aliasで定義する • 定数をキーに⽂字列値のマップを定義する

    • jsonのencoder/decoderを通さなくても変 換できるようにメソッドは分けておく おまけ:Marshaler, Unmarshalerの活⽤ アプリケーション定数
 バックエンドは数値、クライアントは⽂字 列で定数を扱えるようにする
  6. Copyright©HRBrain, Inc. All Rights Reserved データ(構造体)定義の例 UseCase Repository Handler .PEFM

    &OUJUZ DB Table JSON JSON JSON Web APIを例 3FRVFTU 3FTQPOTF *OQVU 0VUQVU
  7. Copyright©HRBrain, Inc. All Rights Reserved All in Model Rails Active

    Record Active Recordとは、MVCで⾔うところのM、つまりモデルに相当するものであ り、ビジネスデータとビジネスロジックを表すシステムの階層です。Active Recordは、データベースに恒久的に保存される必要のあるビジネスオブジェク トの作成と利⽤を円滑に⾏なえるようにします。Active Recordは、ORM (オブ ジェクトリレーショナルマッピング) システムに記述されている「Active Record パターン」を実装したものであり、同じ名前が付けられています。
  8. Copyright©HRBrain, Inc. All Rights Reserved Active Record に影響を受けて作られたGo製ORM • PostgreSQL

    (>= 9.3) • CockroachDB (>= 1.1.1) • MySQL (>= 5.7) • SQLite3 (>= 3.x) github.com/gobuffalo/pop
  9. Copyright©HRBrain, Inc. All Rights Reserved • Active Recordスキーマにおける名前付けルール • データベースのマイグレーション

    • 検証(validation) • コールバック • Associationが強⼒ • クライアントツール付属(SODA) gobuffalo/pop
  10. Copyright©HRBrain, Inc. All Rights Reserved soda CLI create Creates databases

    for you drop Drops databases for you fix Brings pop, soda, and fizz files in line with the latest APIs generate Generates config, model, and migrations files. migrate Runs migrations against your database. reset Drop, then recreate databases schema Tools for working with your database schema gobuffalo/pop/soda