rksoftware

Visual Studio とか C# とかが好きです

Visual Studio の 16.4.6 がリリースされました

Visual Studio のアップデート 16.4.6 がリリースされました。

■ 更新内容

問題の解決

今回は

  • C++ のコンパイル関連の問題が 8 件
  • セキュリティに関する問題が 3 件

対策されています。

今回のアップデートはセキュリティの問題が対策されています。素早くアップデートしましょう。

■ 更新方法

Visual Studio の更新はメニューの ツール > ツールと機能を取得 で開くインストーラーから行えます。

秋葉原 C# もくもく会 #121 勉強会を開催しました

■ C# もくもく会

C# もくもく会 #121 を開催しました。

C# もくもく会 は東京の秋葉原で毎週木曜日に開催している .NET 系の勉強会です。
もくもく自習を基本とし、分からないことを教えあったり情報共有したりしている会です。 定期開催していますので、お時間のある時に遊びに来ていただければと思います。
ちょっと詰まった時、ネット上で聞くのははずかしいなぁ、という課題のできた時などにも思い出していただけると嬉しいです。
f:id:rksoftware:20200305201348j:plain

■ 今週の成果発表

今週は、もくもくの日でした。

  • Uno Platform でブログ書きました
  • Syncfusion で UI 作ってました
  • MS の公式チュートリアルやってました

ちなみにこの勉強会ですが、実は公序良俗に反しなければどのような技術を扱っても大丈夫です。そもそも C# エンジニアが C# だけしか使わないというわけではありませんし。

■初心者歓迎

このもくもく会には、入門者の方も多くご参加いただいています。 突然 C# やらなければならなくなって途方に暮れている方、何となく C# をやってきたけど改めて見直してみたい方なども大歓迎です。
入門セミナー代わりでのご参加も歓迎です。プログラミング入門者の方も是非遊びに来てください。

特に C# で課題をお持ちでなくても是非遊びに来てください。

■ 目指す勉強会スタイル

世界一敷居の低い勉強会を目指しています。

何か聞きたいことがある場合は、聞く相手を決めずに独り言のようにつぶやくと誰かが拾ってくれる

何か共有したい情報を見つけた場合も、聞く相手を決めずに独り言のようにつぶやくと誰かが拾ってくれる

そんなスタイルでやっています。

■ 次回予定

次回は 2020/03/12 に開催予定です。

C# に関心のある方、是非遊びに来てください。

Uno Platform でページを追加する (mac)

Uno Platform は Windows の Visual Studio でなら簡単にページを追加できます。
しかし、残念ながら mac では GUI でポチポチしてページを追加することはできそうにありません。

■ ポチポチできないなら

Uno Platform でアプリを作る際のソースコードはテキストなので、普通にファイルを作って編集してで追加できます。
この方法なら mac でも問題なく追加できました。
作業はプロジェクトの新規作成をしたばかりの状態から始める想定で書いています。

  1. プロジェクトのディレクトリを Finder で開く (<アプリ名>.Shared ディレクトリ)
  2. ファイル MainPage.xamlMainPage.xaml.cs をコピーして複製する
  3. 複製したファイル名を AnotherPage.xamlAnotherPage.xaml.cs などとリネームする。
  4. AnotherPage.xaml を書き換える (詳細は後述)
  5. AnotherPage.xaml.cs を書き換える (詳細は後述)
  6. <アプリ名>.Shared.projitems を書き換える (詳細は後述)

簡単ですね。

■ AnotherPage.xaml を書き換える

AnotherPage.xaml のクラス名を書き換えます。ファイルを Visual Studio Code などで開いて先頭の

<Page
    x:Class="<プロジェクト名>.MainPage"

<Page
    x:Class="<プロジェクト名>.AnotherPage"

全容は次のようになります。

<Page
    x:Class="<プロジェクト名>.AnotherPage"
    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:local="using:<プロジェクト名>"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <TextBlock
            Margin="20"
            FontSize="30"
            Text="Hello, world!" />
    </Grid>
</Page>

■ AnotherPage.xaml.cs を書き換える

AnotherPage.xaml.cs のクラス名とコンストラクタ名を書き換えます。ファイルを Visual Studio Code などで開いて終わりあたりの

    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }
    }

    public sealed partial class AnotherPage : Page
    {
        public AnotherPage()
        {
            this.InitializeComponent();
        }
    }

全容は次のようになります。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409

namespace <プロジェクト名>
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class AnotherPage : Page
    {
        public AnotherPage()
        {
            this.InitializeComponent();
        }
    }
}

■ <アプリ名>.Shared.projitems を書き換える

<アプリ名>.Shared.projitemsAnotherPage.xamlAnotherPage.xaml.cs を追加します。MainPage の真似をして増やすだけの簡単な作業です。手を入れる箇所は 2 箇所です。Visual Studio Code などで開いて

ひとつめ

    <Compile Include="$(MSBuildThisFileDirectory)MainPage.xaml.cs">
      <DependentUpon>MainPage.xaml</DependentUpon>
    </Compile>

の下に AnotherPage を追加します。

    <Compile Include="$(MSBuildThisFileDirectory)MainPage.xaml.cs">
      <DependentUpon>MainPage.xaml</DependentUpon>
    </Compile>
    <Compile Include="$(MSBuildThisFileDirectory)AnotherPage.xaml.cs">
      <DependentUpon>AnotherPage.xaml</DependentUpon>
    </Compile>

ふたつめ

    <Page Include="$(MSBuildThisFileDirectory)MainPage.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </Page>

の下に AnotherPage を追加します。

    <Page Include="$(MSBuildThisFileDirectory)MainPage.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </Page>
    <Page Include="$(MSBuildThisFileDirectory)AnotherPage.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </Page>

全容はプロジェクトで変わる箇所があり、とても重要なファイルなので省略します。あやまってコピペしてしまう結構面倒なことになり良くないので。

■ 簡単ですね

これでページが追加できました。簡単ですね。

Uno Platform で Hello world サンプルを GitHub に作りました。

■ Uno Platform で はろーわーるど

最近 Uno Platform がスゴイ注目を集めています (私調査)。
そこで先日頑張って、Uno Platform で Hello world してみました。

■ ジャパニーズ ビジネスパーソン エンジニア は忙しい

注目を集めていますが、実際に触ってみた人の比率はあまり多くはありません (私調査)。
わかります。忙しくてそこまで手が回らないものです。私もそうです。人生を捨てて触りました。

そこで、触るためのイベントでもあれば触りやすいかと思って、手順書形式で GitHub にまとめてみました。

■ 平日夜を想定

分量的には平日夜のイベントを想定して 2 時間で終わる量にしているつもりです。
昨今の風潮では、イベントごとが難しいですがもしよかったら試してみてください。

もしよくなかったらこっそり教えてください。

秋葉原 C# もくもく会 #120 勉強会を開催しました

■ C# もくもく会

C# もくもく会 #120 を開催しました。

C# もくもく会 は東京の秋葉原で毎週木曜日に開催している .NET 系の勉強会です。
もくもく自習を基本とし、分からないことを教えあったり情報共有したりしている会です。 定期開催していますので、お時間のある時に遊びに来ていただければと思います。
ちょっと詰まった時、ネット上で聞くのははずかしいなぁ、という課題のできた時などにも思い出していただけると嬉しいです。
f:id:rksoftware:20200228021048j:plain

■ 今週の成果発表

今週は、もくもくの日でした。

  • 草をはやしてました
  • チュートリアル最高です
  • Xamarin.Forms の新コントロールでスワイプスワイプしてました
  • 原稿してました。できました

ちなみにこの勉強会ですが、実は公序良俗に反しなければどのような技術を扱っても大丈夫です。そもそも C# エンジニアが C# だけしか使わないというわけではありませんし。

■初心者歓迎

このもくもく会には、入門者の方も多くご参加いただいています。 突然 C# やらなければならなくなって途方に暮れている方、何となく C# をやってきたけど改めて見直してみたい方なども大歓迎です。
入門セミナー代わりでのご参加も歓迎です。プログラミング入門者の方も是非遊びに来てください。

特に C# で課題をお持ちでなくても是非遊びに来てください。

■ 目指す勉強会スタイル

世界一敷居の低い勉強会を目指しています。

何か聞きたいことがある場合は、聞く相手を決めずに独り言のようにつぶやくと誰かが拾ってくれる

何か共有したい情報を見つけた場合も、聞く相手を決めずに独り言のようにつぶやくと誰かが拾ってくれる

そんなスタイルでやっています。

■ 次回予定

次回は 2020/03/05 に開催予定です。

C# に関心のある方、是非遊びに来てください。

Uno Platform ふたつの空白のページ

Uno Platform で遊んでいたらフシギなことに気が付きました。

■ 不思議画像

f:id:rksoftware:20200225195244j:plain

何が不思議か? 項目を上から見てみましょう!

  • 一つ目は、「 空白のページ 」。二つ目は、「 空白のページ 」。

逆にしてみましょう。

  • 二つ目は、「 空白のページ 」。一つ目は、「 空白のページ 」。

縦に並べてみます。

  • 一つ目は、「 空白のページ 」。
  • 二つ目は、「 空白のページ 」。

完全に一致 しています。

■ 違い

このふたつ、何が違うのでしょう。
生まれるファイルはどちらを選んでもそれぞれふたつ .xaml と .xaml.cs です。

上の 「空白のページ

<Page
    x:Class="UnoApp2.Shared.BlankPage1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:UnoApp2.Shared"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>

    </Grid>
</Page>
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238

namespace UnoApp2.Shared
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class BlankPage1 : Page
    {
        public BlankPage1()
        {
            this.InitializeComponent();
        }
    }
}

下の 「空白のページ

<Page
    x:Class="UnoApp2.Shared.BlankPage1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:UnoApp2.Shared"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>

    </Grid>
</Page>
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// 空白ページの項目テンプレートについては、https://go.microsoft.com/fwlink/?LinkId=234238 を参照してください

namespace UnoApp2.Shared
{
    /// <summary>
    /// それ自体で使用できる空白ページまたはフレーム内に移動できる空白ページ。
    /// </summary>
    public sealed partial class BlankPage1 : Page
    {
        public BlankPage1()
        {
            this.InitializeComponent();
        }
    }
}

■ コードは変わらない

コメントが英語か日本語かが違うだけで一致しています。コードは変わっていません。では何が変わっているのでしょう?
コードから目を話してソリューションエクスプローラーを見てみましょう。

上の 「空白のページ

下の 「空白のページ

ファイルがまとまっていたりいなかったりしています。

■ <プロジェクト名>.Shared.projitems

上下の 「 空白のページ 」 で <プロジェクト名>.Shared.projitems が僅かに変わっていました。
Visual Studio のソリューションエクスプローラーからは見えないので、Windows のエクスプローラーで確認するのがオススメです。

上の 「空白のページ

※ 一部抜粋

    <Compile Include="$(MSBuildThisFileDirectory)BlankPage1.xaml.cs">
      <DependentUpon>$fileinputname$.xaml</DependentUpon>
    </Compile>

下の 「空白のページ

※ 一部抜粋

    <Compile Include="$(MSBuildThisFileDirectory)BlankPage1.xaml.cs">
      <DependentUpon>BlankPage1.xaml</DependentUpon>
    </Compile>

■ まとめ

上の「 空白のページ 」の $fileinputname$.xamlBlankPage1.xaml に書き換えたら

ソリューションエクスプローラー上の見た目が、下の「 空白のページ 」と同じになりました。

Uno Platform で はろーわーるど 目次

Uno Platform を環境構築から C# 世界に挨拶するコードを書いて、Uno Platform を完全に理解することを目指す一連の記事です。

■ 環境構築

■ プロジェクト(ソリューション)の新規作成

■ イベント処理と画面更新

■ データバインディング

■ リスト表示と画面遷移

■ プラットフォーム毎の処理

とりあえずコードを実際に書き始めてみる準備を整えることができたと思います。