最初のインターネット接続

Lチカ、物理ボタンと続いたら、IoT の Internet 接続をやってみましょう。Raspberry Pi の場合は有線LANのコネクタがあるので、これにLANケーブルをつなげることでネットに繋げることができます。

# ブラウザを表示するサンプル

Windows IoT Core でブラウザ（WebView）
[IoT Browser Sample | Windows IoT](https://developer.microsoft.com/en-us/windows/iot/samples/iotbrowser "IoT Browser Sample | Windows IoT")

実は、ブラウザを動かすために特別なことは一切必要がありません。Raspberry Pi に HDIM 接続されたモニタがあればよいだけです。

![001.jpg](https://qiita-image-store.s3.amazonaws.com/0/32488/400421ab-9b62-2f9f-b2fd-4d1476ecd5bc.jpeg)


サンプルコードの MainPage.xaml を開くとわかりますが、UWPアプリ（Windowsストアアプリ）に WebView コントロールが貼り付けてあるだけです。UWP アプリは、Windows 10 であれば、デスクトップの PC でも Windows Mobile でも、もちろん Windows IoT Core でも、どの環境でも動くアプリが作れます。

# コードを見る

画面は、こんな風に XAML 形式で記述していきます。Visual Studio のデザイナを使って作成できます。

```xml
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.RowDefinitions>
        <RowDefinition Height="65"></RowDefinition>
        <RowDefinition Height="*"></RowDefinition>
        <RowDefinition Height="65"></RowDefinition>
    </Grid.RowDefinitions>

    <!--Address bar-->
    <ScrollViewer Grid.Row="0" HorizontalScrollBarVisibility ="Auto" VerticalScrollBarVisibility="Auto">
        <Grid >
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"></ColumnDefinition>
                <ColumnDefinition Width="10"></ColumnDefinition>
                <ColumnDefinition Width="100"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <TextBox Grid.Column="0" x:Name="Web_Address" FontSize="24" TextWrapping="Wrap" Text="http://www.bing.com" VerticalAlignment="Center" VerticalContentAlignment="Center" KeyUp="Web_Address_KeyUp"/>
            <Button Grid.Column="2" x:Name="Go_Web" Content="Go!" HorizontalAlignment="Right" VerticalAlignment="Center" Height="60" Width="100" Click="Go_Web_Click"/>
        </Grid>
    </ScrollViewer>

    <!--Web view control-->
    <WebView x:Name="webView" Grid.Row="1"/>

    <StackPanel x:Name="MessageStackPanel" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Collapsed" >
        <TextBlock x:Name="Message" FontSize="30" Text="Display message here"/>
        <Button x:Name="MessageDismiss" Content="Ok" HorizontalAlignment="Center" Click="OnMessageDismiss_Click"/>
    </StackPanel>

    <!--Favorites buttons-->
    <ScrollViewer Grid.Row="2" HorizontalAlignment="Center" HorizontalScrollBarVisibility ="Auto" VerticalScrollBarVisibility="Auto">
        <Grid >
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="120"></ColumnDefinition>
                <ColumnDefinition Width="15"></ColumnDefinition>
                <ColumnDefinition Width="120"></ColumnDefinition>
                <ColumnDefinition Width="15"></ColumnDefinition>
                <ColumnDefinition Width="120"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Button Grid.Column="0" x:Name="Go_WOD" VerticalAlignment="Center" HorizontalAlignment="Center" Height="60" Width="120" Click="Go_WOD_Click">
                <TextBlock Text="Windows on Devices" TextWrapping="Wrap"/>
            </Button>
            <Button Grid.Column="2" x:Name="Go_Hackster" Content="Hackster.io" VerticalAlignment="Center" Height="60" Width="120" Click="Go_Hackster_Click"/>
            <Button Grid.Column="4" x:Name="Go_GitHub" Content="GitHub.com" VerticalAlignment="Center" Height="60" Width="120" Click="Go_GitHub_Click"/>
        </Grid>
    </ScrollViewer>
</Grid>
```

TextBox に URL を設定する Go_WOD_Click イベントなどは、普通の UWP アプリと変わりありません。

```csharp
private void Go_Web_Click(object sender, RoutedEventArgs e)
{
    DoWebNavigate();
}


private void Web_Address_KeyUp(object sender, KeyRoutedEventArgs e)
{
    if (e.Key == Windows.System.VirtualKey.Enter)
    {
        DoWebNavigate();
    }
}

private void DoWebNavigate()
{
    DismissMessage();

    try
    {
        if (Web_Address.Text.Length > 0)
        {
            webView.Navigate(new Uri(Web_Address.Text));
        }
        else
        {
            DisplayMessage("You need to enter a web address.");
        }
    }
    catch (Exception e)
    {
        DisplayMessage("Error: " + e.Message);
    }
}
```
ブラウザに表示させる DoWebNavigate メソッド内を見ると、webView.Navigate を使っていて、他の UWP アプリと全く変わりません。

# 実行してみる

Windows IoT Core で実行したときは、こんな感じ。

![002.jpg](https://qiita-image-store.s3.amazonaws.com/0/32488/7838962f-7245-f409-e217-745dfdf54ed0.jpeg)


ローカルコンピュータのデスクトップで動かすとこんな感じです。

![003.jpg](https://qiita-image-store.s3.amazonaws.com/0/32488/64b0cd04-d706-5895-5ecd-f51514e0f21c.jpeg)


このように、GPIO ピンを使わないときは、普通の UWP アプリを作るように Windows IoT Core を利用できます。

当然 HttpClient も動くので、Web API の呼び出しも余裕でできます。