ソフトウェア開発」カテゴリーアーカイブ

logに関して考える日曜日

最近、先日も記事に書いた Elasticsearch、Kibana 周辺を見ています。
Kibana を知ったきっかけはただの偶然で、

Hacker News でElasticsearch 1.0 Release ! → Kibana ってかっこいいー!

という、目的とかそういうの何も考えない世界からのスタートでした。

所謂 Big Data ブームに関しては、私の業務的にはそれほど密接に繋がっている訳ではないんだけど、
もう少しデータを有効活用する事で随分と自分の周りは変化するのではないかとよく考えていました。

よくある話と言えばよくある話なのかもしれませんが、IT に携わっている割にデータや数値ではなく経験に頼って物事が進んでしまう事が多々あります。
ソフトウェアを提供する側が、もう少しソフトウェアに頼って行きたいところ。
ソフトウェアに使われるような形にはなりたくありませんが、利用出来るものは有効活用していきたいですね。

時間の長さからこれまで見ていなかったけど、Kibana に関しては公式のビデオが結構分かりやすかった。

kibana: data visualization made simple and beautiful
http://www.elasticsearch.org/webinars/kibana-made-simple/?watch=1

ただ、どちらかというと logstash 経由の Web アクセスログが対象で、公開 Web サーバーを取り扱っている訳ではない私にはどう使っていくかが完全には見えていない。
特に Kibana で面倒だと思うのは、可視化する事は出来るが、データの操作を行う事は出来ない点だ。
あらかじめ、Elasticsearch に対して分析が容易になるような形でデータを取込む必要があるので、独自のデータを対象とした場合にはその形式を決めるのに少し知恵を絞る必要がありそう。

確かにグラフへ変換が容易だったり、フィルタリングなどの仕組みは秀逸。
文字列の検索に関しても言う事は無い。
ただ、実際にそれらを分析するシーンにはいいけどよく話としてはありがちなレポートとして利用するとなると、どうしていいのかがよくわからない。

あくまで、分析や問題発見のシーンに利用する感じなのかな?
そもそも Web の世界のカックイイ人たちはレポートとかURLで示す事が出来ればOKなのかな。

それはそれで一つの形だとは思うし、そういう使い方でも十分だとは思う。
結局のところ、何を持って「可視化出来た」というかなんだろうな。

さてはて、データを有効活用したいという考え自体は間違っていないとは思うが、問題は何をどう活用すれば有効なのか?という基本的なところの考えが足りていない。

ElasticsearchにCSVでデータ登録

最近、こそこそとElasticsearchを触っています。

とりあえず、手始めに簡単なところからと思い、気象庁のHPから千葉の気温に関するCSVを取得。
どんな風に見えるかをやってみようかと。

過去の気象データ・ダウンロード
http://www.data.jma.go.jp/gmd/risk/obsdl/index.php

注意しなければいけないのは、CSVファイルがダウンロードされる割にそのまま使える形になっていません。
微妙に整形しないといけないし、最初の行をタイトルとすると列名が重複する事になります。
この辺りは手操作で修正する形ですね。

Elasticsearchにデータを流し込むのはcsv_riverというプラグインを使いました。

CSV River
https://github.com/xxBedy/elasticsearch-river-csv

流し込む事自体はそれほど苦労せずに出来たのですが、Kibanaにてヒストグラムを表示しようとするとエラーになりました。

実は、以前にOracleデータをJDBC Riverを使って入れた時はこんなエラーにならなかったので一瞬何が起きたのか分かりませんでした。

ただ、Kibana上からデータをJSON形式で見てみると

これ、データが文字列として登録されているように見える。
つまり、自動判別されてしまうもしくは、CSV Riverがすべて文字列として登録してしまっているので、フィールドの定義をきちんとしてあげればOKになるはず。
ただ、CSV Riverのプロパティを見てもそれっぽいところが見つからなかった

そこで、困った時の神頼みと言うことでおもむろにTwitterへ投稿したら

 

反応してくれる人がやはりいた。ありがたい。

私はJDBC Riverの時にうまい事判定してくれたので、データの登録側で何かするのではないかと考えていたのだが、
あらかじめElasticsearch側に定義を作っておく形を取るようだ。
もしかすると、JDBC RiverではRDBからそういう情報を抜いて、あらかじめマッピング定義をしているのかもしれない。
違うかもしれないけど。

さて、何となくの仕組みは理解したが、リファレンスをじっくりと読む事が苦手な私はとりあえず見よう見まねでやってみた。

curl -XPUT localhost:9200/temperature/chiba/_mapping -d ‘{
“chiba”:{
“properties”:{
“average”:{“type”:”double”},
“high”:{“type”:”double”},
“low”:{“type”:”double”},
“date”:{“type”:”date”, “format”:”yyyy/MM/dd”}
}
}
}’

こんな感じかな〜?と思ってやってみたが、エラー。

{“error”:”MergeMappingException[Merge failed with failures {[mapper [average] of different type, current_type [string], merged_type [double], mapper [low] of different type, current_type [string], merged_type [double]]}]”,”status”:400}

マージに失敗?
確かにリファレンスには、マッピング情報が定義されてから登録されるデータに適用されると言う話だったので、一度全部データを削除してから定義してみようとしたけど

{“error”:”IndexMissingException[[temperature] missing]”,”status”:404}

INDEXそのものを削除してしまってはいかんか。
面倒だったけど、もう一度INDEXを作り、その後INDEXを残してTYPEを削除。
再度、マッピング情報を登録してあげると・・・

ヒャッハー

なんて見た目がつまんないデータなんだー!

今日はここまで。
なんか凄い疲れた

高速スケーラブル検索エンジン ElasticSearch Server
Rafal Kuc Marek Rogozinski
KADOKAWA/アスキー・メディアワークス
売り上げランキング: 24,547

Kibana

多少、今更感はあるかもしれないけどKibanaを触っている。

会社では、所謂ビッグデータとして取り扱われるようなデータに携わっている訳ではないんだけど、
それでももう少しデータを有効活用する事が出きるんじゃないかと考えているからだ。
Kibanaを選んだのは、実を言うとただの気まぐれなので、実はもっと適したものがあるかもしれない。

でも、何となく見た目がかっこいい気がしているのでそれほど後悔はしていなかったりする

正直、Elasticsearchに対してのデータの挿入だったり、Kibana上でもう少しこういうダッシュボードが作れないものかと思うところが結構ある。
調べながら調べながらなんだけど、目的を忘れないようにしながら進めていきたい。

高速スケーラブル検索エンジン ElasticSearch Server
Rafal Kuc Marek Rogozinski
KADOKAWA/アスキー・メディアワークス
売り上げランキング: 12,804

Github製エディタ「Atom」を触ってみた

少し前に話題になった、Github製のエディタ「Atom」がようやくbetaテストの順番がきた。

現時点では、対応環境はMacのみなので、会社では試す事が出来ない。
残念。

見た目の第一印象は、どう見てもSublimeである。
SublimeではPluginで使っていたMarkdownのPreviewが普通に選択でき、
さらにエディタ内で見る事が出来るのは結構使いやすい気がする

また、gitを使っている場合、リポジトリに対する情報も下部に表示してくれているので
何を編集しているのかを確認する事が出来る

gitに関しては、あまり手になじんで使っている訳ではないけれど、もう少し使えるようになりたい。

まぁ、gitがいくら使えたとしてもそもそもの開発が出来なければ意味が無いのでそちらの方も
もう少しなんとかしていきたいところだ。

仕事での役割として、コードを書くというシーンがドンドン排除されていってしまっており、
それはそれで仕方が無いとは思うが完全に無くなってしまう事は避けたいと思っている。

今後、どういう形での関与が一番自分に取っていい事なのか。
見極めていきたいところだ

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)
大塚 弘記
技術評論社
売り上げランキング: 179

海外研修終了

先のエントリーで書いたように、2/3 – 2/8の日程でアメリカはカリフォルニア州。
サンフランシスコとシリコンバレー周辺に研修のため行ってきました。

ほとんど自由時間はなく、企業訪問やカンファレンス等を回りながら現地の雰囲気や
何かしら自分たちの今後に刺激を与えようと言う目的。

実際問題、背景も職種も統一されたメンバーではないので全員が全員そういう何かを得ると言うのは難しいように思えますが、
少なくとも普段と異なった環境におかれてテンションはあげられたのではないかと思います。

サンフランシスコ観光

自由時間はほとんどなかったのですが、所々で観光がてら回る事は出来ました

これは、Apple本社ですね。脇にCompany Storeがあって、グッズを買う事が出来ます。

また、最終日に半日弱自由時間があって、少しばかりサンフランシスコを回る事が出来ました。

最終日はサンフランシスコには珍しく小雨が降る中の観光と言うのが少し残念でした。
やっぱり、もう少しのんびりと回る機会を作りたいものですね。

帰国

さて、実は最後の最後に問題がありました。

帰国は2/8でした。
はい、何を言いたいかは分かりますね。
大雪です。

サンフランシスコ発の飛行機は、しばらく洋上を旋回していたのですが成田空港閉鎖と言うことで、
行き先は急遽関西国際空港に変更。
関空から新幹線を使って東京まで移動したはいいもののその時点で時刻は0時を回っていました。
結局、JRが用意してくれた休憩用車両(新幹線)で一夜を明かして翌朝奇跡的に動いていた在来線で帰宅しました。
結局時差で時間感覚も狂った状態で24時間以上乗り物に乗っている訳で、背中や腰は少し痛い。

そして、帰宅後に待っていたのはもちろん雪かき。
いやはやいやはや、今回の旅は最後の印象が強すぎてしまい、一気にさめてしまった感がありますね・・・

最後の最後は残念な状態でしたが、頂いた機会を生かせるように精進せんとなぁ

明日、久しぶりの海外へ

さて、表題の通りではありますが、3〜8日という日程で久々の海外へ行って参ります。
一応仕事ということになりますが、ガチガチの仕事と言うよりは勉強目的です。

あ、それもやっぱり仕事ですね。

場所としては、シリコンバレー/サンフランシスコになります。
と言っても、GoogleとかAppleと言った名だたる企業へ行く訳でもないようで、
それはそれでどうなんだよ・・・という思いが無い訳ではないですが、
行ったからと言って考えてみればただの観光客になる以上の事は無いでしょう。
もう少しそういった方面の開発に従事していれば別でしょうけど。

勉強になるかどうか。価値ある日々を過ごす事が出来るかは結局のところ
組まれている予定と言うよりは自分自身に起因する事が多いと思っている一方で、
では実際のところ事前に何か出来るのか?と言うことに関してはまだうまく思いついていません。

行って暫くの間は刺激を受けた事によって少しばかりテンション上がっているかもしれませんが、
それを以下に後の自分に有意義な形で取込めるのか。
こういった研修や展示会等に出かけるたびに失望を繰り返すのはそろそろ終わりにしたいものですね。

さて、本来ならもう少し準備をしておくべきところなんでしょうけど、未だに何も準備していません。
今日一日、ちゃっちゃと荷造りしてしまわないといけませんね。
3日の夜当たりに、「行けませんでした」とか報告するような事がないように頑張ります。

北海道から帰ってきた

予定では二日間でしたが、急遽一日追加して三日間。
北海道へ出張してきました。

幸い出張中は天候がよく、冬の北海道の割に準備したホッカイロも使う事なく
純粋に仕事に集中する事が出来ました。
ええ、観光なんてする暇が全くないくらいに。
残念ながら。。。。

今回、久しぶりのお客様先への出張だった訳ですが、
やはり実際の現場に出ると色々勉強になりますね。

開発者となると、今は基本的に会社でPCとにらめっこしている事が多いですが、
こうやって外に出る事で開発者以外の人の動きと言うものが見えてきて勉強になります。

開発が出来ない技術者と言うのは困り者ですが、実際の製品は開発者以外の人も関わっている訳で、そういった人やお客様の現場を知る機会は大切にしていきたいところ。
もちろん、今回赴いた目的はトラブルの収束だったので、そんな機会は増やしたくはないですが、
自分に足りないところを気づかされる機会と言うのはいいものですね。

多少胃がキリキリする思いでしたが。

参っちゃうよね、まだまだ成長出来ちゃうじゃん

慣れない言語

mongoUnivで出されている課題があって、言語としてはpythonを使っている訳なのですが、
結構煮詰まってました。

感覚的には通りそうなコードで、ネットで見てみても行けそうな気はするけれど
うまく実行出来ない。

うわー。うわー。
mongoDBでつまづくならまだしも、pythonでかーと思って何度となく見返してみたら。。。。

単純にif文に”:”がついてなかっただけという悲しいオチが。

IDEを使っていれば、もう少しエラーの原因を早くつかむ事が出来たんでしょうけど、
この辺りでつまづくあたりがちょっと情けなくも、手になじんでいない感が強いですね。

精進せねば。

初めてのPython 第3版
初めてのPython 第3版

posted with amazlet at 13.10.23
Mark Lutz
オライリージャパン
売り上げランキング: 8,964

MongoDB University

ドットインストールの話題を先日エントリーしたが、それとは別にMongoDBを勉強している。
今は、その製品名がそのまま会社の名前になっているが、10genが手がけているオンライン学習サイトがあるのだ

https://education.mongodb.com/

本家が手がけているだけあって、体系だって学ぶことが出来る。
さらに、ビデオは日本語訳をつけてみることも可能だ。

実はこのMongoDB University は比較的最近始まったばかりで、まだこれからと言うところもある。
それでもいくつかのコースを始めることが出来る。
それほど難しいわけではないのだが、序盤は少し放置してしまって、取り戻すのに時間がかかってしまった。
何とか今は授業に追いついているので、最後(10/28)までなんとか続けて行きたい。

先に紹介したドットインストールと違って、こういうオンライン学習は開始と終了の日程がはっきりいしている。
Coursera や edX と同じですね。
これらのようなMOOC(Massive open online course)は少し敷居が高い。
両方とも登録してはいるのですが、長続きしていないです。
でも、色々な選択肢を私たちに提供してくれる。

問題は・・・1時間以上のビデオを家で見るとなると眠くなってしまうんだよなぁ・・・。
これも大学の講義と同じですね。