Empty

2013年4月から社会人になりました。

調整さんのために適当な日程を出力するスクリプト

概要

日常的なタスクの効率化が好きだったりします。ちょっとした作業改善のために作った簡単な小さなツールも日々の成果物として公開いこうかなと。今回はその第一弾。

"調整さん"を立てるときの日程候補一覧出力するスクリプト

調整さんを立てるときに、日程候補の一覧を入力する必要があるのだが、いちいち「日付を書いて、曜日をつけて改行」と繰り返したりする必要があるのだが、規則的なルールなのに、手打ちするのもどうかな~と思って、その部分を出力してくれるスクリプトを書いたよという話。凄い簡単なスクリプトだが晒してみる。

スクリプト

#!/usr/bin/env python
# coding:utf-8

import datetime

"""
調整さんのために日程一覧を出力してくれるスクリプト.
http://chouseisan.com/
"""

# Configuration
WEEKDAYS = ["月", "火", "水", "木", "金", "土", "日"]
SCHEDULE_DISTANCE = 7 # 出力期間(days)
EXCEPT_DAY = [] # 除外日 e.g. [3,4] 3日と4日は外す.
EXCEPT_WEEKDAY = [] # 除外曜日 e.g. [5,6] 土日は除外
START_HOUR = 18 # 予定開始時刻
END_HOUR = 22 # 予定終了時刻
TIME_DISTANCE = 2 # 時刻の間隔

# startdate
start_date = datetime.datetime.now()
#start_date = datetime.datetime(YEAR, MONTH, TODAY)
end_date = start_date + datetime.timedelta(SCHEDULE_DISTANCE - 1 )


# easy validation
if not (end_date - start_date).days > 0:
    raise ValueError("end_dateはstart_dateより未来の日付を指定してください")


# Display (調整さんフォーマット)
tmp_date = start_date
while (end_date - tmp_date).days >= 0:
    if tmp_date.day in EXCEPT_DAY or \
            tmp_date.weekday() in  EXCEPT_WEEKDAY:
        # 除外日・除外曜日
        pass
    else:
        hour = START_HOUR
        while hour < END_HOUR:
            weekday_str = WEEKDAYS[tmp_date.weekday()]
            print "%02d/%02d(%s) %02d:00~"  % (tmp_date.month, tmp_date.day, weekday_str, hour )
            hour += TIME_DISTANCE
    tmp_date += datetime.timedelta(1)


# End of Script #

出力(一週間分)

03/06(火) 18:00~
03/06(火) 20:00~
03/07(水) 18:00~
03/07(水) 20:00~
03/08(木) 18:00~
03/08(木) 20:00~
03/09(金) 18:00~
03/09(金) 20:00~
03/10(土) 18:00~
03/10(土) 20:00~
03/11(日) 18:00~
03/11(日) 20:00~
03/12(月) 18:00~
03/12(月) 20:00~

こんなしょうもないツールの紹介でした。以上。

最近思うこと

僕はアウトプットを出すのが苦手だ。

この言葉の意味することはわかっているつもりである。

そう、無能なことを自ら露呈しているのと同意。

しかし、そんな自分を変えたい!しっかりとアウトプットをしっかり出せる男になるために、

一度今のカッコ悪い自分をしっかり受け止めようと思ったので、エントリーすることにした。


なぜ苦手だと思うのか?

最近、よく就職活動のおかげで、自分の人生を振り返る/自分と向き合うことが多い。

エントリー時に必要な、ES・履歴書等は、Web系企業でインターンシップ・アルバイトに恵まれたり、友人とヒョンなことから始めた勉強会を主催をしているなどの経験を送ってきた恩恵もあって、文章力の欠如という問題があるため作成には時間はかかるが、エピソードに困らないでスラスラと書ける。

しかし、Software Engineer 系の書類選考の一つとして求められる 課題提出*1は別である。

なぜなら僕は、「自ら誇れるプロダクトを作ったことがない」 からだ。

困った挙句、だいたい以下の二つのどちらかについて書くことが多い。

  • 学部時代の卒業研究のために1ヶ月ほどで開発した 5292行*2のシステム。
  • 昨年11月頃に 3~4日ほどで開発した 916行*3の SkyaMarkの予約スクリプト

どちらについても、下記の理由から、提出するたびに、何かしらのもどかしさを覚えてしまう。

  • 上のプロダクトについては、一年以上前に作成したものでかつアウトプットの精度が低い。
  • 下のものについては実際に激安で北海道・沖縄のチケットが取れて、プログラミングができることの素晴らしさを大いに感じられた思い出深いスクリプトであるが、何せ規模が小さいため、今までの集大成じゃないよな・・・と思ってしまう。


その他にも、プロジェクトが中途半端に終わってしまった実らせられなかったプロジェクトがいくつかあったという経験から、
成果物を残すといったことに、苦手意識を持っているのだろうと、考察している。



問題はどこにあるのか?

「かっこいいプロダクトが作りたい!」と思うばかりに見栄を張りすぎてしまい、始めから高い完成度のものを作ることに拘ってしまう傾向があり、プロトタイプを作ることを無視して、完成まで壮大な計画を立ててしまい、そのためプロジェクトが終息しないもしくは、どうにか動くところまで漕ぎつけて作りきりで終ることが多かった。

完成度の低いシステムを認められない考えが最大のボトルネックであり、成果物を生み出せないスタイルの諸悪の根源となっているのでは? と考察している。


だから イニシャルムーブメント まで最短経路で開発

「シンプルに考え、本質的な機能のみを実装し、それらをつなげて、とりあえず動かす。」

ことを心掛けて何回か try してみたが、今までの完全なものを求める思考を捨てられずに、細かい部分に拘ってしまうことが多々あり、同じ失敗を繰り返してしまった。

しかし諦めずに、イニシャルムーブメントまで駆け抜けることを最優先に意識して、システムの核となる部分をまずに実現するような開発スタイルが身に付けられるように、tryしていきたいと、思っている。


否定ばかりではなく、肯定的にも捉える

同時に、今まで作ってきたものを否定的なところばかりに捉えるのもよくないと思う。
システム的に完成度が例え低くても、システム構築を通じて、できなかったことが、できるようになったことが絶対あったはずなので、そこは肯定的に捉えてニヤニヤして自己の自信に繋げられるように思考を変えたい。

さきほどの卒業研究のシステムにおいて考え直すと、システム的には完成度は低かったが、1ヶ月という短い間でPythonを覚え、自然言語処理を学び、自然言語処理ツール・クラスタリングツールを使いこなせるようになったんだと、そう考えるとものすごい成長をしていたんじゃないかと、この文章を書いてみて思った。

そう、ポジティブな面を自己の自信に。ネガティブな面はしっかり振り返り、失敗した原因を振り返ることで成長していきたい。


最後に

この選考ど真ん中という時期に、このような自己の欠点を晒して、馬鹿じゃないかと思う人はいるかもしれない。

けど、今日僕と面接してくれた とある会社のCTO が、うちの会社はデータ分析の理解を広げようとしている段階で分析に理解がある環境とは言えないし、分析エンジニアが数人しかいないということを正直に教えてくれ、かつデータ分析の理解が全社的に浸透していて、データマイニングの専門家がたくさんいるような他社のほうが、その道のスペシャリストになるためには最短なのかもしれないと僕のことを思って考えを述べてくれたように、

そのCTOのように、僕も素直に生きていきたい!と改めて、思ったのでエントリーするに至った。

だから、今後の選考においても、明らかに第一志望ではない会社には、

「御社は第N志望です!」と言える馬鹿正直な男でありたい。

そんな馬鹿正直な男を肯定的に受け取ってもらえる会社がきっと、本当の意味で風通しが良い会社なのかもしれない。そんな風通しが良い会社に行きたいと思っている今日この頃である。
------------------------

*1:今までのプログラミング経験の中で、一番の集大成だと思うプロダクトについて、説明したドキュメントを作り提出するもの

*2:使用したライブラリを除く自力で書いた行数

*3:上に同じ

行ってきた - 『MTL主催 学生向けHadoop勉強会(入門編)』

概要

MTL主催 学生向けHadoop勉強会(入門編)というイベントに参加してきたので、参加Logなり、感想なりを残しておく.

感想

丁寧な講義から、お寿司・ピザ・ビールなどご馳走になりました。リクルート様・参加者の皆さん、大変お世話になりました.

感想としては、単純にMTLに行ってみたかったので、行けてよかったのが一点。
講義、その後の質疑応答、懇親会から、知らなかった技術、流行っているソフトウェア、様々な応用事例など、効率よく情報収集できたのではと、イベント内容に大変満足している。
そして、なによりも参加していた学生の皆さんが濃い~方ばかりで、その方々から刺激をたくさんもらえたのが一番の収穫だったんじゃないかなと。

同じ穴のむじな

どうやら、濃い~学生はこの手のイベントに参加するのが好きみたいですね。 (ちなみに僕は、ただ濃ゆくなりたいだけの学生なので、残念ながら濃い学生のカテゴリーには分類されません。)

昨年参加した #mixi_scrap の時も Voyage Group のインターン Sunrise でも濃い人達が集まっていたのを思い出した。

今日も、見たことある顔がちらほらいたり、他のイベントで会った人、去年の夏にインターンで一緒になった友人と嬉しい再会があったりと、よくIT業界が狭いと言われるけど、社会人になってからのことではなく、既に学生の内から始まっているんだなと、ふと思ったり、

俺はそんな局所的な世界に身を置いて、何十年と生きていこうとしているのか? この局所的なIT業界に俺の幸せはあるのか?と少し疑問を覚えたが、
今日の結論としては、局所解に陥らないように、探索範囲(自分の世界)を広げていけばいい話で、

例えば、いつの日にか海外のイベントに参加した時に、参加者の一人から、

「この日本人前にもどこかで、見たことあるような・・・誰だったけ?」

みたいな風に思われたりした頃には、きっと、今より圧倒的に広い自分の世界を持ち、かつ狭く感じられいて、今とは違った世界観を持っていて、その時の最適解は今より素敵な世界が広がっているんだろうな。でも、探索範囲を広げるなら、探索アルゴリズムの改善、ハード等の性能を向上させないと、逆に探索しきれなくてオーバーワークになって辛いんだろうな。と、こんな意味わからない思考を巡らせていた。

大変、失礼しました. m(_ _)m

妄想はその辺にして

地に足をつけて、Hadoop クラスタを作るところから始めたいと思います。



講義スライド (追記 2012/03/04)

アップしていただいたので、張らせていただきました。


講義メモ

---------------------------------------
開会あいさつとMTLの紹介
---------------------------------------
MTL の紹介
11年目 鈴木さん

#今開発しているアプリ
Happy Balloon http://happyballoon.jp/


MTL: R&D 
http:/mtl.recruite.co.jp/

実証研究機関
 - C-TEAM
 - ニジボックス
 - CREYLE

とりあえず作ってみて、その後、ビジネスモデルが評価されればリリースされる.

---------------------------------------
メインイベント: Hadoop 勉強会 (入門編)
---------------------------------------
参考資料: http://www.slideshare.net/mobile/Nobuyuki_Ishikawa/hadoop-9440739
---------------------------------------
自己紹介

MIT で Hadoop をやられている石川さん
石川 信行
大学時代: 害虫制御学および生物統計学専攻

経歴: 2009新卒入社, Senchaを用いたスマホサイト開発
	- 現Hadoop 推進担当

土日はパソコンに触らないことにしている.

Sencha: http://www.sencha.com/
---------------------------------------
Professional Engineering Group: MIT のインフラ基盤チーム

全社に向けてITのソリューションを受け持つ.部署

---------------------------------------
<本日のアジェンダ>

ビッグデータとは?
Hadoop とは
リクルートにおけるHadoop 事情・開発ロードマップ
社外事例
社内事例
Hadoop 導入のすすめ
Hadoop 上で動いている分析アルゴリズム
まとめ
---------------------------------------
ビッグデータ革命が起こす奇跡
	- 犯罪検知
	- Google が開発したセンサーが付きまくったデータ
	- 将棋のAI
---------------------------------------
今年のバズワードの一つ、ビッグデータとは?
ビッグデータ = 大量のデータ
	一般には数百GB~ 数PBをさすことが多い

	ビッグデータ = 大量のデータ
	非構造性 
	リアルタイム性 (GPS,ETC, 入管記録)
---------------------------------------
なぜビッグデータが注目されているのか?

WEBサービスに限らず、ソーシャルメディア、コンサル、医療
、などありとあらゆる分野で展開するサービス

...(メモできていない)
---------------------------------------
競合のビッグデータ活用には要注意!
従来:
	情報をサマライズした状態でビジネスへFBしていた。
ビッグデータ:
	ユーザの行動情報をマイニングする場合,個人情報が多く含まれている場合が多い.
	対外的に価値の高いビッグデータの事例は外に出てこない.

...(メモできていない)
---------------------------------------
Hadoopとは?
	-HDFS(分散ファイルシステム)
	-MapReduce(分散処理プログラミングフレームワーク)

master: 指令を出す. データは使わない.
slave: データを持って,データを処理する.

---------------------------------------
何がすごいの?
	(Scalability)
	- Master , Slave による並列計算
	- Slave の追加によって処理性能が容易にスケールする
	(対障害性)
	- レプリケーションによるJOB継続実行確保
	(データの一元管理)
	- 各サーバのディスクをまたがる形で大容量のデータ領域を確保
---------------------------------------
実装の流れの例
	バッチ処理とかに向いている.
	オンライン処理に使えない.
	リアルタイム処理には使えない.
---------------------------------------
Hadoop をより使いやすくなる MW を有効活用
	Sqoop: データ以降ツール.
		http://www.cloudera.com/downloads/sqoop/
	Mahout: 機械学習ライブラリ.
		http://mahout.apache.org/
	Hive: sqlライクに操作を実現.
		http://hive.apache.org/
	Azkaban, Kettle: job のスケジューリング.
		https://github.com/azkaban/azkaban
		http://wiki.pentaho.com/display/BAD/Configure+Pentaho+for+Cloudera+and+Other+Hadoop+Versions
---------------------------------------
Hadoop を選んだ理由 まとめ
	PEGが大規模計算処理システムとしてHadoop を選んだ理由は総括でいうとオープンソースであること.
	- scalable
	- costが低い
	- eco system , Active(コミュニティが活性している)
	- ある程度自由に他の製品と組み合わせが可能
---------------------------------------
我々が掲げるHadoop 利用ロードマップ

	- バッチに代表される処理時間の増大対策。

	時間がかかっていたので、それを短縮することで、運用コストを下げるとか、

	- データ管理の一元化。ログ監視。
	- 分析エンジン・レコメンドエンジンとして。

---------------------------------------
Hadoop 入れることによって何が変わったのか?

高速処理ができるので、ゆえに要件を変え何度も try and errorができるようになった.

サンプリングに頼らない、ロングテール部の解析.(解析できるデータの規模が増えた)

開発サイクルの短縮と豊富なエコシステムによる短期間で幅広い分野の知識習得.
---------------------------------------
従来
<データ集計phase>: データが多いほど時間がかかっていた.
データをためる・見つける
データを集める
データを整形する

<データ分析phase>:
サンプリング
属性ごとにグループ分け、各Gの傾向分析.
分析評価

そして、結果を施策に転換
---------------------------------------
集計時間小, 難易度易

<データ分析phase>: 全データに処理が回せるようになった。
サンプリングによる取り残し、ロングテール分の見逃し防止

...(メモできていない)
---------------------------------------
社外事例:
	国内:
		楽天、mixi, facebook, yahoo, NTT communications, DeNA, livedoor, 食べログ, andersen service ,Cyber Agent, にしてつストア
	国外:
		explorys, walt disney, cme group , visa, ebay, GE, 米陸軍
---------------------------------------
Cyber Agentの場合:
	ユーザの行動log
	ユーザの退会を防ぐために、サービスから退会しそうなユーザを見つけ出す.
	データソースが複数で膨大・個を追う分析コスト大

辞めそうなユーザを見つけて、ポイントやアイテムをあげるなどして、辞めないような施策が打てるようにしている.
<a href="http://ameblo.jp/principia-ca/entry-10635727790.html">Hadoop/Hiveを用いたログ解析基盤の構築</a>
---------------------------------------
楽天:
顧客ごとに表示する商品や○○やsite のパーソナライズ

...(メモできていない)
---------------------------------------
アメリカ陸軍: 人と人の関連性をデータから算出

	- データソースが複数で膨大
	- 関連性を算出する機械学習の計算量が膨大

内部漏えいやクーデターを防ぐために、人の関係を見ている.
---------------------------------------
GE(General Electric) : 自然言語処理. 顧客の完成を解析し、商品改善を行う。システムを開発.

---------------------------------------
Andersen service: 原材料のコスト計算を最適化

原価計算をしている。

e.g.
東北の地震、タイの洪水,などの災害で、今までの仕入れルートが変わった時に、適切な価格設定をしないといけない。
そのシミュレーション何パターンも回すのに使っている.

---------------------------------------
神林さんという人がHadoop のフレームワークを作っているらしい。
機関係の処理に特化したフレームワーク.
...(メモできていない) 字が間違っている気がする.
---------------------------------------
DeNAにおけるHadoop 開発とは?

2300万人、1日20超越えのアクションログをHadoop にて管理
マイニングチームを20人ほど抱えている.

怪盗ロワイヤルのゲームの難易度設定に利用するなど.

...(メモできていない)
---------------------------------------
社内事例:
	- じゃらん、飲食、美容、ぽんぱれ、りくなびnext,住宅、ゼクシィ,自動車,キーマンズ, 進学,学び
	40を超える分析事例:

...(メモできていない)
---------------------------------------
Hotpepper グルメ・レコメンドメールのHive化

いままでの処理をHadoopを使って、システムの改善をした。

Before
約1週間
マイニングツールでレコメンドを計算.

1年半分のlogを対象に.
約8万人にレコメンドメールを配信
Association 分析。 20万人にレコメンドメールを配信

約CTR, CVR が1.6倍になった.
---------------------------------------
ゼクシィ 効果分析基盤構築

すぐに分析する基盤を作った。
データを一元管理したり、個人最適する方向性で動いている.
---------------------------------------
リクナビNEXT
	- データをためる
	- TOP ページの個人最適
	- 秘密

<データをためる>
	RDBから、Sqoop でHadoop にデータを移す (毎日)
	行動履歴ログ、レジェメ,マスタ, 成約データ系を一元管理

<TOP ページの個人最適>
パーソナライズしている。

企業選びの軸を抽出。
	業種・職種
	それが、めーかーなの?IT系なの?
	資格を生かせるのか?


クラスタリングする、
クラスター大きさから 職種なりを絞る?パーソナライズ

ユーザの行動を毎日分析して最適化している。

半年間で67GB, 退会者アンケートなども利用

...(メモできていない)
---------------------------------------
住宅のカスタマ情報を一元管理

1. ポップアップバナーでのレコメンド
2. 


とりあえず、Hadoop にデータを集めるところから始める.
今まで組み合して分析していなかったところから新たな知見が得られたりとか、

...(メモできていない)
---------------------------------------
カーセンサー: 
	マーケット・商材の特殊性
	
	中古車データは、価格を決定する因子がいっぱい。
		- 車種, 年式、走行距離,...
	
	今までのデータ分析からはなかなか精度が得られなかった.
	Access でやっていたらしい。

	それから Hadoop に変更した.
	try and error ができるようになった。

	価格の分析をしたい。
	
	クラスタリングしている
	どういう因子に注目すればいいのか?

	クラスターにまとめて、各クラスター の平均値から、価格を求めることができた。

	数か月で目的を達成できた.

...(メモできていない)
---------------------------------------
この分析の実現によりどんな事業メリットがあるか?
マーケットデータの多様な分析

AAデータ、小売データの差額を分析し、車種ごとの期待収益の算出.

平均値ではない「相場価格」、などを得られた.
---------------------------------------
Hadoop 導入のすすめ

	お勧め書籍
	- Hadoop 徹底入門
		http://www.amazon.co.jp/Hadoop徹底入門-太田-一樹/dp/4798122335/
	- Hadoop O'reilly
		http://www.amazon.co.jp/Hadoop-第2版-Tom-White/dp/4873115035/
	- Hadoop Hacks に記事の内容をちょっと書いているとのこと.

---------------------------------------
Hadoop の MapReduce を書く環境
	java, eclipse, cygwin
	karmasphere studio: 開発者がeclipse上でMap Reduce開発する時のお役立ちツールらしい。
		http://karmasphere.com/

---------------------------------------
Haddop 環境構築

お勧め
cloudera, CentOS(SL), VMware

Apache のhadoop じゃなくて、 cluderaだと、簡単に環境が作れる.
	http://www.cloudera.com/

Cloudera, sqoop, hive,
	MySQL, Posgres からデータの移行

疑似分散でも十分に学べる.

---------------------------------------
データをどうするのか?
	大容量のデータを得ないといけないので、
	記事データを良く使っているよ。New York Times とか、...

---------------------------------------
Hadoop 上で動いている分析アルゴリズム

<統計手法>: 誰でも同じ結果が出る.
基本統計量算出
回帰
重回帰
ヒストグラム
クラスター分析

<マイニング手法>
k-means
ロジスティック回帰
アソシエーション(apriori, fp-growth)
協調フィルタ
naive bayes
共起語抽出

asociation: レコメンデーションで良く利用している.
---------------------------------------
fp-growth: 
apriori, 

アソシエーション分析はマーケットバスケット分析とも呼ばれる.
---------------------------------------
行動履歴のデータがある
アソシエーション分析の結果をなんとか、

Solarにいれて、...

...(メモできていない)
---------------------------------------
アソシエーション分析の応用: + クラスタリング:
mahout, hadoop 

...(メモできていない)
---------------------------------------
NLPもやっているよ
textデータ -> Lucene -> mahout, haddop

テキストデータを Luceneを用いて単語分割、その後Hadoop, 

...(メモできていない)
---------------------------------------
ナイーブベイズの話

P(cat|doc) = P(doc|cat)P(cat)/P(doc)
---------------------------------------
Naive Bayesによる振り分け

口コミの振り分け。3をつけた人のはなし.
ポジティブワードネガティブワードを与え、口コミをベイズ解析。

評価点以外で特徴語抽出とポジネガ分類を可能にした。
(センチメント分析の応用)
---------------------------------------
データもあり、それを安価かつ高速に処理できるシステム
あとはこれらのデータをいかに、施策に落としこめるか

高速DWH/ Hadoop
ビッグデータ

...(メモできていない)
---------------------------------------
Try and Error を経験し、学ぶ。周りは失敗を許容する.
	=> とりあえずrun! try and error を繰り返す.

分析しっぱなしにしない。きちんと施策を見据えたうえで分析を行う
 => どういった施策が打てるのか?考察して、何に使えるのか?知見を活かすにはここが大事。

分析の手法、結果はわかりやすく、内容をブラックボックス化させない。
	=> 視覚化して、非エンジニアにも分かりやすく説明することを心がけよう。

---------------------------------------
MIT, MP/事業, Haddop開発者兼分析者

最初の目標・要件を決める
既存のデータの用い方・影響度を加味する
早く、分かりやすく
...

...(メモできていない)
---------------------------------------
新技術とか、やりたいこと
	分析・企画者・エンジニアが統計・マイニング用途がHadoopへアクセスできるように。

	Rを入れたい.

...(メモできていない)
---------------------------------------
次世代のHadoop ディストリビューション
	- 従来Hadoop より2倍程度の処理性能
	- NFSマウント可能
	- マスタの冗長性
	http://www.cloudera.com/blog/2009/09/cdh2-clouderas-distribution-for-hadoop-2/

	GreenPlum HD
	http://www.greenplum.com/products/greenplum-hd

...(メモできていない)
---------------------------------------
ほぼできたところ
Recommend
	協調フィルタリング
	アソシエーション分析

その他独自・各種レポート算出
	アトリビューション
	PV, CV集計
	クラスタリング

今取り組んでいること
会員ここに対するLPO, ユーザーターゲティング広告
NLP、sentiment analysis

...(メモできていない)
---------------------------------------
Hadoop の真価
	- 今までにない発想の柔軟化
	無意識に発想の壁を破ることができていることを実感している.
---------------------------------------
ビッグデータ元年
ビッグデータを制するものが世界を制す

リクルートの新サービスが世に出たらその後ろでHadoop が活躍しているかもしれません。
---------------------------------------

FC2ブログから記事を収集するスクリプト

概要

入門ソーシャルデータ7章,8章向けに、学んだ内容について日本語を対象に試したかったので、FC2ブログの記事をスクレイピングSQLiteに保存して日本語コーパスを作るスクリプト書いたので、晒してみる。(記事のデータはhtmlのままつっこむだけ.)

注意事項

短時間での、アクセス過多により、ブロックされるかもしれません。実行の際は自己責任でお願いします。

スクリプト概要

  1. [ランキングページ]全カテゴリー一覧(カテゴリー名 & URL)を取得.
  2. [ランキングページ]ランキングのトップページに載っているブログ情報(user名, blog url)を取得.
  3. [RSS FEED]user名から、FEEDURLを生成して、RSS FEEDを見に行く。最近の記事URL一覧を取得.
  4. [記事ページ]記事のhtmlをまるごと保存する.

※ 1回の実行で、記事8,000件くらい取れた。ブログ情報を取得するフェーズで次ページ・次次ページ...までと取得するユーザの情報を増やせば、増やしたページ数倍の記事数を取得できるはず。

FC2 ブログを選んだ理由

各ブログはあらかじめブログ登録時にオーナー側でカテゴリー分けられているので、全ドキュメント(記事)を対象に類似文章を探した時に、どのくらいの精度で同じカテゴリーの記事が表れるのかなと思い、あらかじめラベル付されているから、評価しやすいのでは?という観点から、FC2をコーパスに選びました。

※ オーナーがカテゴリーを選んでいるかは定かではありません。

最後に

FC2さん大量にアクセスしてゴメンナサイ m(_ _)m

「ビッグーデータ」というトレンド

概要

日経コンピュータ 2012/2/2号の「ビッグデータ大作戦」というコピーに惹かれて読んだメモ/感想など。

データ活用の3つのヒント

  1. 「データを自ら生み出す」
    • 旧来の情報システムが今まで無視していた分野に着目し、情報を生み出す.
  2. 「データに語らせる」
    • 既に保有する情報を掛け合わせるなどをすることで、従来では得られなかった情報をを把握する.
  3. 「データを深掘りする」
    • より深く、高頻度に分析することで、マーケティング精度向上を狙う.

事例

  • ゆめぱ - 城崎温泉
    • 旅館、入浴施設、商店にFeliCaの読み取り装置置くことで毎月10万件の利用データを得て、従来できなかった細かな分析を可能にした事例。
  • ウェザーニューズウェザーリポート Ch. - ウェザーニューズ
    • 携帯のGPSとカメラの2つの機能に着目し、全国にいるユーザを簡易版の気象レーダーと見立てて、従来サービスより繊細な精度かつスピーディな気象予報を実現した事例。80%の確率でゲリラ豪雨を事前予測できるらしい。
  • 「全力案内!」- NRI
    • 現在主流のVICS情報に加えて、全国のタクシー会社と契約し13,000台の走行情報を取得することで、より細かな交通状況を把握することができた事例。今まで難しかった裏道の渋滞状況まで把握可能になったとのこと。実際に3.11の大渋滞の時にも大活躍したとか。
  • ごみ処理場制御システム - 日立プラントテクノロジー
    • ごみ処理施設、各種工場などのクレーンの国内大手である日立プラントテクノロジーでは、クレーンの位置や荷物の重さなどのデータをリアルタイムに把握することで、異常時の検出、各種機器の劣化や故障の兆しなどを早期発見することで、クレーンのダウンタイムを低減した事例。
  • カゼミル+ - エスエス製薬
    • Tweetというビッグデータを活用した事例の一つ。つぶやきを分析し、風邪の流行を予測するもの。可視化のUIも面白い。
  • 加速度センサー、ジャイロセンサーを用いた飲食業の業務改善 - がんこフードサービス & AITS
    • 飲食業の従業員にセンサーを付けて、その行動パターンを分析することで業務改善につなげた事例。 参考:slidepaper
  • 試着データのログを取る - トリンプ・インターナショナル・ジャパン
    • 試着はしたが、購入はしなかったという(POSデータに残らない)ユーザの行動データを蓄積する仕組みを取り入れた事例。より細かな分析につなげることができるようになったとのこと。 参考:slide
  • Suica購入データをマーケティングに利用 - JR東日本ウォータービジネス:
  • Ponta- ローソン
  • 自社ネット通販サイトのログ解析 - ジャパネットたかた
    • ネット通販のユーザの行動履歴を分析しているらしい。顧客が離脱したページの把握し、リンク構造を改善することにより、購入確立を高めた事例。(活用手法としては新しい点はないように思えた。きっと「ジャパネットたかた」はテレビでの販売しているイメージが強いけど、ネット通販部門にも相当力を入れているんだよという紹介というニュアンスの記事だったんじゃないかな。)
  • ニコニコ動画でのログ解析 - ドワンゴ
    • ユーザの行動ログ解析から、適切な動画を推薦することに力をいれているとか。初期ユーザの嗜好がわかるまでは、万人受けする動画、ある程度市長履歴が蓄積されてきたら、濃いめの動画を推薦するようにしているらしい。(濃いめの動画ってどうやって定義しているんだろうと思った.)
  • カーセンサーnetでの取り組み - リクルート
    • 中古車は新車と異なり、所持している情報が多いので、以前は計算機の制約でユーザが観覧したメーカー、車種など限られた分析しかできなかったが、計算機能力向上の背景により、より細かな分析が可能になり現実味のある情報を提供できるようになったよという事例。広告主との商談にも役に立つデータとなっているらしい。
  • 行動データ分析 - Platform ID(オプトとカルチュア・コンビニエンス・クラブが共同出資)
    • WebブラウザのCookie情報をもとに行動履歴を収集し分析しているとのこと。TSUTAYA会員の利用履歴とも組み合わせているらしい。
  • 宿泊施設向けに分析ツールを提供 - 楽天トラベル
    • 毎日10万件の予約を仲介している楽天トラベルでは、提携している宿泊施設向けに、マーケティング施策を打つための手掛かりになる「オンハンド予約分析ツールの提供」しているという仲介業務ならではのビッグデータ活用事例。月2万円で利用可能とのこと。
  • 街作りに生かす - NTTドコモ

感想

「ビッグデータ」というと、ついついWebServiceを運営している企業で行動データ、Logデータから自社のサービスの改善につながるような活用事例ばかりを想像しがちだったが、他業種においての活用事例を知ることができた。その他にも医療業界での活用例なども最近のHot topicらしいし。

文書/音声/映像/ログ/センサーなど分析対象となるデータは様々で、改善につながるための活用方法も無限に多様性があるのだから、広い視野で柔軟な発想ができるように意識したい。

ビッグデータを自在に扱えるエンジニアになるために
  • データ分析の基礎理論
    • 統計学
  • データから法則を発見する方法論
    • 機械学習などの知識
    • 手法を実現するための実装力
    • 実用的・効率的に分析できるように (Hadoop, R, 各種分析ツール, Hadoopクラスターとかも組めるようなインフラ知識)
  • 得られた法則から改善につながる提案ができるような視点

上記のスキルを身に付けていければいいなーと考えている昨今。
きっと、ある程度の上記の能力を身に付けた暁には今とは違った世界観が広がっているんじゃないかと夢見ている。

最近、いろいろと忙殺されぎみだったので、自己の目標を整理するいい機会になったんじゃないかな。

精進します。


※ 雑誌の内容をメモるというレベルではなかったと少し不安に思いながら記事を書いていた。何か問題があれば、お手数ですが、ご指摘いただければと思います。

Developer Summit 2012 に行ってきた

概要

10年後も世界で通じるエンジニアであるために Developers Summit 2012に行ってきたので聞いたセッションに関するメモ/感想などを備忘録.

聞いたセッション

  • 2/16 (木)
    • Yahoo!アジャイルクロニクル ~コーチとエンジニアの体験記~ メモ1 メモ2
      • 長岡 実 氏
      • 高橋 一貴 氏 @kappa4
    • 教科書と現場のあいだ ~学びを活かすために~ メモ
      • 和智 右桂 氏 @digitalsoul0124
  • 2/17 (金)
    • オンライン機械学習で実現する大規模データ処理 メモ
      • 西川 徹 氏 @nvaca
    • マイクロソフトの変化を体現するAzureエバンジェリスト2人が語る今後10年を見越したオープン戦略 メモ
      • 砂金 信一郎 氏 @shin135
      • 佐藤 直生 氏 @satonaoki
    • 震災とHackとクラウドと メモ
      • 冨田 順 氏
      • 菅 祐貴 氏 @kanreisa
      • 亀渕 景司 氏 @kamebuchi
    • ライターズ・フィロソフィー―IT業界で書いて食っていくひとたちの哲学をきこう メモ
      • 新野 淳一 氏 @jniino
      • 西村 賢 氏 @knsmr
      • 毛利 勝久 氏 @mohri
      • 五味 明子 氏 @g3akk
      • 小泉 真由子 氏

Yahoo!アジャイルクロニクル ~コーチとエンジニアの体験記~

アジャイル開発をYahoo! Japanの中でどのように広め促進させていったか?その中で苦労したこと得たことなどの経験談を聞けた.

知らなかった単語
スクラム
アジャイル開発手法の一つを指している。
スプリント
開発・テストをし、製品に反映するまでの期間.(イテレーションする)
参考
第1回 アジャイル・ブームの再来
感想

上長も巻き込んで組織全体でアジャイルへの理解を深めることがアジャイル開発を浸透させる近道らしい。今すぐ使える知識はなかったが、チームで開発するようになったら、きっと共感できる内容だったんじゃないかなと。アジャイル侍も積みっぱなしなので、チームで開発するようになったら読み始めようかなと。その前にTDD習得の必要性をここ最近とても感じている。


教科書と現場のあいだ ~学びを活かすために~

  • slide

感想

前セッション同様、開発手法についてのお話がメインだったために、共感できることが少なく、話の内容の雰囲気だけでも理解するように努めた。いろいろと印象に残る話をしてもらったが、その中でも、「翻訳を、究極の精読だと思っている。」という言葉が心に刺さった。小さいライブラリのドキュメントの翻訳から始めてみようかな。


オンライン機械学習で実現する大規模データ処理

2日目の午後1のセッション、個人的に今回のデブサミの中でお目当てにしていたセッション。

感想

とても丁寧なプレゼンで終始わかりやすかった。機械学習のトレンドなどの話から、PFIとしての取り組み、Jubatusというリアルタイムで処理できるフレームワークを作っているとか、為になった。Jubatusを使ってみよう!

マイクロソフトの変化を体現するAzureエバンジェリスト2人が語る今後10年を見越したオープン戦略

双方ともOracle出身で今はMicrosoftでAzureのエバンジェリストをしている方による
Azureの紹介?MicrosoftはNode.jsに本気なんだよーっていうお話だったような。

そもそもエバンジェリストという言葉を知らなかった.

自社の製品やサービス、ノウハウ等を、顧客・パートナーをはじめ世間に広くわかりやすく説明して回る役割をする人。開発者でありながら、PRの役割を担う人が多い。役職として採用している企業もある。

また、自分が信奉する製品を、他人に勧めて広めようとする人のこと。

元々は、複雑なIT技術を分かりやすく説明する役割をする人を呼びあらわすIT用語であったが、今では一般的に使用されつつある。

http://d.hatena.ne.jp/keyword/%A5%A8%A5%D0%A5%F3%A5%B8%A5%A7%A5%EA%A5%B9%A5%C8
感想

クラウディアさん素敵でした。そのうちAzure使ってみます。


震災とHackとクラウドと

震災絡みの研究をしようかと思っているので、何かヒントとかになるかもという動機で聞きにいった。内容的には、震災の最中、エンジニアにできることは?なんだろうということで、実際に技術的にはそんなにハードルが高いことじゃないけど、社会貢献できる(できた)ことはたくさんあるんだよ。といういい話を聞いた.

感想

自分の技術力へのコンプレックス、羞恥心などは、捨てて、今できることをしようという思い、見習いたい。


ライターズ・フィロソフィー―IT業界で書いて食っていくひとたちの哲学をきこう

IT業界の記事を書いている記者さん達が集まってパネルディスカッションするセッションだった。

感想

出版業界の普段知らなかった世界の話が聞けて、軽いここ最近の歴史から~最近ののトレンドとか知れていろいろと勉強になった。皆さん、スピーチ上手いし、なにより話す内容がとても面白かった。西村さんがコードが読めないわからない記者は淘汰されるという思いからここ数年プログラミングに力を入れているという話はハッとさせられた。その挑戦する姿勢は見習いたい。購読しているpublickeyの新野さんを生で見れたのも嬉しかった。


総括

興味ある分野についてはもちろんだが、特に普段アンテナを張っていない分野、最近のトレンドなどを効率よく情報収集できたんじゃないかな。また、著名人を生で見れたのも個人的に嬉しかったし、スピーカーの皆様のプレゼンの仕方、いろいろと勉強になった。という感じで、初デブサミ満喫してきました。来年も行きます!

SONY GOF FOR IT ~5問目: 申告制エレベータ~

概要

GO FOR ITの第5問に挑んだ.

コード (Python)

とても長くなってしまったので、レポジトリを見てもらえればと思います。
http://code.google.com/p/k-koshikawa/source/browse/trunk/ProgrammingContest/2012/SONY_GoForIt_2012/5/solve.py

※ このソースコードのライセンスは特にありません。自由に使っていただいて構いません。

コードの説明

以下を参照していただければと思います。
http://code.google.com/p/k-koshikawa/source/browse/trunk/ProgrammingContest/2012/SONY_GoForIt_2012/5/README

感想

問題の中で一番時間をかけた問題だったが、完敗でした。
実装力,アルゴリズム力共に力不足を感じられた。出直してきます。
でも、おかげさまでとても楽しい時間を過ごすことが出来ました。SONYさんありがとうございました。

問題引用

5) 申告制エレベータ
エレベータの待ち時間でイライラしたことはないでしょうか。
利用者の生活リズムが事前に把握できるのであればもっと最適化ができそうです。
そこで完全申告制のエレベータを考えてみましょう。

10F建てのオフィスビルがあります。
事前に全ての利用者から申告を受けています。
エレベータが最適に動作するアルゴリズムを考えてみましょう。

エレベータには下記の制約があります。
・エレベータが1つの階を移動するのに掛かる時間は2秒です。
・一旦、エレベータの扉が開くと、閉まるまでに最低でも5秒掛かります。
※扉の開閉時間は、この5秒に含まれているものとします。
・エレベータの初期状態は1Fで扉が閉まっています。

エレベータの入力データと出力データのフォーマットは決まっています。
下記ファイルを参照して下さい。

i)エレベータを1台、最大乗車人数を1人とします。
単純に入力データの識別番号順に、利用者を運ぶプログラムを作成してください。
入力データは下記ファイルとします。

ii)任意の入力データと出力データを読み込み、全ての申告が正しく満たされたこと、前述の動作制約を守ってエレベータが動作していることを確認するプログラムを作成してください。
また、希望乗車時刻から降車時刻までに掛かった全申告の時間を合計して出力してください。
プログラムの入力形式・出力形式は自由とします。

iii)エレベータを1台、最大乗車人数を5人とします。
希望乗車時刻から降車時刻までに掛かった全申告の時間の合計ができるだけ小さくなるようなプログラムを作成してください。
入力データは下記ファイルとします。

iv)エレベータを2台、 最大乗車人数を5人とします。
希望乗車時刻から降車時刻までに掛かった全申告の時間の合計ができるだけ小さくなるようなプログラムを作成してください。
入力データは下記ファイルとします。

http://www.sony.co.jp/SonyInfo/Jobs/newgrads/sus/q05.html