- ベストアンサー
ラッパークラスとシリアライズについて
- C#のDataContractSerializerを使用して、XML保存を行っている際に、基本データ型ではなくラッパークラスを使用することをアドバイスされましたが、そのメリットが分かりません。
- 一つのクラスが増えると、[DataContract]の増加や要素の増加によって、XMLの可読性が低下してしまう可能性があります。
- 保存をRDBMSにしても、処理が面倒になるかもしれませんが、意味付けでの利便性は考慮する必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
質問者さんが「こういう基本型で細々とラッパークラスを作るとなると、保存処理が結構面倒くさくなる気がします。」などと疑問に感じられていることは、たぶん正しいと思います。 今から数十年前、「オブジェクト指向(言語)で開発すれば、開発も保守も楽になる!」と世の中が騙された時代がありました。 実際の現場では、開発が楽になることも、保守が楽になることもなく、逆に大変になったことが多かったのではないでしょうか? ただ、それ以降も、「開発がいかにすれば楽になるか?」「機能拡張や変更がいかにしたら楽になるか?」という研究は進められてきており、オブジェクト指向にとらわれることなく、さまざまな技術が開発されてきたと思います。 たとえば、質問者さんが、電話番号やEmailなどを画面から入力したり、それをRDBMSに保存したり、検索したりするソフトを作りたい場合、C#のEntity Frameworkを使えば(その技術に関して、そこそこの勉強時間が必要ではありますが)ラッパクラスとか、シリアライズなんてことを考えることなく、簡単にプログラムができあがります。 別の例にたとえれば、すばらしい剣の技があって、「その流儀をマスターすれば剣豪になれる!」として苦しい修行(=オブジェクト指向の勉強)をやったけど、いつの間にか、時代はライフル銃の時代(=Entity Framework)となり、はるかに効率よく敵を倒せるようになっていたという感じかもしれません。 Entity Framework、Linq、ラムダ式という技術を使えば、データベースの生成を自動でやってくれたり、複雑なSQLを記述することなく、データが検索や更新処理が行なえますよ。 なお、私は最近、C#がメインの開発言語で、Entity Frameworkを使っているので、他言語のことはよく知りませんが、他の言語でも似たような仕組みが導入されていて、同じように、お手軽開発が可能になっているのではないかと推測しています。
その他の回答 (1)
- catpow
- ベストアンサー率24% (620/2527)
>>ただ上がこういうやり方でって感じで言ってくるのでオブジェクト指向を中心にやるしかない状態ですが。 日本のIT業界って、「人貸し業」、「人身売買」とか「多重派遣」「偽装請負」などとしばしば、問題視されて批判されます。 でも、それ以上に、「商売のネタ」であるはずのプログラミング技術、開発技術自体の向上には、あまり注意が払われていない点が問題だと思っています。 でも、考えてみたら当然なんですよね。商売の見積りは、根本的な尺度が「人月単価」となっています。 会社経営者とすれば、100人月の見積りとなる仕事と、10人月になる仕事では、前者のほうが売上・利益ともずっと大きくなります。 仮にオブジェクト指向で、開発工数が10分の1に大幅削減になるとしたら、経営者としては、「オブジェクト指向の勉強やって、その結果、売上・利益が下がるなんてバカバカしい」となりますよね? 「全体の開発工数の下がるような、新しい提案はするな!!」という指示を出す会社もあるそうですからね。 また、IT業界をめざす人達も、「プログラミングの技術を覚えると、SEじゃあなく、PGにされる。地位も給与もSEのほうが上。だから、プログラムの勉強なんてすべきじゃあない」という判断をする人達が、わりと多かったみたいです。 さらに、質問者さんが書かれたように、「上からの指示」とか、「杓子定規のセキュリティ」「開発リスク回避」という視点から、「よさそうだけど、リスクありそうなことはしない」として、便利なオープンソフトやツールを使ってはいけないという職場も多いです。(私は、派遣でIT業界では有名な大企業から銀行とか、流通などの開発現場で働きました) ちなみに、海外では、SE的な職種(人に指示して、自分では物作りしない職種)は存在しないという書き込みを目にしたこともあります。 自分でものづくりができないSEは、海外のIT市場では、「何もできない人」に分類されるらしいです。 >>調べた限りかなり便利そうなのでさっそくそちらで試してみたいと思います。 Entity Frameworkは、とても便利で、データベース関連の処理を楽にしてくれますよ。 「ちょっとこのプログラムの機能を変えてほしい!」という要望も、気楽に引き受ける気にさせられます。 ただし、日本語の情報がとても少ないですし、あっても、古いバージョンの解説記事だったり、それを新しいバージョンで使うとエラーになったり、エラー原因を調べるのに苦労します。 また、最新のマイクロソフトのVisual Studio2015は、オープンソースを積極的に利用しているようです。 上記のような、上から、「これはいいけど、あれやこれしてはダメ!」って言ってくるタブーが多い職場では、使うのが難しいかもしれません。
お礼
そうですね。 うちもこれはダメあれはダメのオンパレードです。 そのくせ上がおもしろそうなのを見つけると振ってくるっていう無茶ぶりなんですが。 で、さっそくEntity Frameworkを自宅で試してみました! すごくいいですね! 仕事に直結するのが難しそうですが、自分で使う分にはものすごく助かりそうです。 ありがとうございました。
お礼
確かに! 妙に大変な部分が多いですね! ただ上がこういうやり方でって感じで言ってくるのでオブジェクト指向を中心にやるしかない状態ですが。 Entity Frameworkはまだ触ったことがなかったです。 Linqやラムダ式は使ってますのでプラスEntity Frameworkですね。 調べた限りかなり便利そうなのでさっそくそちらで試してみたいと思います。 ありがとうございます。