(*'▽') 超絶便利。
今更知ったVSの超便利機能
日付が2014年なんでもうかなり前のブログですが、こんなのを見付けまして。
クリップボードにコピーしているJSONまたはXMLの文字列から、クラスを自動生成して貼り付けられると言う事です。
(*'▽') こーれは便利、超便利。
この機能いつから増えてたんですかね、3年前だったらJavaに移った後の話だから知らなくても無理はないものの、アンテナ低かったなー。
REST API に使える
プログラムから各種REST APIを叩いて、JSON・XML(以下「APIレスポンス」)を取得して、ObjectMapper等でEntity(JavaだとBeanって言うか)に落として、ロジック実装すると言う流れ。
この中で、どうしてもめんどくさくて死にそうになるのが、取得したいAPIレスポンスに対応したクラスを実装する所ですよね。
これがコピペ貼り付けだけで済むと言うのは実にすばら。
データファイルをXMLで作る場合も便利
API叩く以外でも、ツール独自のデータファイルをXMLで用意する事が(C#では)多い*1と思いますが。
サンプルとしてXMLのデータファイルを作れば、それがそのままデータクラス設計になるって事だし、ほぼコーディングレスで実装も完了すると言うのは実に良いですね。
しかしあれか。
XML形式文字列からクラスを生成できるって事は、同じルールでやればObjectMapper的なものも作れる訳だよね。
追記
XML LINQ の出番すら無かった
簡単だったからJSONの方しか試してなかったけど、XMLの方は自動生成したクラスにXML関連の属性も付与して生成されてて、XML LINQ
の出番もなかった。
普通に XmlSerializer.Deserialize()
使ってオブジェクトにマッピング出来たので素晴らしい。
いやぁ、便利便利。
自動生成コードのプロパティ
自動生成されたコード(プロパティ)は、バッキングフィールドを使用するタイプだった。
特にフィールドが必要な感じではなかったので、素直に自動実装プロパティの形で書き換える事にした。
本来であれば自動生成コードに直接手を入れるのはどうかなと思うけど、別にデザイナとセットで存在してて頻繁に更新が掛かる類の自動生成コードではないし。
基本的に、XMLデータモデルを一度固めちゃえば、それ以降自動生成し直すって事はそうそう無いだろうから良いかなって。
UpperCamelにするか、LowerCamelにするか
識別子は基本的にパスカル形式だけど、何も考えずに作ったXMLから生成したらそりゃあキャメルになるよね。
ぶっちゃけXMLとデータバインドするだけのPOJOならぬPOCO(この用語、最近知った)だから、なんでも良いんじゃねって気がするんだけどね。
まぁでも hoge-attribute
みたいにハイフン区切りの記述と親和性無いから、ここはXMLの方をパスカルに変更しようか。
という事で
ちょっと作りたかったツールづくりが加速しそう。