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#開発環境の構築、さらにはビルドと実行までの手順が、皆さんの煩わしさを軽減するための一助となればと思います。ではまた。

WindowsでのSSH接続とVisual Studioを活用したGitソース管理

SSH接続の設定から始まり、Visual Studioの内蔵Gitツールを使用してプロジェクトのバージョン管理を行うまでの一連のプロセスをまとめました。

前提条件

  1. WindowsにGitがインストール済み
  2. GitHubのアカウントが作成済み

公開鍵生成

GitHubssh接続するために、まずは鍵ファイルを準備します。

1. コマンドプロンプトを開く

2. ホームへ移動

 $ cd %HOMEPATH%

3. .ssh フォルダを作成しそこへ移動

 $ mkdir .ssh
    $ cd .ssh

4. 鍵生成

 $ ssh-keygen -t ecdsa -b 384 -m PEM

基本的にはEnter連打でよいです。

.ssh フォルダにid_ecdsaid_ecdsa.pubが生成されます。 ※id_ecdsaのほうは秘密鍵ですので、絶対に他の人に見られてはいけません。大切に保管しましょう。

コマンド解説

-t - キータイプを指定します。 rsa, dsa, ecdsa, ed25519 などがあります。RSAが最も一般的ですが、より短いキー長で同等のセキュリティを提供するECDSAを選択しました。

-b - キーのビット長を指定します。 ECDSAでは256ビットが一般的ですが、今回はより高いセキュリティを求めて384ビットを選択しました。

-m - キーファイルのフォーマットを指定します。 PEMか新しいOpenSSHフォーマット(デフォルト)を指定できます。互換性を考えて今回はPEMにしました。

5. 公開鍵を登録

 $ cd .ssh
    $ vi authorized_keys <--- 末尾に id_ecdsa.pub の内容を追記

サーバの~/.ssh/authorized_keysファイルに公開鍵の内容が追加されます。

6. クライアントPCからSSH接続の確認

コマンドプロンプトで以下を行う

 $ ssh git@[サーバ名]

※サーバ名が解決できない場合は、IPアドレスを使用してみてください。

以下が表示された場合はyesを入力してEnter

 Are you sure you want to continue connecting (yes/no/[fingerprint])?

ssh接続する方法は以上になります。

Gitを利用したソース管理

1. Visual Studio でソリューション作成

  1. Visual Studioでソリューション・プロジェクトを作成
  2. メニューに[Git]が出ていない場合は、[ツール] - [オプション] の ソース管理 で「現在のソース管理プラグイン」を Git に変更。

2. リモートリポジトリの作成とプッシュ

1. コマンドプロンプトで以下を実行しサーバへログイン

 $ ssh git@[サーバ名]

2. リモートリポジトリ作成

/opt/gitリポジトリを格納するディレクトリへのパスです。Windows環境であればC:/Repositoriesのようのようなパスになります。

 $ cd /opt/git 
    $ git init [リポジトリ名].git --bare --shared
    
    hint: ヒントらしきメッセージが数行表示されます
     (中略)
    Initialized empty shared Git repository in /opt/git/[リポジトリ名].git/
    
    $ ls
    -->ここに [リポジトリ名].git が表示されればOK

3. リモートリポジトリにプッシュ

  1. Visual Studioで[Git] - [Gitリポジトリの作成] を実行
  2. その他既存のリモート を選択
  3. Remote URL に以下を入力し プッシュ をクリック
 git@[サーバ名]:[リポジトリ名].git

以上でGitでのソース管理の準備は完了です。お疲れ様でした。

余談:VSSからGitへの移行とその挑戦

この記事を通じてWindows環境でのSSH接続やVisual Studioを使ったGitの操作方法をお伝えしてきましたが、実は私自身、以前まではMicrosoft Visual SourceSafe(VSS)を主に使っていました。

VSSは正直言って使いにくく、日々の作業に苦痛を感じていたんですよね。(データが消し飛んだりと地獄を見ることも多々あるし…)

自分が楽になりたいという思いから、Gitの導入を提案しました。これはそのとき用意した資料の一部です。

資料はチーム全体に向けてGitの講習会するときにも役立ちました。準備していてよかった~~

Linux環境でGitサーバーを設定する手順は後日まとめたいと思います。ではまた。