2018年8月16日木曜日

my bloody valentine 2018/08/15 ToyosuPIT @Tokyo, JAPAN

SET LIST


i only said
when you sleep
new you
new song 2
you never should
honey power
new song 1
cigarette in your bed
only tomorrow
only shallow
what you want
thorn
nothing much to lose
who sees you
to here knows when
slow
soon
wonder 2
feed me with your kiss
you made me realise


15日は2013年の東京国際フォーラム以来の単独ライブでした。
2008年のFujiRock以降だいたいの公演見てるので、今回も参戦。

ケヴィンがバーガンディーミストのJaguarとかHiWattのアンプ使ってたり。
なお、彼のギターに関してはこちらにFenderのインタビューがあります。

Jazzmasterレジェンド、ケヴィン・シールズとメインギター。

サポートのキーボード/ギターのJen Macroもいい感じで馴染んでます。
HURTLiNGというバンドをやってて、ボーカル/ギターです。
浮遊感あるバンドですので、一聴の価値ありです。

野太いビリンダコールに、ビリンダがたまに反応してたり。
Marshall2台+Vox(たぶんAC30)2台のアンプ鳴らしてあちらも轟音。
なお、途中弾いてたシンセはたぶんJunoか。

デビー姐さんが相変わらずのかっこよさでベース弾きまくり、コーラスも綺麗で。
RDとおそらくオーダーメイドのJaguarベースと、DevidedBy13のヘッド2台にMarshallのキャビ2台でこちらも強烈。
wonder2ではFender Jaguarを使用。

コルムさん、AbbyRoadの頃のジョージ・ハリスンみたいに見えました(個人的感想)が、プレイは相変わらずキース・ムーン。
前回はPremierだった気もしますが(ちょっと覚えてない)、今回はLudwigのブルースパークル。
wonder2のギターはデビーと同じくFender Jaguar。
それ用なのか小さなVoxのコンボも置いてあった。

新曲は2曲。
1曲はピストルズみたいなコード進行のパンクかと思いきや、真ん中でNothing Much To Loseのイントロみたいになったり。
もう1曲は6/8のゆったりした浮遊感のある感じ。
予告されてるEPの曲でしょうかね。

なお、20曲もやったのは驚きでした。
12〜14曲ぐらいかと思ってましたが、新曲とmbvの曲を加えて、今までのライブの定番も全てやるとこの曲数ってことでしょう。

個人的には new you のケヴィンが弾くトレモロサウンド(おそらくBOSSのPN2だと思われる揺れ方)が気持ち良い音でした。
思ったよりペダルが多くない印象でしたが、残念ながら足元を見れなかったので確認できず。

wonder2ではお約束の全員ギター。
最後は言わずもがなのNoisePitだけど、聞く側がすっかり慣れてきたせいかいい感じのサイズでケヴィン先生切り上げてたように見えましたw
なお、ノイズ終る時の「ケヴィンがデビーを見る→デビーがコルムと合わせてベースを高く構えて振り下ろす→曲に戻る」瞬間が大好きです。
曲の終わりに、ケヴィン先生最後のノイズをカマしてきたのが悪戯っぽくてツボでした。

17日のSonicManiaは90分ぐらいのようなので、また違うセットになるのでしょうか。
確認がてら次も行ってきます。

2018年6月12日火曜日

【Microsoft Azure】ESP-WROOM-32 から Azure IoT Hub に接続してみる

最近勝手にあらゆるデバイスを Azure IoT Hub に接続するキャンペーンをしています。
一応前提として、MacOSXでの日本語環境で開発します。

今回は、Espressif Systems の ESP-WROOM-32 という無線通信モジュールから接続してみます。
https://www.switch-science.com/catalog/3156/

ESP-WROOM-32は、Arduinoではないのですが、Arduino IDEで開発ができます。今回は開発キットである ESPr Developer 32 を使います。
https://www.switch-science.com/catalog/3210/

セットアップ方法については以下を参照してください。
http://trac.switch-science.com/wiki/esp32_setup

それでは、Arduino IDE から、Azure IoT Hub の GetStartedサンプルを使って接続してみます。

Arduino IDE を立ち上げて、ボードの設定をします。
「ツール>ボード>ESP32 Dev Module」を選択します。



次に、シリアルポートの設定を行います。
「ツール>シリアルポート>/dev/cu.SLAB_USBtoUART」を選択します。




設定が終わったら、サンプルからAzure IoT Arduinoのスケッチを開きます。
「ファイル>スケッチ例>ESP32 Azure IoT Arduino>GetStarted」を選択します。





開いたサンプルの中の、以下の4箇所の値を設定します。
・DEVICE_ID(9行目):IoT Hubで設定したデバイスID
・ssid(13行目):接続するWi-FiアクセスポイントのSSID
・password(14行目):Wi-Fiパスワード
・connectionString(19行目):IoT Hubで設定したデバイスの接続文字列

設定したら、コンパイルして書き込みます。
以下の「⇨」ボタンを押すとコンパイル、デバイスへの書き込みを行い、プログラムを実行します。



プログラムの実行状況を確認するために、ターミナルからデバイスへシリアル接続をして確認します。
screenコマンドを実行するとこんな感じになると思います。
{"deviceId":"esp32", "messageId":270, "Temperature":24.000000, "Humidity":87.800003}
Info: >>>IoTHubClient_LL_SendEventAsync accepted message for transmission to IoT Hub.
Info: >>>Confirmation[269] received for message tracking id = 269 with result = IOTHUB_CLIENT_CONFIRMATION_OK
Send Confirmation Callback finished.
{"deviceId":"esp32", "messageId":271, "Temperature":25.000000, "Humidity":57.700001}
Info: >>>IoTHubClient_LL_SendEventAsync accepted message for transmission to IoT Hub.
Info: >>>Confirmation[270] received for message tracking id = 270 with result = IOTHUB_CLIENT_CONFIRMATION_OK
Send Confirmation Callback finished.



確認できたら、「control+a」を押した後に「k」を押してシリアル接続を中止します。

2018年5月19日土曜日

【Microsoft Azure】OpenBlocks IoT で Azure IoT Edge を動かしてみる

OpenBlocks IoT が Azure IoT Edge に対応したので、早速試してみましょう。

OpenBlocks IoT に関してはこちらをご覧ください。
https://openblocks.plathome.co.jp/products/obs_iot/vx2/

事前に準備しておくことは、以下のとおりです。

・OpenBlocksの初期設定とネットワーク接続
・AzureでIoTHubを作成しておく

上記の設定が終わったら、IoT Edgeを使うための設定を行います。


IoTHub側ですが、ポータルにログインしてメニューより「IoT Edge (preview)」を選びます。
(本日はまだプレビュー状態です)


次はデバイスを追加します。右上にある「+ Add IoT Edge Device」をクリックします。



任意のデバイスID(半角英数)を入力したら追加します。(今回は「ob」としてみました)
なお、このデバイスIDはそれぞれのデバイスに割り当てるもので、識別子となります。


追加されると、一覧に表示されます。






IoT Hub の設定はここまでです。

次は、OpenBlocksの管理画面からAzure IoT Edgeを導入します。
基本的には「iotedgectl」コマンドとWebGUIツールがインストールされます。

設定したIPアドレスでWebの管理画面へ接続します。
ポート番号は880です。






「メンテナンス」タブを開いて「機能拡張」で Azure IoT Edge を追加します。
実行ボタンを押すと機能拡張をインストールします。数分かかります。


インストールが終わったら再起動します。




再起動後にログインして、「サービス」タブから「Azure IoT Edge」のリンクをクリックします。



Azure IoT Edge のセットアップをします。
基本的には「接続文字列」のみ設定します。



接続文字列は、IoT Edgeのデバイスのページにある「接続文字列」(特に問題なければプライマリー)をコピーしてきます。(右のコピーボタンをクリックします)





文字列をコピーしたら「実行」ボタンを押してセットアップします。
このあたりは、バックエンドで「iotedgectl setup」コマンドを実行しています。




セットアップが終わったら、IoT Edge のエージェントを実行します。
「Azure IoT Edge」タブの中の「Edge状況」の画面で、「起動」ボタンをクリックします。
バックエンドで「iotedgectl start」コマンドが実行されます。
数分かかります。




表示がかわります。




起動が終わり正常に接続されると、Azureポータルの IoT Edge のデバイスの画面の
「Edge Runtime Response」の表示が「Connected」になります。







2018年3月7日水曜日

【Microsoft Quantum】Q#をMacOSXで動かしてみようではないか

Q#は、Microsoftが開発した量子計算言語です。
詳しくは戸倉彩さんのブログで解説があります。

もちろん、私はMacOSXで動かすわけですが、なんとMac向けSDKもリリースされています。
オリジナルのドキュメントはこちらです。

なお、動作環境として、以下の説明があります。
・AVXを使うのでSandyBridge以降を使った方がいい(そうじゃなくても動くとは思うけど)
・いくつかのサンプルはUIの関連でnpmを使うよ
・Pythonは3.6以降

早速、最新のVisualStudioCode(以下VSCode)をこちらからダウンロードしてインストールします。
(同じ手順でLinuxでも使えます)

ダウンロードして解凍後、私はアプリケーションフォルダに移動して使っています。

ダウンロード後、起動して更新を確認します。
Q# Developer Kit は最新のVSCode(確認時には1.20.1)が必要です。

次に、Microsoft Quantum Development Kit for Visual Studio Code Extension をインストールします。
こちらのサイトからインストール作業をすすめます。










Install(赤で囲んだ部分)をクリックするとVSCodeが起動します。
以下の画面が表示されると思うので、インストールをクリックします。







インストール後、Q# Development Kit project template をインストールします。
ここから先はターミナルです。

dotnet new -i "Microsoft.Quantum.ProjectTemplates::0.2-*"

これで環境設定は終わりです。
このままgithubにあるチュートリアルのコードを実行してみましょう。

githubからプロジェクトをクローンします。

$ git clone https://github.com/Microsoft/Quantum.git

クローンしたプロジェクトに移動し、サンプルのTeleportationを実行してみます。

$ cd Quantum/
$ cd Samples/Teleportation/
$ dotnet run
Round 0: Sent True, got True.
Teleportation successful!!

Round 1: Sent True, got True.
Teleportation successful!!

Round 2: Sent False, got False.
Teleportation successful!!

Round 3: Sent False, got False.
Teleportation successful!!

Round 4: Sent False, got False.
Teleportation successful!!

Round 5: Sent False, got False.
Teleportation successful!!

Round 6: Sent True, got True.
Teleportation successful!!

Round 7: Sent False, got False.
Teleportation successful!!



Press Enter to continue...

なお、Teleportationは、実行するたびに実行結果が異なります。
Teleportationは量子テレポーテーションをシミュレーションしたものです。

案外簡単にできますので、ぜひ興味をもっていただきたいです。
なお、4月に勉強会を予定してます。こちらで発表する予定です。







2017年10月18日水曜日

【Microsoft Azure, DeepLearning】Gluon API を Azure Cloud Shell で使う

10/12に、AWSとマイクロソフトが深層学習ライブラリ「Gluon」を発表しました。
http://www.businesswire.com/news/home/20171012005742/en/AWS-Microsoft-Announce-Gluon-Making-Deep-Learning

Gluon API は、githubでプロジェクトが公開されています。
https://github.com/gluon-api/gluon-api

今のところApache MXNetをサポートしていますが、近いうちに Microsoft Cognitive Toolkit もサポート予定です。

Pythonが動作すれば動かせそうなので、ここはひとつ、Azure Cloud Shell で動かしてみましょう。(UbuntuだからもちろんVMでもオンプレでも同様に使えます)

まず、AzureポータルでCloudShellを起動します。
右上の「>_」をクリックすると、ページの下にターミナルが立ち上がります。



次に、pip3でMXNetと関連するパッケージを導入します。
なお、アクセス権の問題で「--user」をつけてコマンドを実行してください。

$ pip3 install mxnet --user

インストールが終わったら、手書き文字認識のデモを動かしてみます。
githubのチュートリアルは Jupyter Notebook用のファイルなので、以下のページのPythonコードをコピペしてCloudShellにコードを置きます。
以下のように実行すると、学習データをダウンロードして実行します。(実行結果のスコアは環境によって異なります)

$ python3 sample.py
Downloading /home/takeshi/.mxnet/datasets/train-images-idx3-ubyte.gz from http://data.mxnet.io/data/mnist/train-images-idx3-ubyte.gz...
Downloading /home/takeshi/.mxnet/datasets/train-labels-idx1-ubyte.gz from http://data.mxnet.io/data/mnist/train-labels-idx1-ubyte.gz...
Downloading /home/takeshi/.mxnet/datasets/t10k-images-idx3-ubyte.gz from http://data.mxnet.io/data/mnist/t10k-images-idx3-ubyte.gz...
Downloading /home/takeshi/.mxnet/datasets/t10k-labels-idx1-ubyte.gz from http://data.mxnet.io/data/mnist/t10k-labels-idx1-ubyte.gz...
Epoch 0. Current Loss: 0.13201400637626648.
Epoch 1. Current Loss: 0.14284838736057281.
Epoch 2. Current Loss: 0.015998387709259987.
Epoch 3. Current Loss: 0.1412399709224701.
Epoch 4. Current Loss: 0.01220973301678896.
Epoch 5. Current Loss: 0.020301349461078644.
Epoch 6. Current Loss: 0.008270819671452045.
Epoch 7. Current Loss: 0.001500518061220646.
Epoch 8. Current Loss: 0.0009114982676692307.
Epoch 9. Current Loss: 0.006475736387073994.

ちょっとしたことがCloudShellで出来ちゃいました。

2017年8月18日金曜日

【Microsoft Azure】空耳で気になる曲を Azure Media Analytics で解析してみよう(Python3編)

Azure Media Analytics は、メディアサービスが提供する分析機能です。
https://docs.microsoft.com/ja-jp/azure/media-services/media-services-analytics-overview

さんざんいろんな人が試してるとは思いますが、もちろんWindowsは使わない方向で考えて、Pythonで以下のライブラリを使ってみました。

amspy
https://github.com/msleal/amspy

試したところ、Python3で動作し、REST API をラップしているようです。

では、まずはUbuntuへの導入方法を。

最初にライブラリを導入するための、Python3用setuptoolsとpipをaptでインストールします。

$ sudo apt install python3-pip python3-setuptools

次に、pipを最新版にして、ストレージに接続するための Azure SDK for Python をインストールします。

$ sudo pip3 install —upgrade pip
$ sudo pip3 install azure

githubより、amspyをクローンしてインストールします。

$ git clone https://github.com/msleal/amspy.git
$ cd amspy
$ sudo python3 setup.py install

次は、exampleを使って、Indexer v2 を使って解析する準備をします。
ポータルよりメディアサービスのアカウントキーとストレージのアカウントキーよりアクセス情報を確認して設定ファイルに保存します。

$ cd amspy/example
$ vi config.json

設定ファイルの中身はこのように設定します。
{
   "accountName": "メディアサービスのアカウント名",
   "accountKey": "メディアサービスの主キー",
   "sto_accountName": "ストレージ アカウント名",
   "sto_accountKey": "ストレージのキー",
   "logName": "log/indexer.txt",
   "logLevel": "DEBUG",
   "purgeLog": "Yes"
}

Indexer v2 のサンプルを設定します。

$ cd analytics/indexer_v2
$ vi indexerv2.json

今回は空耳なので、設定ファイルのLanguageを日本語(jaJP)にします。

{
  "version":"1.0",
  "Features":
    [
       {
       "Options": {
            "Formats":["WebVtt","ttml"],
            "Language":"jaJP",
            "Type":"RecoOptions"
       },
       "Type":"SpReco"
    }]
}

なお、空耳ということで今回は独断と偏見で Prince の Batdance にしました。
https://youtu.be/0wbtLYPTCug

さて、農協牛乳はどうなるのでしょうか?(再生時間で5:14のあたり)
本当はボーカルトラックだけ抜き出してやりたいところですが、大変なのでそのまま楽曲を解析します。

ファイルを置いて、プログラムを多少変更します。

$ mv /home/xxx/Batdance.mp3 .
$ vi indexer_v2.py

プログラムは、76行目を読み込むファイル名、ファイルの相対パスに変更します。

VIDEO_NAME = "Batdance.mp3"
VIDEO_PATH = "./Batdance.mp3"

また、最終行に以下の2行を追加すると、メディアサービスで使ったストレージを自動的に削除するのでお財布に優しいです。

response = amspy.delete_media_asset(access_token, asset_id)
response = amspy.delete_media_asset(access_token, output_asset_id)

では実行します。結果は、同じディレクトリのoutput以下に保存されます。

$ python3 indexer_v2.py
$ cat output/Batdance_aud_SpReco.vtt

中身をみてみましょう。

WEBVTT

00:00:03.200 --> 00:00:05.070
王への愛*にいる

00:00:06.150 --> 00:00:12.010
アプリ

00:00:47.350 --> 00:00:49.510
H 島

00:00:50.330 --> 00:00:53.360
H

00:01:05.540 --> 00:01:09.900
Pro キッズ店

00:01:24.720 --> 00:01:27.480
V

00:01:32.670 --> 00:01:35.350
アプリ

00:01:38.810 --> 00:01:40.070
V

00:02:42.860 --> 00:02:44.280
アピタ

00:02:45.800 --> 00:02:51.990
V

00:02:52.540 --> 00:02:54.520
V

00:03:04.500 --> 00:03:05.250
そうね

00:03:06.740 --> 00:03:10.640
ハイト保証ですからねやってるからな

00:03:11.400 --> 00:03:21.570
Z

00:03:27.170 --> 00:03:30.280
このパスタ

00:03:31.150 --> 00:03:43.680
プレステ零

00:03:46.660 --> 00:03:49.000
V

00:03:50.010 --> 00:03:51.450
果実は行くってなんです

00:03:53.010 --> 00:03:57.610
Pro

00:04:21.250 --> 00:04:26.050
ステージ v だよね

00:04:27.090 --> 00:04:29.480
V

00:04:30.610 --> 00:04:32.380
ええ

00:04:42.630 --> 00:04:45.360
で

00:04:53.890 --> 00:04:54.910
見つめるます

00:05:03.130 --> 00:05:04.170
V

00:05:06.740 --> 00:05:08.130
作品

00:05:53.780 --> 00:05:57.410
V

00:06:06.770 --> 00:06:08.020
V

00:06:09.110 --> 00:06:13.890
プラチナメンバー

農協牛乳はありませんでしたが、さらに謎な言葉が並んでいます...




(2017.08.19追記)
ついでに手元にあったコンテスト用のGetWildのボーカルトラックを解析してみたら、こんなことになってました。

00:00:00.090 --> 00:00:06.530
あぁスパルタは大変大きいり続けんだ
上がらんくらい army 発信いる犬系るんだ

00:00:07.360 --> 00:00:13.680
シンプルな種類に意味じゃなきゃ野生でも明日に怯えて言ってあげよう

00:00:14.780 --> 00:00:26.440
撃ち合点はまあペンはサーバーありサイン誰からのために行きらんだえるなら一
アーチは今まあちょいはサーバーある人に何も

00:00:27.360 --> 00:00:30.360
時間は食うわない

00:00:32.940 --> 00:00:59.270
ジャムはじゃあきっと売り電話解けない愛の parser ウォーターにて客はじゃあ
買うのマーチで優しいスターに甘えていたクーガーないがてっちゃんせんがけんいだけが
守られるものがどこかにあんうるさてっちゃんせんが一人でも傷ついた

00:00:59.310 --> 00:01:02.020
あ有名を取り戻すやを




2017年5月13日土曜日

【Microsoft Azure】PHP向けDocumentDBライブラリのCosmosDB対応できてます

Build2017でDocumentDBの後継であるAzure Cosmos DBが発表されました。
https://azure.microsoft.com/en-us/blog/azure-cosmos-db-microsofts-globally-distributed-multi-model-database-service/

Azure Cosmos DB の公開に合わせて、開発しているPHP向けDocumentDBライブラリも更新しました。

Cosomos DB を作成する際に、APIの選択を"SQL(DocumentDB)"にしてもらえば今まで通り使えます。