• YosemiteでMPLAB Xが動かない時の対処

    MacOSをYosemiteにしたらMPLABが全く起動しなくなりました。
    エラーも何も出ずクリックしたら一回バウンドするだけで閉じちゃいます。
    「Yosemiteに対応したMPLABを入れれば治るだろう」と思って最新のを入れようとしてもこんなエラーが出るだけ
    Screen Shot 2014-11-07 at 15.41.30

    結局原因はMacOS用のJavaが無いことでした。
    ただ、Javaって検索して普通にJavaを入れるだけではだめで、このエラーに出ているリンク先のアップルサイトから落として来ないとダメです。
    http://support.apple.com/kb/DL1572
    ここですね。ここのDownloadからダウンロードして入れます。
    Screen_Shot_2014-11-07_at_15_41_37
    これで動きます。

    試してないですが、新しいMPLABを入れなくてもこれを入れれば動くはず。でもどうせならMPLABを最新版にすることをオススメします。
    最新版にする時は古いやつのUnInstallを実行してから(MPLABと同じフォルダに入っているUnInstallアプリです)新しいのをInstallしましょう。設定は引き継がれます。

  • 会社辞めました。そして、会社作りました

    知り合いの方々へ。

    タイトルの通りです。
    僕は人生でやりたいことが2つあります。

    1. インターフェイスとしての人工知能を作る
    2. エンジニアリングを始めたい人がすぐに始められるようにする

    今もこれからもコンピューターができることはどんどん増えていきます。その時、機能の分だけボタンを用意して人間に操作させるなんてナンセンスです。それだと使える人が限られてしまいます。エクセルでもただクラスの平均点を出したいのに何故=AVERAGE()なんて書かないといけないんでしょう。それってどこに書いてあったんでしょうか。どこに書いてあるかを書いてるのはどこでしょうか。”=上にある数字の平均”って書いて何故出てこないんでしょうか。全てにおいてやりたいこととそれを実際にやるやり方に違いがありすぎるのです。せっかくコンピューターは色々出来るのにこれではもったいなすぎます。
    僕はこの問題に挑戦します。
    問題の根源はインターフェイスで、人間のやりたいことをコンピューターに伝えるやり方が相変わらずボタンなのが問題なのです。
    IoTですべてのものをインターネットに繋いだとして、それは結局ボタンを壁から手元のiPhoneに移動する作業なのです。必要なステップですが解決はできていません。
    本来、人が何をしたいのかコンピューターは理解して、勝手に全てをやってくれるべきです。そのためには人の情動や感情を理解するコンピューターが必要です。
    これが完成すると、すべての人がコンピューターを扱えます。もはや扱うという間隔はなく、また、コンピューターという感覚もなくなるでしょう。自然の一部が昔からそうであったように人間の作ったデバイスと暮らす世界になるでしょう。
    1,2年で完成する話ではないですが、どうしても必要なことなんです。
    これが1個目の話。

    一体何を勉強して何を買えばロボットを自分で作れるようになるのか、分かりますか?興味があって「ロボット作りたい!」と思っている人もこの答えをなかなか知ることが出来ません。それはものすごくよくないです。ちょっとでも作りたいものを見つけたなら、それを作れるようになるまでのステップがきちんと用意されていて、世界中のすべての人がそれにアクセスできるべきです。
    ものを作るのは面白くて、僕はそれを伝えたいし、みんなに作りたいって思ったものを作れるようになって欲しいんです。僕は誰でも物が作れるようになるためのサービス・ツールを作っていきたいと思ってます。
    これが2個目の話。

    今はコンピューターにとって、とてもおもしろい時代です。やっとスタートラインに立ってきた感じがあります。高速で安いコンピューターやインターネットなど。多くの人が1人1個は画面付きのコンピューターを持っていてインターネットに接続できます。でも、根本はコンピューターが出来た当時と変わっていません、コンピューターを使いこなしているのは一部のエンジニアで、一般人はゲームをして動画を見てるだけです。出てくるサービスはどれも断片的で短期的です。全てが幼稚な状態ですが、色々なテクノロジーがReadyになってきた今、ここから爆発的に良くなっていくでしょう。その爆発の時代、僕もその爆発をリードする存在になりたいのでそれを象徴する意味で株式会社CambrianRoboticsを作って今日から活動します。
    趣味で個人名でもいいんですが、法人になってると覚悟を感じるでしょ?
    最終目標は20年後に人工知能の最大手となり、全てのコンピューターに皆が自然に接してコミュニケーションできるようになっていることです。そして、そんな最高なコンピューターをひっくり返すとCambrianRoboticsのロゴが入ってるんです。
    そこに到達するまでの20年になるように、特に、今はMachineLearningや感情の勉強や、すぐ使える便利なデバイスや開発ツールを作ったりしています。今後は実際にものを売るということやより商品っぽいものの作成などしていきたいと思ってます。

    10月いっぱいで2年半勤めたSpotlightを退職しました。デバイス開発ができたり優秀なエンジニアと一緒にプログラムできたり等エンジニアとしてもとても良い経験が出来ました。充実した2年半でした。5,6人の時に入って今は30~40人ぐらいになり、昔から一緒の人に対して「あ〜これだとこの人はこう思うだろうな〜」ってのがなんとなく分かるようになっていたので、ちょっぴり寂しいですが、フルタイムで働きながら趣味でってのは限界があります。これからも仲良くしていけたらと思います。

    ということで、これから頑張ってきますが、皆さんこれからもよろしくお願いします。
    普通こういうのは書いたあとに実現しないと黒歴史になって恥ずかしいから書かないもんなんでしょうけどね。書けもしない人に実現は無理ですからね。

  • カリフォルニア旅行記 2014/9/4-9/15

    カリフォルニアで感じたこと。
    前回ここに来た時はPapelookを立ち上げて法人化する前の段階で、今はそれから3年ほど経っています。今ここに来て感じられたことをまとめます。

    2014-09-09 11.51.50

    今回は3年前にお会いした方にもう一度会ったり、紹介して頂き様々なエンジニア、マネージャー、起業家に出会いました。

    日本語で発信するのはアラビア語で発信するより価値がない

    まず、1つ感じたことが当たり前のように日本語でブログなどを書いてきましたが、日本語だけで書くことのもったいなさです。
    自分のサイトを英語で発信すれば見てくれる人が急激に増えます。母国語でないにしろ英語を学んでいる人は多く、コンピューターを使っている限り英語はもっとも見慣れた言語で抵抗も少ない言語だと思います。
    面白いものを作って発表されてたとして、それがアラビア語で書いてあったらどうでしょうか。Screen Shot 2014-09-14 at 11.31.17
    出典: 慶應義塾

    読めないし、そもそも検索することが出来ません。なんて打てばこのページをもう一度Googleで開くことが出来るでしょうか。
    日本語で書くというのは同じことです。しかも、日本語は1億人程度で日本国だけですが、アラビア語は2億人以上使っていて2カ国以上が使っている言語です。まだアラビア語で書くほうが読める人が多い。
    英語で書けば5億人程度は読めます。もっと多いかもしれない。
    自分の意見を述べたり、作品を発表する上で英語で書けばより多くの人に見てもらえる可能性が増えます。より面白い意見をもらったり、同じ考えの人に出会えるかも。なんとなく、日本語で書かないと「え、読めないじゃん」って思いますが、日本語で書けば「I can’t read it」となります。
    この問題はより深くて、僕は日本のことしか考えていなかったって感じました。自分のやっていることへチームメンバーを加えるのも投資家に出会うのも話題になるのも全て日本でそうなることを考えていたんだと思います。
    それだと非常に狭い。特に作品の発表や自己紹介を日本語だけで書くのは本当にもったいない、何故そんなことをしていたのだろうかと深く反省しました。

    カリフォルニアは田舎で遅れている

    例えば、駅で切符を買うときにVISAカードが使える販売機と使えない販売機があります。また、ボタンを連打しないと切符が買えません。(常に20ドルから始まります。1.85ドルの切符を買うのに20->19->18->…..2->1.95->1.90->1.95と-1と-0.05ボタンを押しまくります)。あと、札のお釣りは帰ってきません。全部コイン。
    そして、人間を信頼したシステムで動いています。無人駅が多く、車掌が電車内で見て回りますが来ないことが多い。買ったのに一度も出さないのが普通でした。かなり信頼の上に成り立っています。
    2つとも電車の話ですが、ドアや建物の中の雰囲気を考えても全く適当で日本の田舎町と同じです。日本も大企業は田舎町にあることが多いですが、とはいえここはひどく、この街からiPhoneのような美しいデバイスが生まれているのかと思うと不思議でなりませんでした。

    見ている視野の広さ(遠さ)

    日本でものを作っている人は「アメリカだとこういうのがあって」と出してくる人が多いように感じます。なんという出遅れ。また、視野がすごく狭く、1年後に流行するかな〜。ぐらいの範囲でものを考えている人が多いかもしれない。極端な話、人類の未来について考えている人がいる。しかも考えるだけでなく行動している。
    2014-09-08 14.37.15
    要は、こちらに来て思ったのは半端ない視野の広さです。それって5年後か10年後ぐらいですね、と思うようなことを考えて今から行動している人が居ます。
    また、そういった先の話をして理解してくれる人が日本にはあまりいなかったのですが、こっちだと質問が飛んできます。日本だと「それいいんじゃない?(俺には関係ないけど)」な人が多かったんですが、こっちにきたら全員が同じチームに所属しているかのようにあれこれ話してくれる人が多い。
    ものを作る人にとってこれ以上良い環境はないと感じました。少なくとも小銭稼ぎに興味ない生粋のエンジニアにとってはね。10623574_10152269443256246_9171003080833448778_o( Thank you Iguchi ) 

    カリフォルニアにおけるソフトウェアエンジニアリングの待遇の良さ

    こちらでソフトウェアエンジニアの平均年収は900万ほどだそうです。もうちょっとあるんじゃないかと思いますが、こんなもんだろうってのがそのぐらいの金額みたいです。
    日本のソフトウェアエンジニアでこれだけもらってる人はどれほどいるんでしょうか。
    そもそもこの辺の家賃が高くて、ワンルームの最安が月15万ほどだとか。それも市内じゃなくてもです。普通のそれなりの部屋に住む場合は月25万ほどは要るようです。
    やや異常ですけどね。家の数が少ないだけかもしれませんが。この値段のエリアが広範囲に広がっています。
    2014-09-05 10.05.02 HDR
    これに関して1つ問題だと思ったのはなんとなく「日本はトップレベルの国で、他に比べて給料も良い」と思い込んでいたことです。高いと言っても渋谷や六本木と同じぐらいかなと思っていたらそれよりも高かった。しかも広範囲で。
    給料にしろ待遇にしろ街全体の景気にしろ、アメリカから見た日本はまるで日本から見た東南アジアのように思えました。

    余談ですが、こっちのエンジニアに「(日本のソフト会社についてどう思う?)」って聞いたら「(ごめん、日本のソフト会社知らないから特に思うことはないよ)」って言われたのは悲しかったかな。

    全体を通して

    最も強く感じたのは、ここから世界中に広げることが出来るような雰囲気です。英語もそう、ハードやソフトの企業が多いのもそう、景気がいいのもありますし、日本で目にするソフト・ハードのニュースの多くがここで起きていることもそうです。そしてなによりここにいる人たちの属性です。それをここに来てここの人たちと話すことでより「出来そうな気がする」と感じました。
    東京に出てきた田舎者の気分です。
    一言でまとめるとそれが適切な気がします。

  • サンフランシスコにあるTechShopがすごかった

    サンフランシスコの 926 HowardStreetという割と市街地の方にTechShopという旋盤やレーザーカッターなどをレンタルできるシェア作業場があったので行ってみました。
    建物の入り口はこんな感じ。

    2014-09-07 19.24.17

    「会員じゃないけど見学できますか?」と聞いたら「ツアーがあるよ」とのことだったのでツアーをして頂きました。
    1Fは金属・木工加工ブースで旋盤フライス盤CNC,ウォータージェット加工機などがありました。

    2014-09-07 19.12.09

    使い方説明クラスを受けないと使用できないそうです。工具によっては同じクラスで済むものがあります(CNCとフライスと旋盤は一緒らしい)。金属を曲げるためのパンチング(?)マシンや、穴をパンチで空ける装置などマイナーなものまであります。

    2014-09-07 19.12.15

    こちらは木材加工エリアの一部。右にちょっとだけ写ってるのが色を付けるための装置だそうです。木材加工は詳しくないので初めて見ました。

    2Fは樹脂加工エリアと電子工作系と布系があります。
    樹脂加工エリアではお馴染みの3Dプリンタや射出成形機までありました。(僕は何よりも射出成形機があったのにびっくり)

    2014-09-07 19.16.59

    これが射出成形機ですが、縦型は初めて見ました。これさえあればちょっとした量産も可能ですね。
    電子工作エリアは沢山のオシロやファンクションジェネレーターが並び、その奥にはミシンやレーザーカッターが4台並んでいました。このエリアはこちらのサイトから3DViewで見ることが出来ます。

    http://www.everyscape.com/corporate/EveryScapeReview2/EveryScape.html?poi=3205454

    場所はBartのPowellStから10分程度です。

    会費は月に125ドルだそうです。機材にしてはかなり安いと思います。
    東京にもMakerBaseなどありますが、TechShopの迫力は凄まじかったです。

  • 3. ニューラルネットワークの関数再現能力

    ここで一度、人工ニューラルネットワーク(今後はめんどいので”人工”を書くのをサボることがあります)の関数再現能力について勉強しようと思います。
    フーリエ変換は知ってるでしょうか。ある関数を沢山の周波数成分に分解した波の関数として再現することができます。実はニューラルネットワークというのはフーリエ変換に似ています。ニューラルネットワークもある入力に対してある出力をする関数で、フーリエ変換が複数の波に変換したように複数の素子に変換するのです。同じように関数を再現する能力を持っています。それを見て行きましょう。

    3層のニューラルネットワーク

    まず、以下のような3層構造を考えてみます。

    threelayer

    [第一層] ただ1つの入力のみです。この入力の値がそのまま第2層のそれぞれの素子にそのままつながっています。
    [第二層] 1入力1出力の素子がN個並んでいます。それぞれの閾値はθnです。そして、出力が第3層につながっています
    [第三層] 第2層から出力されてきた値が重み付けwnで入力されています。

    見ると分かるように、第1層と第3層はただの入出力で、第2層がいままでやってきた人工ニューラルネットワークの素子です。それぞれが同じ値を入力しています。この第2層の出力が第3層に行くわけです。

    素子の入力はアナログ値で出力もシグモイド関数の値そのものとします。

    ここで閾値が-ε/2のような素子を考えます。シグモイド関数なので入力がxとすると式は
    sigmoid(x-(-\frac{\epsilon}{2})) = \frac{1}{1+{e}^{-\alpha (x + \frac{\epsilon}{2})}}
    となりグラフはこのようになります。
    名称未設定アートワーク-8
    逆に、ε/2に閾値をもつ素子はこのようになります。
    名称未設定アートワーク-9
    さて、ここで最初の素子と2番めの素子の出力をつないでみましょう。ただし、2番めの出力の重み付けをマイナスにします。つまり、w1=1, w2=-1とします。すると、最終的な出力は以下の図のようなインパルス状になります
    名称未設定アートワーク-13
    つまり、素子を2つ使えばある場所にある幅のインパルスを作成することが出来ます。高さは重み付けw1とw2によります。

    では、このようなペアの素子を最初の図の様に(以下の図のように)
    threelayer
    たくさん用意したらどうなるでしょう。しかもインパルスになるペアをx軸の左から右側までずらりと並べたら。そして、1つ1つの幅をものすごく狭くしていけばいろいろな関数を再現できるのが想像できると思います。
    名称未設定アートワーク-11
    非常に簡単にしてしまった説明ですが、ペアにした素子を沢山並べればどんな形の関数も再現できそうですね。
    関数を色々再現して作れるということは、ある入力に対して欲しい出力をしてくれるニューラルネットワークを作ることが出来るという意味です。
    前回まではなんとなく「脳に似てるからこれでいっか」といった感じで進めましたが、今回は「数学的にも関数再現能力があり、どんな関数にも似た形になれる能力がある」ということがちゃんと分かりましたね。

    ちなみに1次関数につて説明しましたが、N次の関数でも同様に再現できます。
    ただし、再現できるものには「連続である」など、制限は入ります。例えば、y=tan(x)は連続でないので完璧に再現することは出来ません(π/2のところなどですね)。しかし、”ほぼ”同じものを作ることが出来ます。

    今回はニューラルネットワークに関数の再現能力があることを紹介しましたが、ぜひ、感じて欲しいのは「ニューラルネットワークはネットワーク全体で1つの関数なんだ」というところです。ネットワークの入力と出力の関係位はy=f(x)であり、f(x)のところの中身が沢山の素子なんだってことです。

     まとめ

    • ニューラルネットワークは1つの関数と考えられる
    • ニューラルネットワークは数が多ければ3層だけでも関数の再現能力がある