やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

raspbian stretch C#でじゃんけんプログラムを書いてみた

 C#や開発環境の勉強として。

成果物

f:id:ytyaru:20190201175758p:plain

着想

  • C#を勉強したい
    • かんたんなゲームを作ることで学びたい
      • かんたんといえばCUI
        • Unicodeには絵文字がたくさんあるのでグラフィックいらず
          • じゃんけんの手もある✊✋✌
            • シミュレータを作ってみよう
    • Linuxで動作するプロジェクトの作り方を学びたい
    • 単体テストについて学びたい
    • クラス設計について学びたい

 書きたいことを書けるようになりたくて。

所感

 C#開発の手順を理解できた。実際に動くコードを書けたので自信がついた。それなりに満足。

 C#は書いてて気持ちいい。JavaScriptPythonより好き。

対象環境

前回まで

 dotnetコマンドは.NETプロジェクトを作成するコマンド。.NET Coreをインストールすることで使用できる。

 C#用.NET開発環境には以下のソフトウェアがある。

ソフトウェア 説明
.NET Framework Microsoft製のWindowsでしか使えない閉鎖環境
MONO) LinuxiOSでも使える公開環境
.NET Core オープンソースな最新.NET環境
.NET Standard 仕様+API実装。全.NET環境に共通する基本API

 SDKが対応する.NET環境は以下。

SDK .NET環境
dotnet .NET Standard, .NET Core
MONO .NET Standard, .NET Framework

 プロジェクトは目的別におおよそ以下の三種類ある。

プロジェクト 目的
ClassLib ライブラリ。他のプロジェクトから参照するAPI群。
UnitTest 単体テスト。アプリの一種だがコード品質管理が目的。
App アプリケーション。CUI, GUI, Webなどの各種環境で実行する。

 SDKごとの開発可能なバイナリは以下。

SDK 開発するバイナリ 対応する.NET環境
dotnet ClassLib .NET Standard, .NET Core
dotnet NUnit .NET Core, (Winのみ.NET Frameworkも可)
dotnet Console .NET Core
dotnet Eto.Forms Winのみ可(Eto.Formsが.NET Framework依存のため)
MONO ClassLib .NET Standard, .NET Core(実行エラー), .NET Framework
MONO NUnit .NET Core(実行エラー), .NET Framework(メモリ不足で実行エラー)
MONO Console .NET Core(実行エラー), .NET Framework
MONO Eto.Forms .NET Framework

 開発するバイナリごとにおけるベストな環境は以下。

プロジェクト 環境 説明
クラスライブラリ .NET Standard .NET Standard, .NET Core, .NET Frameworkから参照できる
テスト .NET Core dotnetがあればWindows以外でも可
ConsoleApp .NET Core dotnetがあればWindows以外でも可
ConsoleApp .NET Framework MONOがあればWindows以外でも可
Eto.Forms .NET Framework MONOがあればWindows以外でも可

 開発環境とソリューションは以下のように分けること。

ソリューション 開発環境 .NET実行環境 プロジェクト
単体テスト dotnet .NET Core ClassLib, NUnit
Console Application 用 dotnet .NET Core .NET Core|ClassLib, ConsoleApp
Console Application 用 MonoDevelop .NET Framework .NET Core|ClassLib, ConsoleApp
Eto.Forms Application 用 MonoDevelop .NET Framework ClassLib, EtoApp