Coreを触ってます。触っていて思い出したのがDataTableです。前職ではVB.NETでDBから取得したデータをごにょごにょして(この辺り詳しく書くのもアレなのでふわっと書きます)アレアレしていたのですが、この時にDataTableを使用する場合がありました。してアレアレするのが当時かなり疑問でして、しかしながらその現場しか(前職ではずっと同じ部署で製品開発~導入までやってました)知らなかった私には具体的にどう対応するのが世の中のスタンダードなのかわからず[2]、いろいろと試行を巡らせたり調べたりする日々が続きました。その結果、ORMなるスーパースゴイゴッドツールが存在するということを知りました。Frameworkとかいうのがあるらしいんですよくらいの要するによくわかってない状況でした[3]。「なにいってるんだこいつ」と思われるかもしれないですが、まあ、一昔前のIT業界はたぶんこういうの普通だったと思うんですよ。Jenkins投入して部会で説明したとき「OSS???サポートどうするの[4]???」みたいなリアクションされたの覚えてるんですよ。他にも書きだすときりがないくらいいろんなアレがあるんですよ。昔のIT業界に従事してた人(今もそういう現場は多いと思いますが)ならみんな経験したことあると思うんですよ。バージョン管理ツールなにそれおいしいの。完全に余談なんですけど...オレオレORMっぽいなにかそんな感じだった私が結局どうしたかというと、自作でORMっぽいものを作ってみた[5]んですね。細かいところまでは覚えていないのですが、下記のような感じだったと思います。Deleteできる属性を用いてカラムとプロパティをマッピングしたテーブルのカラムが多すぎてクラスを書くのがつらかったVB.NETのバージョンが古く、自動実装プロパティが使えずなおさら厳しかったこの辺は覚えてます。取得時のデータと現在の値を比較して差分のみUpdateする。そんな感じだったと思います。そうそう、そんな感じだったんですよ。この時にデザインパターンのMementoを学んだ記憶があります。そもそもこの実装をするまで継承とか使ったことがなかった気がします[6]。ジェネリクスやリフレクション、属性とかLINQもこれで初めて使ったと思います。最終的にこの実装したアレを投入したかというと部分的にコッソリ投入したのですが、問題なく動いたので問題なかった[7]んだと思います。Coreを触ってみて感じた下記のような感想を抱きました。そうそう、これがやりたかったんだよ筋は悪くなかったのではまず第一の感想は「そうだよ~~~当時こういうのをやりたかったんだよ~~~これがスーパースゴイゴッドツールだよ~~~」という感じですね。その思いだしで懐かしくなって書いた記事がこの記事です。Frameworkも同様のアプローチをとっており、もしかして「当時もそこまで筋は悪くなかったのでは?」と思いました。Coreについて少し書いておきます。Core)で実装することになりました。Frameworkでも動作します。データベースからのクラスの生成(これをデータベースファーストと言います。逆にコードからテーブル生成するのをコードファーストと言います)は.NETCoreしか対応していない(???)のか、できませんでした。MVPの人が豊富なサンプルを書いてくださっているので、このサンプルを見ると楽だと思います。後はJOINの時にToListしないとArgumentNullExceptionがでる???とかいう疑惑があります。JOINと書かれてますが、たぶんJOIN全般だと思います。)ただ、前述のMVPの方のサンプルもToListしておらず、そもそもToListするとSQLのJOINではなくコレクションのJOINとなりパフォーマンスがアレなのでは???という疑惑があり、つまるところ、私の実装が誤っているのでは疑惑があり、この辺どうなんすかね...気が向いたらどっかで記事にするかもしれないです。Coreのバグっぽいですその他、ドキュメントが「ザ・機械翻訳」でかなり怪しいのでプルリクチャレンジしたい人には絶好のプルリク先だと思います。興味ある人はやってみたらいいんじゃないでしょうか。リポジトリはここです。本家の英語を機械翻訳しているだけだと思うので、本家が更新されたら上書きで再度機械翻訳になるのではないのか...???という気がしますが...。この辺どうなんですかね...。感想こう思い返せば、まあ、えらい成長したなぁ...としみじみと思うとともに、もっと早い段階でもっと良い開発現場に携わりたかった[8]という想いもあり、なんとも複雑な気持ちになります。書くまでもないのですが、私以外の誰もわかってなかったですし、そもそも疑問に思ってる人間が一握りでした。↩︎もちろんコードはお察しだったとおもいます。Frameworkを導入します。今なら投入しないです。本当にすみません...。ちなみにJenkinsも勝手に投入しました...。Gitはちゃんと確認とりました。念のため書いておくと、私は前職の全てがダメだったと思いませんし、昨今のネット上の開発至上主義が良いとも思っていません。要するに大事なのはバランスです。YoshinoriN)。