Cylonが熱い

node.jsで作成されたロボット用のフレームワークCylon」。よくできてるなぁ。ちょっと使ってみる。
node.jsでロボット、ドローン、ガジェットが簡単に制御できる。よくできているなぁ。マルチのデバイスに対応できるように作られているので、拡張性がかなり高い。ライセンスがAPL2.0というのが面倒(知財放棄の点)だが、まぁ、よしとしよう。

githubに移動して、ソースを読みあさる。面白そうなところをピックアップ。


■マルチボット対応

skynetのサンプルから

Cylonは複数のロボットインスタンスを埋め込めるわけね。

Cylon.robot(skynetBot0);
Cylon.robot(skynetBot1);

■LeapMotion対応

cattoyのサンプルから。

皆、LeapMotion好きだなぁ。

connections: [
{ name: 'leapmotion', adaptor: 'leapmotion', port: '127.0.0.1:6437' }
],}

devices: [
{name: 'leapmotion', driver: 'leapmotion', connection: 'leapmotion'}
],
my.leapmotion.on('hand', function(hand) {
my['x'] = hand.palmX.fromScale(-300, 300).toScale(30, 150);
my['z'] = hand.palmZ.fromScale(-300, 300).toScale(30, 150);
});

Bluetooth対応
Spheroのサンプルから。

動かすデバイス毎に繋ぐ手段をadaptorとして実装できる。SpheroはBluetoothに対応。

var bots = [
{ port: '/dev/rfcomm0', name: 'Thelma' },
{ port: '/dev/rfcomm1', name: 'Louise' },
{ port: '/dev/rfcomm2', name: 'Grace' },
{ port: '/dev/rfcomm3', name: 'Ada' }
];

■USB対応

Crazyflieのサンプルから。

Crazyflieはオープンハード、ソースの小型のドローン。

これはUSBに差すドングルと通信している。

port: "radio://1/10/250KPS"

■デバイス毎にメソッド追加

disparkのサンプルから。

バイス毎にメソッドを追加できる。

return my.led.toggle();

■ネットワーク対応
helloのサンプルから。

ネットワークループバックとかもadaptorで作れる。機能はdriverにマッピング

connection: { name: 'loopback', adaptor: 'loopback' },
device: { name: 'ping', driver: 'ping' },

leap_ardroneのサンプルから。

普通にネットワークも使えるadaptorがあるということ。カスタマイズすれば使えそう。

{ name: 'leapmotion', adaptor: 'leapmotion', port: '127.0.0.1:6437' },
{ name: 'ardrone', adaptor: 'ardrone', port: '192.168.1.1' },

Arduino対応

leap_arduinoのサンプルから。

leapmotionみたいなUIとArduinoみたいなデバイスを同じレベルで扱えるところが面白い。すべては同じ思想。

connections: [{ name: 'leapmotion', adaptor: 'leapmotion', port: '127.0.0.1:6437' },
{ name: 'arduino', adaptor: 'firmata', port: '/dev/ttyACM0' }],

devices: [{ name: 'leapmotion', driver: 'leapmotion', connection: 'leapmotion' },
{ name: 'led', driver: 'led', pin: 13, connection: 'arduino' }],

API

roboto_commandsのサンプルから。

Cylon.api();

・・・
commands: function() {
return {
say_relax: this.sayRelax
};

sphero-pebble-sfのサンプルから。

これでWeb経由でアクセスできるらしい。

Cylon.api({ host: '0.0.0.0', port: '8080' });


Salesforce対応

salsforceのサンプルから。
sf-spheroのサンプルから。

Salesforceの何とつなぐんだろう?

device: { name: 'salesforce', driver: 'force' },


■テンプレート

masterのサンプル。
これはテンプレートです。


■タイマライブラリ

使いやすそう。

every(100, function() {});
after(10.seconds(), function() {});

サービスを作るために何をしないといけないか?

サービスを作るために何をしないといけないか?
何故サービスを作るのか?それはお客様の役に立つためである。その上で報酬をもらう。収支のバランスが取れてこそ、サービスを作る意味がある。
収支のバランスを取るためには、無闇にサービスを作っていてはいけない。お客様が望むものを見つけ出した上でサービスを作らないといけない。つまり、お客様の声をいかにして入手するかが決め手となる。
しかし、そのお客様の声を聞けたとしても、サービスとして成立させるのは難しい。数百のサービスを作って、ようやく一つがサービスとして成立すると言われている。
そのようなことからサービスを作るために大事なのは次の2つとなる。

  • イデアをいかに簡単にサービスとして具現化できるか
  • サービスとなるアイデアの質をいかにして上げるか

ここで疑問が出てくる。このような状況の中でサービスを作るためには、質より量でいくべきか、量より質でいくべきか、質も量もとるべきか。
経験的に量だけで勝負するのは難しい。お客様がお金をはらっていいというものにはなりにくい。お金の意識のないアイデアがヒットする確率は低い。つまり、質より量では難しい。
では、量より質はどうか。質を求めすぎると動きが重くなる。何故なら、それでお金がお客様からもらえるかどうか判断することができない。実際にやってみないとわからない。サービスがヒットする確率からすると、やってみなくても、駄目なのかもしれない。堂々巡りが続く。
最後に質も量も取るためにはどうすればよいか。ここに答えがあるのかもしれない。

クラウドがもたらすもの

iPhoneの登場により様々なハードやメディアが破壊された。音楽にはじまり、携帯電話、音声電話、ゲーム、TV番組、紙の書籍などである。新たな進化形をたどるものもあれば、破壊され、新しい形になろうとしているものもある。
これらの進化を加速させている要因としては①iPhoneAndroidに代表されるオープンプラットフォーム、②組み込み機器のハードウェアの進化、③Googleなどの検索エンジンによる知識の共有の容易化がある。一昔前は組み込み機器で動くソフトウェアを開発するためにはそれ相応の知識と経験が必要であった。しかし、上述した要素により、経験は不要となり、知識はすぐに入手できるようになり、メーカーが独占していた組み込み機器のプラットフォームが誰でも利用できるプラットフォームへ変化した。

企業がユーザーログを集めることについて

どの企業もGoogleAppleにならって、ユーザのログを集めだしている。LineのようなSNSGreeスマホゲームなどはあからさまにログを収集して、活用している。

何が何でもログを集めればよいのだろうか。とにかく何に使うかわからないけどログを集める、というのがネット業界やM2M業界の合言葉にしている人もいる。集まらないよりは集まったほうがよいという考え方だ。

私はこの考え方に対しては反対である。何に使えばよいのかわからないログは何にも使えないと思う。Greeスマホゲームはよくわからないけどログをとっているわけではない。ログをとることで、仮説をたて、仮説を具現化し、それによりたまったログで更に仮説を立てる、といことをぐるぐると繰り返している。ログはこのように愚直に使わないといけない。

ログをとにかく集めて、ビッグデータだ!といっている企業にはログを使って何かすることはできないと思う。そういう企業に限って、ビッグデータといいつつ、たいしたことはできていない。

4つの開発

お客様にどんな商材を届ければよいか悩んでいる技術者はたくさんいると思う。シーズではなくニーズでものごとをとらえないといけない、確かにそうだがどうやってやればよいのか。

体系だてて考えるためのヒントとなる記事があったので、その感想を述べたいと思う。

日本の家電・脱負け組への処方箋、未来はバックステップでつくれ
http://techon.nikkeibp.co.jp/article/COLUMN/20130204/264051/?ST=observer&P=1

パナソニックB2Bへ手を広げようとしているのは、B2CがだめだからB2Bへ移行するのではなく、お客様のニーズを聞き出す間口をB2Cに加え、B2Bに広げたと捕らえるのがよいと思う。B2Cでお客様の困りごとを解決してきたように、B2Bでもお客様の困りごとを解決することでビジネスのチャンスを広げるという試みである。

しかし、CESの発表にもあったが、日本メーカ発の情報としては4K2Kに関するものばかりであった。4K2Kで新しいビジネスを作り出そうとしてるメーカの意向はわかるが、本当にお客様は4K2Kを求めているのだろうか。

記事内ではこのような今の日本メーカの取組み姿勢に疑問を呈している。

技術力を基にしたB2Bビジネスへの進出やB2Cではこれまでの製品の性能アップに終始し、これまでにない新しいビジネスはなかなか出てこない

ではどうすべきか。記事は以下のように提唱している

1.問題開発
2.技術開発
3.環境開発
4.認知開発

日本メーカは2にばかり注力してきたが、新しいサービスや商品は1,3、4で創出される。ここで言う、新しい商品とは利便性を知ってしまうと、もう元に戻れなくなるような商品やサービスのことである。

これまでの流れを見ても問題開発さえできれば、アジア各国のメーカは技術力を駆使して、問題開発により導き出された商品と同等のものを簡単に作り上げることができる。iPhoneがよい例だ。iPhoneがヒットすると同時に中国メーカはこぞってiPhoneチックなデバイスをあっという間に作り上げた。Googleの検索機能、オープンソース、ハードの進化により、各国・各人の技術的参入障壁は下がり、誰でも何でも作り上げることができるようになっている。

つまり、問題開発により誰も見つけていないものを見つけ出し、技術開発をしながら、環境開発、認知開発に繋がることを推し進めるといのが一つの解である。

しかし、企業で勤めるものならよくわかるが、1から4を論理立てて説明できたとしても「総論賛成各論反対」で何もできずにつぶされることが多々ある。「総論賛成各論反対」を乗り越えるために必要なのが、ビジョンと情熱である。記事内では「ロジックとパッション」で乗り切れと提唱されている。

政治の世界でも「大阪都構想」「TPP参加」など様々な問題があるが、全て共通するのは「総論賛成各論反対」が敵であることである。橋本さんや安倍さんがどうやってこれらを乗り切るか。「ロジックとパッション」で乗り切り、我々によい例を示してくれるに違いない。

WebViewでマルチウィンドウ

WebViewでマルチウィンドウに対応するにはいくつか乗り越えないといけない困難がある。
特にはまったのは以下のエラー。

E/AndroidRuntime(21609): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

WebViewClientのonCreate内でWebViewTransportを利用して新規ウィンドウを作成するようにしたわけだが、上記エラーが出る。
かなり悩んだが、結局、StackOverflowのお世話になることに。

http://stackoverflow.com/questions/1559057/android-webview-crashes-when-clicking-on-a-link

Contextの取り方だが、ApplicationではなくActivityのContextでないといけないらしい。

GCMの使い方に迷ったら

ソースを見るのが一番早い。

https://code.google.com/p/gcm/source/browse/gcm-client/src/com/google/android/gcm/

但し、IDがExpireされる期間については要注意。騙されるところだった。

https://groups.google.com/forum/#!msg/android-gcm/lM0Ez5jvA_o/YAfOrr9xEJ0J