プログラミング C# - 翔ソフトウェア (Sho's)

C#/.NET/ソフトウェア開発など

BuriKaigi 2023 を開催しました

BuriKaigi 2023 | connpass

毎年冬に富山で開催されている BuriKaigi。

【参考】Burikaigi という毎年冬のイベント | hikaruworld | Medium

前回と前々回は COVID-19 の影響でオンラインでの開催でしたが、 今回3年ぶりでのオフライン開催となりました。

多くの方と久々に対面でお会いでき、とても楽しいイベントとなりました。

参加者の皆さん、登壇者の皆さん、スタッフとボランティアの皆さん、本当にありがとうございました。

来年もぜひ BuriKaigi でお会いしましょう。

参加者の皆さんの感想

私は、恒例の「C# ドキドキ ライブ コーディング!!」に登壇しました。
今回も盛り上げてくださった皆さま、ありがとうございました。

開催概要

BuriKaigi 2023
日時 2021年1月21日(土) 12:00〜18:00 (終了後懇親会)
会場 黒部市芸術創造センター セレネ | 富山県黒部市 (懇親会は: 富山県 黒部峡谷 宇奈月温泉 延対寺荘)

イベントの様子

全体
ルーム ブリ
ルーム シロエビ
ルーム ホタルイカ
懇親会

資料

ルーム ブリ
ルーム シロエビ
ルーム ホタルイカ
懇親会

ブログ

「独習C# 第5版」を読んで

独習C# 第5版

C# を教える/習得する難しさ

私は、20年間に渡って、C# を教えています。

C++ などの他のプログラミング言語の経験者に C# を教えることもありますし、プログラミングを初めて学ぶ人に教えることもあります。

後者の場合は、「C#を教える」というより、「C#を道具にプログラミングを教える」という感じです。

実は、いずれの場合も、C#を教えていて難しいのは、プログラミング自体です。

例えば、(デリゲートとしての) ラムダ式を習得する場合、文法が難しいというよりは、

  • 概念 (例えば、クロージャーの概念)
  • パラダイム (どういうプログラミングを指向しているのか)
  • 使いどころ
  • 仕組み (変数キャプチャーって内部的にどうやってるの?)

などがピンとこない場合が多いようです。

■ 「独習C#」との付き合い

ここ数年は、C# のメインのテキストには、「独習C#」を使っています。

以前は、ハーバート・シルト氏著の「独習C#」。2018年からは、山田 祥寛さんの「独習C# 新版」。

そして今年、「独習C# 第5版」が出ると聞いて、楽しみにしていました。

今回、ありがたくも、著者の山田 祥寛さんから本を頂戴できましたので、早速読んでみました。

■ 「独習C# 第5版」での新しい C# への対応について

「独習C# 新版」と「独習C# 第5版」の厚みの比較
  • それぞれのページ数
    • 独習C# 新版: 624ページ
    • 独習C# 第5版: 680ページ

これまで利用してきた「独習C# 」ですので、今回は新しい C# への対応という点で、書いてみたいと思います。

本書によって、先述した「C# を教える/習得する難しさ」は、どのように克服できるでしょうか。

「独習C# 第5版」の帯には「C# 10.0対応」と書かれていて、C# 7.0 ~ 10.0 の新しい文法に対応しています。

列挙してみると次のような感じです:

  • C# 7.0
    • switch 文での型判定
    • 参照渡し戻り値
    • タプル (値型)
  • C# 7.2
    • Span<T>
    • 読み取り専用構造体
    • ref 構造体
  • C# 8.0
    • Null許容参照型
    • switch 式
    • パターン マッチング
    • インターフェイスのデフォルト実装
    • 読み取り専用関数メンバー
    • 非同期ストリーム
  • C# 9.0
  • C# 10.0
    • global using
    • レコード構造体

C# を使っている人間には、どれも興味深い機能だと思います。

どの機能にも、追加されるに至った動機があり、プログラミング言語として C# が成長していく様子が感じられます。

半面、初めてこうした新しい機能に接する人は、場合によっては、難しく感じて拒否反応を起こすこともあります。

そして、どちらかというと、文法や書き方自体が難しいというよりは、別の理由であることが多いように思います。

C# のとある機能に初めて触れたとき、学習者が抱く疑問は、例えば次のようなものであることが多いのです。

  • 何故この機能がC#に追加されたの? (どういう問題を解決するための機能?)
    • 既存の機能でも、できたことじゃないの? 何が違うの?
  • どういうときに使うの?
  • 使った場合のメリット・デメリットは?

本書では、理解が難しそうな機能を説明する場合、

  • これまでは … という書き方 (ここでサンプル コード) があります。
  • この書き方では … という問題点がありますね。
  • そこで登場するのが、この機能です。
  • この機能を使うと、このように書けます (ここでサンプル コード)。

というような流れになっていることがよくあります。

文脈 (コンテキスト: 事情、背景、状況) が分かるような書き方、ということになるでしょうか。

例えば、タプルの説明では、

  • 複数の値を出力したい場合、従来は、配列やクラスなどで値を束ねたり、out 参照渡ししてた
  • でも、配列だと異なる型の値が束ねられないし、クラスは大げさで保守が大変
  • そこで、タプル!
  • こんな風に書ける (サンプル コード)

といった具合です。

■ まとめ

上では、特に C# の新たな機能部分について述べましたが、本書ではC# の重要な機能が網羅されています。

そして、それぞれの機能について、文法を解説するだけでなく、「その機能を使う動機・目的」から入って、次に「書き方」や「サンプル」が書かれています。

勿論プログラミング自体の入門書ではありませんので、全くプログラミングを経験していない人向けではありません。

プログラミングをやったことがある人が C# に入門したり C# をより深く理解するのに、向いている良書だと思います。

■ 関連サイト

BuriKaigi 2022 を開催しました

BuriKaigi 2022 | connpass

毎年冬に富山で開催されている BuriKaigi。
COVID-19 の影響で、前回に続いて今回もオンライン開催となりました。

【参考】Burikaigi という毎年冬のイベント | hikaruworld | Medium

前回同様、ルーム シロエビとルーム ホタルイカの2トラックに分かれて、オンラインで開催されました。

今回は、ありがたいことに前回を上回る 192名もの方にご参加いただき、大いに盛り上がりました。

多くの人にご参加いただけるというのは、オンラインのメリットです。 しかしながら、旧友や新たな方に直接にお会いできなかったのは残念でした。
ぜひまたオフラインで開催できるようになることを期待しています。

恒例の勉強会後の懇親会でのブリしゃぶですが、今回も、氷見の松本魚問屋さんに BuriKaigi 専用ページを作っていただき、各自取り寄せとなりました。

ブリしゃぶセット

私は、恒例の「C# ドキドキ ライブ コーディング!!」に登壇しました。前回同様、Twitter での応援を画面にリアルタイムに表示し、楽しいセッションになったようです。
今回も盛り上げてくださった皆さま、ありがとうございました。

懇親会は、前回同様 SpacialChat で行いました。話題が尽きない感じで楽しめました。

開催概要

BuriKaigi 2022
日時 2021年1月30日(土) 13:00〜18:00 (終了後懇親会)
会場 オンライン - Zoom 使用 (懇親会は: SpacialChat 使用)

イベントの様子

懇親会の様子
BuriKaigi 2022 懇親会の様子
BuriKaigi 2022 懇親会の様子

資料

ルームルーム シロエビ
ルーム ホタルイカ

ブログ

BuriKaigi 2021 を開催しました

BuriKaigi 2021 | connpass

毎年冬に富山で開催されている BuriKaigi (*)。
COVID-19 の影響で、今回はオンライン開催となりました。

(*) BuriKaigi とは何かということは次に詳しく書かれています: Burikaigi という毎年冬のイベント | hikaruworld | Medium

初のオンライン開催ということで、ノウハウも少なく、果たしていつものように参加していただけるだろうか、盛り上がるだろうか、と心配しておりました。
ところが、定員オーバーの 167名もの方にご参加いただき、大いに盛り上がりました。ありがたいことです。

例年は富山での開催ということでご参加いただけなかった方にも多数ご参加いただけたようで、オンラインならではのメリットもあったようですが、やはり直接皆様にお会いできなかったのは残念でした。
ぜひまたオフラインで開催できるようになることを期待しています。

今回は、ルーム シロエビとルーム ホタルイカの2トラックに分かれて、開催されました。

勉強会後の懇親会でブリしゃぶを食べるのが恒例ですが、今回のブリは、各自氷見の松本魚問屋さんからの取り寄せとなりました。

ブリしゃぶセット

私は、恒例の「C# ドキドキ ライブ コーディング!!」に登壇しましたが、意外にも、いつも通りの楽しいセッションになったようです。
盛り上げてくださった皆さま、ありがとうございました。

また、初めての SpacialChat 懇親会も、意外と楽しめました。
少し話し足りなかったくらいです。

開催概要

BuriKaigi 2021
日時 2021年1月30日(土) 13:00〜18:00 (終了後懇親会)
会場 オンライン - Zoom 使用 (懇親会は: SpacialChatSpacialChat 使用)

イベントの様子

懇親会の様子
BuriKaigi 2021 懇親会の様子

資料

ルームルーム シロエビ
ルーム ホタルイカ

ブログ

Shos.UndoRedoList (undo/redo ができる List と ObservableCollection)

undo/redo ができる List と ObservableCollection を作りました:

※ 使い方は README.md を参照してください。

WPFサンプル アプリもあります。

WPF のサンプル アプリ
WPF のサンプル アプリ

NuGet からインストールできます:

エンジョイ!

Shos.UndoRedoList (List and ObservableCollection which support undo/redo)

I made List and ObservableCollection which support undo/redo:

* See README.md for instructions.

* There is also a sample app for WPF.

Sample app for WPF
Sample app for WPF

You can install this library from NuGet:

Enjoy!