最近Gitを使い始めたんですが、コミットメッセージが文字化けるとか色々悩まされたんで、その結論的なものをまとめます。とりあえず、これでCygwinだけを使っている分には文字化けに悩まされずに済みそうです(やってることは文字コードをUTF-8で統一するように設定してるだけですが)
以下セットアップ手順です(既にGitHub上にアカウントを持ってる前提です)。
標準のAzure Table Storageにおいては以下の型のみが保存可能な型としてサポートされており、これ以外のプロパティとして持つエンティティを保存しようとするとエラーになってしまいます。
EDM型 | CLR型 | 詳細 |
Edm.Binary | byte[] | バイトの配列 (サイズは最大 64 KB) |
Edm.Boolean | bool | ブール値 |
Edm.DateTime | DateTime | UTC 時刻として表現された 64 ビット値 (サポートされている値の範囲は 1/1/1601 ~ 12/31/9999) |
Edm.Double | double | 64 ビットの浮動小数点値 |
Edm.Guid | Guid | 128 ビットのグローバル一意識別子 |
Edm.Int32 | Int32 or int | 32 ビットの整数 |
Edm.Int64 | Int64 or long | 64 ビットの整数 |
Edm.String | String | UTF-16 でエンコードされた値 (サイズは最大 64 KB) |
ただ、この制限に従って実際にシステムを作ろうとすると、ビジネスロジック層がドメインモデルとして設計されている場合に、ドメインオブジェクト群をストレージへ保存する際、そのオブジェクト構造をフラットに展開してからデータを保存しなければなりません。また、そのデータを読み込む時もフラットな構造から元のドメインオブジェクトに戻す処理が必要です。
データを読み書きするためにいちいちこんなことはやってられないので、今回はStorage Client APIをカスタマイズして、オブジェクト構造をそのままTable Storageへ保存できるようにします。