Niigata.NET 2.0 | テックトーク&.NET開発お悩み相談室 – Niigata.NET | Doorkeeper
GWの終わりの5/7(土)にNiigata.NETの第2回勉強会を開催しました。
今回は前半は普段のテックトーク、後半は参加者の皆さんから普段の開発で困ったことなどについて、みんなで考えようなお悩み相談室としました。前回は初回ということで遠方よりご参加いただいたりと半ばお祭りでしたが、今回は地元参加者のみでの比較的少人数での会となりました。
テックトーク
考える、プログラミング初級講座 C#編 by @AILight
1つ目のテックトークは、越後が誇るMS MVPである@AILightさんによる、「変数」に絞ったC#入門でした(資料はアップされていないようです)。始めるまえに「時間が読めない」と公言していた通り、1時間半を超える大規模セッションになりましたf(^^;
ポイントを絞って振り返ってみます。
まず、C# ステップアップに大切なこととして次の3つを挙げています。
- 言語仕様を学ぶ
- ランタイムを学ぶ
- 短く書くようにする
C#の言語仕様については、最近はコードネームRoslynこと「.NET Compiler Platform」がオープンに開発が進んでいることもあり、ちょっと追うのが大変です。C# 5.0までくらいなら、VSのインストール先に入っているので、まずこちらで確認して、最新仕様は別途「C# によるプログラミング入門」などのサイトで確認するとよいと思います。
VS2015なら、言語仕様は以下のフォルダーにあります。
C:\Program Files\Microsoft Visual Studio 14.0\VC#\Specifications\1041\CSharp Language Specification.docx
次に変数の使い方として以下の3つを挙げています。
- 宣言
- 代入
- 参照
これらについて、実際の「自分のルール」含めて、変数名やvar使うか問題、多次元/ジャグ配列の宣言と初期化などについて語ってくれました。それらの中で、私も真似しようかなと思ったルールが一つあって、それは「変数名略すな」です。
よくこんなコードを書いてしまいがちです。
var client = new HttpClient();
client.~
ですが、ただの「client」ではもし今後HTTPSクライアントが増えたらどうするのか?といった視点から避けるべきという主張でした。その代わり、
var httpClient = new HttpClient();
client.~
のように、型名をcamelCaseにしたので良いのではということでした。
こんな感じで、「変数」だけでこれでもか、これでもかと大いに語ってくださいました。
テスト駆動開発(TDD) in .NET by @masaru_b_cl
私のセッションです。内容はスライドを参照ください。後日補足を加えて別途エントリにもまとめるつもりです。
私のセッションもデモ入れたりして少し長くなってしまいました。やはり資料をぎりぎりに作成するのはだめです……。
質疑応答は記憶している範囲ではこんな感じでした。
- DB絡んだテストはどうするのか?
- SetUp等でDB接続してデータをこしらえてテストしている
- FastであることよりもIndependentでRepeatableな方が価値が高いので問題なし
- いわゆる「単体テスト」に流用できないのか?
- TDDのユニットテストは「開発者テスト」であり、品質保証を目的とするテストとは違うもの
- 流用できる部分もあるかもしれないがそれほど多くない
- 品証の単体テストは、単一コンポーネントというよりは各種コンポーネントを組み合わせて「ユースケース」を元に設計する
- TDDのユニットテストは「開発者テスト」であり、品質保証を目的とするテストとは違うもの
- privateなメソッドのテストはやるのか?
- privateなものはpublicなメソッドを通じて行う
- privateなものは実装に近すぎて簡単にテストが壊れるため
- そのためTDDもユースケースを考慮したテストを行う方がよい
- もしprivateなメソッドをテストしたくなったら、単一責務の原則に従い責務分割のチャンス
- privateなものはpublicなメソッドを通じて行う
.NET お悩み相談室
そして、今回のメインだったはずが、テックトークでだいぶ時間が押してしまい、30分くらいしかできませんでした。
出た話題としてはこんな感じだったかと。
- 現在WinFormsのクラサバアプリを型付DataSet+TableAdapterを使って作っているが、EFにした方がよいのか?
- MSのリソースはEFに集まっている
- DataSetのように非接続型アクセスするには、ひと工夫必要
- .NET関連の最新情報キャッチアップはみんなどうしているのか?
- 最新情報を追っている人をSNS等でウォッチする
- MSのドキュメント、チュートリアルを参考に手を動かす
時間がなかったので、正直消化不良気味でした。ぜひリベンジしたい。
全体を通じて
今回は参加者が地元の方だけということもあり、比較的おとなしい印象でした。また、TwitterをはじめとしたSNSのアカウントも持っていないような人が大半なのか、#ngtnetのTLは大変寂しいものになってしまいました。
今後に向けては、幹事の@AILightさん、@84taka0310さんとも相談していきますが、講師と生徒のような関係ではなく、もっと参加者の皆さんにガツガツ来てもらえるようなコミュニティにしていくため、何ができるか考えていかなくてはと思いました。地元の中小SIベンダーの一社員といった人に、どうやって動機づけしていくかは、地方コミュニティはどこでも同じ悩みを抱えているかもしれませんね。
次回について
少なくとも年2回の開催を目指すため、次回は10月あたりを予定しています。また日取り等決まったら告知します。