2013年6月29日土曜日

HW1 Programming: Basic Server-Side Javascript with node.js@Startup Engineering

I've just done  the homework assigned at the lecture "Startup Engineering".



What is "Startup Engineering" ?
=> There's a description like this...

Overview

Welcome to Startup Engineering! This is the course we wish we'd had before beginning our careers. It's a summarization of what we know about starting technology companies/labs and scaling them up, taken from our experiences building Counsyland Folding@Home.



There's a lot of things to learn.
First, it is necessary to create an account of Amazon Web Service (AWS).
In addition to this, we need to learn how to use Amazon Elastic Compute Cloud (Amazon EC2).
Do you think it's difficult?
No, it is very easy to understand.
It is because Balaji S. Srinivasan, who is a lecturer of Stanford Univ, teaches us through streaming video.
I'm very appreciated to him.
What I learned is as follows.

- How to use Amazon EC2
- How to operate Ubuntu with Linux commands.
- Learned linux commands, such as scp, ssh, cat, chmod and so on
- Set up environment for Node.js
- Understand how to implement javascript programs by utilizing Node.js


In the past few days, I search some kind of cloud technology on Google in order to be a user of cloud based infrastructure.
But all the things I found are so difficult that I couldn't understand at all.
Therefore I started Coursera, which is an education company and aims that anyone around the world can learn without limits.
Unfortunately, almost all the lessons are in English.
So it is difficult for those who are non-English speaker like me.
I strongly desire that coursera stream video in Japanese!!
Education industry in Japan should be changed by such incredible web streaming educational service.




2013年6月27日木曜日

自分が欲しい物を作る

今日、カンブリア宮殿で、モンテールの特集をやっていました。
新人さんが新商品の提案をするシーンをちょうど見たのですが、
社長さんがおっしゃっていたことがほんとにそのとおりだと思ったのでメモ。

自分が本当に食べたいものを提案してる?
奇をてらってない?会社にとって良いじゃなくて、消費者にとっていいと思ってやってる?

本当にそのとおりだと思いました。
業界は違えど、自分がこれまで部署に投げた提案も、
一旦自分が本当にほしいものかどうか自問自答すべきでした。
自分が作りたいものを提案してしまっていたことに気付きました。
自分の技術が活きるから、自分の仕事が目立つから、そういった視点で提案してしまっていました。
そういった自分起点の視点では売れるものはできないし、
つまらないって思われるに違いないでしょう。

もう一つ印象に残った言葉があった。


2年目はお客様に近い目線でものを見ることができる。
会社に染まっていないから新鮮なアイディアが聞けるんですよ。
どんどん提案してきてほしい。聞いているのが楽しい。


こういったこと言ってくれる社長の元だったら社員がイキイキしてどんどんアイディア出てくるだろうな。
企業の低迷期(まさに今のウチなんだけど)はアイディアが枯渇して、
制約ばっかりが見えてきて、
視野が狭まって良い意見が出ない。
空気の悪い会議からはイノベーティブなアイディアなんて出てこない。
だからこそ、アイディアを奨励する仕組みが欲しい。
それでいて率直に面白いつまらないを言い合える環境が必要。
アイディア稼業の業界にいるのに、
アイディア出さずに社員してるのとかマジでぶら下がりと同じだよね。
頑張ろう。

2013年6月25日火曜日

Octaveを用いた信号処理

http://www.kkaneko.com/rinkou/octave/octaveyuminstall.html

このサイトを参考にしてUbuntu環境でoctaveのセットアップ。
修士時代は、生粋のMATLABユーザーで数値解析プログラムをぶん回してた関係で、
解析系のコード書くのはすごく得意なのです。

Octaveは互換性があるおかげでキャッチアップが簡単でした。

> x = [ 0.0:0.01:2*pi];
> plot(sin(x));


修士以来書く機会のなかった久々のsinカーブ。

CourseraのStartup Engineeringが半端無く勉強になる件について。

ウェブ系の技術に疎い私ですが、
AWSのクラウド環境で作業して、コマンドラインでホスティングサービスにウェブサイトをデプロイするまでをたったの一時間で習得した。

短時間でそれを可能にしたのはCoursera
オンラインで有名大学の授業をタダで聴講できるサービス。

そこでやってるStartup Engineeringを受講してます。
Stanford大学の先生が教えてくれるんだが、
物凄くわかりやすい。

Startup Engineering 
by Balaji S. Srinivasan, Vijay S. Pande




やることとしては、
- AWSでアカウント作ってEC2のubuntuインスタンスを作成
- Githubからクローン
- インスタンスにsshで入ってherokuにデプロイ。


この環境があればモバイルPCだけで開発できちゃうよね。
クラウドで入ってその中で全部完結してしまうんだから。
ついでに英語の聴きとり能力も向上した気がして一石二鳥。

Homeworkも設定されてて、
やんないとcreditがもらえなくて修了できないという仕組み。
落ちるのは嫌なので。

どんどん身に着けていくぞー
今日の成果はこれ。
http://cryptic-sierra-4988.herokuapp.com/
つぎはNode.jsをやってみます。


ふと思ったんだが、Stanfordではこんなに実学寄りなことを大学で出来るんだよね。。
マジで学術的なことなんて事後で学べばいいと思うんだよ最近。
スタートアップが日本から生まれてこないのは教育システムにもあるんじゃないかな。。
技術は学ぶもんじゃなくて使うものだってCourseraの講義聴いてるとひしひしと感じられるよ。

2013年6月23日日曜日

AWS & 仮想化の入門

MacBook Airにてamazon EC2, S3を試してみた.
数時間使った感じかなり使いやすいので,
ウェブホスティングサービスとして確定した気がする.
1年間は無料のまま使えるけど,その後お金払ってもいいや.
ブラウザからOS選んで立ちあげてsshで入るっていう仕組みの便利さが半端ないな,今更だけど.
強固なインフラもいらないし,これからはすべてモバイルPCで生きていけそう.
コンテンツの実装もデータをS3に置きつつ仕事すれば別にストレージもいらんし.

入門にあたってはdotinstallのAWS入門が半端無く役に立ちます.



ついでにインフラ回りの技術に興味が湧いたので,
MACにVirtualbox入れてUbuntuたちあげてみたー.
やっぱUnix系はコマンドラインでサクッとインストールできちゃうのがすっげぇ楽.
仕事ではWindows使わなきゃなので仕方なく使っているが,
Max使う仕事場に行きたいわ..


2013年6月22日土曜日

メモ@統計科学


オンラインコンテンツ:

Coursera: coursera-downloaderで講義データダウンロードしてタブレットで見ると便利
              Computing for data analysis
edx: Stat2.1x, Stat2.2x, Stat2.3x
pyvideo: http://pyvideo.org/
            http://pyvideo.org/video/1724/bayesian-statistics-made-simple

統計の基礎を学ぶ:

統計学自習ノート  http://aoki2.si.gunma-u.ac.jp/lecture/


2013年6月18日火曜日

アイディアノート: 学びのソーシャル化・ビッグデータ化


すららを見てみた。
ウェブ上で教育コンテンツを流してる会社。

コンテンツ制作に最低限必要そうなものピックアップしてみると、
- ユーザー一人一人のログ採取のためのインフラ
- 自動音声合成(いちいち声優使いたくない、テキストデータでパっと作りたい)
- 良質なコンテンツ作成のためのノウハウ




iKnowも見てみた。
これ単語帳が自動生成できるんじゃねって思ったらとっくにやってた。
情報を最適な形で抽出することなんてログ取ってりゃ簡単だよなぁ。
podcastで復習もできる。
でもまー新しさは無い。



次はアダプティブラーニング。
WIREDでの記事が少しピンときたのでメモ。

2013年6月16日日曜日

Lytroの事後ピント合わせカメラはいわゆるビッグデータ思考に似ている


コンデジ市場がスマホのカメラに侵食されている昨今ですが、
最近いろんなカメラが出てきてますね。
今日は2つめぼしいものをまとめます。

一つは前回も記事を書いたGoPro。
小さくて堅牢なウェアラブルカメラです。
アメトーークで宣伝されてから日本でもバカ売れしてる商品。


機能的にはなんにも新しくないんだけど、
訴求する価値が新しい。
車載カメラにしてみたり、ダイビング中に撮ってみたり。
撮影者の視点が変わっただけで、
ビデオってこんなに変わるんだと感じさせてくれる。
オフィシャルサイト(http://jp.gopro.com/) のトップページでは、
アクセスするとすぐyoutubeの動画がドンと出てくる。
一回動画を見てもらうことが訴求価値を理解させる最高の手段だといった
マーケティング判断なのかな。
簡単なTV撮影とかにも向いていて、
資金力のなくなってきたテレビ局が使い捨てカメラとして大量購入とかありそう。
テレ朝さんはアメトーークで宣伝してやっから便宜を図れ的なやり取りしたんだろうか。。



次が本題のLytroのカメラ。
こっちは写真を撮ってからピントを合わせるカメラです。
意味わからないですね、聞いた当初は。
普通のカメラって、一時点の光だけを採光して、
データに焼きこむけど、
Lytroのは、入ってくる様々な光を全部取り込んでしまって、
それらすべてをデータに焼きこんでるイメージ。
全部のデータがストレージされてるから取った後でピントが変えられるんです。



なんでこの件で記事書いてるかといいますと、
ビッグデータの正体っていう本でこのデバイスの話がちょろっと出てきて気になったので調べたのがきっかけです。
この本のまとめは後日書くとして(絶賛読書中)、
Lytroはいわゆるビッグデータ的な考えの一例の文脈で登場してました。
いままでのカメラは、一時点の光を標本として取り出すことで写真を撮ってきた。
それに対してLytroは撮像時の光すべてを採光してストレージしてます。
これは標本空間全体を対象として、
全部をストレージした上で分析をかけるビッグデータの考えに似ているとのことでした。
なるほどなーって思うし、本文中に頻繁に出てくるフレーズ、
「量が質を変える」
といった話がこういう例を通してバシバシ伝わってきます。
久々に出会った良書なので、気になった人は読んでみて下さい。





最後に。。
Lytroのカメラいいと思うしカナリ欲しい。
カナリ遠い未来にはビデオにも応用して、
撮影後の動画中でピント調整もできるようなビデオカメラとかできるんだろうな。

2013年6月15日土曜日

情弱でもできたPython3.2でMatplotlibをWindows環境にインストールする方法

Matplotlib動かしたくてもなかなか環境設定難しくて
動かなくって諦めてた私。
scilabならインストール簡単だしFFTとか簡単にできていいんだけど、
文字列処理とかwebのスクレイピングとか入ってくるとやっぱpythonだと思います。
なので、本読みつつMatplotlibをWindows環境に入れてみたよ。
やっと成功して嬉しいです。


1. Python3.2 32bit版のインストール
Windowsではライブラリ提供者が予めコンパイル済みのバイナリを配布するのが望ましいとされている。
NumPy等は32bit用のもののみ用意されていたりするので、32bit版をインストールするのが安定。
加えて、Matplotlibは現在3.2系のものしか用意されていないので3.2系をインストール。
下記リンクの"Windows x86 MSI Installer (3.2) (sig) and Visual Studio debug information files (sig)"
を落としてウィザードで言われるがままインストール。
http://www.python.org/download/releases/3.2/

2. PATHを通す
環境変数PATHの先頭にPython3.2のインストールディレクトリを追加
デフォルトでは C:\Python32\; を追記すればOK
確認:コマンドプロンプトから"python"と打ち込むとPython3.2が起動すればOK

3. 仮想環境の準備
せっかくなのでコマンドプロンプトからpythonのコマンドを実行してみる。

>>> python>>> import os>>> os.system("pwd")  # ユーザーのホームディレクトリ>>> os.system("mkdir projects") # cygwin入ってるから実行できる>>> os.system("cd projects")>>> os.system("mkdir default32")

ユーザーのホームディレクトリにprojectsを作成
projects以下にdefault32を作成

4. virtualenvのインストール
ここからファイルのダウンロードしたあと展開。
https://pypi.python.org/pypi/virtualenv

展開したディレクトリにて下記コマンドを実行してインストール。
> python setup.py install

5. 仮想環境の有効化
projects以下で下記コマンドを実行
> python -m virtualenv default
> default\Scripts\activate

6. pip, easy_installをインストール
仮想環境をオンにしたまま下記コマンドを実行

(default) C:\Users\***\projects> python -c "import urllib.request; urllib.request.urlretrieve('http://python-distribute.org/distribute_setup.py', 'distribute_setup.py' ) "
> python distribute_setup.py
> easy_install pip

7. numpy / scipy のインストール

以下のURLからnumpy-1.6.1-win32-superpack-python3.2.exe を落としてきて叩く。
http://sourceforge.net/projects/numpy/files/NumPy/
C:\Users\***\AppData\Local\Tempに numpy-1.6.1-sse3.exeが生成されるので、
下記を実行
> easy_install numpy-1.6.1-sse3.exe

同様にscipy-0.12.0-win32-superpack-python3.2.exe を下記URLから落とす。
http://sourceforge.net/projects/scipy/files/scipy/
Tempディレクトリからscipy-0.11.0-sse3.exeを取り出して下記を実行。
> easy_install scipy-0.11.0-sse3.exe

8. matplotlibをインストール
> easy_install matplotlib-1.2.0.win32-py3.2.exe

9. plotしてみる。
下記サイトのサンプルを実行して確認。

python3.2環境でmatplotlibうごいたぁああああああ嬉しいいいい



10. 以降はこれで起動。
C:\Python32>python -m virtualenv default
メモ:
cd C:\Python32
python -m virtualenv default
cd C:\home\SvnDir\python
python fft.py

2013年6月13日木曜日

AndroidでBluetooth, NFCをさわってみたよ


最近仕事を早く終えてAndroid開発をしている。
開発環境割と古かったせいか、
ADTの更新を求められたりして若干面倒なことがあるけれど、
実装しやすさは抜群。
しかしながら開発環境頻繁にアップデートされるとまじでオーバーヘッドでかい。
クラウド側で開発とかできないのかな将来的に。


個人的にワイヤレス系技術に興味持ってるので、
NFC, Bluetooth周りを触ってる。
現状、NFC機能を使って、
Suica,nanaco,edyは読めるようになった。
しかしながらバイナリのままなので、これらのタグフォーマットを理解して、
意味のある形に変換する必要あり。
特にSuicaのバイナリデータは、
乗り降りした駅、時間をゲットできるので
人の行動履歴のトラッキングができる。
edyからは決済データがぶっこ抜けるし、
割とNFCからのマーケティングデータ応用はあっさり確立していきそう。

Bluetoothは、はっきり言って仕事のため。
技術の理解と、AndroidのBluetoothスタックを参考に
何か仕事にプラスの効果を出したいっていうノリ。
コントローラとタブレットの近距離通信出来れば、
タブレットをテレビ代わりにしていわゆる据え置きゲーが
カフェでもできる!みたいな未来が見える。

ゲームって軽い方から順に、
スマホ
ネトゲ
据え置き
って感じだけど、
そこに、「ヘッドセット+コントローラ+タブレット」
っていう新しい領域ができていけばなーって妄想中。
友達のタブレット複数枚持ち寄ってマルチディスプレイ環境とかもできたりして。

2013年6月5日水曜日

androidアプリの公開にチャレンジ


androidアプリ公開時に必要な手順メモ。


・ keystore: http://www.andr0o0id.com/?p=3867
   Windows7 => C:\Users\ユーザー名\.android\debug.keystore


・ https://sites.google.com/site/technoute/android/publish/apk
  もろもろの手続き。

・注意
- com.exampleのパッケージは許されない
- パッケージ名の重複は許されない
- キャプチャ画像は最小でも二枚必要
 エミュレータからキャプチャ画像を取得するやり方
 http://www.adakoda.com/android/000243.html


・ ビルドエラーがでて、AndroidManifest.out.xmlが生成されるけど、
コードを元に戻してもビルドエラー。Why?
ってときは
AndroidManifest.out.xmlを削除して、
プロジェクト右クリックしてRefreshして再実行すると行ける!



================================================================



普段の仕事でも各種センサー類を触っているが、
androidではこんなに簡単にアプリ実装ができるのかと感動した。
また、洗練されたフレームワークがあるっていうのに感動。
アプリ開発者側には、
 決まった手順でアプリが量産できるSDKを提供すること
がとてつもなく重要であると感じた。

アプリ屋さんの気持ちをしる上でのandroid開発は意外と仕事に良い影響を及ぼしそう。

2013年6月3日月曜日

レアジョブから学んだこと


レアジョブやってます。
Skype経由で、フィリピン人と英会話できるサービスで、
一回あたり100円ちょいで30分レッスン。
それを毎日できるというすごいサービス。

このサービス、
フィリピン人が安く雇えることと強い円のお陰で、
凄く恩恵を受けていると思われる。
フィリピン人の学生や主婦が多く講師として在籍していて、
雇用が増えているようだしみんなが幸せになるサービスだと思う。

そこで今日はこんなニュースを見た!
先日TechAcademyマガジンのインタビュー記事でも紹介したレアジョブが新たに資金調達したことを発表しました。
YJキャピタル、KDDI Open Innovation Fund、サイバーエージェント、サイバーエージェント・ベンチャーズ、グローバル・ブレイン、三菱UFJキャピタルの6社を割当先とした総額約3億3000万円の第三者割当増資とのことです。

いいねぇ~こういうサービスが成長するの!
Win-Winとかよくいうけど、本当に関係者全員が幸せになれるアイディアって素晴らしいと思う。