C# を触ってみたいけど自分の環境に .NET の SDK 入れるの何か嫌だという人向けハローワールド

以下の記事が思ったよりバズっててびっくりしたので気をよくして、これをきっかけに C# ちょっと気になるなという人向けの最初の、本当に最初に触ってみるための一歩を書いてみようと思います。

[C# で出来ること一覧](https://qiita.com/okazuki/items/e3a8e23f9ac2a10d8fde)

## コンソールアプリをブラウザーでお試し

この記事を書いた後に岩永さんから教えてもらいました。（知らなかったです）

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr"><a href="https://t.co/0y9jbUSEHq">https://t.co/0y9jbUSEHq</a> とか <a href="https://t.co/DAYydYlKcS">https://t.co/DAYydYlKcS</a> とか＜SDK入れるの嫌な人向け</p>&mdash; ++C++; // 管理人: 岩永 (@ufcpp) <a href="https://twitter.com/ufcpp/status/1242038376246554625?ref_src=twsrc%5Etfw">March 23, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Try .NET というのがあるんですね。補完も効いていい感じ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/f88694f5-11af-a938-a1cd-3b421713ff45.png)

英語ですが、これを使ったチュートリアルもありました。

[Hello World - Introduction to C# interactive C# tutorial](https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/intro-to-csharp/hello-world)

本当にコンソールアプリで触ってみたいとかなら、これでもよさそう。

ローカルの VS Code で試してみたくて Web アプリも試したいという人は以下の VS Code + リモート開発をどうぞ。

## Docker と VSCode を入れる

大体の人が既に入れてるよね？今回は、以下の 2 つが入ってることを前提に進めます。

- [Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/)
- [Docker Desktop for XXXX](https://hub.docker.com/search?q=&type=edition&offering=community&sort=updated_at&order=desc)

## VSCode のリモート開発拡張機能を入れる

まだ、プレビューなんですが Visual Studio Code のリモート開発拡張機能を入れます。

[Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack)

これを入れると Docker コンテナに繋いでホストマシンの VS Code でコード書いたりできます。

## Hello world

1. 適当な空のフォルダーを VS Code で開きます
2. コマンドパレットから `Remote-Containers: Add Development Container Configuration Files...` を叩きます
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/4314d5c1-f28b-7e98-0006-053c88e4071a.png)
3. 色々な言語などのリストが出てくるので C# .NET Core 3.1 を選びます
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/b3246f71-223c-7478-b77d-6aa999e7d6cf.png)
4. リモート開発用の構成ファイルが追加されます。
5. `.devcontainer/devcontainer.json` の `"extensions":` に `"ms-vscode.csharp"` とありますが、これを `"ms-dotnettools.csharp"` に変更します。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/fa425a4a-c34a-2d2b-4b9f-2795de989132.png)

5. コマンドパレットから `Remote-Containers: Reopen in Container` を実行します
　　 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/4ddbcf2a-81e8-dc09-8b0d-f86fd320d6ae.png)
    - 初回は docker pull とか走るので時間がかかります。
5. しばらくすると、コンテナーが立ち上がって VS Code のリモート開発機能でつながった状態になります
6. ターミナルで `dotnet -version` とすると以下のような結果になるはずです。

   ```
   root@7d5755714aa7:/workspaces/VSCodeCSharp# dotnet --version
   3.1.100
   ```

7. ターミナルで `dotnet new console -o HelloWorld` と打ち込んでプロジェクトを生成します。
8. ターミナルで `code -r HelloWorld` を入力して HelloWorld フォルダーを開きます。
9. コマンドパレットから `.NET: Generate Assets for Build and Debug` を実行するとデバッグやビルドに必要な `tasks.json` や `launch.json` が追加されます。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/f7b40561-dec0-2fac-6ffe-12b4435e7ebc.png)
10. この状態で、F5 を押すとデバッグできます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/fe7c63af-a77b-43cb-4455-34304e5c412a.png)

後は、C# を勉強するだけ！参考サイトは公式と、鉄板のサイトとしては岩永さんのサイトがあります。

- [C# 関連のドキュメント](https://docs.microsoft.com/ja-jp/dotnet/csharp/)
- [C# によるプログラミング入門](https://ufcpp.net/study/csharp/)

この他にも Microsoft Learn という自己学習用のサイトにも C# のコースがあります。

- [C# のラーニングパス](https://docs.microsoft.com/ja-jp/learn/browse/?term=C%23&resource_type=learning%20path)

この Microsoft Learn の C# のラーニングパスの何処かに変数宣言での var は使うな的なことが書いてありますが、個人的には var 使う派なので、そこは許せない。（個人の感想）

## Web アプリもいけます

このコンテナ上で Web アプリの開発とデバッグも行けます。試しに ASP.NET Core Razor Pages でやってみましょう。
コンテナの作業フォルダーのルートに戻って以下のコマンドを実行します。

```
# dotnet new webapp -o HelloRazor
```

そして `code -r HelloRazor` コマンドでフォルダーを開きましょう。コンソールの時と同じ手順で `tasks.json` や `launch.json` を追加します。そして、F5 で実行すると自動でポートフォワーディングの設定まで追加してくれて、ホストマシン側のブラウザーでコンテナー内の Web アプリが開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/a192dbc3-5257-e07f-f143-a650717c1f39.png)

## まとめ

Visual Studio Code のリモート開発機能を使えばサクッと C# を始めることが出来ます。
とりあえず自前環境に .NET Core SDK は入れたくないけど、C# ちょっと触ってみたいなという人向けの 1 つの選択肢としてどうぞ！