rksoftware

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

JXUG 初心者向けXamarinハンズオン にメンターとして参加してきました

先日開催された JXUG 初心者向けXamarinハンズオン にメンターとして参加してきました。

当日は大きな問題もなくそつなく進行しました。環境周りは iOS の方々で多少てこずったようでしたが、そつなく整ったようです。
参加者に対して十分な人数のメンターがいたことも良かったかもしれません。

今回も素晴らしいイベントでした。主催、スタッフ、メンターそして参加者の皆様ありがとうございました。

■ Face API

進行が良かったので、ハンズオンテキストでは宿題となっている部分まで進めることができました。
ハンズオンはその会ごとに(一番影響があるのは人数、特にメンター1人当たりの参加者の数)進行速度が変わるので、宿題を用意しておいて早く進んだ時には宿題までやってしまうのは良いですね!
今後取り入れてみたいです。

結果の一例

// パラメータ設定
const string subscriptionKey = "<SubscriptionKey>;
const string faceEndpoint = "https://westcentralus.api.cognitive.microsoft.com";
FaceAttributeType[] faceAttributes =
    { FaceAttributeType.Age, FaceAttributeType.Gender, FaceAttributeType.Emotion };

// FaceClient の準備
FaceClient faceClient = new FaceClient(
        new ApiKeyServiceClientCredentials(subscriptionKey),
        new System.Net.Http.DelegatingHandler[] { });
faceClient.Endpoint = faceEndpoint;

// API 呼び出し, 結果取得
IList<DetectedFace> faceList =
    await faceClient.Face.DetectWithUrlAsync(
        speaker.Avatar, true, false, faceAttributes);

// 結果から一件目を取り出し表示値を作成, 結果がなければ代替テキスト
var face = faceList.Select(f => f.FaceAttributes)
                   .Select(f => new { f.Age, f.Gender, Happiness = f.Emotion?.Happiness * 100d })
                   .FirstOrDefault();
string age = face?.Age.ToString() ?? "none";
string gender = face?.Gender.ToString() ?? "none";
string happiness = face?.Happiness.ToString() ?? "none";

// Alert 表示
await DisplayAlert("face", $"Age:{age}, Gender:{gender}, Happiness:{happiness}", "OK");

サンプルコードをもとに当日皆で書いたコードをもとにしています。

■ Xamarin 学習のサポート

JXUG イベントでも他のイベントでも Xamarin 学習をサポートは継続して活動して行くつもりです。
是非 connpass 等チェックしてみてください。