1.動くモノはどうやって作られているか
2.動くモノをどうやって作れるようになるか
奥出研の初級CC工房という新規履修者向けのお勉強会で、1時間ぐらい喋ったのを自分でテープ起こししてみた。
もちろんKeyPlayer使った。
今回は2周目の第一回という事で、自己紹介した後に、どうやってモノを動くようにしているか?という技術や開発手法や勉強方法について喋った。後半は、まさに地獄研究室。
061102(木) CC工房テープ起こし
————————-
こんにちは、橋本翔です。奥出研に入ったのは2年生の春で、今4年の秋。一緒に入った人はいっぱいいたけど、段々半分ずつになった。最初18人ぐらいいて、半年で10人ぐらいになって、5人ぐらいになった。瓜生さんと樹とタカシとまりたが同期。吉田さんは後輩。
2年生で入った頃に電子工作が流行り始めた頃で、手紙メディアを作った。持ち歩くポストと、なんでもスキャンして便箋とかにできるうわじきって奴と、電子ペーパーで、書いたり送ったりできる。デジタルメディアの良い部分と普通の手紙の味を混ぜた。
色々よくわからない研究室で大変だったけど、がんばったらこんなん出来てた。
2年の秋にはシャツ型のゲーム機を作った。あとそれでやるゲームを8個ぐらい作った。ELシートという光るシートと、ワイヤーを服に織り込んで、さわったら光るようにしてた。最近脇田先生がやってるような事を2年ぐらい前にも奥出研でやってた。でも向こうの方が技術とか色々進んでる。
3年の春にはコソコソしたいので、持ち歩くSNSみたいなのを作ってた。これは面白かった。あとmoo-pongの手伝いをしたり。
あと、TreasureHolderというのがある。値札ってスーパーとかにいっぱいあるけど、コレで覗くと、自分の個人情報とかから検索して、「昔おばあちゃんが使ってた味噌だから、食べたらなつかしいかもよ?」とか出る。コレを通して見ると、値札の部分だけが光って見える。カメラだとある赤外線だけが見えるので、人間の目には見えないんだけど、現実世界の中のモノの情報をうまく出す事が出来る。この頃は可視光の通信にはまってた。論文とか通ってたりする。
最近はこのPileusを作っている。このイラストは俺が間違ってアップした奴で、本当はカメラは上じゃなくて手元の部分にある。蔓延しちゃってどうしようかと思ってるけどまあいいや。雑誌とかにも載ってる。
設計図が大変な事になってる。まず傘があって、グリグリ動かせる所に電子工作が必要。画面の表示の部分にFlashが必要。通信やデバイスの制御にWindowsのプログラミングが必要。独自のサーバも持っているからPerlやデータベースも必要。いっぱい色んな言語を使ってプログラムを書いている。色々組み合わせてる種類は奥出研最多かもしれない。
他の奥出研のプロダクトも、Flashだけではできないから色々使っている。何ができないか?Flashは画面の中だけだから、センサーとか使おうとしたら足りない。あとFlashは通信ができるけど、文字列を高速に扱おうとすると遅くなって、カクカクになって人に触ってもらうと「なんかこれカクカクしてますね」とか言われる。
Flash最大の弱点は、ファイルの保存が出来ないこと。例えばさっきの手紙の奴でも、手紙描いてもデータ保存出来ない。だから渡せないからモノとして完成しない。
何故かというと、Flashはwebブラウザから使う奴だから、ユーザのパソコンに保存するのではなく、webサーバーに保存する用にできている。Flashだけだとできないけど、表示するパワーはFlash凄いから、その部分だけ上手く使ってやると良い。
色々使っていると、いつのまにか20個ぐらいプログラミング言語とかマイコンとか使ってた。
Javaは使わない。なぜかというと、Javaは何でもできるからある意味何にもできない。コンピュータ言語の歴史、特に最近新しく出来た言語は面白い。昔何でもできる言語が設計されてた。Cとか、Javaぐらいまでは。何でもできる様に設計したお陰で、もの凄くややこしくなってしまった。ファイルに何か書き込む時、Javaで30文字ぐらい必要だけど、Perlだったら10文字ぐらい。用途に特化すると言葉は簡単になる。なんでもできる代わりに、何やっても大変な言語になってしまった。
凄く簡単にした言語というと、proce55ingとかがある。中はJavaで動いているらしい。例えばnew Serial(~~);とかやっているこの1行は、多分JavaCommunicationAPIを作ってシリアルポートと何かやっている。中でJavaに変換してやってくれている。用途に特化する事で簡単に書けるようになっている言語がある。
VisualStudioのC#とかは別の方法で解決している。ボタンとかをマウスで配置できたりとかする。プログラムコードはJavaと同じぐらい難しくなっているけど、ほとんど自動で作ってくれる。例えばダブルクリックするだけでボタンを押した時のイベントのひな形を作ってくれる。
大体こういう簡単な言語とかを使って、組み合わせてやる。何故かというと数学ができないから。
コンピュータの学会にはおおまかに分けると2通りの人がいる。高校で数学一番で、微分と積分がうにょうにょで行列がどうのこうのとか言っちゃう人が、カメラの制御をしてこの部分に人の顔がある…とか数学で解析してくれる。でも俺はよくわからないから、そういう人が便利なツールを作ってくれているのを使う。ツールを寄せ集めてやっているが、あまりJavaで書かれていなかったりする。だから結果的にJava使わないというのもある。まあMOTEの空間位置情報の奴みたいにJavaでしかなかったらJava使っちゃうけど。
このPileusって傘は自分で全てJavaで組んだら5万行ぐらいになると思うけど、色々オープンソース寄せ集めたら2000行ぐらいになった。プログラム部分はほぼ一人で30日ぐらいで作れたけど、それをJavaで作ったら指が追いつかないというかいつ終わるんだよ?という事になる。100万文字ぐらい打って腱鞘炎になる。
そういう意味で、奥出研のやり方は特殊です。
なので、今日は後でFlashの弱点を補うためにPHPというのをやります。とても簡単で強力な言語。HTMLでホームページ作る時に、と書くとすぐプログラムになって動いてしまう。今持っているスキルに足すことができるので色々楽しくなる。
自分のwebにカウンター作ったりできる。
あとこれは履修マップといって、昔作った。どの授業とどの授業がこういう関係があるというのを可視化してみたかった。とりあえず授業名とかのリストをデータベースみたいに、テキストで作った。でもベタうちのテキストはFlashで読めない。PHPを10行ぐらい書いたら、Flashで読める整形されたXML形式になる。PHPはテキストとかの整形も得意。Flashからデータを渡されてそれを保存したりとかも簡単。
大体5行ぐらいでできる。
2年前に和田さんという人がいて、PHPとFlash合うよって言われて、だけ教えてくれてすぐ帰っちゃった。それでカウンターとかこういうの作って見せてたら、色々サンプルをくれて勉強した。
色々やっているといつのまにか20個ぐらいプログラム言語できるようになってるけど、そんな深く知らない。全部中途半端。ただ特徴的な部分だけ知っている。例えばFlashではアニメーションと簡単な通信しかやり方しらないけど、アニメーションぐらいしか担当させないからそれで足りてる。1個深くやるよりいっぱいやった方が色々相互に参考になるし。
新しいプログラム言語を勉強する時に、単語を覚えるのが得意な人とか、数学が得意な人とかで違うのかもしれない。俺は数学が好きだけどあんまり得意じゃないから、覚える部分の脳味噌と相談して、一発でやりたい事をできる言語を使って、それぞれの部分を担当させる。
>言語間のつじつまはどうやって合わせるのか?
まずつじつまの合う奴しか勉強しない。これはいい質問。
どうやるかというと、他の言語に通信できる言語じゃないと勉強しない。2つポイントがある。1つは何が得意な言語か?というのと、もう1つはどうやって外に通信するのか?というのを調べて制約を覚えておく。
Flashだったら通信方法みたいなのはいっぱいある。localconnection, fscommand, xmlsocket, xmlconnector, sharedObject, loadVariables, ActiveXのsetVariable/setVariableとか色々ある。でもシリアルポートと通信するのは一個も無いから、電子工作したのと接続するのは絶対できないので、間に何か噛まさないとならないな、とわかる。FlashのマニュアルでIOとかconnect検索すると大体でてくる。どうやって使うかは難しいけど、何とつながるかは優先的に調べてメモっておくと後々役に立つ。
そういうのをblogにまとめたのがある。
はてなという会社の伊藤さんという人が、よくわからないんだけど直交する技術という事を言っていた。全然違う技術だけど、微妙に重なってる部分があったら両方できたらすごいの作れるよねとか言っている。
それに触発されて、マイコンからwebまで合体したらどうなのか?みたいなのを俺がblogに書いた。マイコンで触った事のあるのを全部まとめてみたり、Flashで何ができるかとか、美大の人が使うMax/MSPってのがあるよねとか、.NETというのはパソコンの中の事はなんでもできるとか。
例えばこのKeyPlayerというテープ起こし専用のつもりで作ったソフトがある。こういうのは自分でがんばれば作れる。
キーボードで戻ったり進んだりできる。テープ起こししてて、そのままウィンドウ変えないで戻したりできる。やたら速く喋るな、と思ったら再生レートを落としたりできる。これでマウスとか何も触らずにキーボードだけでテープ起こしできる。
でも予想外に、目の見えない人が使えるって喜んでた。あとITMediaって有名なニュースサイトで紹介されてたりする。
あとClip2PlainTextっていうツールも作ってみた。論文書いてた時にPDFからWordにコピペすると変な装飾が付いてしまうけど、コレを一回実行すると綺麗になる。7行ぐらいしか書いていないけどできちゃってる。何故か窓の杜で紹介されて600件ぐらいダウンロードされている。
コレを作ったのは、論文提出まであと3時間ぐらいだったけど、コピペしながら直したら30分ぐらいロスするけどこのツール作るのは10分ぐらいでできそうだから作った。そしたら実際ギリギリ間にあった。お陰で国内ではソフト作ってる人っぽくなった。海外ではクレイジー傘2.0を作ってる人っぽくなってよくわからない。
———ここまで061102_1.WMA———-
———ここから061102_2.WMA———-
あんまりお金はかからないで結構作れる。shootballとかは結構かかってるかも。
畑山>paravieは金ないから、ビューアの液晶はパチンコ台の液晶をヤフオクで落として分解して使った。
Pileusは大がかりな部品が無いので安い。プロジェクタは13万ぐらいだけど、研究室にある奴を借りた。RFIDリーダが2番目に高くて、6000円ぐらい。あとは2000とかでハンズで買った部品でできてる。一番高いのは飛行機代。パソコンは私物。
無理矢理でもいいから質問して下さい。
>RFIDリーダってのは何ですか?
無線電波で問いかけると、ID番号を返してくれる不思議なタグがある。これで番号がわかる。段ボール箱とかに付けて物流管理とかに使われている。moo-pongの場合は、ボールの中に映像は入っていないけど、この番号のボールにはこの映像だ、という関連づけだけがされていて、ボール1個1個は安い。このボールを扱うと映像を写真みたいに手渡したりとかできる。
RFIDは、このphidgetって奴は20円ぐらい。物流とかで使うのは1個1円切ってる。あと砂粒みたいなサイズのもある。
村井研の人達は忘れものしない様にモノに全部RFIDタグついてるらしい。
あとあの森田はタグ付けられている。加藤文俊先生の授業で、SFCの中で位置がわかるようにすごいパワーでるRFIDタグを付けられている。何時から何時まで、Ω館にいたとかがバレている。
>どうやって学習していったのか?翔さんは。
色んな種類の学習があるから簡単には言えない。どうデザインするか、チームはどう回すか、とか時間の感覚がどうのこうのとかもあるらしい。どれ?
>まず何をするべきか?
何の為に?じゃあ何になりたい?今あるモノを真似る必要は無い。
>色んな技術を知っていると、何か作ろうとして困った時つまり一つの技術でできない時もできるという事ですよね?
いや、色々な技術を覚えていないとできないけど、覚えていればできるという訳ではない。つまり技術だけではできない。
となると何が必要なのか?というのは俺もよくわからない。仲間じゃないか?一人でやってると気が狂いそうになる。
>どういうグルワ遍歴をへたか?
一学期目はケンカばっかしてた。よくわからなかったから。1学期やってみないとペースつかめなくてどうしょうもないというもある。2学期目に意識したのは、1学期目に樹に言われてむかついてた事なんだけど「アイディア出せ」と言われて出せるものではない。じゃあどういう時に出るかというと、いつのまにか出てる。でもやっぱり考えてるような考えてないようなぼーっとしてる時に出ている。じゃあどうするか?そのチームのミーティングが楽しくて仕方がないようにすれば、いつでも考えるのではないか?と仮説を立てた。ミーティングで一番最初に笑えるように準備してきたりとか、おやつ用意したりとか、レポートを面白いようにわざと書いたりとか、アジェンダでボケたりとかしてたら段々テンションが上がってきて、頭が柔らかくなってきた。
そういうのは必要なんだけど、でも冷静にココを狙うというのもやらないとならなくて、2学期目は最後爆死した。
1学期目はケンカしながらだけど必死でやってた。最初大学の研究室というのは怖ろしい所だと思っていた。ゼミっていうと先生が居て、週一回お話を聞いて帰るみたいな気がするけど、研究室というと必死な感じがする。例えば「ラップアップしたのか?」とか怒られる。
奥出先生は頭が良いけど、ちょっと言ったことない事も「言った」と言うこともあるけど、でも基本的に正しいと思う。だからまず先生のテンポとかを理解するために、先生の本を全部揃えて読んだ。アメリカン・ポップ・エステティクスと、物書きがコンピュータに出会うとき、が好き。でも全部絶版。
>奥出先生は最近丸くなったのか?
なった。最初の頃プレゼンの時俺は震えていた。公開処刑みたいになっていた。瓜生さんとか1ヶ月でチーム解散させられた。なのでプレゼンは毎回死を覚悟して、白い着物着ている気持ちで前に行く。
合宿の輪読とかはまさに地獄。「日付変わったから今日は終わり」みたいな感じ。昼から始まって、日付変わるまでやる。
畑山>俺は輪読でエコノミー症候群になった。立ち上がれなくなった。
30枚スライド作ってきて、2ページ目で「知性が無い。終わり」とか言われて終わる。石橋さんは一番酷くて、表紙で「英語がよくわからなかった」と言ったら「じゃあもう一回読んできて」って言われて表紙で終わった。色々覚悟しながらプレゼンする。
>奥出研でうまくやれるようになったのはいつから?
2学期目ぐらい。1学期目でわけわからなかったら、夏休みに全チームと前の年のスライドとかいっぱい見て、それぞれの進め方が上手い所とかをまとめていた。あと授業の資料を全部見た。
それでわかったんだけど、みんなそれぞれ持論があって適当にやってる感じで良いと思う。話は違うかも知れないけど、強い組織というのは、目が先生だけであと50人手足というのではないと思う。全員目玉で違う方向向いて、色々試しているというのが強い組織だと思う。言われた事やらされてもやる気でないし。
そういう感じでDesign Thinkingしてください。1学期目は楽しく、死なない程度にでもギリギリまで限界を見てくれると良いと思う。
1学期目でうまくデモにならなかったけど、学期末で既にFlashとC#とAVRマイコンで、今使ってる技術のフレームワークの原型みたいなのを作っていた。全く同じ構成。
>今の最終発表はどういう感じなのか?
こういう風にバリバリ動いてしまってたりするチームと、中に人間が入っていて「スポイトで吸うと表面の模様が移せるんですよ」とかいうチームもある。まあ見せれないよりは良い。
でも良い話がある。マウスとウィンドウシステムを開発したエンゲルバートという人は、まともな学会でデモしたんだけど中に17人入っていた。その人がペラペラ喋ってプレゼンして、「マウスの中にホイールが入っていて、横と縦の動きがわかって、画面上のポインタが動く」とか言ってるんだけど、中に17人入っていてプレゼンの動きに合わせて必死でやっていた。
隣の大学から画面だけ無線で中継して出していた。でもそれが凄い事が伝わったので、マウスとウィンドウシステムがちゃんと開発されて今のWindowsとかがある。
「それが出来たら凄い」という事と、「もうちょっと頑張ればできそうだ」という事を証明できたらokなのかもしれない。
じゃあせっかくなのでPHPをやろうかー
———ここまで061102_2.WMA———-
———ここから061102_3.WMA———-
(PHPを使ってみる)