2016/12/12

Windowsに頑張ってSupersetをインストールしてSQL Serverに繋いでみた


SupersetはAirbnbが開発しオープンソースにしたデータ可視化ソフトウェアです。
最近では同じジャンルのでre:dashの次だなんて言われていますね。

デモを見ていただければわかると思いますが、可視化表現にかなり力が入っています。
Gallery — Superset's documentation

今回はこいつをインストールして実際に起動したというところまでのお話です。

オフィシャルでも書かれているとおりWindowsはサポートされていません。
公式のインストールドキュメントにWindowsでのセットアップ手順が書かれていたので調整乗ってインストールしましたが、ちゃんとした環境で動かしたいのであればLinuxやMacOS上で動作させることをおすすめします。

インストールの手順はオフィシャルのドキュメントのとおりです。

 Superset's documentation
 http://airbnb.io/superset/installation.html#getting-started

事前にWindows版Python3.5をインストールしておきます。

 Python Releases for Windows
 https://www.python.org/downloads/windows/

Pythonのインストールができたら今後Pipをインストールし事前の準備は完了です。
pipのインストールをしてvirtualenvのセットアップが完了したら今度は実際にsupersetのインストールにかかるわけですが、そのままインストールを実行しても失敗します。
C++のBuild ToolのインストールとSASLのためのモジュールが足りないと怒られます。

 Visual C++ Build Tools
 http://landinghub.visualstudio.com/visual-cpp-build-tools

まずはVC++のBuild Toolsのインストールを行い、次に、WindowsのPythonで使えるSASLのモジュールをインストールです。

 Unofficial Windows Binaries for Python Extension Packages
 http://www.lfd.uci.edu/~gohlke/pythonlibs/#sasl

実行するPythonのバージョンとOSの環境に合わせたwhlファイルをダウンロードし、ローカルでインストールします。

pip install sasl‑0.2.1‑cp35‑cp35m‑win_amd64.whl
 ※今回はPython3.5の64bitWindows環境向けのファイルをダウンロードし実行


この状態で
pip install superset
を実行するとおそらく問題なくインストールが完了するはず。
それでもエラーが出る場合にはエラー文言を読みつつ対応してください。


インストールが完了した後、supersetコマンドは直接実行してもそんなコマンドないと怒られちゃいますので、python superset XXで実行してください。

Windowsの場合普通にrunserverを実行してもまだモジュールがないと言われ実行できません。
これらに対応する方法がよくわからなかったので、-d オプションを付けDeveloperモードで動かします。この状態ならなんとか動作確認できました。
 この場合にはlocalhost以外からのアクセスができないのであしからず。


なんとか起動している状態で、ブラウザを起動しアクセスしてみます。
http://localhost:8088
に接続すると延々とローディング画面が続きます。

これを無視して右上の「Login」からセットアップ中に設定したadminで入ってみます。
無事ログインできるとダッシュボード一覧が表示されます。
最初にログインした時には3つのサンプルが表示されているかと。

一番上に表示した画像はこのサンプルの中のBirthsと言うものです。
Re:dasのどことなく垢抜けない感じとは打って変わって見て分かる通り非常にグラフィカルでインタラクティブな表示になっています。


メインのお題となるSQL Serverとの接続です。
事前に2つPythonのモジュールを追加しておく必要があります。

pip install pymssql
pip install pyodbc

その後データベースの設定画面でSQLAlchemy URIの項目にデータベースを指定するわけです。

mssql+pymssql://sa:XXXXXXXXXX@localhost/dbname

XXXの部分にはsaに対応するパスワードを入力してください。
今回はSQL Serverが動いている同じサーバ上でSupersetを動かしているのでlocalhost/dbnameという指定を指定としていますが、実際には各々の環境に合わせて書き換えてください。

登録前にTest Connectionで接続確認できます。
接続確認できましたら今度はSaveでデータベースを登録します。

データベースを登録するだけでは使えず、今後はテーブルの登録も行う必要があります。
(もっといい方法があるかもしれないですが)テーブルは1つづつしか登録できないような挙動です。普通リレーションを組んでいるのでなんとも面倒くさく、それでいて使いにくい。



実際に画面を作成するためにはSlicesを作りDashboartdsに設置していくイメージ。この辺はRe:dashと同じ感じですね。
あとは、画面上に表示されるChart Typeを選択してサイドメニューのパラメータを弄るだけで確かに格好いい表示ができます。ただ、WordCloudのような非常に複雑なものチャートを選択するとパラメータ変更する前に開いているブラウザが落ちるという挙動が気になります。

また、複数のテーブルで計算した結果をグラフィカルに出力するにはどうすればいいのかイマイチ分からないです。
SQL Labの項目からSQLを手入力することはできるのですが、この画面で投入したSQLはどんなに簡単なものでも完了したことはありませんでした。

Re:dashは確かにグラフィカルな表示には向いていませんが、SQLの結果を可視化できるという意味ではシンプルでよかったのですが、SupersetはSuperset上でSQLを実行するのではなく事前に一時テーブルなどに整形結果を格納しておく必要がありそうです。
そもそも、SQL入力しても結果が帰ってこないのがWindows版の問題点という可能性もありえます。。。


最も自分の手元にある環境がWindows端末しかなかったので今回はWindows環境にインストールしましたが、素直にサーバ立ててその上にインストールすることをおすすめします。
Re:dashにしろSupersetにしろきちんと使い込まないとよし悪しが見えてこないと思います。当分はこれで試行錯誤したいと思います;-p

2016/12/02

AWS re:Invent 2016の気になる製品 2日目

昨日(AWS re:Invent 2016の気になる製品)に引き続き今日も色々と発表があるみたいです。
実際には3日目みたい。

Amazon Pinpoint
モバイル向けのプッシュ通知を定義されたユーザセグメントごとに簡単に実行・追跡できるサービスみたい。ちょっと具体的にどんなものか不明


AWS CodeBuild
スケールするビルド環境…どんなものなのか不明


AWS Personal Health Dashboard
利用者の個々の契約に基づいた関連される情報が一覧表示されるというもの


AWS Batch
ジョブを設定すれば必要なタイミングで必要なデータを参照し、必要なコンピューティングで処理をするというもの。
コンピューティングにはもちろんスポットインスタンスが使えるみたいです。


AWS Shield
DDoSプロテションサービス


なんというかこれまでAWSと連携できるサービス(開発者向け、バッチ処理請負)などを提供していた会社を食う勢い。
これだけサービス間連携など複雑化している状況を考えると、パートナー戦略がAWSにとっても重要視しているのが伺えます。

2016/12/01

AWS re:Invent 2016の気になる製品

「aws re invent」の画像検索結果


AWSの年次イベントのre:Inventで色々製品発表されましたが、その中でも気になったものをピックアップ。これらの製品の公開情報しか触ってないので、実際の使い心地については不明な部分もあります。

日本語の情報はAmazon Web Services ブログDevelopers.IOにまとまっています。今回はこれらを参考にしてます。


Amazon AI(Amazon Polly / Amazon Rekognition / Amazon Lex)
AzureやGCP、IBMなどではすでにリリースされている所謂コグニティブサービスの分野にもAWSが参入するようです。


Amazon Athena
AWS版Google BigQueryってことかな
S3上のデータに対して”標準的な”SQLで問い合わせできるようになるらしい。


Amazon Lightsail
これは驚きのVPSへの参入です。価格路線やサービス内容などからDigitalOceanを強く意識したものになっています。時間課金+月額上限というよくあるVPSの料金体系です。
AWS本体のコントロールパネルとは別に、使いやすさを全面に簡素化したUIで提供しているのも印象的。


T2/R4/I3/C5/F1インスタンス、Elastic GPUsの追加
CPUやメモリ、IOがこれまで以上のラインナップとなっただけでなく、FPGAや専用のインスタンスの提供も開始するそうです。FPGAについては開発キットもあるそうなのでどのようなサービスとなっているのか興味あります。
Elastic GPUは”既存のインスタンス”に対してGPUアクセラレータを提供するというもの。GPUを必要なときに必要なだけ使えるというのはすごいことになりそう。


Amazon AuroraのPostgreSQL互換エンジンの対応
MariaDB互換の大規模RDS=Auroraだと勝手に理解していましたが、エンジンの選択ができるある意味プラットフォームですね。これは驚き。


コンピューティングに関すること全てをやってるという感じ。
頑張って追いかけないと:-p

2016/11/30

Macで快適にリモートデスクトップを使う設定


最近以前購入したMacBook Airを引っ張り出して使っていますが、やっぱりMacは使い心地がいいですね。
大きくて反応がよく、誤検出も少ないトラックバックはやっぱり素晴らしいです。

さて、そんなMacBook Airですが、メインの用途はリモートデスクトップです。Mac上で何かしらの作業をすることは基本なく、もっぱらWindows環境へのリモートデスクトップのための端末となっています。

その時の問題はMacのキーバインドとWindowsのキーバインドが若干違うことによるタイプミスで結構ストレスが溜まること。手っ取り早い解決策は、アプリケーションごとにキーバインドを変更するようなソフトウェアをインストールして対応しないといけません。
でも、再インストールやOSのアップデートのたびにソフトウェアの設定をしなおしたり、ソフトが動作しなくってめんどくさい思いはしたくない。


考えてみるとMac上でアプリを実行することがまずないと割り切ってしまえば装飾キーを全部Windows用の設定にすることで快適なリモートデスクトップ端末が出来上がります。

現在のmacOS上の装飾キー設定を現在は上記画像のようにしています。
これで、CaspキーはWindowsで言うCtrlキーとして機能し、OptionキーがWinキー、CommandキーがAltキーとしてアサインされます。
この辺のアサインは各人の好みですが、標準的なWindowsマシンだとこんな配置でしょうか。

これだけでは解決しない問題としてリモートデスクトップ先の言語設定変更ができないというところ。Macには半角・全角ボタンがないのでこの辺は他のキーの組み合わせで対応します。

リモートデスクトップ先のWindows側にGoogle日本語入力をインストールし、IMEの無効/有効を「Ctrl + Space」にアサインします。ただしこのままで実行するとMac側のIME切り替え、もしくはSpotlight検索窓が出てきてしまうので、Mac側の設定のショートカットからこれのチェックボックスを外します。
この作業完了するとIMEの切り替えもリモートデスクトップ越しに行うことができるわけです。


Windowsみたいに機種や世代によってキー配列が変わるということがApple製品ではまずないので端末を変えたとしても同じ設定をしていれば同様の使い勝手で利用できるのは嬉しい限り。
・・・とは言っても2012年に買ったMacBook Airが未だに現役なので、次の買い替えはいつになるのか、そしてMacアプリを使わないならそもそもMacを選ぶ理由があるのかどうか怪しいところです;-p