2013年12月15日日曜日

Startup Session@大阪イノベーションハブに行ってきた話


Startup Session@大阪イノベーションハブに行ってきた.

元々のモチベーションは,
起業ノウハウを知りたいとかいうものではなく,
辻野晃一郎さんの仕事観や将来の家電業界をどう見ているのかを知りたかったから.
GoogleとSonyで働いた人が,未来に何が必要で今どう行動すべきだと思っているのかが気になっていた.

このイベントでのメモをまとめておく.


【大阪発イノベーションは世界を変えられるか?@辻野晃一郎】

- 東日本大震災で考えたこと
  様々なdecisionのスピードを上げていかなければならない
  コンセンサスを疑わない日本国民の持つ問題が浮き彫りになった

- デジタル家電はコモディティ化した
       家電新製品も半年程度で半値.
       もはや消耗品なので壊れたら修理よりは買い替えになってる.
       ⇒ 家電を取り巻く環境も大きく変わり,家電そのものの再定義が進んでいる.

- あらゆることの再定義が進んでいる
      グローバルインフラとしてのインターネットが考え方を変えた
      グローバリゼーションの再定義

- Googleの目線
  Googleでは地球規模で物事を考えている
  目線の高さを変えると発想が変わる
  小手先のノウハウよりもマインドセットの持ち方こそが重要.

-  これからの家電
  雲を除く窓としての家電機器の再定義
  日本が世界に先ん出ていた家電機器の時代は代わった.
  => Googleはmotorola買収後,ハードウェアも精力的に作り始めている.

  (例) Sony/Googleのウェアラブルデバイス
    Sony HMDとGoogle glass
    家電屋さんは既存の流れで同じものを作ってしまう

一方で,シリコンバレーの連中が作るものは概念が違うものをつくってしまう.
クラウドを


   家電の世界はすでに再定義が進んでしまった.
   新しいプレイヤーに置き換わった

  自動車業界は... 
   無人走行の世界で最も進んでいるのはGoogle
         => 自動走行車は複数の州で無人走行できる
    ITデバイスとしての車の再定義
  
* テスラモーターズ
  - 日本の製造業の強みは垂直統合型
    ⇒ 必要な物は自前で作る
  - ITは水平分業型を好む.
    ⇒ 車専用のバッテリーの開発等はせずに買い集めてソフトウェアで制御する
  自前主義にこだわるあまり,競争力が弱くなる


* Elon Muskの話
 テスラモーターズ創業者の一人
 これからの人類にとって大切なモノはなにか.
 アメリカのダイナミズムはたった一人の妄想家が次々とやってのける世界.
 それに多くの投資家が資金提供している.

* 加速する新陳代謝
世の中が変わってしまっているのに日本は未だに既存のものの延長線上で考えている.
あまり議論を唱えず既存のものを良しとする思考スタイルでは世界で勝っていけない.
遠い未来から発想して今の行動を決めるスタイルでやっていくことを薦める

* これからのビジネス
 ・外貨を稼ぐビジネス
  21世紀の新しい経済モデルやものづくりスタイルを創出
  インターネットクラウドのフル活用
  世界に向けたチャレンジ

・世界に出ていくためのアプローチ
  世界共通語としての英語による展開
  グローバルデファクト(facebook,google apps, etc)の活用
      ローカライゼーションよりも世界の最大共通項で世界を攻めていく
  (amazon,googleの方法)
  最初の段階からそういった考え方で自分の事業を設計していくのが良い.

楽天は逆.コテコテの日本流ECを作ったため,
海外に持っていた瞬間にやり直し.グローバルからローカルといったやり方の逆なので,
余計なオーバーヘッドがでてしまっている.

* 日本のビジネス環境
  スタートアップにリスクマネーがまわっていない.
  キャッシュで持っていても死に金.
  スタートアップにお金を流すことでイノベーションを起こす仕組みづくりをしていかないといけない

* イノベーションを生み出して支援する,その一つがクラウドファンディング
  人がやらないことをやる
  人にやれと言われた仕事はしない

* player ではなく platformer
  IT型のスピードとスタイルを意識したものづくり
  デバイスだけでなく生態系全体を包括した意識
  プラットフォームビジネスの成功はプレイヤーとしての成功とスケールが全く違う

* スタートアップの心得
 - 現在のスタートアップ
   日本のことしか考えないで起業する人
   コンセンサスを疑う.
 直接海外にリーチする
 決済手段ならPaypal
 海外の人達にも理解されるテイストでサイトを作る
 最初の物の考え方で後々のスケーラビリティに差が出てくる


 日本企業の特徴は偉くなるとハンズオフ,
 現場から遠ざかる傾向にある.
 常に色んな物を見て異業種の人と見なきゃいけない.
 いろんなところをとにかく見て回ること.

How to download files automatically with python + cygwin

There are excellent lectures in coursera.
I like startup engineering the most.
From the lecture, we can get knowledge about how to utilize IaaS especially AWS.
AWS made it easy to get in touch with computing with good hardware without purchasing PC.

Then, I want to learn the lesson offline.
It is because there's no network infrastructure outside my room.
But it takes a lot of time to download all the contents by clicking through browser.....



So I implemented a python script to get all the files from the site.
The following script is one of the example for achieving that.

This script was confirmed to function well under cygwin + python2.5.



import subprocess, sys

# ---------------------
def wgetFunc(destFile, url):
 cmd = "wget --no-check-certificate -O " + destFile + " " + url
 print cmd
 subprocess.call(cmd, shell=True)
# ---------------------

# Parameters ----------
destDir       = "/cygdrive/d/tmp/"
searchStr     = "https://class.coursera.org/startup-001/lecture/download.mp4?lecture_id="
listUrl       = "https://class.coursera.org/startup-001/lecture/index"
localListFile = "index.html"
# ---------------------


print "[1] Create destination directory"
subprocess.call("mkdir " + destDir, shell=True)

print "[2] Get index file"
wgetFunc( destDir + localListFile, listUrl )

print "[3] Parse html to get file list"
F         = open( destDir + localListFile, "r")
urlList  = []
for line in F:
 line = line.replace("\"", "")
 suf  = line.find(searchStr)
 if suf != -1:
  suf = suf + len(searchStr)
  urlList.append( searchStr +  line[suf:] )

for line in urlList:
 print line,


print "[4] Confirm whether download or not"
answer = raw_input("Download? Y/N  :  ")
if answer == "N":
 print "Refuse to download."
 sys.exit()
elif answer== "Y":
 print "Downloading..."
 for i in range(0,len(urlList)):
  wgetFunc(destDir + str(i) + ".mp4", urlList[i] )
else:
 print "Please input Y or N."


When I try to do the same thing in MacOS, "wget" command should be installed at first.
It's very easy to do that by executing these commands.

* Download source files of wget
 $ sudo curl -O http://ftp.gnu.org/pub/gnu/wget/wget-1.13.4.tar.gz 

* Unzip the file.
 $ sudo tar zxvf wget-1.13.4.tar.gz Install it $ sudo ./configure --with-ssl=openssl
 $ sudo make
 $ sudo make install

* You can confirm if the installation is successful or not by typing...
 $ wget If installed, the following description will be returned.
wget: missing URL Usage: wget [OPTION]... [URL]... Try `wget --help' for more options.

2013年12月6日金曜日

USBデバイスを単独実装してるペーペー開発者の戯言


某USBデバイス開発をスクラッチから担っているものです。
揺りかごから墓場まで、設計からサポートまで。
一貫して全部やらせてもらっております。大した能力もないのに。
つまづきながら覚えていくことは多かった。
# ちなみにまだ実装は 終 わ っ て い な い。絶賛炎上中。
今日は今までのおさらい。

========= 回想 =============

ある日、何やらUSBデバイスを急に作れという話が偉い人から降りてくる。
こんな感じの仕様で、こんなことを実現して欲しいと淡々と言われる。
開発の下っ端の自分はNoというチャンスはなかった。
決まってるから実装しろ、ただそれだけ。
コンセプトレベルからこうやったら売れるみたいな話まで提案できないし、
どう考えても魅力的ではないプランを、とにかく実装させられるだけ。
ものすごい違和感が、ざわざわと音を立てて湧き上がった。
って感じでしたが抑える。

その後、評価面談なるクソみたいな形式的なものに付き合わされた際、
どうしても問題提起したくてこの「天から舞い降りてくる素晴らしい全自動奴隷システム」について、
会社のヒエラルキーのなかでのいわゆる偉い人に言ってみた。
端的にいうと、「誰かが決めたことに文句言わずについてけ、ペーペーなんだから」
って返答がもらえた。
この人、この間までこのプロジェクトに反対していませんでしたっけー。
諦めがついた、この会社で偉くなってもこの程度なんだから。
偉くなる人はたぬき。
上に行くために必要なことをするだけの人。
ペーペーは考えるチャンスを奪われる。
能力が育たない。
結果、会社に買い叩かれる。
この違和感は忘れちゃいけないと思った。
一種の洗脳かと思った。
絶対に忘れない。

次の日、自分は考え方を変えた。
「これはビジネスじゃない、おべんきょうだ」
スクラッチからデバイス開発なんてなかなかできない。
ましてやいっぱい数が出るデバイスだ。
まぁいい、やってやろうじゃないか。
おべんきょうでお金貰えるなんてサイコーって気持ちで。
貴重な人生をこんな製品の実装に費やすのは少し残念ではあるが、
金無しスキル無し人間なので、これはいい意味での踏み台だと解釈。

意識が変わった、仕事が面白くなった。
USBにはプロトコルとかいうのがあるんですね。
こんなデバイスにはこんなプロトコルがいいよ!
こんな転送方式がいいよ!
みたいなのをこの本から学ぶ。



こんな感じの専門用語使えばベンダーさんと対等にお話できるのね!
って要領がわかったあとはこんな仕様で作ろっか!ってFW開発の会社におんぶにだっこ。
面白かったのは通信モデルの策定。
USBからこんなコマンド送ったらこう対応してね、みたいなのを取り決めるんです。
通信フロー図みたいなの書いて、パケットフォーマットも策定したり。
合意がとれた後はひたすら開発。

既存のソフトウェアスタックを流用するだけな感じだったけど、
ソフトウェアスタックの実装を見て、
あーよく出来てるなぁーって納得しながら作業するのは楽しかった。
一昔書いた

Callback関数を知らん人がまず理解すべきことのまとめ。


にあるような知識がこの時も役に立った。
結局USBデバイスでもイベントドリブンなソフトウェアスタックの実装が求められるんすわ。

眠くなったのできょうはここまで!




つづく。

2013年12月2日月曜日

C言語でBluetoothスタックを叩きたい人のBluetooth開発入門その2




Bluetoothを扱うソフトウェアエンジニアにとって必要な知識は段階があると思う。
私は色々と遠回りをしてしまったので、二の足を踏む人が少しでも減ればと思い今回の記事を書く。

私が初めにとった学習方針は「いきなり完璧を目指す」ものだった。
というのも先輩に進められるがままこちらの本を借りて読んでみたのだ。





、、、意味がわからなかった。
というのも、こちらの本は情報の粒度が細かすぎて私の知りたいコトの要点がぼやけてしまうという問題があった。

ただ、先輩がこの本を薦めてくれたのには理由がある。
日本語の本で技術的に正確なことを記載しているものは実質この本だけだったからだ。
著者はBluetoothの仕様を策定したericsson社のエンジニアが書いたからだ。
確かに正しいし必要な知識はすべて書いてある。

だが、必要な知識を効率よく収集することには向いていない。
ブラックボックスをなくすことは徹底すべきだと思うが、
最終的にものづくりを目標としているソフトウェアエンジニアにとっては、
いい学習方法とはいえない。

私が経験的に学んだ学習のステップは
「ソフトウェアスタックを上から下にたどること」
Bluetooth/USBでいうと、
アプリ/テスト開発 => ライブラリ開発 => デバイスドライバ開発 => デバイス開発といった流れだ。

まずはAPIを手順通り呼んだらとりあえず実装できることを体験する。
動作を見つつ自分なりに使えるミドルウェア・ライブラリを書いてみる。
なれたところでデバドラのソースコードを見てみる。
デバイスを作ってみる

こんな感じで理解を深めていければいいんじゃなかろうか。
ちなみに私は現在USBのライブラリ開発をして、
USBとはなんぞやを学んでいます。
USBについては日本語で有用な書籍がたくさんあるのでBluetoothより学習し易い環境でしたー

2013年11月20日水曜日

C言語でBluetoothスタックを叩きたい人のBluetooth開発入門その1


会社ではCでデバドラを書いてる私は、密かにBluetooth関連のお仕事をかっさらおうと画策中。
しかしながらスタックの知識、実装面等おぼつかない部分があるので、
スタンダードなことを勉強していこうと思い下記の本を会社の資料室で借りた。






めっちゃいい感じ。
PythonとかCでBluetoothスタックを叩いて実装の雰囲気を感じ取れる教科書。
入門じゃぁ!と思って意気込んでプロトコルとか読み漁るよりも、
はじめはざっくり雰囲気でよくわかんねぇけど実装は出来る状態に持っていく。
その上で深さ優先探索していってお勉強が完了するイメージですすめるほうが、
技術の習得においては手っ取り早い。

この教科書、Linux前提で話が進むので、
とりあえず私はWindowsをホストコンピュータとして、
Virtualbox上にUbuntu入れてお勉強進めます。

この本に載ってるソースコードでは、
しょっぱなから #include <bluetooth/bluetooth.h> やってるんですけど、
usr/include 以下を調べてもヘッダ無いんですよねこれが。

何かインストールしなきゃいけないんだろーと思って調べたところ、
bluezなるものをインストールする必要があるとのことでした。
アプリを実装するためにはヘッダ、バイナリが必要なので、
具体的にはコマンドを実行してヘッダを落としてきましょう。

$ sudo apt-get install libbluetooth-dev
# bluezの開発環境をインストール!

あとはここのサイトを参考にしてsimplescan.c を書いちゃって、

$ gcc -o simplescan simplescan.c -lbluetooth
# bluetoothライブラリをリンクしてコンパイル!

はい、実行できた。
きょうはここまで。

2013年11月11日月曜日

Webクローラーを自前で実装する戦略を情弱が考えてたところなんか話がそれて頭の良さの変遷ついて考察する事になった


私は仕事ではもっぱらCのコードを書いてて、
デバドラとか簡単なライブラリを実装している程度の技術力の人です。

仕事とは全く関係なく、ウェブ関連に少し興味持ち始めてきたので、
最近ソケットプログラミング覚えて、ちょっとVirtualboxつかってUbuntu使い始めました。
コマンドラインの素晴らしさを少しづつ学びsshでリモートログインしてとかしていくうちに、
慣れ親しんだWindowsの居心地が悪くなってきました。
githubにもsshでpush(?)してみたり、凄くおもろい。

しかもLinuxは暇つぶしにもいい。
ネットワークスタックのソース見て、
ドライバの実装ってこうやるんだーって勉強になったりもするし。

話は変わって、
少し前、pythonのurllib使ってhtmlファイル落としてきてbeautifulsoupでパースする程度の実装たことがあります。
クローラー的なものを実装してデータマイニングしてみよっかなっていう軽いノリでした。
しっかしクソ面倒。
htmlしっかり書いてるサイトだったらいいんだけど、
お粗末なサイトを徘徊するのはエラーハンドリング周りがしっかりした実装でないと、
所望の処理は行えないわけで。。。
ここでくっそ頑張れば最強pythonクローラーができるかもなんだけど、
それは車輪の再発明で世の中になんの新しい価値も生み出さない。
そもそもpython使ってたのは会社で自動化ツール実装するのに必要で、
遊びながら仕事にも応用できればなーってノリなだけだったし。。


1つの言語で全部済ませたいという目標は、
効率が良いように見えて実は遠回り。
道具は適材適所で使わないとアホみたいに時間がかかることに気付く。

Ubuntuのコマンドラインでほげほげコマンド触ってたら
wgetとかcurlとかあるじゃないって気付きました(今更)。
wgetでドメイン指定して再帰的にぶっこ抜くっていうのも簡単にコマンド一つでできると知って、
やっぱり無知は罪だなー時間を浪費するなーって気付きました。

$ wget -r http://*****.co.jp

ってやれば同一ドメイン上のすべてのファイルを取得可能ですよね。
とりあえず全部ぶっこ抜くのは楽勝。
ぶっこ抜いたデータベースに対してどういった処理を加えるかは、
文字列処理に強い言語を使えば良さそう!


道具を組み合わせて新しい価値を出すことが求められてるので、
どうしたら早く目標を達成できるか、
最短の手法を考えられるようにすることが必要なんですよねきっと。
これからの「頭の良さ」の定義は、
いろんなこと知ってるとかよりも、
最適な組み合わせを理に適った方法で実現可能な形で提案できることに変遷していくと個人的に思う。


あぁ、何か雑多な話になってしまった。反省。

2013年11月10日日曜日

GitHubを始めてみる

手持ちのMac Book Airで何かしらツールを実装して公開してみたくなった.
最初の初期設定についてのメモ.
まずは公式サイトを参考にssh keyの設定
$ git remote add origin git@github.com:user/project.git
$ touch makefile
$ git add makefile
$ git commit makefile -m "Add a makefile"
$ git push origin master


【まとめ】イシューからはじめよ

「イシューからはじめよ」のまとめ。


* 脱「犬の道」、「イシューからはじめる」
本書では、「やってみないとわからない」というスタンスで膨大な時間を浪費する「犬の道」ではなく、
重要な問題、本体解くべき課題にフォーカスして取り組む「イシューからはじめる」ワークフローへのパラダイムシフトを推奨している

* 「イシューからはじめる」アプローチとは (本書P34)

1. イシュードリブン: 本当に答えを出すべき問題「イシュー」を見極める
    イシューを明確にして目的意識のブレを防ぐ
    主語・動詞を入れて言語化し、スタンスを取る

        ・イシューが見つからない時は?(本書P88)
            変数を削る・視覚化する・最終形からたどる・So what?を繰り返す・極端な事例を考える


2. 仮設ドリブン
    - イシューを解けるところまで因数分解しサブイシューを割り出す
        適切なフレームワークでMECEに分解する
    - ストーリーラインを組み立てる

        ・典型的なストーリー
            必要な問題意識・前提となる知識の共有
            カギとなるイシュー・サブイシューの明確化
            それぞれのサブイシューについての検討結果
            それらを総合した意味合いの整理

        ・ストーリーライン
            「Whyの並び立て」
            「空・雨・傘」    

    - 説得に必要な分析のイメージを描く
        「軸の整理」: 比較/構成/変化
        「イメージの具体化」、「方法の明示」


3. アウトプットドリブン
    各サブイシューに対して分析を行う


4. メッセージドリブン
    論拠と構造を磨きつつまとめる
        - 論理構造を確認する
        - 流れを磨く
        - エレベーターテストに備える





2013年11月4日月曜日

GAEでデプロイできなくなった件について

GoogleAppEngine for Javaな話。

ローカル環境でJSP/Servletの動作確認はできたんだが、
デプロイしようとするとバグが出た。。

出てたログはこんな感じ。


JDKのパスを変更したり実装項目の再検討したりしてたけど解決せず。。。
Unable to update:
java.lang.RuntimeException: Cannot get the System Java Compiler. Please use a JDK, not a JRE.
at com.google.appengine.tools.admin.Application.compileJavaFiles(Application.java:814)
at com.google.appengine.tools.admin.Application.compileJsps(Application.java:801)
at com.google.appengine.tools.admin.Application.createStagingDirectory(Application.java:615)
at com.google.appengine.tools.admin.AppAdminImpl.doUpdate(AppAdminImpl.java:418)
at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:55)
at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java:433)
at com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java:155)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

結局のところ、
eclipse.iniのファイル修正により修正完了した!!


2013年10月4日金曜日

勉強の達成感が得られるボールペン『サラサスタディ』の売り文句が秀逸な件


以下引用。

ゼブラ株式会社(本社:東京都新宿区/代表取締役社長:石川 真一)は、インク残量がわかる目盛り付きで、勉強の達成感が得られるボールペン『サラサスタディ』を2013年10月12日(土)より全国の文具取扱店にて発売します。
『サラサスタディ』が学習に適した筆記具だというポイントは3つあります。
① 目盛り付きの中芯でインク量の減りを確認できるので、勉強量の見える化を実現。勉強量=どれだけ頑張ったか、が分かり、達成感を味わえて日々、継続できます。
② 消せないボールペンで書くことで、集中力がアップし、ミスを防ぎます。
③ 筆記の反復練習効果で、解答欄を素早く埋める力を日々、積み重ねることができます。
『サラサスタディ』で採用しているジェルインクは、さらさらとした書き心地で筆が進みやすく、また油性インクに較べると排出量が多いために減りが早いので、使用している実感が得やすくなっています。
また、インク色は基本色の黒に加え、学生の間で集中しやすい色として人気の青や、間違いを正解に変える意識付けのできる赤を揃え、学習意欲の向上をはかります。
大手学習塾であるW早稲田ゼミ、Z会、ベスト学院進学塾、寺子屋グループ、鷗州塾、北九州予備校、練成会グループといった学習のプロにお墨付きをいただいた商品です。

2013年8月24日土曜日

Androidアプリ開発再入門

1. 環境セットアップ
Android SDKとeclipseをインストールして設定
パスを通すなど

2. アプリのライフサイクル
onCreate, onStart等のアプリの挙動を把握

Log.vをつかってDDMSパースペクティブのLogCatビューに表示すると良い。
そのままだといろんなログが出てしまって見づらいので、
LogCatビューにあるプラスボタンを押下してフィルターを作成するとよい。

3. イベントプログラミング
まずは慣れるため、buttonクリック時にログ出してみる。
http://d.hatena.ne.jp/jitsu102/20110831/1314796481

どうやら4パターンの実装方法があるらしい。
自分としては2が一番好ましかった。
activity_main.xmlに追加したボタンに、onClickプロパティを追加するだけ。
関数名は自由で、追加した関数をjavaソース側で実装すればOK。
ちなみに1はクラス内に変数定義してるので、いっぱいオブジェクト出てきた時管理が面倒だなーっていう発想で却下。

4. ページ遷移
複数のアクティビティ遷移を実装する。
Intentクラスを利用して、
     Intent it = new Intent( いまのアクティビティ, 遷移先.class );
    this.startActivity(it);

って感じに実装すればOK。
ここまでくれば紙芝居レベルなら実装できる。

5. センサー機能の利用
SensorEventListenerのインタフェースを利用して加速度機能を利用。
加速度センサーを使ってこんな感じで実装。

    public void getAcc(View v){
    manager = (SensorManager)this.getSystemService(SENSOR_SERVICE);
    List<Sensor> sensors = manager.getSensorList(Sensor.TYPE_ACCELEROMETER);
    if(sensors.size() > 0){
    Sensor sensor = sensors.get(0);
    manager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_FASTEST);
    }    
    }


@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
String result = "";
if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
result =  "X: " + String.valueOf(event.values[0]) + "\n";
result += "Y: " + String.valueOf(event.values[1]) + "\n";
result += "Z: " + String.valueOf(event.values[2]) + "\n";
}
TextView text1;
text1 = (TextView) this.findViewById(R.id.textView1);
text1.setText(result);
    Log.v(TAG, "onSensorChanged: \n" + result);
}



6. Google Playに公開
Android toolをつかってapkファイルを作成
http://blackcapsule.blog107.fc2.com/blog-entry-15.html


2013年8月19日月曜日

ウェブサイト構築について再考したところ重要だと思ったことのまとめ


父の仕事の都合でウェブサイトをスクラッチから書くことになった。
制約としてはお金をびた一文も使わないこと。
当時の私は「HTMLなにそれおいしいの?」状態でした。

三段階で私の成長過程をまとめてみる。


1. HTMLとCSSで紙芝居

とりあえずググりまくる。
「HTML 入門」とか、「CSS 入門」とか。
dotinstallに出会えたのは嬉しかった。

とりあえずテキストエディタという原始的な手法でhtmlファイルやらcssファイルを作成してお勉強。
クソみたいなサイトを量産するのです。
結果、HTMLとCSSで紙芝居ができればおk。



2. エディタを見直す

少し経つと腹立ってきます。
テキストエディタがまじクソなので。
いちいちタグ名とか覚えてらんねーし
複数行を選択しつつTabキー押してインデントとかできねぇし。
ここでeclipseというものに出会う。
コードの予測とかしてくれてすご~く助かりました。
ただ一見よく見えたのですが実はクソでして、、、、
重たすぎるんです。。。
もっさりもっさり動くから自分の思考スピードももっさりしてきて。。。

最近見つけたのはsublime text2です。
これ、デフォルトだと日本語扱えないので、
UTF8をShift-JISに変更して云々っていうプラグインを入れると実用に堪えるようになります。
色付けがそのまんまできれいなのでマジおすすめ。


3. ウェブデザイン&マッシュアップ

今までゼロからスクラッチでコードを書いてきた人ならわかると思うけど、
毎回毎回コード書くのまじだりぃんだけどぉおおおおおおおって気持ちになります。

車輪の再発明という言葉があります。
賢い人なら自然と避けてるんでしょうね。

今まではとにかくどうやって実装するかを考えぬいてきた。
思考の始点がダサいんだよね。
本当に大切なのは最初っからどうやって楽するかを考えることだと思います。

楽するために脳味噌使うといろんなことが見えてきます。

例えばウェブデザイン。
ゼロから作るのだるいし、そもそも大したものにならない。
これが車輪の再発明。
そこでマシな方法としては「テンプレート」とかでググりまくること。
ある程度いいなーって思えるものがあればダウンロードしてコードを見る。
そのあと理解してパクる。
HTML, CSSレイヤーの知識なんてこんなもんで十分だと思われます。
素人レベルのサイト作る水準であれば。

コードの流用スキルとかは人のコード見て学んだ。
ナビゲーション部分をHTMLでハードコードして運用困難になった経験もあったなぁ。。
Javascriptのdocument.writeとかで無理やり吐き出させて複数HTMLで同じファイル呼び出すことで無理やり解決したりもした。


人の手を借りるという意味で、
マッシュアップという言葉もしっかり理解しておく。
Web API, カスタム検索などなどで人様が作ったコードを借りてくるわけです。
多分ここをパーペキ(パーフェクト完璧)に理解するともう最強。
ここからはPHPとかサーバーサイドJavaとかが必要になってくるのかな。

2013年7月24日水曜日

Rarejobがもたらしているポジティブな社会的影響について

Rarejobは世の中にとって凄くいいことをしている。
だれもが幸せになれるビジネスだと思う。

こう思うようになったのは今日の授業を受けてからだ。

最近は英会話にも慣れてきて、
講師の方と割とプライベートな話までするようになった。
仕事がどうだとか、将来どんなことを考えているとか。

よく授業してもらっている人は、すっごく人間性も良くて英語も喋れて、
将来は法律家になりたいので、いまはロースクールに通ってると話してくれる大学二年生。

なんで講師をやっているのかっていう話になったとき、
彼女は「Rarejobは退屈にならないためにやってる」って言ってたけど、よく聞いてみると違った。
本当は親にお金を借りることなく本を買うためにやってるとのことだった。

雇用機会が少なくて給料もそんなにもらえないフィリピンでは、
Rarejobの仕事は割がいいということだった。
それでも30分100円のビジネスだから一授業あたりのfeeは、
face to faceでやる日本の英会話教室に比べたら凄く安いはず。

授業を受ける側の自分としては、
かなり安い値段でしっかり英語を教えてもらえるので助かるし、
講師側からすると大学生をしながらも、
ウェブ経由でバイトできるから幸せなんだろう。

働く側、利用者側の双方のメリットがしっかり成り立ってる。
インターネットを利用した国際的な教育ビジネスに携わりたい気持ちになった!

2013年7月6日土曜日

Startup Engineering Lecture 4b: Linux Development Environment (Week 2/3)

Linux Development Environment

開発環境を整えようの巻。

リモートで複数タブを出力するために、
Githubからwgetでscreenファイルを取ってくる。
Ctrl + T, Ctrl + C : タブ作成
Ctrl + T, Ctrl + U : タブ移動


シェルスクリプトで一気に開発環境を整える
https://github.com/startup-class/setup/blob/master/setup.sh

ドットファイルもgithubにて公開されてる。
https://github.com/startup-class/dotfiles

リモートからでもcommitできるように、
リモート側で生成したrsaキーをgithub側に登録しておく必要あり。
登録したら、
git add hoge.txt
git commit -m "commit!!"
git push -u origin master

で、マスターのリポジトリにコミットできる。

Startup Engineering Lecture 4a: The Linux Command Line (Week 2/3)

CourseraのStartup Engineering、Lecture4が追加で公開されてるー!!
とのことで、聴講してみました。


今回はLinuxコマンドについてつらつらと説明してくれる感じ。
STDIN, STDOUT, STDERRの説明をグラフィカルに説明した後、
各種Linuxコマンドの解説に入る。

wgetとcurl

curlとかwgetとかしれっと使ってるけど、
知識皆無で挙動だけみてる私にとってそれらの違いが明確に見えて来なかった。
ぐぐってみるとこんな記事があった!

素晴らしくよく纏めてもらっていた。
wgetは再帰的な動作、拡張子を指定しつつダウンロードできる機能があり、
curlは多数のプロトコルに対応している点が違うとのこと。
なるほど。
後々見返してみると、
講義資料にも下記のような違いが説明されていた。
It doesn’t have the spidering/recursive properties that wget has, but it supports
6a much wider array of protocols. It is very commonly used as the building block for API calls.



その他コマンド

- rsync
講義資料には、"Transfer files between two machines."って書いてあった。
ローカルとリモートのファイル転送に使う感じね。

- コマンドライン上でのショートカットキーで使えそうなもの抜粋
Ctrl + A: コマンドラインの先頭に飛ぶ
Ctrl + E: コマンドラインの末尾に飛ぶ
Meta + F: カーソルを一単語分進める
Meta + F: カーソルを一単語分戻す

- backticks
`` ←これ使うと変数展開してくれるみたい。
キーボード的にはShift+@で出力されます。
(例)
 $ echo `date` | sed "s/2013/foo/g"
  foo年 7月 6日 土曜日 10:38:00 JST
- わかんなかったら調べろ
head --help
man head





Syntax Highlighterの導入

Bloggerにソースコードそのまんま貼ってると汚いし読みづらいことに気づく。
そういえばほかのウェブサイトとか、しれっと綺麗に整形されてる。。。。

色々ググったら

Syntax Highlighter

なるものがいいという記事を沢山見たので、
私も導入してみる。

仕組みとしてはBloggerのテンプレートHTMLに、
javascriptのライブラリをロードするコードを埋め込んで、
ソースコードをscriptタグ内部に記述すればいいだけ。

こちらに手順が載っていたので、
この通りにやってみました。

http://toldalie.blogspot.jp/2012/01/blogger_31.html

できた。。。

// サンプル
int main(void){
 return 0;
}

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とかよくいうけど、本当に関係者全員が幸せになれるアイディアって素晴らしいと思う。



2013年5月23日木曜日

インフォグラフィックスなるもの


技術的な議論をしていると、
話しの様子を可視化・絵にできる人がすげぇ優秀だということに気付いた。

図解することが重要だー!って叫ぶビジネス書とか腐るほどあるけど、
インフォグラフィックスってキーワードでざっと読書してみるといいかもしれないと思ったので、
色々検索。
visual thinking ってサイトが自分的にすっごくヒットしたので、
ネットサーフィンしました。
リンクだけ貼っておく。
完全に自分向け!



インフォグラフィック作成するために読む本 10冊




「たのしいインフォグラフィック入門」Amazon予約開始のご案内

因果関係を短絡に捉えるとアホにみえる。


自分が見た事象だけで時期尚早な判断してることないですか?
私はしょっちゅうです。

今日は面白い事例があったので紹介します。
昨日、あのMicrosoft先生がXbox oneなる新製品を発表しました。


こんなやつ↓


あんまりコンセプトとか驚きは見えなかった。
Aさんから見ても同じように写ったみたいです。
Aさんは自称スマートビジネスマン。
ロジカルとか、マネージメントとか、カタカナの賢そうに聞こえる言葉を並べる先輩なんです。
そいつが実際賢いかどうかは別にして、今日はこんなこと言ってました。

「MSさんの新製品大したことないからソニーの株価バク上げしてますよ!!」

ですって。
彼らにとって興味深いことといえば、
投資(主に表面的な株価の上げ下げ+為替)、ゲーム産業。
MSの製品は確かにそんなに良さが見えなかったんだけど、
そこからソニーの株価バク上げを導き出しちゃう俺すげぇ。
って感じ。
結果からそれっぽく理由を並べるのって無責任に誰でもできる行為なんだけど、
それが筋が通ってるかどうかは別の問題。

一因にはなるかもしれないけど、
「赤字気味のゲーム事業の分離を考えてるんじゃないか?」っていう憶測が広まったことのほうが
要因としては大きいんじゃないかなーと漠然と思った。

見たことだけから判断することもできるけど、
調べられる範囲でもう少し深い考察をしてから断定的な発言をした方がいい。
良い事例でした、勉強になった。

2013年5月22日水曜日

Qualcomm iZatのモバイル位置推定技術が凄い件

Qualcommの技術が凄い件!!
ということでこちらを御覧ください(英語だけど)







要するに、
屋内に設置された複数の無線APからとれる情報から
モバイル端末の位置を数m以内の誤差で推定する技術なんです。
既存GPSの「数百m半径内に多分いるんじゃない?」っていうクソみたいなレベルとは大違い。
事前にAPの位置は登録する必要があったり、
得られたデータがQualcommのサーバーに送られるなどのリスクはあるものの、
屋内のどのへんにいるかが数m程度の誤差で推定できるとのことです!

こんな経験ありませんか?
「新宿駅南口どこだ?あ、ここ行き止まりかぁ。。。あー待ち合わせ遅れたわ・・」みたいな。
大都会の複雑な駅に行くと行きたいところに行くのにすご~く時間かかりますよね。

最近よく見ますよ。
リクルートスーツに見を包んでスマートフォン片手に道に迷っている人。
道に迷うとともに人生にも迷ってるんじゃないかと思うくらい不安な顔で。

自身の経験とこういう人見てると、スマートフォンのGPS程度では不十分ってことです。
モバイル端末を持った位置推定が求めることは、
数km半径でこのへんにいるのかーっていう大雑把な位置推定ではなく、
数mレベルで、この店舗の真ん前にいるのか、
じゃぁ目的地は逆だな。
みたいなレベルまで精度を上げなきゃいけないんです。

技術的に今どういう状況かというと、
IEEE802.11uのワーキンググループが関連する規格を決めてる段階で、
上述した話が実現するのはまだまだ未来のことです。
でも、この技術が普及してくれれば人が道に迷うことがなくなるんじゃないでしょうか。


・・・それだけではないと思うんです。
この技術が実現した場合の未来を妄想してみる。


・黎明期は、各社がプレゼンスを上げるために公共施設等に赤字覚悟でぶっ込んでく。大企業に対して売り込む・競合他社を駆逐するには口だけ野郎よりも何よりも「確固たる実例」が最高の説得力になるからだ。

・ Qualcommみたいな技術を持った会社は、不動産ディベロッパーに技術を売りに行く。
当該技術導入による「資産価値の向上」を唄って。

・副産物として、広告プラットフォームのインフラになる。携帯端末からよりローカライズされた広告を打てるようになる。モバイルユーザーのウェブ上での行動履歴はもちろんのこと、「こんなヤツが、こんな時間に、このタイミングでここにいるってことは、こんなのが欲しいんでしょ?」みたい広告の打ち方になる。

・foursquareやらO2Oと呼ばれるようなアプリで生きてる会社は再編されていく。早くキャッチアップして大きいウェブ系起業にバイアウト。これが将来の成功例になりそう。


[資料]


- IEEE802.11u無線ローミング標準化の動向 : https://upki-portal.nii.ac.jp/docs/files/[5]ITRC-20061005.pdf

- Qualcomm IZat http://www.qca.qualcomm.com/technology/brand.php?brand=9

2013年5月21日火曜日

パスタソースの話



つけパスタって知ってます?
つけ麺のタレをパスタソースに、
つけ麺をパスタに置き換えただけのやつ。




転用がNewnessを生むいい例かもしれません(棒)
つけパスタとかどうでもいいから、
むしろ面の一本一本を風車みたいな形にして、
茹で上がりやすくしたって言う点をゴリ押ししてくれれば買うんだけどなー。

パスタ茹でる時間超長いし、
食べるの一瞬だから一人暮らしの私としては、
すんごくめんどくさい

もう食べるの面倒なくらいに!!

だけど保存力半端無いからついつい買いだめしてしまうんよなぁ。



とりあえず日清さん、
湯で時間の短さを売りにした麺を製造していただきたい。
形状を攻めればある程度はいけると思われる。

2013年5月20日月曜日

ウェアラブルカメラがバカ売れ

ウェアラブルカメラでyoutube等のストリーミングサービスにアップロードするひとが増えているらしい!
ウェアラブルカメラはテレ朝のアメトーーク!でも紹介されててました。
体に装着できるくらい小さくて耐水性もあって便利そう。
小さいし視点が一人称の景色になるからNewnessも担保できる!
ウェアラブルカメラで売れているのはGoPro






GoPro部なるものもできていて市橋博明さんが発起人。

また、GoPro + Facebook/ Youtubeとの相性は抜群。
Facebookページに実際のユーザーの動画を載せることでさらなる販促につながっているもよう。
タジマモーターコーポレーションさんではスポーツカーに車載カメラで使っているようです。
迫力ある映像が取れそう。例えばこんなの


今までスマホとかで一つのデバイスがすべてのものを集約する方向に進んできた。
これからは集中から分散へ。
口元にマイク、目元にウェアラブルカメラみたいな感じで。
そこからクラウドに飛ばしてライフログを取る。
こんな将来の使い方が想像できそう。

2013年5月18日土曜日

関西ソーシャルゲーム勉強会メモ


* 乙女ゲーム ======================

[文化]
プラットフォーマーのガイドラインに従いギリギリを攻める

[技術]
Amazon AWS(EC2, RDS, S3)
- scala, mysql
- FlashからHTML5へ
- HTML + Javascriptで画像合成し,シナリオ再生している

[push通信にご用心]
- 一斉送信だとユーザーが同時アクセスしサーバーの負荷が高くなる
- 順番に時間をずらして送信


* ビジネスインテリジェンス@ Klab ======================

KPIを見るためのウェブサイト
KPIの速報値
Pythonで実装: 可読性・保守性・ライブラリが豊富
Rは部分的に活用;速度の観点で使いものにならない?

- AWSを使用
- 競争激化/市場の成熟により広告マーケティングの手段が増えてきた.
 => 効果測定が求められる


* 直置きアプリのマーケティング施策 @ ダンクハーツ ======================

- Google Play & iOSのマーケット上位を狙う
=> コーポレートサイトから直パスでインストールしてもらう方法だとランキングに依存しない気が

- ファミ通・アップバンクに乗せてもらう
=> blog等で記事を書いてもらえる副次的効果もある

- 白ロム販売会社にプリインストールしてもらう
=> GooglePlayのランキングに反映されない


* 世界市場で勝つその為にDeNAが行なっていること ======================
川上睦夫

- 農園ホッコリーナのプランナー
- 海外でのMobageの状況
- personalized
- 大量のサービスとユーザー・ネットワーク
=>   ユーザーを知る・スピードアップ

- DeNAが行なっていること
  開発体制:ジャッジは現場・少人数・少ない階層構造
  -- ゲームデザイン:分かりやすさ・事象の分かりやすさ・課金ポイントは1つ
  -- イベントによりユーザーの離脱ポイントをなくす
    期間限定ダンジョン,プレイヤー同士の戦い=> 相手が人だと燃える
    ランキング機能
      細かく分けてグループ分け,境目のユーザーの稼働率が上がる
    ヘビーユーザーとライトユーザーの共存

[まとめ]
ユーザーを知り,
スピード早く開発し,
現場でジャッジ&PDCAを回す.
わかりやすく面白くこだわりのあるものを提供
毎回参加したくなるイベントを開催


http://connpass.com/event/1965/

パズドラにハマる

パズドラが面白い。
私の理解では、

パズドラ = ドラクエ + ぷよぷよ + ポケモン

既存のものを組み合わせて新規性を創る点に加え、
中毒性の高い独自のパズルができている。

ドラクエ要素としては、
手持ちのモンスターを使ってダンジョンをクリアするオーソドックスなゲーム。
プレイヤー自身にもランクがあって、
それに応じて強いモンスターを扱えるようになる。
強化合成や進化合成でモンスターを強くさせたりレアカードに進化させることもできる。

ぷよぷよ要素としては、
単純なアルゴリズムで実装されたパズルにある。
赤緑黄などの色がついたパズルのコマ(キャンディというらしい)をくるくる回して、
3つ以上並べると、その色属性を持ったモンスターが的に攻撃できるというシステム。
当然、キャンディが揃うと消えて、また上からキャンディが補充される。
中毒性を上げる要素としては、
連鎖要素も当然実装されている。
連鎖の仕方のノウハウもありこれが中毒性を上げている。
単純さと爽快感、そして奥深さが入り交じっていて、
個人的にはテトリス・ぷよぷよのような今後のスタンダードになるパズルだと捉えている。

ポケモン要素としては
属性があるということ、
ダンジョンでモンスターを仲間にできるということ。





最後に気付いたのはソーシャルなめられないなってこと。
3G回線につながっているからこそ
簡単なネットワークアップデートができたり、
クラウド側にデータを同期したりするのが簡単で、
ユーザーの一挙手一投足がデータ化できる。
またフレンドとしてユーザー同士をくっつけることで、
ゲームを楽しく、やめにくく、そして宣伝効果も狙っている。

デバイスが変わればやり方も変わるいい例だと思えた。
モバイルでネットワークにつながっていることが前提という状況が、
できることをものすごく増やしていて、
かなりの強みであるように思う。

スマホのGPUが進化していけば、
「スマホでゲーム」という市場が拡大していくことは火を見るより明らかだろう。

2013年3月28日木曜日

pythonスクリプトでtweetする簡単なサンプルを3分で実装する

cygwinコンソールからtweetするサンプルスクリプトの実装をしてみる。


まずはtwitter developersサイトに行きます。

1. Applicationを新規作成
2. OAuth settingsでAccess levelを [Read and Write] にする
3. 以下4つの情報を参照
CONSUMER_KEY    
CONSUMER_SECRET
ACCESS_KEY      
ACCESS_SECRET



# -*- coding: utf-8 -*-

#!/usr/bin/env python
import sys
import tweepy

CONSUMER_KEY    = '**************'
CONSUMER_SECRET = '**************'
ACCESS_KEY      = '**************'
ACCESS_SECRET   = '**************'

mypost = sys.stdin.readline().strip()
if 0==len(mypost):
    exit()


auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)
api.update_status(mypost)




実行時に以下のように怒られたら2をチェック。
”tweepy.error.TweepError: Invalid / expired Token”



事業提案よりもやってからの事後提案がセンスいい

「こんなのやったらどうですか?」
っていう事業案を投げた。
今の時代、平社員1年目の私でも部長に意見ができる。
そう、メールならね。


1年目だし「うざってぇメール投げてんじゃねぇよ氏ね」って言われるの覚悟で投げたった。
何も知らん部長だから、
背景、問題点、改善策といった段落分けで、
「ロジカルかつ簡潔に」
を目標に文章化した。
相手が偉い人だし、長い話をじっくり読むのが想定しづらいのでね。




これが意外と部内の審査をあっさり通り抜けたんです、しかも2日で。
うちの会社、一応大企業なんだけどかなりフラットで、
二段階くらい上にあがるともう社長にぶち当たれる良い組織なのです。


あとこの組織、かなりアイディアで動いてるわけです。
論理よりも感性だとか新しいとかが尊重される世界なのです。
そーゆーのやりたい人は腐るほどいて、
そこで戦うよりも、もっと業務改善とかに目を向けて、
改善できる点をロジカルに詰める方が戦略上賢いし自分の価値が出せるはずと思ってる。
そこで思い立った今回の提案。



1年目のアイディアを直近の先輩に投げてもないがしろにされて無いもの扱いになるだろうから、
どうせならやけくそになって、いきなり偉い人に投げてみたのが功を奏したようです。

部長に直接事前説明の根回しをしたのと、
部長宛にメール投げて、併せて先輩に投げるというプロセスを取ったので、
上に展開せざるを得なかったのでしょうね。

他部署の室長まで話が流れている今の状況。
頑張るしかないわけです。




でもここでふと思う。
口先だけでいいのかと。
にでるだけでいいのかと。



「お前エンジニアだろ?」
「プランナーじゃないだろ?」
やっぱり自分である程度創りあげてから投げるべきだった。

「こんなの作ってて、すげぇ良い評判もらってるんすよ~」

って言ったほうが、現実味あるし「俺がやる」っていう本気度も伝えられる。
これからは事後提案にしようと思いました。
ていうか今の提案を水面下で一刻も早く実装しなきゃいけないんじゃないだろうか。
頑張ろう、やっぱうんこだわ俺。

2013年3月24日日曜日

PythonでWebページを取得しURLの抽出する

利用ツール&モジュール
- Python2.6以上
- HTMLParser
- urllib2,urllib

試しに当ブログのトップページに含まれるリンクを抽出するスクリプトを作成しました。



# -*- coding: utf-8 -*-

# http://ymotongpoo.hatenablog.com/entry/20081211/1228985067
# http://nihitok.blogspot.jp/2011/07/pythonhtml.html

# Modules ------------------------
from HTMLParser import HTMLParser
import urllib, urllib2
import fnmatch

# Classes ------------------------
class My_parser(HTMLParser):
    
    # My_parserインスタンスが生成された際に呼び出されるコンストラクタ 
    def __init__(self):
        HTMLParser.__init__(self)
        self.is_data = False
        self.href    = None
        self.val     = None
        self.data    = []
    
    # 開始タグにぶつかったらhandle_starttag()を呼ぶ
    def handle_starttag(self,tagname,attribute):
        if tagname.lower() == "a":
            for i in attribute:
             if i[0].lower() == "href" and fnmatch.fnmatch(i[1], "http*"):
              self.is_data = True
              self.href    = i[1]

    # 終了タグにぶつかったらhandle_endtag()を呼ぶ                
    def handle_endtag(self,tag):
        if tag.lower() == "a":
            self.is_data = False
            self.data.append({
                "url":self.href,
                "val":self.val
                })
            self.href = None
            self.val = None

    # タグで挟まれてる中身はhandle_data()で処理
    def handle_data(self,data):
     if self.is_data:
      self.val = data

# Function -----------------------------
def main(html):
    parser = My_parser()
    parser.feed(html)
    return parser.data


# Parameters ----------------------------

# Proxy経由でアクセス
proxy_support = urllib2.ProxyHandler({'http': '195.140.190.146:8080'})
opener        = urllib2.build_opener(proxy_support)
urllib2.install_opener(opener)


url = 'http://shiroibanana.blogspot.jp/'
r   = urllib2.urlopen(url) # get webpage

headers    = r.info()    # ヘッダ情報を取得
data       = r.read()    # HTMLファイルの取得
parsedData = main(data)  # パース

# 表示
for i in range(0, len(parsedData)):
    t = parsedData[i]
    if t["url"] != None:
     print t["url"], t["val"]

f = open("out.html", "w")
f.write(data)
f.close()





実行結果はこんな感じで、URLとリンクされてる文字列のペアを抽出してます。



$ python spider.py
http://shiroibanana.blogspot.jp/2013/03/blog-post_23.html 家電芸人で紹介された最高な家電まとめ
http://www.raycop.jp/products/smart.html raycop のSMART
http://www.raycop.jp/products/img/p_smart_white.jpg None
http://www.sharp.co.jp/cocorobo/ COCOROBO
http://www.sharp.co.jp/cocorobo/cms/images/btn_lineup_v80.jpg None
http://www.sony.jp/handycam/products/HDR-PJ790V/ SONY HDR PJ-790v
http://www.sony.jp/products/picture/large/hdr-pj790v_open.jpg None
http://www.popphoto.com/gear/2012/10/new-gear-gopro-hero3-black-edition-captures-4k-video GoPro HERO3
http://www.popphoto.com/files/imagecache/article_main_photo/_images/201210/c10.18goproevent01.jpg None
http://netafull.net/ipad-app/042900.html DynaMapper
http://www.blogger.com/post-edit.g?blogID=4715403609105568520&postID=3622915893062832885&from=pencil

http://shiroibanana.blogspot.jp/2013/03/recruit-card.html これからはRecruit Card?
http://markezine.jp/article/detail/17450 を展開
http://www.blogger.com/post-edit.g?blogID=4715403609105568520&postID=1195829771076099757&from=pencil

http://shiroibanana.blogspot.jp/2013/03/1python.html 1分でPythonでスクレイピングツールを作る
http://www.gesource.jp/programming/python/code/0013.html sqlite3
http://www.kdl.co.jp/open/2011/04/21/python/ pythonでスクレイピングツールつくろうぜ
http://www.blogger.com/post-edit.g?blogID=4715403609105568520&postID=1367463051003792010&from=pencil

http://shiroibanana.blogspot.jp/2013/03/blog-post_6.html つけまつげ
http://www.blogger.com/post-edit.g?blogID=4715403609105568520&postID=8999922777856394962&from=pencil

http://shiroibanana.blogspot.jp/2013/03/sdk.html SDK開発者として
http://www.blogger.com/post-edit.g?blogID=4715403609105568520&postID=7481504868617649295&from=pencil

http://shiroibanana.blogspot.jp/2013/03/blog-post.html アメリカ出張
http://www.blogger.com/post-edit.g?blogID=4715403609105568520&postID=9018148613665132091&from=pencil

http://shiroibanana.blogspot.jp/2013/02/blog-post.html ライブラリの設計思想
http://www.blogger.com/post-edit.g?blogID=4715403609105568520&postID=3141501431117496890&from=pencil

http://shiroibanana.blogspot.jp/search?updated-max=2013-02-19T00:24:00%2B09:00&max-results=7 前の投稿
http://shiroibanana.blogspot.jp/ ホーム
http://shiroibanana.blogspot.com/feeds/posts/default 投稿 (Atom)
http://shiroibanana.blogspot.jp/2012/10/nexus7_4.html

http://shiroibanana.blogspot.jp/2012/10/nexus7_4.html 俺はなる
http://shiroibanana.blogspot.jp/2012/05/blog-post.html 構文エラー : ';' が '型' の前にありません
http://shiroibanana.blogspot.jp/2012/02/c.html

http://shiroibanana.blogspot.jp/2012/02/c.html C++プログラミング入門(1) // 倉庫番プログラムの実装
http://shiroibanana.blogspot.jp/2012/05/blog-post_13.html 内向的で無口な人向けの会話術
http://shiroibanana.blogspot.jp/2012/01/dvd.html の技術 (DVDまとめ)
http://shiroibanana.blogspot.jp/2012/06/python.html Pythonによるソーシャルデータ分析入門
http://shiroibanana.blogspot.jp/2012/01/ivs-2011.html IVS 2011
http://shiroibanana.blogspot.jp/2012/09/callback.html Callback関数を知らん人がまず理解すべきことのまとめ
http://shiroibanana.blogspot.jp/2012/02/blog-post.html 集合知プログラミング
http://shiroibanana.blogspot.jp/2012/03/google-app-engine-for-java-1.html Google App Engine for Java (1)
http://shiroibanana.blogspot.jp/search/label/C%2B%2B C++
http://shiroibanana.blogspot.jp/search/label/Web Web
http://shiroibanana.blogspot.jp/search/label/%E6%9B%B8%E7%B1%8D 書籍
http://shiroibanana.blogspot.jp/search/label/DVD DVD
http://shiroibanana.blogspot.jp/search/label/%E3%82%A8%E3%83%B3%E3%82%BF%E3%83%A1 エンタメ
http://shiroibanana.blogspot.jp/search/label/%E6%9C%AC 本
http://shiroibanana.blogspot.jp/search/label/%E8%AC%9B%E6%BC%94 講演
http://shiroibanana.blogspot.jp/search/label/%E9%80%9A%E4%BF%A1 通信
http://www.blogger.com/profile/04178558922499888726
shiroibanana

http://www.blogger.com/profile/04178558922499888726 詳細プロフィールを表示
http://shiroibanana.blogspot.jp/search?updated-min=2013-01-01T00:00:00%2B09:00&updated-max=2014-01-01T00:00:00%2B09:00&max-results=10 2013
http://shiroibanana.blogspot.jp/2013_03_01_archive.html 3月
http://shiroibanana.blogspot.jp/2013/03/blog-post_23.html 家電芸人で紹介された最高な家電まとめ
http://shiroibanana.blogspot.jp/2013/03/recruit-card.html これからはRecruit Card?
http://shiroibanana.blogspot.jp/2013/03/1python.html 1分でPythonでスクレイピングツールを作る
http://shiroibanana.blogspot.jp/2013/03/blog-post_6.html つけまつげ
http://shiroibanana.blogspot.jp/2013/03/sdk.html SDK開発者として
http://shiroibanana.blogspot.jp/2013/03/blog-post.html アメリカ出張
http://shiroibanana.blogspot.jp/2013_02_01_archive.html 2月
http://shiroibanana.blogspot.jp/2013_01_01_archive.html 1月
http://shiroibanana.blogspot.jp/search?updated-min=2012-01-01T00:00:00%2B09:00&updated-max=2013-01-01T00:00:00%2B09:00&max-results=44 2012
http://shiroibanana.blogspot.jp/2012_10_01_archive.html 10月
http://shiroibanana.blogspot.jp/2012_09_01_archive.html 9月
http://shiroibanana.blogspot.jp/2012_08_01_archive.html 8月
http://shiroibanana.blogspot.jp/2012_07_01_archive.html 7月
http://shiroibanana.blogspot.jp/2012_06_01_archive.html 6月
http://shiroibanana.blogspot.jp/2012_05_01_archive.html 5月
http://shiroibanana.blogspot.jp/2012_04_01_archive.html 4月
http://shiroibanana.blogspot.jp/2012_03_01_archive.html 3月
http://shiroibanana.blogspot.jp/2012_02_01_archive.html 2月
http://shiroibanana.blogspot.jp/2012_01_01_archive.html 1月
http://www.blogger.com Blogger

2013年3月23日土曜日

家電芸人で紹介された最高な家電まとめ

テレビ朝日でやってた

アメトーーク今こそ!!家電芸人2013春スペシャル(3月22日金曜日放送)

非常に楽しく見させてもらいました!
その中ですっげーなーって思った製品を紹介。


ふとん専用クリーナー raycop のSMART


掃除機って括りから飛び出して、
「布団専用」というカテゴリー付けはブルーオーシャンだと思うし、
それ専用に機能を特化してるので先行利益を得てるんじゃないですかね!


喋る自動掃除機 SHARP 「COCOROBO」


こっちは喋る自動掃除機。
iROBOTのルンバの二番煎じにしか見えない。。
「喋る機能」がついてるとかいってバッテリーが少なくなったら関西弁で喋るとかそーゆーレベル。
センサーで状態をチェックして予め用意された音声ファイル流すってレベルなのかな。
既に先行者がいる市場にわざわざ製品出すんだけど、
特に消費者に対して魅力的ではない機能をつけてる。
さらにはプラズマクラスター。。。
足し算の論理って日本メーカーの十八番ですよね。
これ売れてるんだろうか。。


究極の手ぶれ補正ビデオカメラ、SONY HDR PJ-790v


これはまじで欲しいと思った!
手ぶれ補正もすごいんだけど、
取った動画をそのまま付属のプロジェクターで投影して、
周りの人と鑑賞できちゃうスグレモノ!
カカクコムで11万くらいで買えちゃいます!

超小型ビデオカメラ! GoPro 「GoPro HERO3」


ここまで小さかったらいろいろカジュアルな使い方ができそう。
でも将来的には、スマホに組み込まれるレベルの機能になっていく気も。

プロジェクションマッピングiPadアプリ「DynaMapper


いまや東京駅とかのイベントですっかり馴染みのワードになってるプロジェクションマッピング。
これはプロジェクションマッピングがiPadだけでできてしまうアプリです。
これはすっげーと思った!
自分の部屋に合わせて画像の位置を設定する機能がありましたー
たった450円です。





2013年3月22日金曜日

楽天カードよさようなら、これからはRecruit Card?

MarkeZine: リクルート、業界最高水準のポイント付与率のカード「Recruit Card」を展開


楽天カード今まで使ってた。
100円で1ポイント。ポイントは楽天市場とかで使えるよ!
ってルールが単純だったし、edyも使えたので。
ポイント溜まったら楽天市場とかで買い物してる。
カード決済時の1ポイントと、楽天市場のポイントが1ポイントで
100円で2ポイントつくし。

5月30日からRecruitCardが出るようですね。
こっちは年会費無料で100円で1.2ポイントRecruit Card。
RecruitCardPlusは年2100円で100円で2ポイント貰える仕組み。
なんか良さげに聞こえるじゃん。

でも待て待て。
ポイントはリクルートのサービスで使える模様。
リクルートにはECのショッピングモールが無いからあんま使えねー。
還元率はちょっとだけマシだけどぶっちゃけ微妙。
あとEdyも使えないだろーなー。
うーん、、、まだ楽天カードが安定かなー。

2013年3月21日木曜日

1分でPythonでスクレイピングツールを作る

# -*- coding: utf-8 -*-

import urllib

#proxies={'http': 'http://192.168.0.1:8080'}
url = "http://www.goldmansachs.com/"
#filehandle = urllib.urlopen(url, proxies=proxies)
filehandle = urllib.urlopen(url)
data = filehandle.read()
print data


まずはコード!
urllibをインポートしてurlopenするだけ。
コメントアウトしてる部分はプロキシ経由でアクセスするときに使います。
これでGoldman Sachsのサイトをぶっこ抜けました。

将来的にはタグ解析の後、データベース化つくってC++で解析とかしようかなと!
スクリプト使って各サイトにアクセスするわけだけど、
データぶっこ抜くためにサーバー立てて自動化できたら素晴らしいなぁ。
分散処理とかできたらなー。

<a href ***ってところをぶっこぬいてグラフネットワーク的に解析したら
人気サイトとかわかるよね。
こーゆーのがGoogle先生のやってることなのでしょうか。
めっちゃ興味ある。。。

今興味持ってるのは
pythonに通常装備されてるsqlite3と、
pythonでスクレイピングツールつくろうぜってサイトで言及されてるBeautifulSoupです。

2013年3月6日水曜日

つけまつげ

本名:きゃろらいんちゃろんぷろっぷきゃりーぱみゅぱみゅ
(Caroline Charonplop Kyarypamyupamyu)


きゃりーぱみゅぱみゅにハマっている。
かわいい+グロい+不思議な世界がこの世でOnly Oneだと思うので好き。


つけまつげの歌詞に、
「同じ空がどう見えるかは心の角度次第だから。」
というフレーズがある。
なんか心の持ちようで、
明るくも暗くもなる人生。
どうせなら明るく行きたいよねっていうのを、
ポップな曲調から感じ取った。





ぱみゅぱみゅらしく「Only Oneなこと」を目指そうと思った。
昔からなんか似通ったものがあるものに興味が無い。
何かの真似とか既存のもののパクリとか。
それが仕事だったりすると嫌になるだろうな。
自分がやるべきことなのかなとか思っちゃう。





支離滅裂ですね、おしまい。

2013年3月3日日曜日

SDK開発者として

GoogleMapsのリファレンスが素晴らしい。
https://developers.google.com/maps/documentation/javascript/?hl=ja

文章でダラダラ書くのではなく、
まず最優先でコードありきで、少しの補足がおまけ程度に付けてまとめてある。
言葉がたくさん必要なSDKってそもそも設計が良くないわけで、
SDK提供者側は、コード見たら一発で分るレベルのAPIを用意すべき。
その点でGoogleMapsAPIは洗練されてる。
世界中のアプリ開発者の人の目に晒されてるからかも。
あと、リファレンス内のコードが見やすく整形されてるってのも良い。
細かいことだけどアプリ開発者から見た時の印象が違う。


現状、HTML,CSS,Javascript関連に疎いエンジニアが、
副産物としてドキュメンテーションしてるんだけど、
この環境は非常に良くない。
ドキュメンテーションに対する意識を高めて、
もっとフレームワークを洗練させて、
SDKを使う人の立場にたった洗練されたものを提供すべきだと思った。
さすがにsdkのデモとかはしっかり作ってるけど、
リファレンスではHTMLコードベタ張りとかが横行してる世界、ヨクナイ。
改善しよう!

アメリカ出張

新卒1年目にしてアメリカ出張の機会があった。
ディベロッパーとして一つのプロジェクトのプログラマとして働いてきた。
カナダ人、メキシコ人、インド人、アメリカ人といった多国籍メンバー。
向こうのエンジニアが素晴らしいと思った点をまとめる。

■Whyを突き詰める
ある設計を提案するとして、
確実に「なぜそうなんだ」という問いを、
明らかに真というレベルまで掘り下げて質問してくる。
設計に関する技術要素や背景を構造化して整理することで、
全く知らないことであっても同じレベルで議論できるようになる。

■Debateする
納得行かないことはひたすら意見をぶつける。
日本人的などっちかが折れる「意見のすり合わせ」ではなく、
おもいっきりぶつけて、その結果秀でた意見が採用される。
喧嘩に近いレベルで白熱するが終わったあとは仲良くランチする。
自他共に成長するので凄くいいカルチャー。

■最高を求める
複数解があったとき、
時間的制約は度外視で技術的に最高のものを採用する。
間に合わせられないのはエンジニアの責任って感じで。
特にソフトウェアの場合はじめの設計が将来のメンテナンスコストを左右するのもあるので、
遠い先の将来も見据える必要がある。


自分に足りていないものも同時に見えてきたのでまとめる。

■技術を教えてもらう
自分で学ぶ部分は最低限やった上で、
高度なこと・実践でしか学べないことは積極的に教わる。


■ オンタイムで問答ができるようにする
step1. 相手が喋ったことを理解すること
step2. 聴解力
step3. 文章構成力


2013年2月19日火曜日

ライブラリの設計思想


ライブラリの設計思想をまとめた資料は、
後世の保守・開発プログラマにとってとても有益になるので、
極力実装者が残しておくべき。

「このAPIはこういった処理をするものだ」という規定があれば、
新たなフィーチャーを実装するにあたり、
複数の実装方法が考えられるときは、
まず回帰すべきは設計思想だと強く思う。

今携わっている仕事はこういったものが皆無であり、
実装者も退職or他部署で働いてたりする。
ソースコードを熟読して感じ取ること、
コミットログから何らかの思想を感じ取ることで、
最適な実装方法を見つけようと努力している。



加えて、
ライブラリの初期の開発者は、
拡張性しやすいソースコードにすべきである。
複数のデバイスを同時にハンドリングするデバイスドライバ等を書くにあたっては、
決め打ちでデバイスタイプをハードコーディングすることは避けたい。
IS_SAMPLE_DEVICE( devType )のようなマクロを用意し、
マクロに追記するだけで拡張できるような仕様にすべきだ。

将来を見通してSDK、ライブラリを用意することは、
熟練した、経験豊富なエンジニアにならできることだと思う。
私のようなへっぽこエンジニアがそういった達人プログラマーに近づくにはどうしたら良いんだろう。





2013年1月8日火曜日

開発者である前にユーザーであれ。



今日は必死こいてある機能を実装しようと、
すごく間違った方向に頭を使った。

「機能を実装しろ」という司令に対し、
そのまま実装するだけの人は単なるコーダー。
淘汰されるに違いない。
今日の俺はまさにコーダー。

機能実装云々以前に、
この機能はOS側で提供すべきなのか、
アプリ側でAPIを呼んでもらうことで実装すべき機能なのか。

と同時に実際にユーザーがどうその機能を使うのか?

一歩立ち止まってそういったことを考える必要が有ることを知った。
考えてみるとシステム側で提供すべき機能ではなく、
アプリ開発者が実装すべき機能だったなんてオチ。

OS側の人間がサポートすべきことは、
どんなアプリでも共通な処理をAPIで、
使いやすい形で柔軟にカスタマイズできるような形態で提供すること。

ちょっと学んだな。

2013年1月4日金曜日

ネットワークエンジニアとして学ぶべき要素


会社が自分に求めているものって何だろう.

おそらくそれはネットワーク技術のプロフェッショナルとして,
無線関連の開発業務に従事すること.
また,米国の開発部隊との連携を円滑にするために,
ときには現地に出向き直接やり取りする必要もあると思う.

上記業務を遂行するにあたり必要な要素と,
現状の自分との差分をとり,
足りていないものをリストアップし,
その差分が最小になるような戦略を練ることにする.

考えられるものは以下のものである.
1. Wifi(TCP/IP)      : 俗にいうインターネット接続
2. Bluetooth           : ワイヤレスコントローラの入力
3. プログラミング    : 見通しの良い効率的な実装 ( C/C++, Python, Shell )
4. Fandamental      : エディタ(Emacs, Eclipse), 英語, ハードウェア(電気電子的な内容)
5. 経営的判断          : VA案件会議等でのアイディア出し

1-3は開発資料の読み込みや実際の仕事で学習する.
教材としては,

- マスタリングTCP/IP 入門編 第5版
Bluetooth技術解説ガイド
C++のためのAPIデザイン
- 新版 明解C++


4-5は意識的にやって行かないと身につかない.
エディタは常にEmacsを使う勢いで,自宅ではCocoaEmacs,会社ではNTEmacs.
英語は従来通りRarejob使う.また,ことあるごとに積極的に米国の開発部隊にコンタクトをとる.

ハードウェア的な知識は,どういった部分が必要かが不明確であるため,
問題に出くわした時に調べるスタンスで学習する.
経営関連は,業界のこと,技術のことを浅く広く知るようにする.
技術については自分の業務範囲的に狭く深くなりがちなので幅広いことに興味をもつこと.
現状では,スマートフォン周りのグラフィクス(OpenGL等)をGPUと絡めて知識を得ていきたい.

最後に,日々の習慣としてやって行きたいことのリストを書く.
- Rarejob    : 25分
- Blog更新   : 学んだことのアウトプット,一日考えたこと
- 技術書       : 一日10ページ


2013年1月1日火曜日

シェルスクリプト学習帳


MacBookAirのターミナルで複数ターミナルシェルを立ち上げる.
emacsでソースを書いて,もう一つのシェルで実行する仕組み
command+"}"でウィンドウの切り替え
変数,if,case,forの文法事項のおさらい.

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
ソースコード:

#!/bin/sh

echo "veriables ------------------"
PARA1="sample1"    # no space should be inserted around "="
PARA2=sample
echo ${PARA1}
echo ${PARA2}
echo $$            # process ID
echo $@            # list of all the arguments
echo "arg1 = $1"   # designated argumment

echo "if ---------------------------"
if [ $1 -gt $2 ]
then
    echo "$1 is grater than $2"
elif [ $1 -eq $2 ]
then
    echo "$1 is equal to $2"
else
    echo "$1 is smaller than $2"
fi

echo "case --------------------------"
case "$1" in
    "1") echo "$1 is one";;
    *)   echo "default";;
esac

echo "for ---------------------------"
for arg in $@
do
    echo "arg is ${arg}"
done

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

実行結果:
$ ./sample.sh 1 2 3 
veriables ------------------
sample1
sample
453
1 2 3
arg1 = 1
if ---------------------------
1 is smaller than 2
case --------------------------
1 is one
for ---------------------------
arg is 1
arg is 2
arg is 3