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

「ステュディオス」な生活

「ステュディオス」=何かを面白がり、熱中することにより生き生きしている状態。 日々の「ステュディオス」を求めて…

Mozilla Open Web Day に行ってきた

f:id:HeRo:20141005184118j:plain

台風が近づく中、 3331 Arts Chiyodaで行われた Mozilla Open Web Day in Tokyo に行ってきた。

思ったより人は少なく感じたが、盛況は盛況。Mozilla は大学といくつかの研究プロジェクトをやってたりらしく、参加者の年齢は若く感じた。

最初に以前から気になっていた FIrefoxOS搭載の開発用スマホ Flame の即売ブースがあったので、展示機をいじらせてもらった。スペックからすると、もっとカクカクした動きかと思いきや、結構サクサク動作だったので、衝動的に欲しくなり購入してしまった。隣のブースで売っていた Tech Booster のFirefoxOS 本も合わせて購入。この秋はFirefoxOS 向けのアプリにも挑戦してみよう。

f:id:HeRo:20141005184101j:plain

さて、今回一番気になっていたのは、金曜日に KDDI が発表した開発キットなのだが、実物を見ることができた。 最初に全展示内容のLT的な発表があったのだが、その中で何やら重大発表があるという。後ほどのセッションをお楽しみにと勿体つけるので、楽しみにしながら、Open Web Board の実物デモをみた。

f:id:HeRo:20141005184110j:plain

f:id:HeRo:20141005184114j:plain

Open Web Board 本体は上の1枚目の写真の上部のUSBメモリみたいなやつ。結構小さいが、HDMI端子とUSB-A端子、WifiBluetooth を備え、Zigbeeデバイスやmbedとも接続容易で、USB端子にWebカメラだって接続可能という拡張性の高い設計。まさに IoT のためのデバイス。なかなか良さそうだ。 デモではセンサーからの入力をZigbee経由で Open Web Board で集め、Websocketでサーバに送信しているという。 Gluin というWebベースのデバイス管理ツールも提供され、デバイス間の連携も簡単に行えるらしい。自分は組み込み系のエンジニアではないので、JSで拡張できる仕組みが用意されているのは助かる。

このイベントの冒頭で Mozilla代表の 瀧田さんもおっしゃっておられたが、FirefoxOSを IoTデバイスにも活用しようとしているらしい。Arduinoにもチャレンジしたがやはり馴染みのない言語を覚えないといけないのはとっつきにくかった。FirefoxOSをならJSで実装できるので、Web系エンジニアにも始めやすだろう。 今後、Open Web Board は ハッカソン等のイベントで配布するという。是非参加したいな。

あと、OpenStreatMap の人も参加していて、最近の OpenStreatMapについていろいろ聞くことができた。以前からかなり進化しており、びっくりした。特に地図を登録するツールが使いやすくなっていたので、久々に使ってみようと思った。

おっと、書き忘れそうになったが、重大発表というのは au からFirefoxOSのスマホが年内、クリスマス時期に出るらしい。わざわざ社長がビデオメッセージで発表したので出るのだろう。端末のデザインにも力を入れているとのことなので、こちらにも期待。

Chcolatyを使ってみた

普段、MacLinuxを使っていてあんまりWindowsを使う機会が減っているのだが、久々にWindowsを触ってみた。

Windowsって初期からセットアップしようとするとあちこちからインストーラをダウンロードしてって作業があるので LinuxMacよりめんどくさいと思っていたのだけと、aptやhomebrewの様にコマンドラインからソフトをインストールできるというwindows版パッケージマネージャということで以前から気になっていた Chocolatey を試してみた。

インストール

インストールする前に windows update で最新にしておく。インストールしたばかりのwindowsだと そうしないと .NET フレームワークがインストールされていなくてwarning が出ることがある。

cmd を管理者モードで起動する https://chocolatey.org/ をブラウザで開き、そこに乗っている次の文字列をコピペする。

C:\Windows\system32>@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

少し時間はかかるが、後は自動的にインストールされる。

インストール後の確認として chocolatey version を実行してみる。 これも若干時間がかかるが次の様な出力が表示されればインストール成功。

C:\Windows\system32>chocolatey version


name          : chocolatey
found         : 0.9.8.27
latestCompare : 000000000000.000000000009.000000000008.000000000027
verMessage    : Latest version installed
latest        : 0.9.8.27
foundCompare  : 000000000000.000000000009.000000000008.000000000027

パッケージのインストール

一度インストールしてしまえば、いろんなソフトウェアが cinst コマンドを使って簡単にインストールできる。

例えば、git と ruby をインストールするなら次のコマンドを実行すれば、ダウンロードからインストールの作業が自動的に実行される。

cinst git ruby

これまで、それぞれの配布サイトに行っててインストーラーをダウンロードしていたのと比べるとなんと便利なのだろう。

また、github が開発しているエディタ Atom も今のところWindowsにインストールするには chocorateyを利用することを勧めている

その他にもJDKなどもインストールできる。 インストールできるパッケージは Chocolatey Gallery | Packages で探すことができる。

一度使ってしまうと便利で手放せなくなった。

RubyでExcelファイルをCSVの様に読み込む

集計したいデータがExcel形式で提供されることがある。 数が少なければExcelLibreOfficeなどでCSVに変換してから扱えばよいが、ファイル数が多いと面倒。

Excelファイルの読み込みだけで書き込みがない、しかもRubyで扱うなら、excel2csv が便利。 ExcelファイルをCSVのように読み込むことができる。

インストール

gemで簡単にインストールできる

gem install excel2csv

もちろん、次の様にGemfileを作って、Bundlerを使っても良い。

gem 'excel2csv'

基本的な使い方

次の様なExcelファイルを読み込むには

f:id:HeRo:20140920163022p:plain

次のようにforeachメソッドで行ごとに読むことができる。

require 'excel2csv'

def read_excel(filename)
  Excel2CSV.foreach(filename) do |row|
    p row
  end
end

read_excel 'sample.xlsx'

実行結果は次の通り。

["cell-A1", "cell-B1", "cell-C1", "cell-D1"]
["cell-A2", "cell-B2", "cell-C2", "cell-D2"]
["cell-A3", "cell-B3", "cell-C3", "cell-D3"]

結合されたセルや、複数シートも読める

次の様に結合されたセルも読み込むことができる。

f:id:HeRo:20140920163121p:plain

結合されたセルは左上のセルに値が入っているものとして扱われ、実行した結果は次の様になる。

["cell-A1", "cell-B1", nil,       nil]
["cell-A2", "cell-B2", "cell-C2", "cell-D2"]
["cell-A3", nil,       "cell-C3", "cell-D3"]
[nil,       nil,       "cell-C4", "cell-D4"]

複数のシートがある場合、デフォルトでは1シート目を読むが、foreach メソッドに sheet オプションで指定することで2シート目以降も読むことができる。 次の例は 2シート目を読むこむ例。

require 'excel2csv'

def read_excel(filename)
  Excel2CSV.foreach(filename, sheet:1) do |row|
    p row
  end
end

read_excel 'sample.xlsx'

また、例では xlsx 形式のファイルを使っているが、xls ファイルも問題なく読み込める。