第22回 SQL Server 2019勉強会 / BPStudy#145〜進化する要件定義 / .NET Core 3最新情報セミナー に参加してた

東京出張後半戦にも 3 つ参加していた。マイクロソフト品川は、今月 3 回行ったが、3 回目でようやくトイレとエレベータに迷わず行けるようになった。。

第22回 SQL Server 2019勉強会

第22回 SQL Server 2019勉強会 - connpass

今携わっているプロジェクトが SQL Server で、かつ私が全く未経験なので、「まずは実行計画の読み方から・・・」という思いで参加を決めていたのだが、ちょうどこの半月で Trace 周りやストアドに関しても理解深めないとなぁと思っていた部分にキレイにヒットするセッション内容で、半日みっちり有意義な時間を過ごさせてもらった。運営の方を始め、トーカーの皆様に感謝しかない。

SQL Server Management Studio (SSMS)

ハンズオンもあったので、PC に SSMS もインストールしていったのだが、業務では前のプロジェクトを引きずって JetBrains の DataGrip を使っていた。

ただ、今回のいくつかのセッションを聞いて、SSMS は十分に使う価値があるということが分かったのが大きな収穫の一つだった。
実行計画はもちろんテキスト形式でも見れるのだが、SSMS を使うことで、グラフィカルに見ることができ、これはそれで無くても読みづらい実行計画を見るには素晴らしい機能だと思う。(もちろん MySQL 等でも似たような visualize はでき、SSMS はそれの SQL Server 用ということなのだが、私は DataGrip しか使っていなかったので。)

また、動的管理ビューや、XEvent のことに関しても聞けてよかった。この辺は単純にまだ知らなくて、明日から使える感じで嬉しい。

ハンズオンはストアドを書いてみる的なものだったが、私がこれまで DBMS の種類に関わらずストアド書いたこと無かった上に、今まさに読まなければいけない状態だったので、初級編でも全然わからず、とても勉強になった。これで読める。

BPStudy#145〜進化する要件定義(RDRA meets DDD)

BPStudy#145〜進化する要件定義(RDRA meets DDD) - connpass

RDRA は聞いたことが無かったのだが、ちょうど前半に QA 関係の勉強会に参加していたこともあり、改めて最近の要件定義手法というのも知りたくて参加した。

1 コマ目のセッションは通常は、3 倍ぐらいの時間をかけて説明する内容らしく、かなり足早に進んでいった感じだったが、外側から要件を決めていきつつ、それらをレイヤをまたいで関連付けていく感じはすごく良さそうに見えた。書籍や Web の資料もあるようなので、一度しっかりインプットしてみたい。

また、2 コマ目で DDD と RDRA を使っての事例が紹介されて、DDD の内側からのアプローチと RDRA の組み合わせ(?)を同時に聞けたのがすごく良かった。たぶん 1 コマ目の最後の DDD との関連説明と 2 コマ目が無かったら 「結局 RDRA って現場の他の手法と合わせて使いにくい?」とか変な勘違いをしてしまっていたかもしれない。

.NET Core 3最新情報セミナー

.NET Core 3最新情報セミナー - connpass

ちょうどこの週の頭に .NET Core 3 が正式リリースになり ( 3 年サポートの LTS が開始されるのは 3.1 ) 、その説明と事例紹介という感じだった。

1 コマ目で Microsoft の人から feature の説明やデモ、今後のリリーススケジュールが説明された。来年に .NET 5 として Xamarin 等も含めて統合(リブランディング)されるというのは記事等で見ていたが、その後は毎年 .NET 6, 7 と刻み、LTS は偶数番目とするらしい。Node.js も偶数でしたっけね。

2 コマ目は WPF アプリの話。Go のようにシングルバイナリにできるようになるというのは聞いていたし、試したりしていたのだが、.NET を業務利用する場合にそれ程重要な機能だとは思っていなかった(Go のように cli ツールを配布するようなケースで使われる感じでもないし)。
ただ、私はあまり経験が無いので気づかなかったが、デスクトップ系のツールになると、利用者の実行環境に強く依存してしまうため、.NET Framework のような OS にインストールされる実行環境に依存する以外に選択肢が無いと辛みが増すようだ。
そのため、(シングルバイナリではなくとも)実行環境込で配布できるオプションができたというのは、かなり大きいらしい。

3 コマ目はスポンサーセッション。私は使ったことが無いが、それこそ私が東京に住んでいた頃から名前を聞くコンポーネントだったので、長く使われていて素晴らしいなと思う。

4 コマ目は Codeer という会社の方のセッションだった。
宣伝色は強かったのだが、紹介されるツールのインパクトが強くて、「どうやってるんだよ、それ」という感じで、帰りには利用金額を調べていた。
GUI テストをコードで書くツールなのだが、その支援機能が素晴らしくて、Win アプリだろうが、Web だろうが、実際に操作した内容をそのまま C# のコードに変換してくれて、それを貼り付けるだけでリプレイテストが書ける。しかもそれが、PageObject Pattern のようなものに沿った感じにもできるというので、生産性を上げるという意味でも素晴らしいと思った。

昔の Selenium IDE でも Web に限っては似たようなことはできたが、IDE にがっつり統合してくるあたりは Microsoft エコシステムっぽくて強さを感じた。

最後に

.NET に関しては ML.NET という機械学習系の紹介もあり、C# 8 といういくつかの新しい機能が追加されたバージョンも出てきた。一方で、.NET Core 3 そして、ここから続くバージョンにおいても「あえて C# or .NET 環境を選ぶ理由」というのが、あまり見えないなぁというのを少し感じた。(多分に自分が言語にこだわりの無い雑食野郎だからというのもある)

例えば、ゲームを作りたいから C++機械学習を簡単にできるようになるから PythonRails も覚えて開発の初速をあげたいから Ruby とか、特定のデバイスで開発する必要があるから Swift/Kotlin とか、JavaScript なんかは使う / 使い始めるための理由はもっとありそうだが、(実際には誤解や間違ったイメージもあるだろうが)「その言語や環境を使うことで、メリットが得られるから始める/選択する」というのがあると思う。もちろん、会社でいえば「この言語は採用市場で強いから」というのもあるだろう。

C# に関していえば Unity というゲーム開発環境で利用するという意味で一つ選択するかなり大きな理由はあるのだが、それだけだと業務アプリで選ぶ理由が無い (Win app を書くのなら というのはあるかもだが)。

ASP.NET Core で動く Web API は某言語で動かす Web API より高速に動作する」とか「今は Linux でも動く」とか、切り取るカットによっては、選択されないにしても、最初から候補にも登らないということは無いと思うが、例えばスタートアップや、これから新規にアプリを作ろうという人達の選択肢に .NET はあるのだろうか。もちろんあるのかもしれない。

まあ、とりとめないことを書いてしまったが、国内でも .NET の開発者は多いだろうし、まあ不要な懸念だろうという気はする。単に、自分が今使っている言語への時間の投資が無駄にならないといいなぐらいのくだらない気持ち。まあ、どの言語でも同じですよね。