くうと徒然なるままに

ゆるふわ を志向している なごやかです。

Microsoft MVP アプリのテストを手伝ってくれるMicrosoft MVP を募集してるよー!ってお話。

主に、Microsoft MVP 向けな記事です。

Microsoft MVP 向けに Microsoft MVP アプリが存在します。

Microsoft MVP Award

Microsoft MVP Award

しかし、 現在は Android 向けアプリはリリースされていない状況です。 そこで、 Android バージョンのテスターを募集しているらしいです。

以下のツイートは Microsoft で Xamarin を担当している開発者さんのツイートです。 この方に メアドと Microsoft Number (受賞時に送られてきたメールについてる数字) をDMで送ると招待されます。(正確には、 アプリへのリンクが送られてきます。)

Power Shell で Android の Logcat をファイルに出力する

Android のログが吐かれているものに Logcat というものがあります。 詳しい説明 -> logcat コマンドライン ツール | Android Studio

ログをファイルに吐かせていろいろ調べたいということがたまによくあるのでその方法を書いていきます。

※すでに知っている方はおおいかもしれませんが。。。

環境

PS C:\Users\kuxu\Desktop\AndroidResult> pwd

Path
----
C:\Users\kuxu\Desktop\AndroidResult


PS C:\Users\kuxu\Desktop\AndroidResult> adb devices
List of devices attached
AHG771415503    device

以下のコマンドを実行すると、LogCatが実行されます。ただ、注意点として、画面上には何も表示されてないです。。。 また、Android Logcat の実行がするためには、 CTRL + C を入力してください。

adb logcat > cat ./log

まぁ、こんな感じでログの生データの出力はできます。ここから適当にフィルタをかけてあげれば、よしなに活用できるかと思います。

Xamarin.Android でデバイスの Wifi のオンオフを切り替える

Xamarin.Android (Xamarin.Forms) で開発をしていて、 Wifi のオンオフをプログラムから切り替えたい!って状況に接することがあると思います。(強制的に携帯ネットワークにせつぞくしたくなったりとか) そんなときに、 Xamarin.Android から 端末の Wifi の接続状態をコントロールしたいときのプログラムです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:text="Wifi の状態を"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView1" />
    <Button
        android:text="有効にする"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/WifiEnableButton" />
    <Button
        android:text="無効にする"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/WifiDisableButton" />
</LinearLayout>
using Android.App;
using Android.Net.Wifi;
using Android.Widget;
using Android.OS;

namespace App1
{
    [Activity(Label = "App1", MainLauncher = true)]
    public class MainActivity : Activity
    {
        private WifiManager WifiManager;

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            WifiManager = (WifiManager)ApplicationContext.GetSystemService(WifiService);

            var EnableButton = FindViewById<Button>(Resource.Id.WifiEnableButton);
            EnableButton.Click += (o, s) => EnableWifi();
            var DisableButton = FindViewById<Button>(Resource.Id.WifiDisableButton);
            DisableButton.Click += (sender, args) => DisableWifi();
        }

        private void EnableWifi()
        {
            WifiManager.SetWifiEnabled(true);
        }

        private void DisableWifi()
        {
            WifiManager.SetWifiEnabled(false);
        }
    }
}

ポイント解説

WifiManager を取得

(WifiManager)ApplicationContext.GetSystemService(WifiService);

Xamarin Live Player on iOS で Visualization Error が発生する

手元の端末で気軽に Xamarin.Forms 製アプリのプレビューを見ることができる Xamarin Live Player 、便利ですよね。

Xamarin.Forms で作成したアプリを iOS 端末でプレビューしようとしたら、エラーが発生してしまいプレビューできなかったのでその解決方法を書きます。

エラー画面

f:id:kuxumarin:20171011021412p:plain

56259 – Xamarin Live Player - IOS - Visualization Error - Exception of type 'Foundation.ModelNotImplementedException' was thrown

解決方法

雑に動かしたければ、 Xamarin.Forms のプロジェクト作成画面で SharedProject で作成すればおkみたいです。 PCL 対応版は次のリリースだそうです。 ごにょればPCLでも使えれるっぽいですが、リリースを待ったほうがよさげですね。

あ、 Mac が無くても iOS アプリを開発できるみたいな文脈で Xamarin Live Player が紹介されることがありますが原因の切り分けのために Mac がないと現実問題つらくないですか?

指定したURLの画像をBase64 してコピーするサンプル

Mainに [STAThread] をつけてください (Main で async できる世界が早く来てほしい...)

namespace ConsoleApp1
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            var ImageByte = new byte[65536];
            using (var client = new HttpClient())
            {
                Console.WriteLine("画像のURLを入力してください");
                var ImageURL = Console.ReadLine();
                ImageByte =  client.GetByteArrayAsync(ImageURL).Result;
                var base64 =  Convert.ToBase64String(ImageByte);
                Clipboard.SetText(base64);
                Console.WriteLine(base64);
            }
        }
    }
}

学生LT@4 を主催・LT登壇して来ました。

学生でも気軽に参加できる勉強会である 学生LT の第4回目を開催して来ました。 最高に楽しかったです。

今回は、 グロースエクスパートナーズ株式会社を会場としてお借りしました。ありがとうございます。 また、会場を借りる手続きや会場周りなどで助けていただいた関さんありがとうございます。

前半にもくもく会をし、後半はLT 大会という流れでした。 また、最後の懇親会では🍣と🍕を食べました。食べ終えたら、参加者みんなでマリカと Windows MR の体験会をしました。

自分は、もくもく会では、 O365 のセットアップを O365 の目代さんに教えていただきながらしてました。 また、目代さんから OneNote への熱い愛を聞いてました。 OneNote はあまり活用できていないのでこれから活用していきたいと思いました。

もくもく会を学生LTの中でするのは初の試みでしたが、グダることもなくよかったのではないかと思います。

LT 大会では、低レイヤーから上レイヤーまで様々なLT を見ることができ、これぞ 学生LT という感じでした。 目代さんの 30 分LT では、普段オフィシャルな場では話せなそうなことを聞けれました。また、聴衆者の心を掴むのがうまいと感じました。 あとは、シェル芸や TAS についてのLT すごい!

私は、ここで 「.NET Core と Xamarin と ASP.NET Core」みたいな内容を話しました。 この内容にした理由は、始まる前の雑談で .NET って Windows 限定だよねーみたいな会話をしたのでこの内容にしました(もっと早く資料を作れ定期)

Bash on WindowsMac を使い、各OS で dotnet new console とか dotnet new mvc するとできるよーとか、 ASP.NET Core は linux 対応してるから色々できるよーみたいな話をしました。

懇親会では、関さんの🍣のLT を聞きました。 技術の盗みかたについての LT なのですが、LT タイトルやLT のやり方が色々参考になりました。

懇親会で🍣を食べた後に、 持ち込みの Nintendo Switch でマリカをしました。 勉強会の会場でゲームって発想はなかったw ゲームに付き合ってくれた皆さまありがとうごさいますw あとは、 Windows MR の体験会っぽいのをしました。

自分は体験できませんでしたが、これからどんどん流行っていくものなので、欲しいですねえ。。。

当日の雰囲気

Togetter をまとめていただいたので、それを見ると時系列に開催内容を確認することができるかと思います。

togetter.com

[MSP]

.NET Conf Tokyo に参加して来ました&LTして来ました。

.NET Conf Tokyo

日本で数回行われる .NET 系の大きなイベントです。 一度行ってみたかったと思っていたのですが、機会が巡って来たので参加して来ました。

.NET Conf Tokyo では何してたの?

主に Room B (Unplugged) がセッションを聞いていました。 それ以外に、 C+B でshibayan さんの ASP.NET Core と Linux Container についての話も聞きました。 一応、LTで少し話しました。

感想

岩永さんのC# についてのセッション

このセッションは 次世代 C# についての話を聞くことができました。 C# 7.1 のバグのような仕様?だったり聞けました。

ぐらばくさんの .NET なセッション

UWP とか DesktopAppConverter を実際にしたお話を聞けました。 ぐらばくさんはTwitterでたまにRTされて流れてくるのをみたりはしていましたが、実際に見るのは初めてなのである意味興奮しました。実物は、すごいGeekみたいな雰囲気を醸し出していました。

kekyo さんの IL2C のセッション

けきょさんの話は CenterCLR で聞く機会はあったのですが、 東京でけきょさんの話を聞くのは初めてでした。 IL2CPP のC言語版のような感じでした。 特に印象に残っているのは、 IL をそのまま Cに変換していては、 Stack の同じ位置に int32 と int 64 の両方が入ってしまうかもしれないので、Stack の操作をしっかりと考えておかねばいけないというところです。 個人的に、そこは、 int 64 なサイズで確保してしまい、どっちが来ても大丈夫なようにしちゃえばいいと思いました(メモリの消費量が増える欠点はありますが、、、)

LT

最後の懇親会な時間に LTタイムがあったので立候補してみました。 話した内容は、 ASP.NET Core で API 仕様書を自動生成したいよねー!って話でした。