White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

Japan.R参加報告と質問への解答

先週土曜日、Japan.Rでパネルディスカッションの一人として参加しました。割とトークグダグダでしたが、みなさんから山ほどの反応を頂いて感謝しております。
japan.R始まったばかりの頃は学術系もしくは広告系の人が多かった気がしますが、今回は思いの外エンジニアが多くてびっくりしました。もうちょい"私はR使いだし、pythonに乗り換える理由なんてない"とかDisってもらってもよかったのですが。

いくつか面白い質問を頂きましたが、時間の都合答えられなかった部分もあるのでここで答えます。

 

Q: 今Rエンジニアだが、今後他の言語覚えていかないと食えなくなると思っている。どの言語を覚えていけばよいか?
その場ではpigとかhiveとか答えましたが、実際はその都度必要になった言語覚えればいいと思います。ビッグデータ処理基盤ならJava*1とかScala*2とかpython*3とか、高速に大量のリクエスト処理したければgo*4とか、単体で高速に計算したければjuliaとかFortranとかGPGPU(CUDA, OpenCL)とか・・
逆に言うと、残念ながら何か覚えとけば安泰ってもんでも無い気がします。
あと全然関係ないですがどこかの偉い人がプログラミング言語は5つの違うパラダイムのものを覚えるべきと言っていました。すなわち手続き型1つ、関数型1つ、等を覚えろと言っています。
そこまでいくのも辛いと思うので、一つ言語極めて、いくつか周囲の言語を軽く触ってみるのはいかがでしょうか。それとコメントしたとおり、身近に詳しい人がいると覚えやすいです。
あと英語は覚えたら得するでしょう。ドキュメントは英語で書かれてること多いので。

 

Q: SparkもApache Stormもオンメモリで処理するものだが、リアルタイム解析はどちらが向いてるか?
この辺より詳しい方が答えて頂ければと思いますが、Sparkはメモリ上で高速バッチ処理、Stormは常駐して逐次処理を行うものです。ただしSparkもSpark Streamingとかいう超高速応答を返すものを持ってるので区別するのは難しいです。
なお追加の質問で「どっちがRedisに近いか?」というのも受けましたが、自分ならGemfire(商用インメモリKVS.永続化対応。SQLHDFSが扱えるものもある)を推すかなぁ。。(手前味噌

 

Q: HBaseとCassandraの違いはなにか?
どちらも列志向型KVSですが、前者はHadoopの1部品であるのに対し、後者は独立しています。詳しくはこちらhttp://www.slideshare.net/yutuki/cassandrah-baseno-sql (ただしこの資料のHBaseで書かれているHDFSのSPoFは、今は存在しません)

 

Q: これからHadoopを始めたいが、コンポーネントが多すぎる。どこから手をつければいいか?
基本的にHDFS(Namenode, Datanode), YARN(ResourceManager, NodeManager, HistoryServer)くらいあればいいかと。HDFSはファイルの管理に使うもの、YARNはアプリケーションの実行に使うものです。個別にアプリケーションを書くのも辛いんで、あとはhiveとMapReduceでも入れてhiveSQL回しとけばいいと思います(投げやり)。もしくはSparkをスタンドアロンかEC2の上で回すといいでしょう。この辺はやまかつさん(@yamakatu)が詳しいと思います。もし具体的に聞きたいようであれば、@showyouにでも連絡してください。仕事なんでじっくり答えます。

 

Q: MapReduceオワコン(でこれからはBigQueryの時代)と言われていたが本当なのか?
半分本当で、半分ウソです。
まず現行のHadoopMapReduceを中心に動いてるのではなく、YARNと呼ばれるジョブリソース管理エンジンによって動いています。MapReduceはYARNで動く1アプリケーションになっています。
そしてhiveはMapReduceで動いていますが、それに取って代わりSQL on HadoopというYARNの上で動くものが台頭してきています。これやBigQueryの発想の根底にあるのは(恐らく)GoogleのDremelあたりの論文がベースになっています。
そういう意味では本当なのですが、YARNはYARNでアプリケーションを書くのが難しかったりするので、MapReduceのままでいい!って人もいます。

*1:Hadoopの主な記述言語。ただしたまにC++で書いてるディストリビューションもある

*2:Spark

*3:Hueとか一部フロントエンド、pyspark

*4:Cloud Foundryのrouterはrubyからgoに変更

#ingadv2014 ingress 散歩部について

この記事は #ingadv2014  6日目のエントリーです。

 

showyouです。ingressアカウントもshowyouで、Enlighted(緑)のA14です。

(余談ですがingressアカウントと他のネットアカウントを一致させるのは好ましくありません。日頃のingress位置情報とネット上の活動から活動を推測されます。ちなみに私はあとで名前を変更しようとしましたが、拒否されました・・)

一時期は周辺地域を緑化して回っていましたが、敵味方が相当増えて一日で何回も色が反転するようになったため、諦めました。最初4人で立てた地元コミュニティも数十人を超えています。

一方で、ingressで比較的達成されていない実績でも目指そうかと思いました。それがUPV(Unique Potal Visit, ポータルを訪れた個所数)です。

ここで、いい加減ですが散歩部とかいうものを提唱してみようかと思います。

散歩部の活動としては、

  • 新しいとこに行く
  • ハックする

これだけです。たまに余裕があれば破壊&ビルドもします。

散歩部のメリットとしては以下の事が挙げられます。

  • ただハックするだけなんでレベルに関係無くできますし、インベントリ不足に悩まされることもありません(xm切れでハックできなくなるのだけ注意。リサイクルすればいいんですが)
  • 緑とか青とかのしがらみから開放されます(ただハックするだけなんで)
  • ingressをしに行くのではなく、旅行をするついでにハックするんであとで「オレ、何やってたんだろう・・」という無気力から逃れることができます

デメリットとしては、特定の場所を回るわけではないのでポータルキーが不足し、CFを作りにくくなります。まあもともとすぐ壊されるのでいいのですが。。あと当たり前ですが旅費がかかります。

UPVは、今(2014年12月)時点ではもう少し増えてるかと思いますが、少し前はA16のエージェントでも2000程度でした。私は5000強です。恐らく日本の人でUPV10000ってのもそうそういないと思うので、10000目指したいと思います。

あと最近は各地にポータル立ってるので密集地狙っていく必要もないかと思いますが、たまにポータルが固まって存在する地点があります。ingress.com/intelで探すとたまに固まってるとこ見つかりますし、コミュニティで聞くと教えてくれることもあるでしょう。東京は数が多すぎて紹介できないですが、京都とか名古屋とか台北は人工の割に密集してた感じです。

明日のingress advent calendarはsoheiさんによる「痩せないingress」のようです。ちなみに私も痩せてません。。

今月の活動

DB Tech Showcaseでの発表

Pivotal 社員が発表していました。

 

なおHAWQの性能に関しては次のページにあるようです(SIGMODという学会に提出した物になります)

http://www.pivotal.io/sites/default/files/SIGMODMay2014HAWQAdvantages.pdf

Pydata Tokyo #2

http://pydatatokyo.connpass.com/event/9923/

初回は別の用事が前後にあったので断念し、今回はじめて参加しました。

前回はDeeplearningの実用編だったらしく結構敷居が高かったようですが、今回はAmazon Kinesisの話とPydata NYCの参加レポートだったので特にむずくはなかったと思います。マサカリ(ツッコミ)は激しかったですが(笑)

 

予告

今週末のJapan.Rで言語ディスカッションのパネラーとして参加します。

Japan.R 2014 : ATND

Python, Hadoopと書いてますが、Hadoopは時間の都合上別のイベントに回すかここでの公開になりそうです。

既に満員キャンセル待ちとなっていますが、学生の方には補助席を用意しているようなのでよければどうぞ。

DBのコミュティが盛り上がらないというか、ITで考えることが減ってるんじゃ

日本のデータベース系のコミュニティ、なぜイマイチ盛り上がらないのか - kuenishi's blog

uenishiさんが書いた記事が、個人的にも結構納得できる内容だったので、自分の意見も書いておく。ただし自分はコンピュータ周りの知識は独学で、どっちかというと機械学習とかHadoopとかの方が好きなんで意見の方向は違うかもしれません。

基盤の中心になる要素が弱いってのは確かにあって、例えばHadoopにおいても自分たちでパッチ投げまくったり実装してるのも数社しかみかけません*1。あまり大手SIerさんで独自改良してる話を聞きません。そもそもHadoop触ってないってとこも多そうですが・・

この辺データサイエンティストが少なめなのも含めて、同じとこに理由がある気もします。

 

理由としては、仕事をする上で、技術的・科学的に考えずにやってしまうことが多いのではないでしょうか。勘と経験と度胸ってやつで。DB=ブラックボックスと考えて、内部の挙動まであまり考慮しない。データサイエンス系で言うと科学的に分析せず、過去良かったからいいだろうとしか見ない。

一つ対処方法としては、アカデミックと現場で人を行き来させることでしょうか。一部自分の観測範囲での先生が社会人を呼んで講演しているようですが、そんな感じで。あとまあ箱を用意する段階とかきれいな研究室環境とかと、実運用するときの環境は汚さがぜんぜん違うよねー、大学と職場で共同で検討できるといいよねーとか感じます。

*1:NTTデータ、Hivemall、Nautillus、一部大規模Web企業程度?

PyData.Tokyoが設立されたようです

http://pydata.tokyo/

PyData(http://pydata.org/)ってのは海外で開催されているPython向けデータ分析ツールの集まりです。先日のPyConJPで日本でもデータ分析系の需要があることがわかり、コミュニティを作成したようです。


PyData Tokyoのお知らせ - ALBERT Engineer Blog

自分も興味あるのでコミュニティに入りました。興味があればよろしくです。

Python3へ移ろうとして5秒でくじけた


Python2ユーザから見たPython3 - White scenery @showyou, hatena

 

先日上記の通り、Python2からPython3に対して移行するか・・とか書いたのですが、

しょっぱなからへし折られました。

https://github.com/tweepy/tweepy


Python3でのtwitter投稿など - Qiita

>tweepyがpython3.xでは使えなくなっている。 tweepy作者がもうお手上げしているので
>tweepyがpython3.xでは使えなくなっている。 tweepy作者がもうお手上げしているので
>tweepyがpython3.xでは使えなくなっている。 tweepy作者がもうお手上げしているので

ダメじゃね、これ?

確かにnariyaさんが8月あたりに「Python3でtweepy動かした人いませんかー?」と聞いて回ってはいましたが・・なんだろ、先日Python3に移るべき~とか書いてた人ら、twitterからデータを取るとかしたことないだろ?他にも過去これまで動かなかったライブラリから、Python3を早期から使ってた人がどのライブラリを使ってなかったかが分かりそうです。

 

それはさておき、これから新規でtwitter周りのことを扱うなら上で挙げられてい

https://github.com/sixohsix/twitterを使えば良さそうですね。既存のものを移すにしても恐らくそんなに変わらないと思うので、少し試してみますか・・

Pycon JP 2014 2日目が終わりました(2) #pyconjp

ひとつ前の話では単語羅列して力尽きたので、いくつか特に面白かった発表について列挙します。

以下の記事にも書かれているので、ここに乗ってない情報は見ていただければと思います。ほかにもtwitterで#pyconjpと検索すればこれから出てくるかもしれません。

PyCon JP 2014 1日目参加レポート #pyconjp - Time Flies

PyCon JP 2014 2日目参加レポート #pyconjp - Time Flies

 

 Deep Learning for Image Recognition in Python

 

この発表は特によかったのでTokyoWebminingの常連も必見です。
内容としてはDeep Learningの入門からpythonでDeep Learningを使う方法、さらにFlask + Deep Learningの結果を使ったアプリケーションのデモまで行っていました。
軽く補足しておくと、Haar-likeっていうのはOpenCVで顔領域識別の入門でよく使われてるものです。SURFも今はOpenCVで使えるみたいですが、SIFTとあわせて特許がらみの何かがあった気がします。
また恐らくOpenCVPython版はC言語版を中で呼んでいて、そこの橋渡し部分がPython3で変えられたために移植に苦労されてた気がします*1。んでこういうところで苦労するケースが多かったため、なかなかPython3に移れなかった、って話になってくるわけです。PythonはWeb向けの機能だけでなく、数値計算のライブラリもそろってる数少ない言語だと思われます。
さらに余談ですが、最近は数値計算向けの言語としてjulia( The Julia Language )って言語が脚光を浴びてきています。この言語がどれだけPython + Numpy, etcの影響を受けたかわかりませんが、Pythonの関数を呼べたりiPython notebookのjulia版を持っていたりします。上の公式サイトにもIJulia Notebookが乗っています。

 マーケティングに活かせるPythonライブラリIntroduction to scientific programming in python

 


Introduction to scientific programming in python // Speaker Deck

どちらもpythonで使える数値計算向けライブラリ一覧についての発表です。本来同じような発表を二つ採択するってのはないのですが、片方英語片方日本語ということで採用しました。どちらも評価良かったしね。

Pythonではじめる野球プログラミング

Open Data for Taiwan's Roadways

 道、野球と違う話題ですが、共通してるのは政府なりなんかの組織が他者に対して開放しているOpenDataの取り組みです。

日本でも一部機関がOpenDataを提供しています

Open DATA METI | 経済産業省のオープンデータカタログサイト

PyCon JP 2014 Python + Hive on AWS EMRで貧者のログ集計


PyCon JP 2014 Python + Hive on AWS EMRで貧者のログ集計 // Speaker Deck

でかい会社じゃなくてもAWSインスタンス使って安価にログ集計できますよってお話。分析についてあんま書いてないかもしれませんがScikit-learnなり使えば入手したログからできますね。

Oktavia

FM-indexを使った検索エンジン。もともとJSXで書かれていましたが、今回Sphinxから呼びやすいようにPython向けに移植したもの。

 The esperanto generator

なんと中学1年生で遺伝アルゴリズム、教師なし言語生成などの話をしてきました。まだ実装まではうまく行ってなかったみたいですが、発想の突出度はずば抜けて高かったのでまた来年(もしくは他のイベントで)どれだけ進んだかお聞きしたいです。

Pyladies Tokyo

Pythonを使う女性の会が遂に発足しました。今回のPyConでは残念ながら女性の方のセッションはありませんでしたが、「プログラミングは男性がするもの」なんて偏見を吹き飛ばせるよう、サポートしていきたいものです*2

 

他にもポスターで確率的プログラミングの話なんかも興味深かったです。

終わりに

PythonだとWebやさんでもちょっと集計分析したくなったらpip install numpyとかpip install scipyとかするだけでいけるようになりますし、逆に数値やさんは自分の作った分析をすぐにWebサービスにできるっていうメリットがあります。日本だとWebやと数値やって分かれてる感じもしますが、実はすぐ移れるよ、ギャップ埋めようよ と考えました。なので今回PyCon JPに沢山の方が集まられたのは大変良かったです。

また今回自分はボランティアで発表内容の選定を手伝いましたが、もしこんな発表に来てもらいたいというのがあれば、スタッフもしくは一部ボランティアを手伝うといいです。当然ですが私一人で決めるわけじゃなく複数の方で投票して選んでます。今回数値計算系が一気に増えましたが、別に私がえこひいきした訳じゃなく、内容が細かく詳しく書かれてたために自然と採用されました。私は来年も発表内容の選定に立ち会うつもりです。

*1:執筆現在ぐぐった限りではようやくPython3でも使えるようになったみたいですね

*2:私は男性なので入れませんw