ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

AndroidのOreoまでと、かんたん機械学習の話を聞いてきた!

2017-10-09 18:44:54 | Weblog
10月9日
GDG DevFest Japan 2017
に行ってきた!まずは、午前中(お昼のLTまで。オープニングは遅刻してみなかった)
をメモメモ!




■Android1.5~8.0
・前半OSフレームワーク
・後半アプリ

Android oreo
ターゲットSDK26にする必要あり
Doze,Upstanby:使っていない時のバッテリー消費
バックグラウンドのデザイン原則
  Reduce
  Deffer
  coalesce

Bg.Activity Limitations
 Doze 50%
  PJ.svelte18%

・2009 OS 1.5 API LV3 CUPCAKE
 2009 OS 1.6 API LV4 DONUT 複数解像度、バッテリー
 2009 OS2.0/2.1 5~7 エクレア
   2.0 通知アイコン必須
       タスクキラーアプリ
   8.0 5秒以内にフォアグラウンドに(原則禁止)
 2010 2.2 FROYO
 2010 2.3 GINGERBREAD
パフォーマンス
 2.2 Dalvik
 2.3 ConcurrentGC
 5.0 ART
 7.0 ART + JITコンパイラ

 2011 3.x HONEYCOMB
 2011 4.0 ICE CREAM SANDWICH
 2012 4.1~4.3 JELLY BEAN
Unicode:絵文字
 4.3 Unicode6絵文字
 5.0 nonhuman
 6.0 Unicode7&8,ZWJ
 7.0 Unicode9 Human Shape & Skin tones
→キャリアで違う

 2013 4.4 KITKAT
  アラーム
   4.4 setWindow(),setExact()
   6.0 遅延、
 2014 5.0 LOLLIPOP UX変更64ビット
 WebView
 4.4 Chromium
 7.0 Chrome APK
 8.0 マルチプロセスモード
 
 2015 マシュマロ
  DOZE
  6.0 省電力機能
  7.0 ポケットにスマホいれても

 2016 NOUGAST
   AppIcon
 4.3 ミッドマップ
 7.1 ラウンドアイコン
 8.0 あ

 そして 8.0 OREO

 アプリの最適化

・後半 APIの進化
・自己紹介
・古いAPIからの振り返り
 ライフサイクル:1.5~あまり変わっていない
 アクティビティは絶えず状態が遷移する
  画面遷移
  端末の状態変化
  ほかのアプリの状態変化
 →少ないメモリ空間を効率的に使う
 端末の設定や状態の変化に追随しやすくなる仕組み

 アプリの固有な状態

 非同期処理:別スレッドで
 カップケーキから非同期処理(AsyncTask)
 AsyncTask
  アクティビティと密結合になりやすかった→Interface
  コールバックを弱参照で保持
 カップケーキのもうひとつの非同期処理IntentService
  UIと関係ない

・NetworkI/O
  Apache HttpClient
  Http(s)URLConnection

・DiskIO
 ファイルAPI
 SQLite
SharedPrefarence

・パフォーマンスモニタリング StrictMode

・AcyncTask:結果の戻し方
  →Loader:死んでいたらキャッシュする
  Lodercallback
  Loader
  Loadfinish

・Fragment
 目的
  使いまわすことのできるUIのまとまり
  UI使わない:SetRetainInstance(true)
 おさほうあ
 Supportライブラリ

・ろりぽっぷから変わる
  バックグラウンド処理→実行タイミングをよしなにはかる
  アラームマネージャー、ジョブスケジューラー、

・Dozeエンハンスメント
 バックグラウンド制限
  位置情報の制限
  インテントサービスも影響

・旧来のAPIの抽象化
  RecyclerView

・ライフサイクル抽象化
  アーキテクチャーコンポーネント
  AppCompatActivity

まとめ
・ベースはほぼおなじ
 画面や非同期処理のライフサイクルはほぼ変わっていない

・APIの複雑さ:抽象化

■GCPではじめるかんたん機械学習
・自己紹介
・機械学習ってなんだっけ
 機械学習とは:ただの関数です
 関数:
 機械学習でやりたいこと
  入力 X0,X1,
  出力 Y
 →既知の入力と出力
  出力結果が未知
  →入力があったとき、未知の出力を知りたい
   推論をする
 関数の中のパラメータ調整

 機械学習
  学習フェーズ
  推論フェーズ

 機械学習は何のパラメータを変えているの?
  既知のデータから境界線のパラメータを変えている

 機械学習VSルールベースアルゴリズム
  ルールベース:計算
  機械学習:既知データから自動で判別式を算出
 →現実のデータは、そんな簡単にルールがわからない

 ニューラルネットワーク
  境界線を引くのは同じ
  ニューロン:直線しかひけない→組み合わさると曲線が引ける
  やりすぎが起きてしまう

 精度の高い結果を得るには
  学習するデータ数
  モデルの設計
  演算能力
 結構大変!→そこでGCP

・GCPと機械学習
  APIが準備されている
  サーバーレス機械学習

 環境の使い分け
  使うだけ(学習不要・モデル不要)

  学習必要
   Scikit Learn
   TensorFlow
  →クラウドマシーンラーニング;

・GCPのML系のAPI
 Cloud Vision API
   ランドマークでぃてくション
   ラベルディテクション
   不適切画像検知
   OCR
   顔認識
   ロゴ認識

 ラベル検出
   VisionAPIでもできる マニアックさ

 自然言語処理
  感情分析:文章がポジティブか、ネガティブか?

 デモ bit.ly/nl-bubble


・ML API X GAE X Firebase
 デモアプリのアーキテクチャ
 GAEからFirebaseDBへインサート

 Firebase簡単

・Datalab X Big Query
 Jupyter Notebookのクラウド版
 →リアルタイムで結果を見える
 pandasからBigQueryクエリ実行

・GAEXMLエンジン
 GAE:あっぷえんじん
 Cloud MachineLearningEngin
  TensorFlowのフルマネージドサービス
  学習・推論のジョブが流せる
  APIでほかのシステムと連携できる

 pix2pix:Variableが200MBあって重い
 重いモデルをどうやって使う
  モバイルアプリに積むのはつらい
  GAEはTensorFlow動かない
  そうだMLエンジン

 GAEからOnlinePredictionAPIを使う

 MLエンジン
 https://qiita.com/hayatoy
 GCPと機械学習の良い本 11月

■LT
・OpenSUSEにのせる あとは調布
・Adaptive Iconについて
・Vector Drawable モーふぃんぐとかできるけど、むいていないものも
・Android Instant Apps 、Progressive Web Apps
・法律の話
・Polymer:Webコンポーネント:11月4日にPolymer Japanのイベント

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

DockerとかImpara+kuduとかを聞いてきた!

2017-10-09 07:52:18 | Weblog
10月8日PHP Conference 2017に行ってきた!つづきをメモ
(最後に「PHPカンファレンス2017」のスライドまとめ)




■DockerでPHPアプリケーションを本番リリースするまで
・おしらせ
 speaker deckにアップするよ

・アンケート
 開発でDocker使ってる人
 本番で運用している人:1人→この状態2年くらい

・じゃ、これからコンテナ本番リリース

・Dockerを本番運用してわかったこと
 福岡でやった

・今回は趣向を変えて
  あなたのハートに火をつけたい

 さあはじめましょう
 
・Dockerコンテナを本番で使うのに必要なこと
 1.深く考えない
 2.コピペ
 3.クレジットカード

・とはいえ、最低限の知識
 1.ローカルでコンテナを作成
 2.レジストリにPUSH
 3.本番にリリース

・代表的マネージドサービス
 GKE
 Docker Cloud

・クバルネティス K8S クーバネーティス 操縦者の意味

・Docker Swarm すうぉーむ

・本番環境ごとに説明

・GKE
 事前準備:
  GCPアカウント
  gcloudコマンド

 手順
  ローカルでのコンテナ作成(動作確認)
  レジストリにPHSH
  本番コントロール K8Sをつかってる(コントロール)

 あとはkubecontrollに習熟すればOK

・Swarm mode
 AWS,Azureに入れる。方法は一緒

 手順はいっしょ
  ローカルでのコンテナ作成(動作確認)
  レジストリにPHSH
  本番:ここがswarmにかわるだけ→cloudformationを使う
  →ただ、10分くらい上がってこない

・Heroku:
 アカウント作ってください
 APP作成、PUSH→イメージもherokuが作る
  
・まとめ
 マネージドな環境を使うことで、かなり簡単

■Kuduを使用したKPI分析システム
・自己紹介
・会社紹介
・この資料はPHP 2%あるかないかくらい
・ゲーム開発におけるKPI基盤
 ないときKPIシステムをゲームごとに集計
  DAU/ARPU
 →KPI基盤を開発して共通化!
・KPI基盤
  BIツール作成、KPI集計
・CDH5.4.11で
  HDFSでログ
  バッチはHive
  そのあとRDBMS
  ログをFluentd経由
・しばらくは問題なし
  人間の欲は深い
  いろいろな要求が出てくる
 →実現困難
   速度面:Hive
   バッチの量産は困難
   バッチ前提:リアルタイム分析は困難
 →Hiveとは別のシステム
   高速に集計するしくみ
   分析者にも集計してもらう
   リアルタイムにアクセスできる仕組み
・解決策は
  これらを満たすには→Impala+Kudu
 (別のapacheプロジェクト)

・なぜImparaとkudu
 3つのメリット
  高速処理
  全員分析者になれる
  リアルタイム処理

 バッチ処理後のデータはkuduに格納
 バッチ以外のアクセスはImpalaで

・高速処理
  ImpalaはHiveと捕獲すると、かなり高速
    インメモリでの集計
    Impala-Demon
 Hive4分30秒→Impala+kudo0.22秒
    爆速

・全員分析者になれる
  以前 HDFS→Hive集計→MySQL→PHP
   イレギュラーケースは対応できない
  標準的なSQLでの分析は便利

  Impalaと組み合わせることでSQL可能
  (KuduはSQLインターフェースない)

・リアルタイム処理
 ストリーミングでデータが流れていた
 ログさえ到達すればアクセス可能

Impara
・標準的なSQLインターフェース
 高速処理

 Kudu
  更新削除
  全データに触れること可能

・導入時に行ったこと
 CDHのバージョンアップ(5.10以上→5.11へ)
 インストール:Cloudera Manager
 データ移行:Apache sqoopによるデータ転送(MySQLからHive)
  HiveからKuduはImparaでできる(SQL)

・注意点
 導入 CDH 5.10
 kuduのカラムの型にtimestampが使用できない Unixtime→BIGINT
 タイムスタンプ系の関数はUTCとして扱われる
  Impalaの起動オプション

・最後に
 いつでもだれでも多様な分析を行えるように!
 Kudu簡単に検証できるQuick VMがある
 エンジニアも非エンジニアも幸せに

■片手間MySQLチューニング戦略
・自己紹介
・スローログ出しましょう
 一定時間以上かかったSQLを出力する
  →オンラインでも有効にできる。小数点で時間指定できる。テーブルにもできる
 ジェネラルログ:全部吐き出す→実行前に吐き出す
 スローログ→実行後に吐き出す
 ポイント
 Timeが短時間に集中している
 時間分布を把握するためのツール あねもめーたー
 row_examined,row_sentが十分小さい→indexつけるか?
 そもそもrow_sentが大きくない?
 WHEREが特定の物に偏っていないか→インデックスの使い分け

・バッファプールの気持ちになる
 物理メモリーの75%
 ヒープ領域
 あくまでバッファプールからよむ:テーブルスペースから
  テーブルスペースとバッファプールは非同期

 ダーティーページがあるとき
  →Selectしただけで、書き込みが走る

 Insert、Deleteも同じ

 →ここが小さいとボトルネック

・インデックス
 特定のキーを狙い撃ちするのがうまくいく
  →これ以外は・・・
 JOINはきらわれる
 ORやNOT→AND、=に落とし込めないか?
 カラムに対して演算してはいけない
 ネクストキーロック:indexに対するロック

・劇薬に手を出さない
 MyISAM


まとめ
・MySQL Casual




国内最大のPHPイベント「PHPカンファレンス2017」のスライドまとめ
https://techplay.jp/column/158


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする