読者です 読者をやめる 読者になる 読者になる

そごうソフトウェア研究所

SOA、開発プロセス、ITアーキテクチャなどについて書いています。Twitterやってます@rsogo

Mule HDFSコネクタ5.0.0の検証(Mule EEが必要でした。途中で止めています)

MuleにはHDFSコネクタというのがあって、HDFSに接続できるみたいです。試してみたいと思います。 この検証の結果としては、Mule EEがHDFSコネクタの検証に必要だと分かったため、途中で止めています。

HDFSコネクタの情報源

  • リリースノート

HDFS Connector Release Notes // MuleSoft Documentation

このコネクタは「Select」というカテゴリに分類されています。 コネクタのサポートポリシーはこちらに記載があります。

Anypoint Connectors // MuleSoft Documentation

Product Versioning and Back Support Policy

このAPIリファレンスにRequires Mule Enterprise Licenseと記載があるのですが、最初は見落としていました。

Anypoint Studioの準備

HDFSコネクタを使用するためにAnypoint Studioをインストールします。 Anypoint StudioはこちらのDownload Anypoint Studioからダウンロードして、インストーラを実行して下さい。 Mule Runtime Engine | MuleSoft Developers

Mule Runtimeのインストール

Anypoint Studioでは埋め込みのMule Runtimeを使うことができます。 インストールもAnypoint Studioから実行できます。

Anypoint Studioの「Help」、「Install New Software」からWork withで「Mule Runtimes for Anypoint Studio」を選択します。

「Anypoint Studio Community Runtimes」を選択してインストールします。 f:id:begirama:20160920122639p:plain f:id:begirama:20160920122701p:plain

HDFSコネクタのインストール

リリースノートからインストールマニュアルへのリンクが404になるんだけど、多分Githubで公開されてる、このサイトを見ればOKそう。

hdfs-connector/USAGE.md at master · mulesoft/hdfs-connector · GitHub

HDFSコネクタもAnypoint Studioからインストールできます。

Anypoint Studioの「Help」、「Install New Software」からWork withで「Anypoint Connectors Update Site」を選択します。

f:id:begirama:20160920123833p:plain f:id:begirama:20160920123859p:plain

HDFSコネクタのサンプルを試す

「File」、「Import」からダウンロードしたサンプルのmule-project.xmlを含むディレクトリを開きます。 f:id:begirama:20160920125712p:plainf:id:begirama:20160920125822p:plain

mule-app.propertiesのconfig.nameNodeUriにHadoopがリッスンしているホスト名とポート番号を設定します。

config.nameNodeUri=hdfs://localhost:9000
config.sysUser=

Anypont Studioで「Run」を実行します。

自分の場合は、dw:transform-message周りでエラーがでたので、List_Status_Flowと、Glob_Status_Flowを丸っと削除することで実行することができました。

エラーが出ずに実行できればhttp://localhost:8090/にアクセスします。

f:id:begirama:20160920151036p:plain

Webベースでいろいろな操作ができるようになっているので、適当に実行してみると・・・

f:id:begirama:20160920151259p:plain

Mule EEが必要だったみたいです。 今回はCEで検証する必要があったので、一旦ここまで。

Hiveでファイルからデータをロードする

前記事はこれ。 begirama.hatenablog.com

begirama.hatenablog.com

読み込むファイルを作成します

今回はタブ区切りの次のようなファイルを作成します。

1    aaa
2   bbb
3   ccc

読み込む先のテーブルを作成します

項目の区切りをタブ、行末を改行として、数値型のidと、文字列型のnameを持つテーブルを作成します。項目の区切りとかを、ロード時じゃなくて、テーブル作成時に指定できるのが、RDBMSとは違う感じ。

hive> create table hoge(id int, name string) row format 
> delimited fields terminated by '\t' 
> lines terminated by '\n';
create table hoge(id int, name string) row format delimited fields terminated by '\t' lines terminated by '\n'
OK
Time taken: 0.138 seconds

load dataでさっき作ったファイルを読み込みます

hive> load data local inpath '/Users/rsogo/work/hive/sample.txt' into table hoge;
load data local inpath '/Users/rsogo/work/hive/sample.txt' into table hoge
Loading data to table testdb.hoge
Table testdb.hoge stats: [numFiles=1, totalSize=19]
OK
Time taken: 1.659 seconds

ロードしたデータをselectしてみます。項目名が出るように設定して・・・

hive> set hive.cli.print.header=true;
set hive.cli.print.header=true

selectします。

hive> select * from hoge;
select * from hoge
OK
hoge.id hoge.name
1   aaa
2   bbb
3   ccc
NULL    NULL
Time taken: 0.118 seconds, Fetched: 4 row(s)

あれ、最後の空行が1レコードとして登録されてる。

Hiveでデータベースを準備する

前にMac上にセットアップした環境にHiveで環境を作っていきます。

begirama.hatenablog.com

Hiveデータベースを作成

データベースを確認する

hive> show databases;
show databases
OK
default
Time taken: 0.567 seconds, Fetched: 1 row(s)

データベースを作成

hive> create database testdb;
create database testdb
OK
Time taken: 0.253 seconds
hive> show databases;
show databases
OK
default
testdb
Time taken: 0.074 seconds, Fetched: 2 row(s)

データベースを選択

hive> use testdb;
use testdb
OK
Time taken: 0.018 seconds

Hiveテーブルを作成

テーブルを確認する

hive> show tables;
show tables
OK
Time taken: 0.211 seconds

テーブルを作成

hive> CREATE TABLE pokes (foo INT, bar STRING);
CREATE TABLE pokes (foo INT, bar STRING)
OK
Time taken: 0.581 seconds
hive> show tables;
show tables
OK
pokes
Time taken: 0.075 seconds, Fetched: 1 row(s)

作成したテーブル定義を確認

hive> describe pokes;
describe pokes
OK
foo                     int                                         
bar                     string                                      
Time taken: 0.588 seconds, Fetched: 2 row(s)

MacにHadoopとHiveをセットアップする

MuleからHadoopに接続するのが目的です。 今回はHadoopをセットアップしたいと思います。

http://hadoop.apache.org/images/hadoop-logo.jpg

環境

OS X El Capitan 10.11.6

リモートログインをONにしておきます。 f:id:begirama:20160919224451p:plain

Hadoop

install

brew install hadoop

HADOOP_HOMEは/usr/local/Cellar/hadoop/2.7.1/libexecでした。

export HADOOP_HOME=/usr/local/Cellar/hadoop/2.7.1/libexec

設定ファイルの変更

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
       <name>fs.defaultFS</name>
       <value>hdfs://localhost:9000</value>
    </property>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

フォーマット

hadoop namenode -format
$ hadoop namenode -format
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
16/09/19 18:56:23 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = ryohei-no-macbook-pro.local/192.168.11.5
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 2.7.1
STARTUP_MSG:   classpath = 略
STARTUP_MSG:   build = https://git-wip-us.apache.org/repos/asf/hadoop.git -r 15ecc87ccf4a0228f35af08fc56de536e6ce657a; compiled by 'jenkins' on 2015-06-29T06:04Z
STARTUP_MSG:   java = 1.8.0_45
************************************************************/
16/09/19 18:56:23 INFO namenode.NameNode: registered UNIX signal handlers for [TERM, HUP, INT]
16/09/19 18:56:23 INFO namenode.NameNode: createNameNode [-format]
16/09/19 18:56:24 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Formatting using clusterid: CID-2c03a33c-9032-4af1-a0d8-195f92730991
16/09/19 18:56:24 INFO namenode.FSNamesystem: No KeyProvider found.
16/09/19 18:56:24 INFO namenode.FSNamesystem: fsLock is fair:true
16/09/19 18:56:24 INFO blockmanagement.DatanodeManager: dfs.block.invalidate.limit=1000
16/09/19 18:56:24 INFO blockmanagement.DatanodeManager: dfs.namenode.datanode.registration.ip-hostname-check=true
16/09/19 18:56:24 INFO blockmanagement.BlockManager: dfs.namenode.startup.delay.block.deletion.sec is set to 000:00:00:00.000
16/09/19 18:56:24 INFO blockmanagement.BlockManager: The block deletion will start around 2016 9 19 18:56:24
16/09/19 18:56:24 INFO util.GSet: Computing capacity for map BlocksMap
16/09/19 18:56:24 INFO util.GSet: VM type       = 64-bit
16/09/19 18:56:24 INFO util.GSet: 2.0% max memory 889 MB = 17.8 MB
16/09/19 18:56:24 INFO util.GSet: capacity      = 2^21 = 2097152 entries
16/09/19 18:56:24 INFO blockmanagement.BlockManager: dfs.block.access.token.enable=false
16/09/19 18:56:24 INFO blockmanagement.BlockManager: defaultReplication         = 1
16/09/19 18:56:24 INFO blockmanagement.BlockManager: maxReplication             = 512
16/09/19 18:56:24 INFO blockmanagement.BlockManager: minReplication             = 1
16/09/19 18:56:24 INFO blockmanagement.BlockManager: maxReplicationStreams      = 2
16/09/19 18:56:24 INFO blockmanagement.BlockManager: shouldCheckForEnoughRacks  = false
16/09/19 18:56:24 INFO blockmanagement.BlockManager: replicationRecheckInterval = 3000
16/09/19 18:56:24 INFO blockmanagement.BlockManager: encryptDataTransfer        = false
16/09/19 18:56:24 INFO blockmanagement.BlockManager: maxNumBlocksToLog          = 1000
16/09/19 18:56:24 INFO namenode.FSNamesystem: fsOwner             = rsogo (auth:SIMPLE)
16/09/19 18:56:24 INFO namenode.FSNamesystem: supergroup          = supergroup
16/09/19 18:56:24 INFO namenode.FSNamesystem: isPermissionEnabled = true
16/09/19 18:56:24 INFO namenode.FSNamesystem: HA Enabled: false
16/09/19 18:56:24 INFO namenode.FSNamesystem: Append Enabled: true
16/09/19 18:56:24 INFO util.GSet: Computing capacity for map INodeMap
16/09/19 18:56:24 INFO util.GSet: VM type       = 64-bit
16/09/19 18:56:24 INFO util.GSet: 1.0% max memory 889 MB = 8.9 MB
16/09/19 18:56:24 INFO util.GSet: capacity      = 2^20 = 1048576 entries
16/09/19 18:56:24 INFO namenode.FSDirectory: ACLs enabled? false
16/09/19 18:56:24 INFO namenode.FSDirectory: XAttrs enabled? true
16/09/19 18:56:24 INFO namenode.FSDirectory: Maximum size of an xattr: 16384
16/09/19 18:56:24 INFO namenode.NameNode: Caching file names occuring more than 10 times
16/09/19 18:56:24 INFO util.GSet: Computing capacity for map cachedBlocks
16/09/19 18:56:24 INFO util.GSet: VM type       = 64-bit
16/09/19 18:56:24 INFO util.GSet: 0.25% max memory 889 MB = 2.2 MB
16/09/19 18:56:24 INFO util.GSet: capacity      = 2^18 = 262144 entries
16/09/19 18:56:24 INFO namenode.FSNamesystem: dfs.namenode.safemode.threshold-pct = 0.9990000128746033
16/09/19 18:56:24 INFO namenode.FSNamesystem: dfs.namenode.safemode.min.datanodes = 0
16/09/19 18:56:24 INFO namenode.FSNamesystem: dfs.namenode.safemode.extension     = 30000
16/09/19 18:56:24 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.window.num.buckets = 10
16/09/19 18:56:24 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.num.users = 10
16/09/19 18:56:24 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.windows.minutes = 1,5,25
16/09/19 18:56:24 INFO namenode.FSNamesystem: Retry cache on namenode is enabled
16/09/19 18:56:24 INFO namenode.FSNamesystem: Retry cache will use 0.03 of total heap and retry cache entry expiry time is 600000 millis
16/09/19 18:56:24 INFO util.GSet: Computing capacity for map NameNodeRetryCache
16/09/19 18:56:24 INFO util.GSet: VM type       = 64-bit
16/09/19 18:56:24 INFO util.GSet: 0.029999999329447746% max memory 889 MB = 273.1 KB
16/09/19 18:56:24 INFO util.GSet: capacity      = 2^15 = 32768 entries
16/09/19 18:56:24 INFO namenode.FSImage: Allocated new BlockPoolId: BP-816378738-192.168.11.5-1474278984811
16/09/19 18:56:24 INFO common.Storage: Storage directory /tmp/hadoop-rsogo/dfs/name has been successfully formatted.
16/09/19 18:56:25 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
16/09/19 18:56:25 INFO util.ExitUtil: Exiting with status 0
16/09/19 18:56:25 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at {Dummy}
************************************************************/

start-all.shで起動

$ $HADOOP_HOME/sbin/start-dfs.sh 
start-all.sh 
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
16/09/19 22:36:55 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [localhost]
Password:
localhost: starting namenode, logging to /usr/local/Cellar/hadoop/2.7.1/libexec/logs/hadoop-rsogo-namenode-Ryohei-no-MacBook-Pro.local.out
localhost: Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Password:
localhost: starting datanode, logging to /usr/local/Cellar/hadoop/2.7.1/libexec/logs/hadoop-rsogo-datanode-Ryohei-no-MacBook-Pro.local.out
localhost: Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Starting secondary namenodes [0.0.0.0]
Password:
0.0.0.0: starting secondarynamenode, logging to /usr/local/Cellar/hadoop/2.7.1/libexec/logs/hadoop-rsogo-secondarynamenode-Ryohei-no-MacBook-Pro.local.out
0.0.0.0: Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
16/09/19 22:37:36 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
starting yarn daemons
starting resourcemanager, logging to /usr/local/Cellar/hadoop/2.7.1/libexec/logs/yarn-rsogo-resourcemanager-Ryohei-no-MacBook-Pro.local.out
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Password:
localhost: starting nodemanager, logging to /usr/local/Cellar/hadoop/2.7.1/libexec/logs/yarn-rsogo-nodemanager-Ryohei-no-MacBook-Pro.local.out
localhost: Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8

バージョンチェック

$ hadoop version
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Hadoop 2.7.1
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 15ecc87ccf4a0228f35af08fc56de536e6ce657a
Compiled by jenkins on 2015-06-29T06:04Z
Compiled with protoc 2.5.0
From source with checksum fc0a1a23fc1868e4d5ee7fa2b28a58a
This command was run using /usr/local/Cellar/hadoop/2.7.1/libexec/share/hadoop/common/hadoop-common-2.7.1.jar

stop-all.shで停止

$ $HADOOP_HOME/sbin/stop-all.sh 
This script is Deprecated. Instead use stop-dfs.sh and stop-yarn.sh
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
16/09/19 22:34:25 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Stopping namenodes on [localhost]
Password:
localhost: stopping namenode
Password:
localhost: stopping datanode
Stopping secondary namenodes [0.0.0.0]
Password:
0.0.0.0: stopping secondarynamenode
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
16/09/19 22:34:55 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
stopping yarn daemons
stopping resourcemanager
Password:
localhost: stopping nodemanager
no proxyserver to stop

Hive

install

$ brew install hive

起動

動作確認してデータベース一覧を表示できればOK。

$ hive
hive> show databases;
show databases
OK
default

Google I/O 2016。Keynote自分まとめ。Machine Learning、Google Home、Allo、Duo、Android N

Keynoteのライブ、見終わりました。

ここで録画が見られます。 www.youtube.com

Keynoteのメッセージの中心にはマシンラーニングがあったのかなと思います。 AlphaGoのようなマシンラーニングを活かすために、Google Assistantと、Assistantにテキストや、声でコミュニケーションするためのプロダクトが発表されました。

Google Home

Amazon Echoみたいなやつ。 f:id:begirama:20160519042558p:plain

家の中に置いておいて、声でGoogle Assistantに指示が出せます。

デモ中であったのは、「OK Google」って言って、音楽をかけたり(家中のスピーカーにも出力できる!)、宇宙について調べたり、スケジュールを変更したり。

リアルにどこまで使えるかやってみたい。 そのうち、Google Homeと連携するものを開発するためのツールが提供されるとのこと。

Google製メッセージアプリ「Allo」、ビデオチャットアプリ「Duo」

どちらもGoogleが出す、コミュニケーションアプリです。

  • Allo f:id:begirama:20160519043907p:plain 普通のメッセージアプリにない機能としては、ユーザーの振る舞いを学習して、相手の会話への回答の候補を出してくれます。それでよければ、タップして選ぶだけ。面白かったのが、相手が送ってきた犬の写真に対して、画像解析して、テキストへの返信と同じように「Cute dog!」などの回答候補がでること。

デモではチャットでレストランの予約をとっていました。 これも予約するためのプラットフォームに参加するお店がどのくらい日本で増えるかな。

個人的には、メッセージのフロントはLINEとか、FacebookメッセージやSlackなどなんでも良くって、後ろでGoogle Assistantが動いてて、会話のサジェスチョンもしてくれるし、レストランも予約してくれるってアーキテクチャがいいな。 きっとbotフレームワークもでるよね。

  • Duo f:id:begirama:20160519045543p:plain 娘さんのダンスが可愛いね。 電話をかけると、受ける方は取る前に相手の動画を見られる。誰かが家のインターフォンみたいなかんじだねって言ってた。確かに。

ハングアウトはどうなるんだろ。

Androidについて

Android Wear 2.0

これまでスマートフォンを母艦としないと何もできませんでしたが、スタンドアローンでいくつかの機能が動くようです。スタンドアローンで何ができて、何ができないのか、詳細はWearのセッションを楽しみにしたいと思います。

Android N

Android N自体は以前から発表されているので、知っている人は知っているという感じでした。 ここから誰でもNの名前を投票できるって。 Help name Android N

DaydreamっていうVRの仕組みでは、Android Nが前提となっているようです。

Android Studio 2.2

既にプレビュー版がダウンロード可能になっています。 Layout Designerが新しくなるみたいです。XCodeなみにUIの開発が楽になれば・・・。

Android Instant App

インストールしないNativeアプリ。このあたり眠くて記憶がない。

Introducing Android Instant Apps | Android Developers Blog

Android Instant Apps | Android Developers

Firebase2.0

Androidとは直接関係ないけど、バックエンドサービスのFirebaseにも触れていました。

Google I/O 2016 Live有りAndroidセッションまとめ

いよいよGoogle I/Oが今年も始まりますね。

events.google.com

ライブストリーミングがある予定の、Android関連セッションのうち、私が興味があるものをリストアップしてみました。 ちなみに私が興味があるのはAndroidの最新情報の概要と、AndroidアプリのUI、UX、アーキテクチャです。あと、Wearはどうなるのか?

May 18

キーノート

まずはキーノート。Androidについても何かしら発表があるでしょう。 goo.gl

What's new in Android" at #io16:

初日のキーノートの後は、Androidの最新情報のまとめから。キーノートと、What's newまでは生で見たい気がする。 goo.gl

Image compression for Android developers

What's newの後にいきなり、細かいトピックですが、画像の圧縮について。 goo.gl

Multi-Window mode

あんまり興味ないけど、一応、Android Nからサポートされるマルチウィンドウへの対応。 goo.gl

What the Fragment?

Fragmentについて。なんで今頃わざわざGoogle I/Oでやるんだろうか。 みんなどういう風に使うか、悩んでいるから? goo.gl

Android Auto: The Road Ahead

直近使うことはなさそうだけど、話題性としては、車の中で使用するためのプラットフォーム、Android Autoについて。 goo.gl

May 19

Android themes & styles demystified

テーマとスタイルについて。 goo.gl

What's new in Android development tools

Androidの開発ツールについて。最近2.xにバージョンアップしたAndroid Stuidioについてでしょうか。 goo.gl

What's new in Android Wear?

はっきり言って、Wearに関するセッションは少ないです。 今回のI/Oでも盛り上がりに欠けそうな予感はしていますが、新しい発表はあるでしょうか。 goo.gl

The experts' guide to Android development tools

Android Studioの深いところやTipsを教えてくれて、生産性があがるらしいです。 goo.gl

May 20

Android UI and layouts

UIとレイアウトについて。カスタムView、カスタムLayout、効率的なLayout階層構造などについて教えてくれるみたいです。 goo.gl

Android application architecture: Get ready for the next billion!

オフライン対応についてみたい。 goo.gl

A window into transitions

画面遷移のアニメーションなどについて。これ、iOSと比較して弱かったところなので、最新だとどうなっているのか興味がある。 goo.gl

Cordovaを6.xに、cordova-androidを5.xにバージョンアップしました

Cordovaをバージョンアップしました。

  • バージョンアップ前
$ cordova -version
5.4.1
  • バージョンアップ
$ sudo npm install  -g cordova@6.1.1
  • バージョンアップ後
$ cordova -version
6.1.1

Pluginのバージョン確認

$ cordova plugin version
com.phonegap.plugins.PushPlugin 2.5.0 "PushPlugin"
cordova-plugin-console 1.0.2 "Console"
cordova-plugin-device 1.1.0 "Device"
cordova-plugin-statusbar 2.0.0 "StatusBar"
cordova-plugin-whitelist 1.2.0 "Whitelist"

合わせてcordova platformのバージョンアップ

以前からcordova-androidのバージョンが古いと警告がでていたので、platformのバージョンアップもやります。

cordova-android 5についての公式のリリース情報はこちら。手順も載ってる。 Cordova Android 5.0.0 - Apache Cordova

 Using this version of Cordova with older version of cordova-android is being deprecated. Consider upgrading to cordova-android@5.0.0 or newer.
  • バージョンアップ前
$ cordova platform
Installed platforms:
  android 4.1.1
  browser 4.0.0
Available platforms: 
  amazon-fireos ~3.6.3 (deprecated)
  blackberry10 ~3.8.0
  firefoxos ~3.6.3
  ios ~4.1.0
  osx ~4.0.1
  webos ~3.7.0
  • バージョンアップ
$ cordova platform update android
Updating android project...
Android project updated with cordova-android@5.1.1
Discovered plugin "PushPlugin" in config.xml. Installing to the project
  • バージョンアップ後
$ cordova platform
Installed platforms:
  android 5.1.1
  browser 4.0.0
Available platforms: 
  amazon-fireos ~3.6.3 (deprecated)
  blackberry10 ~3.8.0
  firefoxos ~3.6.3
  ios ~4.1.0
  osx ~4.0.1
  webos ~3.7.0

android 5.1.1に上がってますね。