エンジニアの技術的独り言

技術的な独り言を書いています。独り言なのでどうでもいいことです。でも他の人の参考になればとっても嬉しいです。

de:code 2016 Day2のメモ

 これから始める Xamarin ~環境構築から iOS/Android/UWP アプリのビルドまで~

朝一のセッションなのに立ち見でした。

完全に「ちょまどさん」を見に来た人でいっぱいの雰囲気。

XamarinとNativeの違いを分かりやすく解説してくれた。

SlackもXamarinで作られてるらしい。

日本酒を学んで、自分好みのお酒と出会える日本酒アプリSakenomy

も紹介されていた。

早くベースクラスライブラリを共通化して欲しいですね。

(今は.NET Frameworkと.NetCoreとWindowsだったかが別になっている)

 
Programmable Video ~Azure Media Services でのビデオ サービス開発~

AzureMediaServicesExplorerToolというオープンソースツールで色々な機能が確認できるらしい。

Assetを作る=暗号化してAzureにアップロード

基本的にマルチデバイス対応してくれる。

LiveStreamingにも対応している。

Azure Media Analyticsには機械学習が仕込んであるので動画の検索が可能になる。

  • Indexer 話しているものからテキストを生成
  • Face Detection 人の顔の取得
  • Emotion Detection 感情の推測
  • Video Summarization ビデオのサマリを作成

プレビュー版ではOCRも付いている。

 
りんなを徹底解剖。"Rinna Conversation Services" を支える自然言語処理アルゴリズム

4月にSharpインターンしたりんな。

1日で5年分のSharpのツイート数を超えたらしい。

使われている技術

・Learning to Rank
 検索エンジンのランキングのような仕組み
・Word to Vector
 200次元で単語の近さを表現
・Term frequency Inverse Document Frequenxy
 単語の出現頻度や逆出現頻度 情報検索や文章要約に利用される
ニューラルネットワーク
 自然言語の学習に応用

 りんなのパフォーマンスを出すのに結構なインスタンス数は使ってるらしい。

DSSM(2つの文字列の類似度を学習するモデル)とRNN(再帰ニューラルネットワーク)の組み合わせ。

類似度の差を最大にすることで感動を与えるという考え方。

単純に言葉を分解してベクトル化しているだけではない。

→左から右への言葉の流れによって重み付けしている(右から左も同様にやっているらしい→日本語は動詞に重みがあるから)

辞書があるわけではなく、りんなはちゃんと単語から文章を作成しているというところが結構な衝撃だった。

あとは、ビジネスへの活用のテストとして、Rinna Conversation Serviceが限定公開されていた。

www.itmedia.co.jp

 
Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~

全文検索でやられる転置インデックスの仕組み。

サジェスト機能も簡単につけられる。

文字フィルタ→トークナイザ→トークンフィルタという3レイヤ構造。

基盤はLuceneCoreが使われている。

自動的に関連性をもとにソートされる。

ただし、orderbyを指定すると関連性は考慮されない。

 

まとめ

  • りんなすごい
  • Cognitive ServiceのAPIがいろいろすごいので使ってみたい
  • Media Serviceがいたれりつくせりで動画配信基盤を簡単に作れそう

de:code 2016 Day1のメモ

忘備録的なものです。

 

キーノート

各カテゴリごとにデモがあったりCEOの話があったり、かなり豪華でした。

個人的には、キーノートのビデオに出演させて頂いたことがかなりの驚きですが、

これによってカラダメディカのDevOpsの取り組みが伝わればいいなと思います。

 

channel9.msdn.com

1:45:30あたりから私が出てます。

 

各セッションでの面白かったポイント

Pepper × Microsoft Azure 協業の舞台裏 ~未来の商品棚から広がる世界~

  • pepper事業をMicrosoftソフトバンクが協業するっていうニュースを見落としていたので衝撃だった
  • AzureMLは再学習も簡単(エンドポイント追加してリソース更新するだけ)

.NET言語 (C#) と .NET コンパライ プラットフォーム (Roslyn) 最新情報

  • Roslynはコンパイラプラットフォーム
  • ソースコードコンパイル時に発生する情報をAPIとして提供する
  • C#7.0の機能について
  •  0b1などのバイナリ変数を宣言できる
  •  100_000_000という数字のセパレートが可能
  •  ローカルファンクションの設定が可能
  •  ref で参照戻り値
  •  タプル型
  •  PatternMatching

Bot Framework & Cognitive Services ~自動応答ソリューション開発に挑戦~

  • BotFramewok
  • ConnectorとSDKとDirectoryの3つに分かれている
  • C# or Node.jsで書ける
  • emulatorで実行可能

このセッションは特にジニアスさんの話が面白かった。

Cognitive ServiceのAPIの話も結構あってEmotion API(画像から感情を推測)やFace API(画像から性別や年齢を推測)はかなり面白そうで使ってみようと思った。

azure.microsoft.com

マイクロソフト最新テクノロジと魅力あふれる未来像

西脇さんはやっぱりプレゼンがうまい。プレゼンうまくなりたい。

また、デモがたくさんあって面白かった。

DMMのロボットのパルミくん
 ⇒会話で色々できるoffcie365の予定やexcel onlineと連携したり
テスラという電気自動車
 ⇒モバイルのアプリはXamarinで動いている
りんな→アシストではなくコミュニケーション
 ⇒テレビ放送の内容とチャンネルを分析していたりする(放送内容の詳しい内容まで分析してるから結構すごい)

 

  以上。

DevOpsハッカソン ~第二回~

昨年実施したDevOpsハッカソンの第二回を実施しました。(3日間)

 

今回もMicrosoft DevOpsエバンジェリストの牛尾さんにご協力頂きました!!

しかも今回は、Azureのエバンジェリストの佐藤直生さんも来ていただきました。

佐藤さんに聞けばなんでも解決する感がハンパなかった。。。

ありがとうございました。

 

■やったこと/できた成果(おおまかな)

  • VSTS(Visual Studio Team Services)から現状のソースについてデプロイ自動化ができた
    ⇒今までオフショアメンバーにお願いしていたリリース作業(リハーサル作業)が自動化できたので、待ちなどのリードタイムが削減できた!!!
    デプロイ自動化はCloudServiceでもWebAppsでも簡単に作成できました。
    早く本運用にのせたい。f:id:takkuuuuun:20160324211733p:plain


  • VSTSのWORK部分のカスタマイズができた。(by POのおかげ)
    絶賛PO作成中ですw

    見やすくなって素敵ですね。
    POいわくバーンダウンのところがまだ納得いっていない模様。
    f:id:takkuuuuun:20160324213604p:plain


  • 仮説検証フェーズのValueStreamMappingを書いて課題解決
    ⇒前回も実施したValueStreamMapping手法を使いました。
    マジでおススメな手法です。
    課題がいくつも浮き彫りになって良かった。あと、BOやデザイナーも巻き込めたのが良いポイントでした。

    f:id:takkuuuuun:20160324212654p:plain


  • フィードバック系ツールを使ってみた
    Feed Back Clientを使ってみた
    ⇒音声付きの動画をとってVSTSのタスクやバグと紐づけたりできるのがかなり素敵。
    しかしChrome ExtensionのExploratory Testingの方がもっと素敵
    ⇒キャプチャ撮ってそのまま文字や線が書き込めて、VSTSのタスクやバグとして取り込めるのが高機能すぎるました。今後絶対使う!!!

 

■気づき

Be Lazy!!!

牛尾さんから得た気づきです。

いかに怠けて最大限のValueを出すかが重要。今日から実践しよう。

このブログもBe Lazy!!!

 

■今後の課題

今回作ったリリースの自動化やVSTSのカスタマイズなどを本運用にのせてどんどんリリースしていける体質を早く作りたい!

Developer Summit 2016 (デブサミ)に行ってきた 〜2日目〜

■前置き

気になったセッションの感想など雑多な感じに書いています。(一部のセッションだけ)

あくまで個人の意見です。

■強いチームの作り方

【資料公開】強いチームの作り方(デブサミ2016版) | Ryuzee.com

今回のデブサミの中で一番共感できたし聞きに行って良かったと思った話。

自分たちのチームへの改善のヒントがいくつも出てきました。

一部を抜粋して紹介します。

 

フィードバックサイクルは製品だけではなく、組織運営も同じ

→強いチームの特徴は「続けられること」

 

多数決はよくない

→少数派が何回も重なる人はどうしても反感を持ってしまう(ハンターハンター3巻より)

→そういう時は5本指を使うと良い

  • 0 = この時点で決定を行うこと自体に反対
  • 1 = 重大な問題がある。そのまま決定したらアクションを起こす
  • 2 = 問題がある。もっと話し合いをしたい
  • 3 = 良いと思わないが自分はそれでも構わない
  • 4 = 良いので協力する
  • 5 = 素晴らしいので自分が実行のリーダーになっても良い

この考え方は結構使える気がしたので、自分のチームでも採用してみようと思った。

 

チームのスキルを見える化すると良い

ただし、それを評価に使うことだけはやっちゃダメ!

その時点で見える化した効果がなくなる(ちゃんとできなくなる)

 

組織構造はアーキテクチャに影響を与える

→マイクロサービスアーキテクチャなどは特にそんな感じ

 

おまけ

発表の後に「オフショアとのチームの作り方」について相談にいったが、やっぱりうまくやるためには、「同じ場所で働いてみる」or「ブラックボックス化して扱う」のどちらかに振り切った方が良いとのこと。

確かに自分のこの5ヶ月ほどのオフショア経験から考えると納得がいく。

 

■鳥肌必至のニューラルネットワークによる近未来の画像認識技術を体験し、IoTの知られざるパワーを知る

www.slideshare.net

デモ中心で面白かった。

TensorFlowとIMAGENETを使って簡単に画像認識を作った話。

また、NeutralTalk2に関しては、iPhoneのカメラでうつったものをリアルタイムに文章で説明するという動画が紹介されていてすごかった。

日本オラクルの方の話なので、もちろんOracleクラウドの紹介があったわけだが、感心したのは、下記の2点。

特に二つ目は、AWSやAzureがまだ手を出していない部分ですねー。
そのうち他のクラウドも同じことが実現されるでしょうか。

 

■そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトOSSごった煮 DevOps 衝撃デモシリーズ!

自分が参加したセッションの中では一番盛り上がってました。牛尾さんが冒頭で「Are you ready?」と絶叫してましたw

デモの内容も面白かったです。

複数あったデモの中でネタ的に面白かったのが、MineCraftでDockerを制御してたやつ。

https://raw.githubusercontent.com/docker/dockercraft/master/docs/img/dockercraft.gif

 

github.com

 

以上。

 

Developer Summit 2016 (デブサミ)に行ってきた 〜1日目〜

■前置き

気になったセッションの感想など雑多な感じに書いています。(一部のセッションだけ)

あくまで個人の意見です。

■ブース

気になったのは、Microsoftのブースでdecodeのチケットがあたる抽選をやっていたこと。

もちろんハズレましたが。。。

代わりにdecodeTシャツをもらいました。(ノートなど複数から選べます。)

 

■エンジニアなら使える深層学習 ~ TensorFlowやDataRobotで機械学習がもっと身近に

Datarobotの人の話。

Machine Learning Software - DataRobot

簡単なデモで使われてたけど、かなり便利そう。

ポチっで最適なアルゴリズムまで検証してくれるとか最強すぎる。

今度使ってみよ。

 

また、以下の記事が紹介されていました。

codezine.jp

要点としては、Googleの画像認識技術が(しかも人以上の精度)ライブラリとして提供されたということはすごいことだってこと。

後は「深層学習とは」という内容。

らしい。概念的な話だったけどなかなか面白かった。

 

■大規模 SPA ( Single Page Application ) を TypeScript と AngularJS を駆使して5ヶ月で作った話

リクルートの人の話。

英語サプリというアプリの話。

techブログの宣伝もしていた。

NET BIZ DIV. TECH BLOG – リクルートマーケティングパートナーズのデザイナー、エンジニア、スクラムマスターたちが発信する Web 開発情報メディア

軽くバズったトイレのセンサーの記事があったのもこのブログ。この記事面白かったな。そしてうちの会社でもやりたいという話は何度も出ていたくらいだから軽くバズったんだろうな。

tech.recruit-mp.co.jp

  •  AngularJSはフルスタックで大規模で学習コストが高いが代償を払う価値が有る
  • TypeScriptに救われた
  • SunlimeTextからInteliJを使うようになった
  • AngularJSを使うなら強力なルーティング機能があるUI Routerを一緒に使うと良い
  • 細かい内容は全て上記ブログに公開済み

プロダクトに適用するときは参考にしよう。 

Yahoo! JAPANiOS アプリ Swift 対応について

yahooショッピングアプリ

swiftの大きなメリット

安全なコード + 関数型/プロトコル指向

段階的に導入した

→実際にクラッシュ率が半減したらしい

ヤフオクアプリ

RxSwiftによるMVVMモデルを採用

Rx系は良いらしい

objc2swiftを自分たちで作って進めた

UIフレームワークがPure-Swift化されないと厳しいこともある

これもなかなか面白かった

 

Yahoo! JAPANを支えるデータテクノロジー 〜機械学習クラウド分散システム処理モデル〜

ヤフオクの中で機械学習をどう使っているか

出品画像とカテゴリの差異を予測

ただし、機械学習がやるのは差異が低い順に並べるまでで実際に判断するのは人

→え、なんで?

と思ったけど、人は量とスピードに限界があって機械は未知のパターンや100%の精度が難しいことを考えれば確かになと思う。

課題

学習データを高い制度で大量、継続的に増加させる仕組み

これもなかなか面白かった。

自分がやってるサービスでも活かせるかも!!

 

以上。

Azure Machine Learningのハンズオンセミナー ( 機械学習とは 編 )

Azure Machine Learningのハンズオンセミナーに参加してきたので、機会学習についてとか感想とかを書こうと思います。今回は、機会学習とはっていうところについて書こうと思います。よりハンズオンに近い部分は次回書きます。

 

機械学習について

機械学習とは

「人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のこと」です。

勘違いしないポイントとしては、判定基準などを人間が決めるのではない、ということです。判定基準自身をコンピュータが決めます。

その元になるのが、インプットされるデータやアルゴリズムなどです。

 

機械学習の実例

Twitterの反応分析(P/N判定)やおすすめユーザー

Amazonのリコメンド

エレベータの異常検知

サーバーの故障検知(Azureでも使っているみたいです)

 

・分析手法

f:id:takkuuuuun:20160108192537p:plain

上図のような概念図らしい。

それぞれを解説すると下記の通りです。

 

教師あり学習

⇒訓練データ(人間が事前に判断したデータ)を元に分析器を作成する

⇒つまり答えのある問題集を解いて学習する

 

教師なし学習

⇒データ群だけ与えられて学習する

⇒答えのない問題集を必死に考えて解く

 

回帰分析

⇒与えられたデータから数値を予測するもの

⇒渋谷1LDKだったら15万くらいかなーみたいな予想

 

統計分類

⇒与えられたデータから適切なラベルを予測するもの

⇒こんな感じの間取り図でしっかりした作りだったら分譲物件かなーみたいな予想

 

クラスタリング

⇒値の類似性をもとにして与えられたデータを複数グループに分ける

⇒身長/体重をもとに肥満/ふつう/やせになんとなく分けるみたいな

 

ただし、上記は主な手法であってAzureではその他にも色々できるらしい!!!

 

■面白い事例の紹介

Azureの機能でMicrosoftの人が3時間ほどで作ったというサービスの紹介がありました。

実際にやってみて実年齢 -1歳だったのでなかなかの精度なんじゃないでしょうかw

how-old.net

 

■自分が誤解していたところ/知らなかったところ

・リコメンドエンジンってなんでもリコメンドできるんでしょ?

⇒ 数値的な解析はAzureでも簡単にできますが、テキスト情報の解析はハードルが高いです。特に日本語だとすんなりできないので、自分である程度辞書なり、重みづけなりを考えたうえでアルゴリズムを駆使して作る必要があります。一応テキストをハッシュ化して解析はできるが日本語ではうまくいかないらしい。

・AzureとAWSのMachineLearningってどう違うの?

AWSの方が勝手にやってくれる感じ。Azureの方がアルゴリズムや設定などのカスタマイズが可能。

・お金かかります?(執筆時点のデータ)

ワークスペース使用料(約1000円/月)+実行時間で課金されます。実行時間はデータ量に比例するのでなんとも言えないです。実行時間での課金は約100円/時間です。

Azure内で作った分析器をポチってAPIとして使用することもできます!!ただ、これも実行時間に含まれるてこちらは約200円/時間、どう使っていくかの設計が重要だと思われます。

 

 

余力があれば、実際のAzure Machine Learningのハンズオンに近しい部分について書きたいとは思っています。。。

DevOpsハッカソン (Power BI編)

今回は「ビジネスの可視化」(Power BI) について書きます。(作業時間にしておよそ二日間)

■目的

サービスの利用状況などをグラフィカルに見える化することで、ビジネスを加速させる。

■Power BIとは

様々なデータソースから取得したデータを可視化するためのツール

かなり強力です!!!

だいたいどこからでもデータを取ってこれます。

Azureはもちろん、Google Analyticsやエクセルファイル、Webページからも取って来れるのでだいたいのことは出来てしまいます。

■今回やったこと(概要)

Power BI Desktopを用いてAzureのDBやGAからデータを取得し、グラフを作成しました。そして、作ったレポートをoffice 365のPower BIへ発行し、同じoffice365グループのメンバに共有しました。

DBから取得したデータを用いてこんな感じのグラフを作成しました。

f:id:takkuuuuun:20160106194235p:plain

では簡単にグラフを作成して発行までの手順をまとめてみたいと思います。

■Power BI Desktopでデータの取得

f:id:takkuuuuun:20160106194804p:plain

f:id:takkuuuuun:20160106194852p:plain

サーバー名とデータベース名を入力します。

OKを押した後に認証情報などを入力します。

SQLステートメントにはクエリを直書きできるので、既存の集計クエリなどがある場合にはかなり便利です。もちろんテーブル単位での読み込みも可能です。

SQLを設定しない場合はデータベースごと読み込むので、後の画面で読み込むテーブルを選択します。

クエリは後からでも編集できるのでできるだけクエリにしてやった方が後でグラフにしやすい気がします。

 

 webからも取得できるので、ここでは気象庁のページから週間天気予報を取得したいと思います。

f:id:takkuuuuun:20160107130406p:plain

http://www.jma.go.jp/jp/week/319.html

から東京周辺の週間天気を取得します。

f:id:takkuuuuun:20160107130514p:plain

上記のようにプレビューで取得するデータを確認できます。

編集を押すと、下記のクエリエディターが開いて、テーブルを整形できます。

f:id:takkuuuuun:20160107150315p:plain

列をある規則で分割したり、列ごと削除したり、行と列を入れ替えたり色々できます。

列のヘッダーにわかりやすい名前を設定しておくと後でグラフが作成しやすいです。

 

ウインドウの右側にステップが記録されているので、データが更新されたときにも同じ整形がされます。

「閉じて適用」を押し、次にメイン画面でグラフを作成します。

 

■グラフの作成

f:id:takkuuuuun:20160107150501p:plain

軸と値を選択すると簡単なグラフはすぐに作成できます。

注意する点としては、上記のクエリの編集において上部のメニューから気温などの値を10進数に変換しておくことです。そうしないとグラフがプロットできません。。。

 

f:id:takkuuuuun:20160107151324p:plain

筆マークをクリックするとビジュアルな部分についても編集できます。タイトルや文字の大きさなど設定できます。若干設定できる項目に限りがあるので、もう少し改善されると良いなと思います。

 

■リレーションシップの作成

次にリレーションシップの管理をやってみます。

f:id:takkuuuuun:20160107152909p:plain

今回は適当なページから独身女性の残業曜日比率を取得してきて、曜日をキーにリレーションを設定してみました。

 

f:id:takkuuuuun:20160107170008p:plain

リレーションを設定しておくと、例えば下記の図のように月曜日だけにデータをフィルタリングするみたいなことがグラフィカルに行えます。

天気と残業時間をリレーションしても何の意味もないですけどねw

 

f:id:takkuuuuun:20160107170310p:plain

 

グラフの作成が終わったら、PowerBIのsharepointに発行します。

サインインしておけば上部の発行ボタンでワンタッチで最新を反映できます。

Office 365のPower BIのページにいって、Power BI Desktopで作成したpbixファイルをアップロードすることでも更新できます。

f:id:takkuuuuun:20160107170513p:plain

 

■注意すべき点いろいろ

○proライセンスと普通のライセンスによってできることが少し違う

  • 普通では更新頻度が1日1回だがproライセンスでは1日8回までスケジュールを組める。
  • オンプレミス(誰かのローカルのパソコン含む)のデータセットを定期的に更新するにはproライセンスが必要→特にPower BI Desktopでローカルのエクセルを参照して作成し、office 365に発行すると、オンプレミスに繋いでいる扱いになるので注意が必要です。参照するエクセルファイルもoffice 365上にアップしてデータを取得するのが良いと思います。

○共有範囲の設定

  • office 365の場合は同じ組織内のメンバーに共有は簡単だが、組織外のメンバーには共有できない。(たぶん)

○web上のPower BIやExcel for Power Query

  • web上のPower BI はDesktop版よりできることが少ないのであまりお勧めできない。
  • Excelのアドインで利用できるExcel for Power Queryでもほぼ同じようなことができるが、実際に使ってみたところかなりエクセルが重たくなって強制終了が多発してしまったので実用性はなんともいえない。。。ただ、ファイルを配布すればoffice365の環境がなくても各ローカルからデータを見れるという点においては便利かもしれない。

 

■まとめ

グラフ化がとにかく楽しい!!

そして簡単!!

無料でかなりのことができるのでかなり強力ですね。

そして一番の収穫は、すぐに業務で活かせたことですね~。