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

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

Agile Japan 2016 に参加してきたメモ

AgileJapan2016

に参加してきました。

印象的だったセッションのメモを簡単にまとめたいと思います。

 

アジャイルなIoTプラットフォーム開発

by ソラコム 玉川 憲 氏

www.slideshare.net

145ページの超大作。純粋にすごく面白かった。

ソラコム立ち上げ時の思いは

「日本初でグローバルに通用するプラットフォームビジネスを作る」ということだった。AWSの立ち上げをされていたからというのもあったのだろう。

プラットフォームビジネスはソフトウェア開発が肝になるとのこと。

→IoT界隈でのセキュリティ的懸念点を技術で乗り越えた

→閉域網の仕組みや暗号化なども工夫した

チーム集めのこだわり

→一緒に働くことを楽しんでくれる人たち

全員がリーダーのホラクラシーな体制

ルフレックスで11時にSync

社内メールは一切なく全てSlackで非同期コミュニケーション

Asanaでタスク管理したりSlack Callを使用している

見習いたい感覚

→「新しいものを作り出している限り創業」

 

弊社の取り組みの発表

docs.com

MicrosoftのDevOpsエバンジェリストの牛尾さんとハッカソンをしたことが経緯でのDevOpsの取り組みについて発表。

デプロイまでのリードタイムが13日→3日に。

 

牛尾さんの話で印象てきだったのが、アジャイルが日本で上手くいかない理由。

日本と西洋の文化の違いが大きいらしい。

日本では西洋文化をインストールしておくと、その上でアジャイル環境が上手く動きやすいみたい。

 

他にも複数セッション参加しましたが、技術だけじゃなくひたすらアジャイルで1日過ごすというのもなかなかん刺激的でした。

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のハンズオンに近しい部分について書きたいとは思っています。。。