Paizaスキルチェック再現マニュアル~VSCodeで実現するC#プログラムテスト環境~

こんにちは!おねこなぽです。

最近、転職活動の一環としてパイザ(Paiza)のスキルチェックを積極的に利用しはじめました。プログラミングスキルの磨き方としても、これはかなり有効だと感じています。

ただ、Paizaのようなオンラインプラットフォームで直接コードを書くことは、時には非効率的に感じることも。かといって毎度プロジェクト設定に手間をかけるのも、なかなか骨の折れる作業です。

そんな小さなストレスを解消するため、今回はVisual Studio CodeVSCode)でPaizaの問題にチャレンジする際の開発環境を手早く整える方法をシェアしたいと思います。

この記事を読むことで作成できるものは以下です:


目次


事前準備

C#の開発をVisual Studio Code (VS Code) で行うためには、いくつかのコンポーネントをインストールする必要があります。以下は一般的な手順と、それに必要なリンクです。

  1. .NET SDKのインストール: C#の開発には.NET SDK(Software Development Kit)が必要です。SDKにはC#コンパイラや.NETランタイム、.NET CLIツールが含まれており、コードのコンパイルや実行に必要です。

  2. Visual Studio Codeのインストール: VS Codeは軽量で高性能なコードエディタです。多くの言語に対応しており、拡張機能を利用することでC#の開発環境としても優れています。

  3. C# 拡張機能のインストール: VS CodeC#を扱うためには、C#拡張機能をインストールする必要があります。これにより、コード補完、デバッグ、その他の言語特有の機能が利用可能になります。

これらのツールをインストールすることで、VSCode上でC#を使った開発環境が整います。 なぜVSCodeにしたかというと、やはりその使いやすさにあります。軽快に動作し、プラグインも豊富。カスタマイズも自由自在で、使いやすさを追求できるのがポイントです。

バッチファイルを使った自動化

バッチファイルによる自動化は、手間を減らし、繰り返しの作業を簡単にしてくれます。新しいプロジェクトの準備、フォルダ構造の構築、必要なファイルの配置など、すべてをワンクリックで完了させることができます。

私はCreateCSharpProject.bat という名前のバッチファイルを用意しました。これを使えば、新しいC#プロジェクトが瞬時に立ち上がります。

作業の自動化は次のようなメリットがあります:

  1. 時間の節約: 一連の操作を単一のアクションで完了させることができます。
  2. ミスの減少: 手動で行うとミスが発生しやすいですが、自動化されたプロセスは一貫性が保たれます。
  3. 容易な環境構築: 新しいデバイスや共同作業者に簡単に同じ環境を設定できます。
  4. 学習: バッチファイルを書くことで、シェルスクリプトコマンドライン操作に対する理解が深まります。

というわけで、この記事を通じて、少しでも皆さんの開発ライフが快適になるヒントを提供できれば嬉しいです。 実際のコードや具体的な設定方法については、次のセクションで詳しくご紹介します。

それでは、始めましょう!

1-テンプレートとなるファイルの準備

作業を始める前に、必要なファイルの構造を理解しておきましょう。 ここでは、プロジェクトが保存される projects フォルダと、新しいプロジェクトのためのテンプレートファイルを保持する template フォルダが中心となります。 具体的には以下のような構造になっています。

    projects/
    template/
     .vscode/
      - tasks.json
     - Program.cs
    CreateCSharpProject.bat

この構造には、プロジェクトを自動で生成するためのバッチファイルCreateCSharpProject.bat が含まれています。 そして、テンプレートフォルダにはVSCodeで必要となる設定ファイルtasks.jsonと、プロジェクトの基本となるProgram.csファイルがあります。

テンプレートファイルその1

Program.cs のテンプレートは、開発者の好みや要件によって異なります。 Paizaのスタイルに準拠したい場合は、以下のようなコードをテンプレートとして用意してください。

using System;

class Program
{
    static void Main()
    {
        // 自分の得意な言語で
        // Let's チャレンジ!!
        var line = Console.ReadLine();
        Console.WriteLine(line);
    }
}

以下は、複数の行を繰り返し処理することができるテンプレートです。お好きにアレンジしてください。

#nullable enable
using System;

class Program
{
    static void Main()
    {
        string? line;
        while ((line = Console.ReadLine()) != null)
        {
            // 'line' には 'input.txt' の一行が含まれる
            Console.WriteLine(line);
        }
    }
}
#nullable restore

テンプレートファイルその2

開発をスムーズに進めるため、ビルドと実行の工程を自動化するのが一般的です。 VSCodeでこの自動化を実現するためには、.vscode/tasks.json ファイルを適切に設定する必要があります。 このファイルは、ビルドやテストの実行など、様々なタスクを定義してVSCodeで実行するために使われます。

以下は、C#プロジェクトのビルドと入力ファイルを用いた実行を自動化するための tasks.json の例です:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build and run with input",
            "type": "shell",
            "command": "${workspaceFolder}\\run.bat",
            "group": {
            "kind": "build",
            "isDefault": true
            },
            "problemMatcher": "$msCompile",
            "presentation": {
                "reveal": "always"
            }
        }
    ]
}

この設定により、"build and run with input" というラベルのタスクを作成し、VSCodeのタスク実行機能を使って、${workspaceFolder}\\run.bat スクリプトを実行できるようになります。この run.bat スクリプトは、後述するプロジェクト作成スクリプトと連携して使用されることを想定しています。

tasks.json ファイルは、templateディレクトリの中の .vscode フォルダに配置しておくことで、新しいプロジェクトの各セットアップ時に自動的にコピーされ、すぐに使用可能な状態を作り出します。これにより、新しいプロジェクトが始まるたびにタスクのセットアップを一から行う手間を省くことができます。

2-スクリプトの作成

次に、新しいC#プロジェクトを効率良く開始するためのバッチファイルCreateCSharpProject.bat の作成手順を解説します。

バッチファイルの内容

以下に、CreateCSharpProject.bat スクリプトの基本的な構成を示します。 このスクリプトは、プロジェクトの作成から設定ファイルのコピー、開発環境の起動まで、必要なステップを全自動で実行します。

@echo off
SET /P projName=プロジェクト名を入力してください: 

REM 開発環境の基準となるディレクトリ
SET basePath=C:\Users\uzura\Documents\00_Dev\個人\training

REM テンプレートファイルの格納場所
SET templatePath=%basePath%\template

REM プロジェクトの格納場所
SET projectsPath=%basePath%\projects

REM 新規プロジェクトの格納場所
SET newProjectPath=%projectsPath%\%projName%
IF EXIST "%newProjectPath%" (
    ECHO プロジェクト "%projName%" は既に存在します。
    EXIT /B 1
)

REM プロジェクトフォルダを作成
MKDIR "%newProjectPath%"
CD /D "%newProjectPath%"

REM .NET コンソールプロジェクトの初期化
dotnet new console --name "%projName%" --output "%newProjectPath%" --force

REM テンプレートファイルのコピー
XCOPY "%templatePath%\*" "%newProjectPath%" /E /H /K /Y

REM input.txt の作成
ECHO Hello, world! > "%newProjectPath%\input.txt"

REM .vscode フォルダと設定ファイルをコピー
MKDIR "%newProjectPath%\.vscode"
XCOPY "%templatePath%\.vscode" "%newProjectPath%\.vscode\" /E /H /K /Y

REM run.bat を作成する。これを使って dotnet run にリダイレクトを適用する。
ECHO @ECHO OFF > "%newProjectPath%\run.bat"
ECHO dotnet run ^< input.txt >> "%newProjectPath%\run.bat"

REM VSCodeで新しいプロジェクトを開く
code "%newProjectPath%"

ECHO プロジェクト "%projName%" のセットアップが完了しました。
PAUSE

スクリプトの実行とプロジェクトのセットアップ

このスクリプトを実行すると、ユーザーからプロジェクト名の入力を促し、入力された名前で新しいプロジェクトディレクトリを作成します。 プロジェクトが既に存在する場合は、警告メッセージを表示し、作成プロセスを中断します。

スクリプトは、dotnet new コマンドを使って.NETコンソールアプリケーションの雛形を生成し、設定ファイルとして input.txtVSCodeのタスク設定を含む .vscode ディレクトリを新しいプロジェクトにコピーします。

最後に、VSCodeを起動して新しいプロジェクトフォルダを開き、プロジェクトの準備が完了したことをユーザーに通知します。便利になりました。

3-実践

本記事で準備したバッチファイルCreateCSharpProject.batを使用して新しいプロジェクトを作成し、実際にコードをテスト実行するまでの流れを案内します。

新しいプロジェクトの作成

  1. バッチファイルの実行
    CreateCSharpProject.batファイルをダブルクリックするか、コマンドプロンプトから実行します。
  2. プロジェクト名の入力
    指示に従ってプロジェクト名を入力します。これにより、新しいプロジェクトディレクトリが作成され、テンプレートファイルが該当フォルダ内にコピーされます。

  3. テンプレートの確認
    プロジェクトフォルダを開き、Program.cs.vscode/tasks.jsonなどのファイルが適切に配置されていることを確認します。

  4. input.txtの編集
    テストデータやサンプル入力をinput.txtファイルに挿入します。これがアプリケーションに供給される入力になります。 ※デフォルトだと「Hello, world!」が挿入されています。

プロジェクトのビルドとテスト実行

  1. VSCodeでプロジェクトを開く
    自動的に起動したVSCodeで、作成したプロジェクトがロードされているのを確認します。

  2. ビルドの実行
    Ctrl+Shift+BWindows)または Cmd+Shift+BmacOS)のショートカットを使うことで実行できます。プログラムはinput.txtから入力を読み取り、期待される出力をコンソールに表示します。

  3. 結果の確認
    コンソールに表示された出力が期待通りかどうかを確認します。

おわりに

今回共有したCreateCSharpProject.batスクリプトの作成から、VSCodeでのC#開発環境の構築、さらにはビルドと実行までの手順が、皆さんの煩わしさを軽減するための一助となればと思います。ではまた。