読者です 読者をやめる 読者になる 読者になる

くうと徒然なるままに

Thank you for watching !!

OZCode の Meetup が名古屋で開催されます。ぜひ、参加してください!

C#

なんか、共同オーガナイザーになってたので宣伝します。

OzCode とは

Visual Studio のすごい拡張機能です。

OzCodeはVisual Studioのデバッガ機能を強化する拡張機能です。特徴的でわかりやすく機能を絞っているので、R#とはまた違う位置づけで良い製品だと思います。

OzCodeでかゆいところに手が届くデバッグを – kekyoの丼 より引用

公式サイト

oz-code.com

イベントページ

www.meetup.com

Xamarin.UITest で Switch コントロールをテストする方法

Xamarin Xamarin.UITest

Switch の現在の状態を取得する方法

以下のように、書けばいい感じ。 ポイントは、 Invoke メソッドを使い、 「c.Marked(“/AutomationID/”) メソッドで絞りこんだオブジェクトは、 Switch コントロールだろうなー」
って、想像して、 iSChecked メソッドを呼んでいる点です。

_app.Query (c => c.Marked("/*AutomationID*/").Invoke ("isChecked").Value<bool> ()).First ();

Switch の状態を変更する方法

以下のように、IApp の Tap メソッドを Switch コントロールに対して呼び出してあげればおkです。

_app.Tap(query => query.Marked(/*AutomationID*/));

参考サイト

forums.xamarin.com

「TVで特集された!」ハッカソンを 起業体験イベントと比較(HACK-CHU, スタートアップウィークエンド豊橋)して振り返る #hackchu #swtoyohashi

日記

このブログは、将来就活の時とかに見直すように書かれています。冗長な記述が多いかもしれないです。
下の目次だけ見てもなんとなく伝わるように書いてあるので、もくじを読むことをお勧めします。

ハッカソンについて

参加しようとした動機・ハッカソンでの目標

ハッカソンというものをよくわからなかった

ハッカソンとはTwitter や インターネットで聞いたことはありましたが、実際に参加したことがありませんでした。そこで、いつか参加して見たいなと考えていたところへ、「中京テレビがハッカソンをする!」しかも、「名古屋でやる」という情報が入って来たので、参加してみることにしました。

チームプレイした経験がなかった

基本的に、ガチでチームで開発するという経験が少なかったので、やってみたかったです。
チームでやるのと個人でやるのでは色々(コミュニケーションとか)大変なことがでて来そうだなと思うけど、やったことがないから、わからないみたいなのが嫌だった。

技術イケメンと知り合いたい

ハッカソンでは、ある一定以上の技術力・デザイン力 … etc を持っている人がほとんどだと思います。
そんな人と仲良くなれる場として活用できたらと参加しました。 実際、某大学の人や大手企業で 働いている人と交流することができました。
技術イケメンと話すのは、いい刺激になる!

アイディアソンでやったこと

知らない人とアイスブレイク

ハッカソン自体は、チームで申し込んでいました。しかし、会場に着いたら、同じチームの人と同じテーブルに座ってはいけないと言われ。強制的にばらけさせられました。その結果、知っている人が (運営側の意向としては) 0 な状況になりました。 しかし、隣のテーブルとかをみると知っている人が相当いた気します。

イベントが開始後は、テーブルで座ったチームメンバー(仮)と簡単な自己紹介をしました。
チームメンバー(仮)は4人でした。初老の男性1人、中年の女性1人、中学生1人、自分 といった感じでした。

アイスブレイクは Mashup Award のすごい人がファシリエーターをしてくれたので、いろいろ楽しくできて、いい感じでした。

アイスブレイクでは、最初に、自分家の間取り図を紙に書いてチーム内プレゼンをするというものをしました。
画力がない自分の力を思い知らされました。。。

2つ目のアイスブレイクでは、3つの立場、3つの時間を想像して、することを書き出しました。

3つの立場

  • 子供
  • 自分
  • 大人

3つの時間

聞いているといろいろ出てきそうですが、意外に出てこないものです。チーム内の年齢がばらけていたため、いろいろな意見を見ることができて楽しかったです。

その次が、ハッカソンのタイトルが「生活を豊かにする」だったので、生活の枕詞を書き出すという作業をしました。

アイスブレイクの最後に、2つ目のアイスブレイクで出した単語2個と3つ目のアイスブレイクで出てきた単語を組み合わせたアイディアを4つ考えるということをしました。

ハッカソンに慣れていそうなほかの方はささっとアイディアをだしていましたが、自分は3つしか出せれませんでした。。。しかも、そのうち2つは適当なアイディアを出した感じでした。

アイディアを考える時間が終わったら、チーム内で自分の出したアイディアについてのプレゼンを行いました。
「その日の摂取したカロリーに合わせて、ウォーキングコースを選んでくれる」というアイディアは面白いし、実際ほしいと感じました。

アイスブレイクの最後に アイディア品評会

そのうち1つアイディアを選び、紙に書き出しました。

自分の考えたアイディアは、彼女と自分の予定で空いているところにデートの予定を勝手に入れてくれるサービスを思いつきました。 いい感じのコースやお店も選んでくれるって感じでした。

f:id:kuxumarin:20170321163146j:plain

そのあと、ほかの人のアイディアを見て、いいアイディアに星印をかくという時間になりました。 今度は、ハッカソンに参加している人全体のアイディアを見ました。 Hololens を使ったアイディアや ペッパー君を使ったアイディアが多い印象でした。

ちなみに、自分のアイディアは10個ぐらい星がついていました。まぁまぁな数かな。。。

アイディア品評会が終わったら、星の数が多かった人のアイディアが全体の前でプレゼンしてました。 自分は、そんなに多くなかったので、前に出ることはできませんでした。

高評価なアイディアと希望者は ミニプレゼン

しかし、そのあとに、希望者もアイディアを発表できるということなので、当然しました。

たぶん、ここで発表したのは運命を変えるぐらいの決断だったと、後になってから考えます。

チームメンバーとの出会い

ミニプレゼンの後は、チーム作りでした。 

似ているアイディアだから一緒になろうと言ってきた親子がいたので、同じチームになりました。 また、事前に一緒のチームになろうと言っていた人も呼んで合計で7人のチームになりました。

エンジニア6人とデザイナー1人という開発特化なチーム構成でした。 この選択は後から考えても、よかったと思います。

決勝進出者を決めるプレゼンタイム

お昼ごはんを挟み、アイディアソンの通過者(=決勝進出者)を決めるプレゼンの計画を練りました。

知らない人とチームを組んだということで、自己紹介から始まり、お互いの思っていることを言い合いました。

彼女をターゲットにしたものより、親をターゲットにした方がいいだろうということで、アイディアにおける対象を変えたりしました。 また、テレビ局が主催するハッカソンなので、テレビをうまくアイディアに取り込めたらいいなと考えていました。

プレゼンの様子

20チーム中8チームしか決勝に進めないということで、なんとかがんばりました。

まぁ、その結果アイディアソンを通過し、無事にハッカソンに進めました。

アイディアソンでのコツは、技術的にできるかは、頭から置いといてとりあえず、言っとく!ってのが重要かなと思いました。

ハッカソンでしたこと

ハッカソン1日目

全体なシステム構成図の作成

ハッカソンでゴールへの筋道となるシステム構成図の作成を最初にしました。 ぶっちゃけ、システム構成図を作るのは初めてだったのですが、なんとかみれそうなものが出来上がりました。

ハッカソンでは、企業が支援していて、企業の提供しているサービスを利用すると企業賞がもらえるかも!ということで、賞賛企業の提供しているサービスをたくさん利用するような構成にしました。

以下の通りになっています。

data baseに Kintone を利用しているのが特徴的かな?あと、データベース間が DataSpider を利用しました。

私たちの作るもの

作ったものは、父親の家族内での株をあげるもの

女性はテレビでやっていた場所・お店へ行けたらいいな!と考えるものです。(アンケート済み) そこで、家族が見たテレビでやっていたお店や場所を父親が知って、家族旅行を計画するときのアイディアにしたらいいんじゃないか?というアイディアです。

技術的な面から見ると、

  1. 赤外線センサーを使い、テレビのリモコンを受信する
  2. リモコンの情報を DB に送り、保存する
  3. 定期的に、DBに保存しているリモコンの情報をもとに、Twitter、番組公式ウェブサイトの情報を取得し、DB に保存する
  4. アプリからその情報を見れるようにする

Cognitive Service の導入

自分が担当?した箇所は、主なものに Cognitiver Service を利用するためのあれこれをしたことです。 Cognitiver Service とは、 Microsoft さんの提供している AI とかを利用した、便利サービスです。たとえば、画像検索、機械学習、顔認証、顔解析など多岐にわたります。

当日は、Microsoftのテクニカルエバンジェリストの大森さんがサポートスタッフ?として来ていました。そこで、いろいろ聞いて実装していきました。

例えば、LUIS(Language Unserstanding Intelligence Service) です。これは、所謂機械学習と言われるもので、 ウェブサイトのテキスト列から住所などの情報を取得しようとしていました。

また、Twitterとの接続の辺もやりました。ツイート情報を取得して Json にして返すという処理をしました。工夫点は、ツイート情報の抽出条件が変わってもすぐに対応できるような形にしたところです。 実際、最後の 30分ぐらいの時に 「やっぱ RTは除いて!」 「特定のハッシュタグは除いて!」ときましたが、2分ぐらいで設定を変更することができました。

また、 Azure Function の コードも NodeJS で 一部書きました。

サーバーサイドの仕組みの大幅変更

正直、 DataSpider であれこれするのは、SafariChrome で動かないからつらいということで、大幅なサーバーサイドの仕様変更をしました。

Azure FunctionsLogic Apps を利用する感じにしました。ただ、 ハードウェア(Mesh) からデータを受信する部分は、 DataSpider を使いました。

以下がシステム図となっています。

f:id:kuxumarin:20170321170857p:plain

f:id:kuxumarin:20170321170955j:plain

ハッカソン最終日

ハッカソンは徹夜でやる人もいたかもしれませんが、自分たちのところは十分な睡眠時間を確保しながら進めていきました。 まぁ、自分は、Azure でちょっと遊んでいたので朝早くから起きていましたが(笑)

プレゼン

プレゼンは、まぁ、普通に終わった感じですね… いつも(NGK とか NL 名古屋)みたいに、刺激的なプレゼンをしたかった …

最終プレゼン資料

ハッカソンで得た学び・結果

日本マイクロソフト 賞 を受賞

www.instagram.com

表に出しやすい成果としては、これでしょう。

Microsoft Student Partners として、これを受け取らないわけには行けなかった気もしますが(笑)

景品は日本マイクロソフト株式会社の社長さんの本と De:code 鞄でした。

DBも Azure で統一していれば、もっと開発がスムーズに進んで、機能を作りこめたかなと思ってます。

知らない人との共同作業は コミュニケーションが大事

事前に5人でチームを組んでいましたが、ネットで知り合った感じの人なのでほとんど知らない人状態でした。つまり、知らない人7人とチームを組み作業していました。

反省ですが、会話の量が少なかった気がします。会話をすると作業に集中できなくなるデメリットはあるのですが、仕様に対する理解を深めるための会話はもっと必要だったと思います。

プログラムの詳細な仕様について簡単に共有できる方法があるといいかなと思いました。 返り値の JSonはこうだよーみたいなのを簡単につたえたい。。。

コーディングは悪

ハッカソンは時間との勝負なのでコーディングは悪だと思いました。 コーディングしなければ、バグは出にくいし、時間取られないので。

今回、 Microsoft Azure の Azure Apps Services の Logic Apps というものを活用しました。 これは、IFTTT の進化版みたいなやつです。 Twitterからデータを引っ張ってきたり、 Cognitive Service をごにょったり、 Azure のサービスといろいろ連携できるみたいでした。たのしみ。

コーディング以外の時間も減らせれるように、 Azure Function というサーバーレスな環境を作りました。 サーバーの立ち上げは本質的じゃないので。

ノンコーディングツール・サーバーレスアーキテクチャの注意点

やっぱ、基礎的なところをしらないと使いこなすのは難しいなと。。。 いろいろ。。。

Microsoft Flow にも、 変数とか、色々な便利機能が追加されたそうなので、次回、こういう機会があれば、もっと楽になってると信じる。

ハッカソンで大変だったこと・今後ハッカソンに出るなら改善したいこと

企業賞を狙わずに、作りたい作品を作る

今回は、企業賞を狙っていたため、ハマってしまった箇所があったように思います、最初から 相性のいいサービスを組み合わせて作っていけばよかったなと。

起業イベントと比較してのハッカソン

本題です。

自分の参加した起業体験イベントについて

スタートアップウィークエンド 豊橋

先日私は、スタートアップウィークエンド豊橋というものに参加してきました。

これは、3日間で起業を体験するというイベントです。とはいえ、マーケティング調査から何なりとフルでこなす感じのガチなイベントです。

作ったサービス

私たちは、誕生日にサプライズをパッケージングして届けるというサービスを考えました。また、実際に販売し収益をあげたりしました。

自分は、商品の紹介のウェブサイトとアプリの作成をしました。 また、最終プレゼンもしました。

スタートアップウィークエンド 豊橋 の結果

初参加で優勝しました。

ハッカソンのゴールと起業体験イベントのゴールは違う

ハッカソンとスタートアップウィークエンド豊橋は目的がまず違います。

ハッカソンは、画期的なサービスの立ち上げが目的です。スタートアップウィークエンド豊橋の場合は、サービスの立ち上げより、そのサービスに需要があるか、顧客はいるのか。が重要視されます。

一番大きく違いとして現れるのは、最終プレゼンの形態だと考えています。 ハッカソンでは、作成した成果物を実際に動かすことが重要視される。 スタートアップウィークエンド豊橋では、成果物の顧客・将来性があることが重要視される。

今後の人生で役立ちそうなこと

チームで協力する

スタートアップウィークエンド豊橋が特にそうだと思うのですが、所謂、エンジニアな人だけでなく、営業やデザイナーな人と協力できてないとうまくいかないなと感じました。
まぁ、それ以外の人ともいろいろやらなければいけないんですが(笑)

知らない人と協力する

社会に出てから、知らない人と協力することが多いらしいので、その時にこの経験が生きてきそうな気がします。

期限を守るために取捨選択をする

ハッカソンで特に感じことですが、期限(3日目の夕方)までに間に合いそうにない機能は、実装を見送りました。 個人的には、残念なことでしたが、この経験ができたのもよかった。

評価する人の欲しいものを提供する

スタートアップウィークエンド豊橋で製品をつくることを重視したり、ハッカソンで需要があることをアピールしたり。

まとめ

体験するとものの見方が変わる

時間を自由に使える学生のうちに色々体験したい

プレゼント待ってます

www.amazon.co.jp

肉おごってください

おまけ

予選についての記事はこちら

kuxumarin.hatenablog.com

技術的観点からの記事はこちら

goo.gl

MA Award による記事はこちら

mashupaward.jp

ハッカソンの審査基準

Xamarin.Forms で アイコンボタンを外部フォントを使って作成する

Xamarin Xamarin.Android Xamarin.Forms Xamarin.iOS UWP アプリ

今回作るもの

アイコンがボタンになっているやつを作成します。 画像でボタンを作る場合と比べて、ベクタイメージなので、様々な解像度に対応できる利点があります。 まぁ、以下の画像を見ていただくのが速そうなので。。。

iOS

Android

UWP アプリ

外部フォントとは

iOS, Android, UWP で内蔵されているフォントの種類が違うので、今回は、外部にあるフォントを埋め込んでそれを使うことで、どのプラットフォームでもおなじフォントがつかえるようにします。
今回は、 Windows10 に標準搭載されている Segoe MDL2 Assets を使用していきます。コピーしてどこかに置いておくと扱いやすいかもしれないです。

やりかた

カスタムレンダラー

Xamarin.Forms から各プラットフォーム固有の機能をつかっていかなければいけないので、 カスタムレンダラー ってのを使っていきます。

カスタムレンダラーについては、以下のサイトが詳しいかなと

github.com

Xamarin.Forms プロジェクトでレンダラー用のクラスを作成

まずは、 Xamarin.Forms のプロジェクトで カスタムレンダラーの元となるクラスを作成していきます。
イベントとか、プロパティには特に手を加えないので、こっちは基本シンプルな感じです。
ポイントとしては、 ボタンにカスタムを加えるので、 Button クラスを継承しているところぐらいでしょうか。
自分の場合は、以下のようなクラスになりました。

CustonFontTextView.cs

using Xamarin.Forms;

namespace LTTimer.View
{
    public class CustonFontTextView : Button
    {
    }
}

Xamarin.UWP プロジェクトでレンダラー用クラスを作成

次に、 UWP アプリで実装をしていきます。

View/ 配下にコードを置きました。 また、フォントファイルを Assets/Fonts/ 配下に置きました。

ビルドアクション

  • コンテンツ

出力ディレクトリにコピー

  • コピーしない

CustonFontTextViewRenderer.cs

using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
using LTTimer.UWP.View;
using Xamarin.Forms.Platform.UWP;

// おまじない
// 第一引数に、Xamarin.Forms プロジェクト内においてあるカスタムレンダラー元のクラスを指定
// 第二引数に、Xamarin.UWP プロジェクト内においてあるカスタムレンダラー先のクラスを指定
[assembly: ExportRenderer(typeof(Xamarin.Forms.Button),typeof(CustonFontTextViewRenderer))]

namespace LTTimer.UWP.View
{
    // カスタムレンダラー元が Button クラスを継承したものなので、 ButtonRenderer を継承する
    public class CustonFontTextViewRenderer: ButtonRenderer
    {
        // ネイティブビューを作成してにゃーんする
        protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e)
        {
            base.OnElementChanged(e);

            // Button のところに設定された FontFamily を取得して、どのフォントを使うのか選択するのに使う
            // もし、設定してなかったら NullReferenceException がでちゃうから、 Null チェックしつつ取得してく
            var fontfamily = e.NewElement?.FontFamily;
            
            // 取得できてなかった時のために
            if (fontfamily != null)
            {
                var element = (Button) Control;
                // UWP は比較的簡単にかける
                element.FontFamily = new FontFamily(e.NewElement.FontFamily);
            }
        }
    }
}

Xamarin.Android プロジェクト で レンダラー用のクラスを作成

コードは View フォルダに配置しました。 Android はフォントファイルを Resource/Fonts に置く

ビルドアクション

  • AndroidAsset

出力ディレクトリにコピー

  • コピーしない

CustonFontTextViewRenderer.cs

using Android.Graphics;
using Android.Widget;
using LTTimer.Droid.View;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
using Button = Xamarin.Forms.Button;

// おまじない
// 第一引数に、Xamarin.Forms プロジェクト内においてあるカスタムレンダラー元のクラスを指定
// 第二引数に、Xamarin.UWP プロジェクト内においてあるカスタムレンダラー先のクラスを指定
[assembly:ExportRenderer(typeof(Button),typeof(CustonFontTextViewRenderer))]

namespace LTTimer.Droid.View
{
    // カスタムレンダラー元が Button クラスを継承したものなので、 ButtonRenderer を継承する
    public class CustonFontTextViewRenderer: ButtonRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e)
        {
            base.OnElementChanged(e);

            // Button のところに設定された FontFamily を取得して、どのフォントを使うのか選択するのに使う
            // もし、設定してなかったら NullReferenceException がでちゃうから、 Null チェックしつつ取得してく
            var fontFamily = e.NewElement?.FontFamily?.ToLower();
            
            if (fontFamily != null)
            {
                var label = (TextView)Control;
                // Android でLabelのフォントファミリーを設定するには、 Typeface.CreateFromAsset メソッドを使う
                // フォントサイズは特に変えたくなかったので、第二引数にもともとのフォントサイズを代入しています。
                label.Typeface = Typeface.CreateFromAsset(Context.Assets,e.NewElement.FontFamily);
            }
        }
    }
}

## Xamarin.iOS プロジェクト で レンダラー用のクラスを作成

ios は、 フォントファイルの埋め込みが少し面倒でしたにゃーんした
今回も、 View 配下にコードを配置しました。

CustonFontTextViewRenderer.cs

using LTTimer.iOS.View;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

// おまじない
// 第一引数に、Xamarin.Forms プロジェクト内においてあるカスタムレンダラー元のクラスを指定
// 第二引数に、Xamarin.UWP プロジェクト内においてあるカスタムレンダラー先のクラスを指定
[assembly:ExportRenderer(typeof(Button),typeof(CustonFontTextViewRenderer))]

namespace LTTimer.iOS.View
{
    // カスタムレンダラー元が Button クラスを継承したものなので、 ButtonRenderer を継承する
    public class CustonFontTextViewRenderer: ButtonRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
        {
            base.OnElementChanged(e);

            // Button のところに設定された FontFamily を取得して、どのフォントを使うのか選択するのに使う
            // もし、設定してなかったら NullReferenceException がでちゃうから、 Null チェックしつつ取得してく
            var fontFamily = e.NewElement?.FontFamily;
            if (fontFamily != null)
            {
                var element = Control;
                // UIFont のスタティックメソッドである、 **FromName()** を使い作成したインスタンスを 設定していく
                element.TitleLabel.Font = UIFont.FromName(fontFamily,element.TitleLabel.Font.PointSize);
            }
        }
    }
}

iOS のフォントの設定はいろいろ大変

iOS のフォントの設定等はいろいろ大変だったので別セクションにします。

いつもどうり、Xamarin.iOS のプロジェクトにフォントを追加

iOS でも、ほかのプラットフォームと同じように、 Resource/Fonts/ 配下に配置します。

ビルドアクション

  • AndroidAsset

出力ディレクトリにコピー

  • コピーしない

info.pilot へ設定の追加

Xamarin.iOS のプロジェクトにある、 info.pilot ファイルを開きます。

画面の左下にある以下のようなボタンをクリックします。

テキストボックス的なのがでてくるので、 Font Provided by application と入力します。途中で入力補完がかかるので、 それを選択します。

次に、 String と書かれた部分の右側をダブルクリックして、文字を編集できるようにします。

そこへ、 Fonts/{FontFileName} と入力します。

完成したので アプリに表示させてみる

MainPage.Xaml を開き、追記して表示していきます。 ポイントは、 OnPlatform を使い、iOS,Android,UWP で処理を切り分けているところでしょうか。

Font-Family で設定する値

iOS

フォント名、 MacFontBook でフォントを開いたときに、 PostScript名 というところの名前を入力します。

f:id:kuxumarin:20170317152223p:plain

Android

Resource フォルダを起点として、フォントファイルまでのパスを記入します。

UWP アプリ

今回使ったのは、 Windows 10 なら標準に入っているということで、 フォント名だけを入れるだけでおkです。

MainPage.xaml

<view:CustonFontTextView Text="&#xE713;">
            <view:CustonFontTextView.FontFamily>
                <OnPlatform x:TypeArguments="x:String"
                    iOS="Segoe MDL2 Assets"
                    Android="Fonts/SEGMDL2.TTF"
                    WinPhone="Segoe MDL2 Assets">
                </OnPlatform>
            </view:CustonFontTextView.FontFamily>
        </view:CustonFontTextView>

動かしてみた

iOS

Android

UWP アプリ

つらかったところ

フォントを設定しても表示されない

iOSInfo.Pilot へ設定を追加しないといけないところに気づけなくて、ハマった

パスをチェック

タイポしてると フォントファイルを取得できずに NullReferenceException が発生してアプリが落ちることがたまによくあった

再起動すればOK

最後に悩んだら、再起動すればなんとかなった。

参考記事

blog.yamamoworks.net

www.sirochro.com

https://docs.microsoft.com/ja-jp/windows/uwp/style/segoe-ui-symbol-font#a-namelayering-and-mirroringa重ね合わせとミラーリングdocs.microsoft.com

スクラム現場ガイド MeetUp 2017/01 できょんさんにおすすめな本を紹介してもらったから自分なりにまとめてみる

日記

先日、 スクラム現場ガイド MeetUp 2017/01text できょんさんにおすすめな本を紹介してもらったので、その中から、自分の中でとくに面白そうだなと思った本を書いていく。基本自分向けのメモ

初心者が読むとよさそうな本

スクラムガイド

ウェブでpdfで無料公開されている。 2016 年に 価値観 という項目が追加された。比較的抽象的に書いてある。

http://www.scrumguides.org/docs/scrumguide/v2016/2016-Scrum-Guide-Japanese.pdf

SCRUM BOOT CAMP THE books

漫画形式が多くて読みやすそう。 SCRUM BOOT CAMP は、スクラムとかの入門セミナーみたいなやつっぽい http://event.shoeisha.jp/cza/20160617event.shoeisha.jp

SCRUM BOOT CAMP THE BOOK

SCRUM BOOT CAMP THE BOOK

特によさそうな本

スクラム現場ガイド

上の2冊を読んだ後に読むのがおすすめっぽい。今回の回のタイトルに位置している本 スクラムを実践していく中でのハードルを越えるために必要なことが書いてある感じ。

スクラム現場ガイド -スクラムを始めてみたけどうまくいかない時に読む本-

スクラム現場ガイド -スクラムを始めてみたけどうまくいかない時に読む本-

エッセンシャル スクラム

厚い本。内容が多そうなので、いろいろ学んでから読むと挫折しなさそう

エッセンシャル スクラム

エッセンシャル スクラム

参考資料

speakerdeck.com

ハッカソンで #Azure を活用したら #日本Microsoft 賞をいただいた件について #hackchu

日記

ハッカソンに参加してきた

私は、ハッカソンへ参加してきた。。ハッカソンとは、炎上しているプロジェクトに投入される人を数日間疑似体験できるマゾ的イベントである(違う)。

私は、名古屋帝国で知らない人がいない放送局、「中京テレビ」

の主催する「HACK-CHU」というハッカソンに参加してきた。参加した理由は、「うえぽんさん」と言われる方にお誘いいただいたので申し込んだ。(Facebook のコメント欄で煽られたともいう)

最初は、5人チームで申し込んでいた。

Twitter で「長濱ねるちゃん推し」の仲間を集めて、チームを組んだ。エンジニア5人というバランスはあまり良くない形だった。 まあ、最終的にはエンジニア1人とデザイナー1人が加わってバランスがいい構成になったのでよかったかなと。

ハッカソンは、全体で3日かけて行われました。

1日目がアイディアソン・2、3日目がハッカソンという構成だった。 正確には、アイディアソンは予選である。予選を勝ち進まねばハッカソンには出場できないのである。

まぁ、アイディアソンでのあれこれは過去記事を参照していただければ幸いである(また書くのが面倒)

kuxumarin.hatenablog.com

アイディアソンでのアイディアは、

家族が見ているテレビ番組を取得して、その番組でやっていた内容をパパに伝えて、 パパは、その情報を元に家族旅行計画を立てて、家族内での株を上げるサービス。 (テレビで紹介されてたところへ家族旅行で行けたら最高じゃない?)

結果は、20チーム中8チームが決勝進出できる中、決勝へ進出した。

使った技術要素的なの

技術的なことを書かないとタイトル詐欺になるので、書きます。

Microsoft Azure はいいぞ

今回のハッカソンのサーバーサイドはAzure を多用した。 システム構成図的なのを見ればわかる人はわかると思う。

https://scontent-nrt1-1.xx.fbcdn.net/v/t1.0-0/s480x480/17191271_1808010316190379_909539999753251023_n.jpg?oh=e6eb18d749596abf89b1732d63f6d773&oe=596D9EF1

Azure Function はいいぞ

Azure Function は今はやりの Server Less Archtecture です。

簡単にいうと

Serverのセットアップをする必要はなく、コードを書くだけで動く!

ってサービスです。 言語は、 Node.JS を利用しました。Webエディタを利用してコーディング_デバッグをしました。
実行するごとに課金されると聞いていたのですが、 設定を変えたら実行ごとに課金されるってことはなくなったりしました。
Azure Function を使う人は初めての人だけでチャレンジしましたが、サービスを作り上げるところまで作り上げれるぐらい入りは簡単でした。

ノウハウとか注意点とか

  • Twitter からデータを取ってくるときのテストに @chomado さんのアカウントを使うといい感じ(大体の時間でTwitterしてるから)
  • デバッグの時のエラーメッセージがあまり出てくれない
  • 出力窓へ出力するためには、 context.log(“”) を利用しないといけない

Cognitive Service(LUIS 含む) はいいぞ

こちらも初めて使いましたが、 ハッカソンの1日目にサポータとしてきていただいていた 日本Microsoftエバンジェリストの 大森さんの手厚いサポートのおかげで サービスを利用するところまでいけた感じです。

利用した Cognitive Service 一覧

  • Bing Image Search API
  • LUIS (Language Understanding Intelligence Service)

Bing Image Search API とは

まぁ、名前の通り、Bing で 画像検索をかけてくれる素晴らしいサービスです。 簡単に使えた ただ、アプリのバグで 一月で使える 制限を超えてしまったので課金制限をニャーンして無理やり使えるようにしてました。。。。

LUIS とは

LUIS は機械学習を簡単に使えるようにしてくれるやつです。 初めての機械学習 でも簡単に使えました。

辛かったこと

学習データを読み込ませるときに、CSV とかでまとめて学習させたいな〜と

App Service > Logic Apps はいいぞ

Logic Apps を使いました。 Microsoft Flow の上位互換みたいな感じでしょうか。

Azure Function でやると 認証とかで面倒そうな場面でコードをシンプルにするために、 代わりに認証をして Json で返してあげるって感じで行いました。

使い方があってるかは知らないです。

Azure Web Apps はいいぞ

毎度お馴染みな Github にプッシュしたら Azure WebApps に自動反映してくれる機能を利用してウェブアプリを作りました。

http://hack-chu.azurewebsites.net/

View post on imgur.com
imgur.com

少し大変だった点は、データベースにウェブアプリから直接アクセスできないので、 代わりに DataSpider にとりにいってウェブアプリから取得して表示してました。

Kintone はいいぞ

API 提供企業に Kintone があったので利用した感じです。 主に、RDB みたいな感じで利用しました。

Azure Logic Apps からデータを投稿できるのは驚きだった。

ハードウェア要素

今回の肝かも、担当していないので詳細が間違っているかもしれないです。

前提として、家族の観ているテレビ番組を特定するために作ってあります。

機器としては以下のものになります。

まぁ、以下の画像(と一番下にあるスライド資料)を見ればなんとなくわかるかもしれない!

View post on imgur.com
imgur.com

View post on imgur.com
imgur.com

次にチャレンジしたいこと

Xamarin を使ったものを作りたい

Xamarin が個人的には好きな技術なので好きな技術を使ってハッカソンに出て観たいです!

最終プレゼン資料

ハッカソンの結果

初めて参加したハッカソンの結果は、

日本Microsoft 賞をいただきました!

https://www.facebook.com/photo.php?fbid=1808189616172449&set=a.1465186907139390.1073741826.100009442854724&type=3&theater¬if_t=like¬if_id=1489314889975170

www.instagram.com

MSP として 日本Microsoft賞 は取らなきゃいけなかった感もありますが。
とにかく自分たちの行いがある意味で認められたのかなと思うので、胸をはれるかなと思いました。

買ってください!

www.amazon.co.jp

CouldntCreateInternalSwitch って出てきて、visual studio emulator for android を起動できなかったから解決してみた。

Xamarin.Android Xamarin Visual Studio

やったこと

最終的には、新しい デバイスを追加しました。

以下のようなエラーメッセージが出て、 visual studio emulator for android を起動できませんでした。

gist.github.com

結果的には、Visual Studio Emulator for Android で新しいデバイスを追加しました

手を尽くしてもどうにもできないっぽかったのであきらめて、Visual Studio Emulator for Android に新しいデバイスを追加で解決しました。また、どうせなら、ということで、 最新の Android のemulatorにしときました。

Visual Studio Emulator for Android への新しいデバイスの追加方法

1. Visual Studioツール > Visual Studio Emulator for Android のメニューをクリック

2. Visual Studio Emulator for Android のメイン画面でデバイスを削除したり、新しく追加したり

Visual Studio Emulator for Android のメイン画面的なのが出てきました。ここで、新しくデバイスを追加したり、いろいろできます。 問題は、この画面を開いてると CPU を異常に喰うとこぐらいでしょうか。

新しいデバイスを追加してもうまく表示されてはくれません

以下の画面のように、 Visual Studio Emulator for Android を起動しようとしても、 Preparing virtual machine と出て固まってしまいました。

原因を Stack over flow でググったら、 Wifi を切れば行けるみたいなことがかいてありました。

I had the same problem. I just solve it by DESACTIVE the Wifi network card.

stackoverflow.com

まぁ、Wifi を切って さらに新しいデバイスを追加したら行けた感じです。

無事に Visual studio emulator for Android を表示することができました!