tohnamanブログ

東村山に生息するWindows好きな太っちょオヤジプログラマのブログ

Android Emulator との相性・・・

いやー、メインPC と Android Emulator との相性が悪いったらありゃしない!

ことの発端

GW前、Prism for Xamarin.Forms ハンズオンに参加したんです。
当初の目的は、Prism メインでしたが、参加してみたら Xamarin.Forms が良かったので、
Windows10 Mobile も終了したし、Android アプリでも開発しようと思ったのです。

最初の苦難

メインPC の Visual Studio 2017 をXamarinを利用できるようにセットアップし、
ハンズオンで作成したソースコードを取り込み、ビルド、UWPとして起動
ここまでは順調でした!
しかーし!メインPC のCPUは AMD FX-8350 なのです!

どういうこと?

Visual Studioから起動するAndroid Emulator は Intel HAXM を利用したモノなのです!
Intel HAXM は、Intel の CPU機能を利用している為、AMD FX-8350を搭載した、
メインPC にはインストールできません!
そうです!Android Emulatorがインストールできません!
 ハンズオンには、買ったばかりの Surface Pro で参加していたので、
 このことは、全く知りませんでした!

苦難 その2

UWPアプリとして動作させながらXamarin.Formsの学習していましたが、
目的が Android アプリ開発 なので、Android アプリの動作確認がしたいのです!
そこで、他のAndroid Emulatorを探して見つけたのが Genymotion でした
Genymotion は、Oracle VM VirtualBox 上で動作する仮想環境なので、
インストール済みのVirtualBox で Genymotion の動作環境を構築し、
Genymotion からAndroid Emulatorを起動すると、
Visual Studio に起動中の Android Emulator が実行できる状態になりました!

やったー!

Android アプリとして起動すると念願のAndroid Emulatorで動作確認ができました!
おめでとうございます!

しかし

入力した文字を話す機能だけ動作しません!
調査した結果、VirtualBox がGenymotion で動作保証しているバージョンより新しい為、
Emulator 上で音がならないことでした

苦難 その3

先日のBuild 2018で Hyper-V で動作する Android Emulator プレビューの発表がありました
これは、Intel HAXM を使用せず Hyper-V を利用するので VirtualBox も不要です!
なので、メインPCでの利用が可能なハズです。

↓ のサイトを参考にセットアップしていたんですが・・・
Hyper-V Android emulator support | The Visual Studio Blog

どうなった?

Windowsの設定が完了し、Android Emulatorを作成すると・・・
mksdcard.exe がウィルスバスターに駆除されて、作成に失敗しました

現在

失敗した翌日、再チャレンジしたらAndroid Emulatorを作成できました
ウィルスバスターの定義ファイルが更新されたことで、大丈夫になったようです

これから、追加したAndroid Emulatorの動作確認及びデバッグ実施を試す予定です

何か想定外の挙動があった場合は、続報を書きます。

2018/06/27 追記 
Build 2018ので発表したAndroid Emulatorを利用するには、
Visual Studio 15.8 Preview を利用する必要がありました!
ブログの最初に書いているのに読み飛ばしていました。
Visual Studio 15.8 Preview 3 をインストールし、いろいろいろいろ試してみましたが、
結局どれも成功しませんでした。

初心に戻りブログを隅々まで確認すると、コメントに・・・

Hannah Juarez [MSFT]
Hi Himadri! Thanks for trying out the preview. The Windows Hypervisor Platform supports AMD machines. However, the Android Emulator with WHPX is not supported on AMD.

Windows Hypervisor PlatformはAMDマシンをサポートしています。
ただし、WHPXのAndroidエミュレータAMDではサポートされていません。

はい、最初からブログに答えがありました。
ということで、苦難の道は続くよどこまでも・・・

現状で可能なのは、

  • 音を犠牲にして、VirtualBox + Genymotion を利用して開発する
  • 常に実機を利用して開発する
  • 常にSurface ProでIntel HAXMのAndroid Emulatorを利用して開発する

のどれかになります。

結局、解決しませんでした

WHPXのAndroidエミュレータAMDサポートを待ちたいですが、するんだろうか?

2018/07/14 追記
AMD CPUをサポートしたAndroidエミュレータのリリース
android-developers.googleblog.com
の吉報がありましたが、まだ開発に利用できる状況ではありませんでした。
ですが、以前と違い起動して配置したアプリが動作しました!

起動したエミュレータを停止後に開始すると、エミュレータが反応しなくなります
この為、エミュレータ起動しても動作しない場合は、エミュレータ作成を行う必要があります

リリースしたばかりなので、情報が少ないので、ゆっくり様子をみます

WindowsのVisual Studio CodeでPython!! その3

前回の続きです。
今回は Windows10 のVisual Studio Codeで

ようにします

Visual Studio Code の準備 の続き

Formater設定 - 準備

Visual Studio Codeの Python拡張は、AutoPep8、Yapfに対応していて、
初期設定で AutoPep8 が有効になっています。
しかし、パッケージが無いので、ドキュメントのフォーマットを行うと、
以下のエラーが発生します

Formatter autopep8 is not installed.

以下のコマンドでパッケージを確認すると

conda list | Select-String autopep8
conda list | Select-String yapf

どっちも無いので、Yapf を追加することにします。
Yapf を選定した理由は、

  • なんか新しい
  • 攻撃的なフォーマットをしそう(いい意味で)

です。

Formater設定 - Yapf パッケージ追加

Flake8 パッケージを追加したときのように、以下のコマンドを実行します

anaconda search -t conda -p win-64 yapf

先頭の conda-forge/yapf を追加する為に、
以下のコマンドでインストールコマンドを取得します

anaconda show conda-forge/yapf 

最後にあるインストールコマンドを実行します

conda install --channel https://conda.anaconda.org/conda-forge yapf

途中 Proceed ([y]/n)? となるので y としました。
以下のコマンドでインストール確認を行います

conda list | Select-String yapf
yapf --version

バージョンは以下のようになりました

yapf 0.21.0

Visual Studio Codeの ファイル -> 基本設定 -> 設定 を開き、
以下の設定値をユーザー設定に追加

"python.formatting.provider": "yapf",

Formater設定 - 動作確認

前回利用した bad-source.py で確認しても微妙な結果になるので、
Yapf 公式にあるサンプルを利用します
以下の内容を yapf-sample.py で作成します

x = {  'a':37,'b':42,

'c':927}

y = 'hello ''world'
z = 'hello '+'world'
a = 'hello {}'.format('world')
class foo  (     object  ):
  def f    (self   ):
    return       37*-+2
  def g(self, x,y=42):
      return y
def f  (   a ) :
  return      37+-+a[42-x :  y**3]

保存すると、グチャグチャだったソースコードがキレイになります

x = {'a': 37, 'b': 42, 'c': 927}

y = 'hello ' 'world'
z = 'hello ' + 'world'
a = 'hello {}'.format('world')


class foo(object):
    def f(self):
        return 37 * -+2

    def g(self, x, y=42):
        return y


def f(a):
    return 37 + -+a[42 - x:y**3]

デバッグ設定

Visual Studio Code の デバッグ -> 構成の追加 を開き、
表示されるコマンドパレットから Python を選択
すると、Python の構成が追加された launch.json が作成されます

デバッグ

  1. Visual Studio Code 左端の 虫 アイコンを押下
  2. その1で作成した hoge.py を開き、3行目にブレークポイントを追加する
  3. Visual Studio Codeの デバッグ -> デバッグの開始 を選択
  4. 表示される でデバックツールバー の左端の再生(▶)アイコンを押下
    ブレークポイントで停止します

ここまでできれば、Visual Studio Code のデバッグと同じです。

まとめ

これで当初予定していた

が全部できるようになりました

あとは、Python でいろいろ書いてみるだけです。

WindowsのVisual Studio CodeでPython!! その2

前回の続きです。

今回は Windows10 のVisual Studio Codeで

  • Lint が機能する

ようにします

Visual Studio Code の準備 の続き

Lint 設定

Visual Studio Codeの Python拡張は、Pylint、Pep8、Flake8に対応しています
Lint エラーになるソースを準備し確認します
以下の内容を bad-source.py で保存してください


import sys
import os

def main():
    x = 1
    pwd = os.getcwd()
    print(pwd)



if __name__ == '__main__':
    main()

Lint 設定 - Pylint

Pylintは、初期設定で有効になっているので、bad-source.py を保存すると、
問題タブの bad-source.py に

[pylint] 'W0612:Unused variable 'x'' (6, 5)

が表示され、Pylint が機能しています!
また、以下のコマンドを実行すると

pylint bad-source.py

以下のように詳細な結果が表示されます

No config file found, using default configuration
************* Module bad-source
C:  1, 0: Module name "bad-source" doesn't conform to snake_case naming style (invalid-name)
C:  1, 0: Missing module docstring (missing-docstring)
C:  5, 0: Missing function docstring (missing-docstring)
C:  6, 4: Variable name "x" doesn't conform to snake_case naming style (invalid-name)
W:  6, 4: Unused variable 'x' (unused-variable)
W:  2, 0: Unused import sys (unused-import)

------------------------------------------------------------------
Your code has been rated at 2.50/10 (previous run: 2.50/10, +0.00)

Lint 設定 - Flake8

Flake8は、初期設定で有効にではないので、
Visual Studio Codeのファイル -> 基本設定 -> 設定 を開き、
以下の設定値をユーザー設定に追加

"python.linting.flake8Enabled": true,
"python.linting.pylintEnabled": false,

すると、Linter flake8 is not installed. のエラーになります。
これは、Flake8 パッケージが無いからです
Pylint でエラーにならなかったのは、パッケージがあったからです。
パッケージの有無は、以下のコマンドで確認できます

conda list | Select-String pylint
conda list | Select-String flake8

pylintあり、flake8なし の結果になります

Lint 設定 - Flake8 - パッケージ追加

パッケージ管理は、Anaconda に内包されている conda で行うことにします。
Python標準のパッケージ管理システムは pip ですが、
以下の理由から conda で行うことにしました

  • Anaconda に組込み済みのパッケージは conda で管理しているらしい
  • conda はバイナリダウンロードなので、ビルドしなくていい
  • pip と conda は混ぜない方がよいらしい

ということで conda で Flake8 パッケージを追加する為に、
まず、以下のコマンドを実行します

anaconda search -t conda -p win-64 flake8

このコマンドで、以下を確認します

  • flake8 パッケージがあるか
  • Windows 64bit 環境用のモノがあるか
  • 動作環境のPython用のモノがあるか

先頭の anaconda/flake8 が、Windows 64bit、Python 3.6 に対応してそうなので、
以下のコマンドを実行し、インストールコマンドを取得します

anaconda show anaconda/flake8

最後にあるコマンドを実行します

conda install --channel https://conda.anaconda.org/anaconda flake8

途中 Proceed ([y]/n)? となるので y としました。
以下のコマンドでインストール確認を行います

conda list | Select-String flake8
flake8 --version

バージョンは以下のようになりました

3.5.0 (mccabe: 0.6.1, pycodestyle: 2.3.1, pyflakes: 1.6.0) CPython 3.6.4 on Windows

Lint 設定 - Flake8 - 有効化

Visual Studio Code は、Flake8 パッケージがインストールされたことを知らないので、
Visual Studio Codeのコマンドパレットを開き、
下記のコマンドでウィンドウの再読み込みを実行します

Reload Window

再読み込みが完了すると、問題タブの bad-source.py に以下のエラーが表示されます

[flake8] F401 'sys' imported but unused (2, 1)
[flake8] E302 expected 2 blank lines, found 1 (5, 1)
[flake8] F841 local variable 'x' is assigned to but never used (6, 5)
[flake8] E303 too many blank lines (3) (12, 1)

また、Pylint と同じようにコマンドからも実行できます

> flake8 bad-source.py
.\bad-source.py:2:1: F401 'sys' imported but unused
.\bad-source.py:5:1: E302 expected 2 blank lines, found 1
.\bad-source.py:6:5: F841 local variable 'x' is assigned to but never used
.\bad-source.py:12:1: E303 too many blank lines (3)

Lint 設定 - まとめ

Visual Studio Codeで Pylint、Flake8を設定できるようなりました。
Pep8 も似たような方法で設定できると思います。

これで、

  • Lint が機能する

ようになったので、今回はここまでとします。

WindowsのVisual Studio CodeでPython!! その1

世の中、AI・機械学習ディープラーニングで盛り上がっているので、
ちょっとだけでも触っておこうと思い、
軽い気持ちで環境構築を始めたら簡単な方法を選んだハズなのに、
いろいろ困ったので環境構築方法をまとめます

概要

構築する環境

前提条件

Python環境の構築

Python環境の構築方法は、いろいろありますが Anaconda を利用して構築します
Anaconda は、

  • 機械学習用のパッケージが一通り入っているらしい
  • 環境ごとにパッケージを管理できるらしい

Python初心者の私は、なんか一通り入っているいるに惹かれて選択しました
今後、変更したくなってもソースコードに影響ないはずなので、Anaconda で進めます

Anaconda のダウンロード

以下のサイトからダウンロードします
 https://www.continuum.io/downloads

Python 3.6とPython 2.7の2つのバージョンがありますが、
特に古いバージョンを利用する必要性がないので Python 3.6 を選択しました。
ファイル名は Anaconda3-5.1.0-Windows-x86_64.exe でした。
(ファイル名は、ダウンロードする時期によって変化すると思います。)

Anaconda のインストール

ダウンロードした Anaconda3-5.1.0-Windows-x86_64.exe を管理者権限で起動します
インストールは、画面の指示通り進めればインストールが完了しますが、
以下の対応をしました

  • インストールディレクトリを変更
    → 変更する必要はありません
      Anacondaに限らず、私はいつも変更してます
  • Anaconda関連のパスを環境変数に追加のチェックしない
    → 画面に非推奨とあったのでしませんでした
  • Visual Studio Codeのインストール
    → Skip

完了時に表示される Anaconda Cloud は、何もしていません。

Anaconda の インストール確認

スタートメニューから Anaconda3 (64-bit) -> Anaconda Prompt を開き
以下のコマンドを実行し、バージョンが表示されることを確認する

>python -V
>conda -V
>pip -V
>anaconda -V

以下の結果になりました

(base) C:\Users\tohnaman>python -V
Python 3.6.4 :: Anaconda, Inc.

(base) C:\Users\tohnaman>conda -V
conda 4.4.10

(base) C:\Users\tohnaman>pip -V
pip 9.0.1 from D:\Develop\Anaconda3\lib\site-packages (python 3.6)

(base) C:\Users\tohnaman>anaconda -V
anaconda Command line client (version 1.6.9)

(base) C:\Users\tohnaman>

Anaconda Prompt 以外に、Jupyter Notebook、Spyder などがありますが、
本内容に無関係なので無視します

環境変数設定

Anaconda Prompt で確認したコマンドは、コマンドプロンプトから実行できません。

C:\Users\tohnaman>python -V
'python' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

Visual Studio Code で 快適に Python を利用する為に、以下の環境変数を設定します

No. 変数 補足
1 ANACONDA_HOME Anaconda のインストールディレクト 新規作成
2 Path %ANACONDA_HOME% 追加
3 Path %ANACONDA_HOME%\Scripts 追加
4 Path %ANACONDA_HOME%\Library\bin 追加

コマンドプロンプトから実行できるようになります

C:\Users\tohnaman>python -V
Python 3.6.4 :: Anaconda, Inc.

Visual Studio Code の準備

Python 拡張をインストール

Visual Studio Codeで Ctrl+P でコマンドパレットを開き、下記のコマンドを実行

ext install python

インストール完了後、再読み込みする

お試し実行

以下の内容の hoge.py を作成し、

import numpy as np
a = np.arange(15).reshape(3, 5)
print(a)

ターミナルに 以下のコマンドを入力しpyhonを実行する

> python .\hoge.py

以下のような結果になります

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]

ここまでで、

ができるようになりました


が残っていますが、次回に持ち越します。
忘れないうちに投稿します

UWPアプリ作成・・・

やる気満々で始めたUWPアプリ作成でしたが、
いろんなことが重なって頓挫しました。

起こった出来事

急な職場移動&新人と一緒

  • 仕事柄よくあることなので移動は問題ないのですが、
    node.jsを使うところなので、スキルが足りない
  • スキル習得しながら新人と一緒。大変だぞーって状況

WindowsPhone終了宣言

  • WindowsPhone開発者のブログでの発言は終了宣言ではありませんが
    バグ対応のみは、終了宣言と同じ!
  • Windows10Mobileのサポートも2019年までのようなので。はい、終了です
  • Windows10Mobileに期待していたので凄く残念です。

何してた?

  • node.jsでサーバーサイドってことで、JavaScript、TypeScript を本格的に学習!
  • JavaScriptは、Web画面作成時にネット見ながらガチャガチャしていただけ。JQuery
  • node.jsもGulp 使ってたところで、便利ライブラリの裏側で活躍してただけ
  • prototype? Promise? ってところからのスタート。新人も
  • そんな状況でUWPアプリ作ってる場合じゃなかった・・・
  • んで、終了宣言!やる気がでるわけないじゃない
  • 終了宣言を受けて、ガラケーから Xperia XZ1 に機種変更

今!

  • スキル習得もなんとかし、新人も育ってきて、少しづつ落ちついてきたので
    何かしようと思ってます。
  • node.js でなにか
  • XamarinでAndoridアプリ?
  • 世の中機械学習とかディープラーニングとかで盛り上がっているので、なにか?
  • IOT?
  • など、いろんな夢想したら、 Surface Pro 買っちゃった

UWPアプリを作るんだ!

前回の更新から数か月振りになります。
やっとモチベーションが上がって来たのでUWPアプリを作る予定ですんです。

作るアプリは『勤怠メモ』アプリです。
日々の勤務時間をWindows 10 MobileExcelで入力しているんですが、
出来ない事はないレベルの操作感なので改善したいのです。
また、MVVMの学習も兼ねていこうと思っています。

ザックリ要件

  • UWPアプリ
  • 勤務時間の入力が出来る
  • 1ヶ月分の勤務表が見れる
  • 過去の勤務表も見れる
  • 対象端末はMobileとPC

内部仕様

  • 勤務データはjson形式でファイルに格納する
  • ファイル名はyyyymm.json
  • 項目は日付、勤怠区分(出勤、休日など)、出社・退社・休憩時間、備考など
  • アプリ起動時に当月分の勤務表を表示する
  • アプリ起動時に本日の入力ができる状態になっている

最初に目指すゴール
実装する機能

  • 勤務時間の入力が出来る
  • 1ヶ月分の勤務表が見れる
  • アプリ起動時に当月分の勤務表を表示する
  • アプリ起動時に本日の入力ができる状態になっている

後回しにすること

  • 画面デザイン → 必要な項目があればよい
  • キメ細かい入力値検証 → ザックリ検証まででよい

その他、細かい内容は進めながら決めていこうと思います。

ここまで書いておいてなんですが、

  • 普段はJavaをメインに使用している
  • UWPアプリ開発、MVVMは学習レベル

なので、ガッツリ理解したい人向けにはならないと思います

今回は、ここまでとします。

ここ数年に発生した可哀想な出来事

可哀想な出来事 その1

2014年10月 同僚から.NET案件の相談を受けた事をきっかけに、自分のなかで .NET熱が高まり最新のVisual Studioが欲しくなりました。
その当時、私はVisual Studio 2008 Proを持っていましたが、最新のVisual Studio 2013にアップグレードできませんでした。
数万円もする必要かどうかあやふやなモノなので1週間くらい悩んだ結果、通勤中にamazonでポチッとしました。価格は ¥55,385 でした。
当日の夜に届きインストール、翌日からVisual Studio 2013で遊んでいたんです。

1週間後、業務の休憩中にIT系のニュースを見ていたら
 Visual Studio 2013 Community Edition」が無償提供!
内容に愕然となりました。
 Visual Studio Professionalエディション相当の機能を提供

整理します
 2014/11/06 - Visual Studio 2013 Proをamazonで¥55,385で購入
 2014/11/13 - Visual Studio Pro相当のVisual Studio 2013 Community Editionが無償提供
私は1週間後に無料になるモノに¥55,385を支払ったんです。

可哀想な出来事 その2

2014年12月 通勤に使用していたバッグを新調しました。
それまでは、どこかのスーパーで購入した無名のリュックでしたが、サムソナイトのビジネ用バックパックを購入しました。
2015年01月中旬のこと 元請け会社からきた周知メールに「セキュリティ対策として、リュックはダメ」的なことが書いてありました。
 リュックは背負うので、刃物などで切りつけて中身を盗まれる恐れがある
海外旅行ではあるみたいですが・・・
私は日本で働いているんですが、元請け会社からのお達しなので改善するしかありません。
年末に新調したばかりですが、また新調することになりました。

整理します
 2014/11 - Visual Studio 2013 Proをamazonで¥55,385で購入
 2014/12 - 自分の意志でバッグを新調
 2015/01 - 元請け会社からのお達しでバッグを新調

可哀想な出来事 その3

2015年02月 Windows Phone 8.1のLumia930を購入しました
私は日本でWindows Phone端末が発売するのをずーーーーーーーーーーっと待っていたんですが、一向に発売する気配がないし、Visual Studio 2013 Proを購入したのでストアアプリを実機で試してみたいという欲求で購入を決意
個人輸入という手段で購入できることを調べてExpansysからLumia930を購入しました

2015年02月末 いつものようにIT系のニュースを見ていたら
 マウスコンピューターからWindows Phoneベースのスマホ開発着手
発売日は未定ですが、日本でWindows Phone端末が発売することが決定

整理します
 2015/02上 - ExpansysからLumia930を購入。技適ってなんですか端末
 2015/02末 - 日本でWindows Phone端末が発売することが決定。技適付き端末
購入したLumia930に大満足だったので、ちょっとだけ可哀想な出来事でした

可哀想な出来事 その4

2016年07月 MADOSMA Q601 を購入しました。
当時、Windows 10 Mobile端末は、ローレンジ~ミドルレンジの端末ばかりで、ハイレンジ端末はLumia 950、Lumia 950 XLの非技適端末だけでした。
技適適用されたハイレンジ端末が欲しかった私は、2015年末からAcerのLiquid Jade Primoを狙っていたのですが、日本での発売時期が全くわからない中、MADOSMA Q601の発売決定でした。
Windows 10 Mobile端末を欲しかったのと、MADOSMAの後継機なので速攻で購入したんです。

2016年08月中旬 いつものようにIT系のニュースを見ていたら
 日本エイサー、Liquid Jade Primoを8月25日に法人向けに発売決定

整理します
 2017/07/末 - MADOSMA Q601を購入
 2017/08/中 - 日本エイサー、Liquid Jade Primoを8月25日に法人向けに発売決定
MADOSMA Q601購入時点で、ある意味覚悟していたことでもあったので「あーやっぱりね」という感情でした。
Liquid Jade Primoは法人向けとはいえ、個人購入も可能ですが 想定価格:100,000円前後(税別) は即購入に踏み切れませんでした。

2016年08月下旬 いつものようにIT系のニュースを見ていたら
 HP、Windows 10 Mobileスマホ「HP Elite x3」の発売日を9/5に決定

整理します
 2017/07/末 - MADOSMA Q601を購入
 2017/08/中 - 日本エイサー、Liquid Jade Primoを8月25日に法人向けに発売決定
 2017/08/下 - HP、Windows 10 Mobileスマホ「HP Elite x3」の発売日を9/5に決定

結果、HP Elite x3を購入しました


そんなこんなで、私が何か購入すると未発表だったモノが、発表したり、決定したりするようです。
次に何か高額なモノを購入するときは、ブログに書いてみます。
なにか起きるかもしれません・・・