rksoftware

Visual Studio とか C# とかが好きです

C# の開発環境 (入門者向け概要)

開発環境

C# では Windows、Linux、Mac でアプリが作れます。アプリを作るマシンでは、実行環境 (※1) を整えている必要があります。
そのうえで、一般的には IDE (Integrated Development Environment・統合開発環境) と呼ばれるアプリやコードエディタと呼ばれるアプリを使ってソースコードを記述します。

※1:厳密には事項環境と開発環境ではインストールするものが変わりますが、このコンテンツは入門者向けということでここでは割愛します。開発環境のインストールについては別途説明するつもりでいます。

モバイルアプリの開発

Windows または Mac に Visual Studio をインストールします。Windows であれば Visual Studio を、Mac であれば Visual Studio for Mac をインストールします。Visual Studio、Visual Studio for Mac については後述します。

ゲームの開発

Unity をインストールします。Unity ではソースコードを記述するためのエディタを変更することができるので、デフォルトのものから Windows であれば Visual Studio に、Mac であれば Visual Studio for Mac に変更することもできます。Visual Studio、Visual Studio for Mac については後述します。

Windowsでの開発

Visual Studio または Visual Studio Code をインストールします。Visual Studio Code を使う場合は、別途 .NET (または .NET Core) のインストールも必要です。デスクトップアプリや、モバイルアプリの開発を Visual Studio Code で行うことは正直厳しいです。これらのアプリを作りたい場合は Visual Studio を使用するのが無難です。Visual Studio、Visual Studio Code については後述します。

Mac での開発

Visual Studio for Mac または Visual Studio Code をインストールします。Visual Studio Code を使う場合は、別途 .NET (または .NET Core) のインストールも必要です。デスクトップアプリや、モバイルアプリの開発を Visual Studio Code で行うことは正直厳しいです。これらのアプリを作りたい場合は Visual Studio for Mac を使用するのが無難です。Visual Studio for Mac、Visual Studio Code については後述します。

Linux での開発

Visual Studio Code をインストールします。Linux では残念ながら Visual Studio や Visual Studio for Mac は使えません。Visual Studio Code を使うので、別途 .NET (または .NET Core) のインストールも必要です。Visual Studio Code については後述します。

IDE・エディタ

Visual Studio

非常に高機能な IDE で、C# のコードを書く最も一般的な選択肢です。Windows を使っている場合は特別な理由がなければ Visual Studio を使用するのが良いでしょう。ただし、Windows でしか使えないため、他の環境で C# を使う場合には別の選択肢を選ぶことになります。
デメリット・制約としては次の点が挙げられます。

  • インストールに必要な容量が多く時間がかかる
  • 企業での商用利用では有償版が必要 (企業規模などの条件によっては無料版の使用が許されますが、条件に合致することはほぼありません。もし使えると思った場合は条件の読み方を間違っていると思ったほうが良いです)

とりあえず今日、今すぐ 1~2 時間以内に C# を書いてみたいという様な場合は、インストール時間の長さが課題となります。

また、仕事で使うには有償版になりますが、導入による生産性の向上はたいていの仕事で価格の何十倍以上です。費用のことを考えるのであれば、お金を払った方が安くアプリを作れます。

Visual Studio for Mac

非常に高機能な IDE で、Mac で C# のコードを書く最も一般的な選択肢です。ただし、Mac でしか使えないため、他の環境で C# を使う場合には別の選択肢を選ぶことになります。
注意点として Windows の Visual Studio とは別のアプリのため、使い方や機能に差異が大きいことがあります。インターネットなどで使い方を調べる場合は、必ず for Mac の記事かどうかを確認するようにしてください。
デメリット・制約としては次の点が挙げられます。

  • インストールに必要な容量が多く時間がかかる
  • 企業での商用利用では有償版が必要 (企業規模などの条件によっては無料版の使用が許されますが、条件に合致することはほぼありません。もし使えると思った場合は条件の読み方を間違っていると思ったほうが良いです)

とりあえず今日、今すぐ 1~2 時間以内に C# を書いてみたいという様な場合は、インストール時間の長さが課題となります。

また、仕事で使うには有償版になりますが、導入による生産性の向上はたいていの仕事で価格の何十倍以上です。費用のことを考えるのであれば、お金を払った方が安くアプリを作れます。

Visual Studio Code

Windows、Mac、Linux のいずれでも使えるコードエディタです。豊富な拡張機能があり、それにより多彩なプログラミング言語でのアプリ作りに対応します。拡張機能によってはアプリ作りだけでなく、様々な用途に使えるようになります。プログラムのソースコードだけでなく文章を書くためのものや、ものによっては画像ファイルの加工を行うものまであります。C# 以外のプログラミング言語でアプリを作っている多くのプログラマにも選択されている非常に人気のエディタです。前述の選択肢ともう一つ大きく違う点として、企業での商用利用でも無償であるという点もあります。
デメリット・制約としては次の点が挙げられます。

  • IDE ではたいていの操作はマウス操作で簡単に行えますが、Visual Studio Code では文字でのコマンドや手動でのファイル操作が必要になる操作が多い
  • デスクトップやモバイルアプリなどの画面の見た目などを作る画面デザイナがない

プログラミングを仕事にする場合には、C# のソースコードを書く仕事だとしても実際には C# のソースコードを書く意外にも様々なプログラミング言語や作業が必要になることが多いです。そういった場面で Visual Studio Code が使われることも多いので、とりあえずインストールして触っておくのがオススメです。

その他の開発環境

Visual Studio 系以外の開発環境も存在しますが、このコンテンツは入門者向けということでここでは割愛します。

開発環境構築手順検証に使える? Windows サンドボックス

最近の Windows には Windows サンドボックス という機能があります。

docs.microsoft.com

ありますというか、存在を完全に忘れていたので、あああったあったこれ。という感じです。

開発環境構築手順確認にも

開発環境構築手順確認、意外性も何もなく普通に面倒な作業です。一番大きな障壁は「開発環境にかかわるものが一切インストールされていないマシン」を用意するところです。
仮想マシンを使えばたやすいことは確かです。でもちょっと面倒。そんな時に Windows サンドボックス が役に立つかもしれません。立たないかもしれません。

Windows サンドボックス は使い捨て環境なので 再起動ができません 。再起動すると、終了してしまい変更が失われてしまいます。
意外と再起動は必要なので、意外と開発環境構築には使えないかもしれません。

C# の実行環境 (入門者向け概要)

C# では主に Windows、Linux、Mac、Android、iOS (iPhone) で動作するアプリが作れます。
その他にも動作する環境はありますが、難しい話になります。この記事は入門者向けということで、話の難しい環境は割愛します。

モバイル および ゲーム

Android、iOS といったモバイル向け OS 用のアプリは、実行環境側に事前にインストールしておくソフトウェアなどはありません。C# で作ったアプリをインストールすればそれだけで OK です。 また、ゲーム (Unity) も同様です。

Windows

Windows では C# で作ったアプリの実行環境は複数あります。
ここでは、最新の環境以外も記載しています。学習用としては最新の環境を使うのが無難です。しかし、実際に仕事で C# を使う際には様々な理由により、最新の環境ではないことが多くあります。むしろ最新の環境を使う機会の方が少ないかもしれません。
実際に仕事で使う際に混乱をしないよう、古い環境の存在も覚えておきましょう。

名前 説明
.NET Framework 2002 年から存在 (バージョン1.0) し、現在 Windows に標準搭載されている (バージョン4.6) 実行環境です。
このため、Windows では C# で追加の実行環境をインストールせずに動くアプリを作ることができます。
ただし、標準搭載されているバージョンが古く、今後は次に続く環境が後継となるため最新機能に対応しません。
.NET Core Winsows、Mac、Linux で C# で作ったアプリを動かすために .NET Framework を作り直した実行環境です。
Windows でもインストールが必要 (※1) になります。また、今後は次に続く環境が後継となります。
※1:自己完結型の配置というアプリにランタイム同梱する手法を使う場合、そのアプリの実行には実行環境のインストールは不要です。
.NET 現在最新の実行環境です。Winsows、Mac、Linux 対応。特に理由がなければこの実行環境をインストール (※1) します。
※1:自己完結型の配置は .NET Core と同様に可能です。

Mac

Mac でも C# で作ったアプリの実行環境は複数あります。
Windows と同様に必ず最新の環境が使われるわけではないので、古い環境の存在も覚えておきましょう。

名前 説明
.NET Core Winsows の項目と同様です。
今後は次に続く環境が後継となります。
.NET Winsows の項目と同様です。特に理由がなければこの実行環境をインストールします。
自己完結型の配置も可能です。

Linux

Linux でも C# で作ったアプリの実行環境は複数あります。
Windows と同様に必ず最新の環境が使われるわけではないので、古い環境の存在も覚えておきましょう。

名前 説明
.NET Core Winsows の項目と同様です。
今後は次に続く環境が後継となります。
.NET Winsows の項目と同様です。特に理由がなければこの実行環境をインストールします。
自己完結型の配置も可能です。

※上級者向け補足

UWP が動作する WinRT は割愛しています。 Mono も入門者向けということで割愛しています。

C# 2.0 以降の新機能の確認 - C# 8.0 - 破棄可能な ref 構造体

C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。

破棄可能な ref 構造体

 [ 良いリンクを見つけられませんでした ]
 ref 構造体はインターフェイスを実装できないため、IDisposable インターフェイスを実装できません。しかし、これからは ref 構造体では、インターフェイスを実装しなくても void Dispose() メソッドを作るだけで OK となった。

{
    using var c = new C();
}// B.Dispose と表示される

// Dispose が実装された ref 構造体
ref struct C
{
    // IDisposable インターフェイスを実装せずメソッド宣言
    public void Dispose() => Console.WriteLine("B.Dispose");
}

Android でタスク表示ができなくなった話

結論

再起動したらできるようになりました。

事象

ある日、Android 端末でタスク表示ができなくなりました。
※画面下から画面中ほどまでスワイプするとアプリが並んで表示、横スワイプで選択できるアレ

普通に不便だし、アプリを再起動できなくて困る感じでした。

対策

再起動したらできるようになりました。
困ったときは再起動。基本でした。

C# 2.0 以降の新機能の確認 - C# 8.0 - 静的ローカル関数

C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。

静的ローカル関数

 https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/local-functions#local-function-syntax
 ローカル関数を static にできる。

{// これはコンパイルエラー 
    int x = 0;
    // localFunction(x);
    Console.WriteLine(x);

    // static なので外部の変数をキャプチャできずエラー
    // static int localFunction(int y) => ++x;
}
{// むしろキャプチャできないことがうれしい
    int x = 0;
    x = localFunction(x);
    Console.WriteLine(x);

    static int localFunction(int y) => ++y;
}

C# 2.0 以降の新機能の確認 - C# 8.0 - using 宣言

C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。

using 宣言

 https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/using-statement
 変数の宣言に using をつけます。するとその変数の生存範囲が終わったところで Dispose される。

// ブロックを抜けたところで Dispose される
{
    using var disposable = new Disposable();
    Console.WriteLine("1");
}
Console.WriteLine("2");
// 1
// Dispose
// 2

class Disposable : IDisposable
{
    public void Dispose() => Console.WriteLine("Dispose");
}