としおの読書生活

田舎に住む社会人の読書記録を綴ります。 主に小説や新書の内容紹介と感想を書きます。 読書の他にもワイン、紅茶、パソコン関係などの趣味を詰め込んだブログにしたいです。

カテゴリ:PC > Windows

3753817_s

本記事ではVisual Studioを使ってWPFの開発環境を構築する方法を紹介していきます。



Visual Studioのダウンロード


最初にVisual Studioをインストールします。

すでにインストール済みの人は読み飛ばしてもらっても大丈夫です。

Visual Studioは以下のリンクからダウンロードできます。



コミュニティ版は学生、個人利用者、オープンソース貢献者は無償で使用できるみたいです。マイクロソフトは心が広いですね。

以下の画面の赤で囲まれている部分をクリックすることでダウンロードすることができます。

キャプチャ

ダウンロードが完了したらインストーラを起動してください。

インストーラを起動したら続行をクリックします。

キャプチャ

次に.NET デスクトップ環境にチェックを入れてインストールボタンをクリックしてください。

そうするとインストールが始まります。

キャプチャ

キャプチャ

インストールが完了すると一度PCの再起動を求められるので再起動してください。

キャプチャ

再起動がしたらデスクトップからメニューを開いてVの項目にあるVisual Studio2019を起動してください。

キャプチャ

起動するとマイクロソフトアカウントでのサインインが求められるのでサインインしてください。

アカウントがない場合は、アカウントを作成してください。

キャプチャ

サインインすると配色の設定が聞かれるので好みの色に設定してVisual Studioの開始をクリックします。

キャプチャ

以下の画面が起動したらVisual Studioが起動できたためインストールは完了です。

キャプチャ



WPFプロジェクトを作成する


Visual StudioがインストールできたろことでWPFのプロジェクトを作成していきます。

以下の画面から新しいプロジェクトの作成をクリックしてください。

キャプチャ

検索ボックスにWPFと入力して、以下の画像の赤枠で囲っているWPFアプリケーションを選択して次へをクリックしてください。

Visual Basic用などと間違えないように注意してください。

キャプチャ

プロジェクト名や場所は適当なものを入力して次へをクリックしてください。今回はデフォルトのままで進みます。

キャプチャ

ターゲットフレームワークもなんでもいいのですが今回は現時点で最新の5.0を使用します。

ターゲットフレームワークが選択できたら作成をクリックしてください。

キャプチャ

以下の画面が表示されたらWPFプロジェクトの作成は完了です。

キャプチャ





Hello Worldアプリを作成する


プロジェクトが作成できたら、ボタンを押したら画面にHello Worldと表示する単純なアプリを作成します。

ここではあくまでアプリを実行することを目的とするのでコードの意味などは説明しません。

MainWindow.xamlのコードを以下に示します。

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
        <StackPanel>
            <Label x:Name="Label1" Margin="10" Height="40" Width="200" HorizontalContentAlignment="Center"/>
            <Button Content="ボタン" Height="40" Width="80" Click="Button_Click"/>
        </StackPanel>
    </Grid>
</Window>

MainWindow.xaml.csのコードを以下に示します。

using System.Windows;

namespace WpfApp1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object senderRoutedEventArgs e)
        {
            Label1.Content = "Hello World!!";
        }
    }
}

このコードを張り付けて、実行ボタンを押すとアプリが起動します。

キャプチャ

キャプチャ

ボタンをクリックすると画面中央にHello Worldと表示されます。

キャプチャ



まとめ


Visual StudioをインストールしてWPFでHello Worldアプリを作成するまで1時間ほどでできました。

関係ないですがいつの間にかホットリロード機能が付いたんですね!








先日、Windowsで初めてrobocopyコマンドを使ってファイルをコピーする機会がありました。

その際にファイルを速くコピーする方法を調べたので忘備録として記録します。



robocopyの基礎


robocopyコマンドはファイルサーバ同士の同期を目的に作られたコマンドです。

robocoyは「Roubust File Copy」の略で確実なファイルコピーという意味を持ちます。

FastCopyなどと違いWindowsに標準装備としてインストールされています。


ファイルをコピーす方法


robocopyでは以下のコマンドでファイルをコピーすることができます。

robocopy コピー元 コピー先



robocopyのオプション


robocopyのオプションはコマンドプロンプトで以下のコマンドを入力することで確認することができます。

robocopy /?

今回は、その中でも代表的なオプションをいくつか紹介します。

オプション説明
/MT[:n]n個のスレッドのマルチスレッドでコピーする。スレッドの数は1~128までの値
/MIR前回から更新のあったファイルだけコピーする。
/R:n失敗したコマンドに対してn回再試行する。
/W:n再試行と再試行の間にn秒待機時間を持たせる。
/NP進行状況を表示しない。

個人的に使ってみた感じ上記のオプションさえしっていれば基本的には困りませんでした。





ファイルを高速でコピーする


まずはオプションを変更してできる限りファイルを高速でコピーする方法を紹介します。

個人的に色々調べてみたところ以下のコマンドを使えばデフォルトでrobocopyコマンドを使うより、ファイルを速くコピーすることができました。

robocopy コピー元 コピー先 /MT:8 /MIR /R:1 /W:1 /NP

/Rや/Wオプションはデフォルト値が大きいのでかなり短くしています。

/MTオプションは環境によってチューニングが必要ですね。


今回、以下のようなディレクトリ構成で各フォルダに2KBのファイルを10000個ずつ入れて、コピーの毒度をrobocopyコマンドで計測してみました・

C:\TEST
├─1
├─10
├─2
├─3
├─4
├─5
├─6
├─7
├─8
└─9


計測結果は、24.0555624秒でした。


ちなみに上記でコピーしたフォルダにもう一度同じフォルダをコピーしてみようとしたところ、0.3133898秒で終わりました。

/MIRのオプションが有効に働いていますね。



startコマンドを使ってより早くしてみる


先ほどの計測結果よりも早くしようと思い調べてみたところ、startコマンドを使ったら早くなると書かれていたので試してみました。

一つのフォルダに対して一つのアプリケーションを起動してみます。

batファイルは以下になっています。

start robocopy C:\test\1 C:\test2\1 /MT:1 /MIR /R:1 /W:1 /NP
start robocopy C:\test\2 C:\test2\2 /MT:1 /MIR /R:1 /W:1 /NP
start robocopy C:\test\3 C:\test2\3 /MT:1 /MIR /R:1 /W:1 /NP
start robocopy C:\test\4 C:\test2\4 /MT:1 /MIR /R:1 /W:1 /NP
start robocopy C:\test\5 C:\test2\5 /MT:1 /MIR /R:1 /W:1 /NP
start robocopy C:\test\6 C:\test2\6 /MT:1 /MIR /R:1 /W:1 /NP
start robocopy C:\test\7 C:\test2\7 /MT:1 /MIR /R:1 /W:1 /NP
start robocopy C:\test\8 C:\test2\8 /MT:1 /MIR /R:1 /W:1 /NP
start robocopy C:\test\9 C:\test2\9 /MT:1 /MIR /R:1 /W:1 /NP
start robocopy C:\test\10 C\test2\10 /MT:1 /MIR /R:1 /W:1 /NP

計測結果は、24.476545でした。

あれ早くない!?スレッドの数とか調整したら早くなるのかな…。



まとめ


robocopyコマンドを使えばバックアップを速くできることが分かりました。

毎日や毎週のように短い頻度でバックアップをとっている場合、robocopyコマンドの/MIRオプションが有効に働くことも分かりました。

コピーコマンドで困った際は、ぜひrobocopyコマンドを使ってみてください。






↑このページのトップヘ