April 01, 2008そろそろ50万ヒット + 記念品このサイトをはじめてから早5年が経過しましたが、お蔭様で右上のカウンタが50万を超えそうです。今まで読んでくださった方、どうもありがとうございました。実はある程度の数を回った時点でこのサイトを閉鎖しようかと思っています。そろそろいい区切りではないかと。 続きを読む "そろそろ50万ヒット + 記念品"April 06, 2008『地頭力』はフェルミ推定で量れるか
[Timely]
最近の就職活動では、新採用者に対して『地頭力(じあたまりょく)』というものが求められている、ということが先日ニュースで取り上げられていました。何でもこの地頭力というのは、大企業病に苦しむ日本社会において持続的な発展を維持するためのキーとなるもので、無から有を生み出す創造性のことを言っているらしいです。『無から有』を生み出すためには、何でも知識や経験を取り除いた部分での賢さ、つまり生の頭『地頭』の良さがモノをいうそうです。 『地頭力』の言葉の定義はさておいて、この『地頭力』を審査するひとつの方法として取り上げられていたのが、フェルミ推定という方法です。例をあげるなら『富士山をどうやって動かしますか』という課題に対して、『トラックで動かす、そのためにはトラック一台の大きさは大体2 x 3 x 6mだから、1台で土砂36m^3が運べて、富士山は大体底辺半径20km、高さ4000mの円錐だから体積は(hoge)m^3で、割り算すると(hoge)台分で…』という仮説に支えられた論理的思考ができれば合格だそうです。 しかし待ってください。これで本当に創造性というのが推し量れるのでしょうか? 僕はまったくそう思いません。おそらくこの『フェルミ推定』が身近すぎて、これはできて当たり前、『地頭力』によって得られるはずの創造力それ以前の問題ではないか、と感じてしまったのが正直なところです。 このサイトを見られている方の大半は、理系、文系というくくりをあえてするなら、理系であると思いますが、皆さん少なくとも『オーダー』という考え方をしたことはあると思います。例えば、ここのセンサの感度はだいたい1mV(p-p)程度だから、あのコンパレータを駆動するには1V程度の電圧が必要なので、ゲインはだいたい10^3くらいかな、といったことです。つまり数字の大小を感覚として感じ取ることに他ならないのですが、これはまさに『フェルミ推定』に他ならないと思います。 この『オーダー』を正しくつかむためには、当然知識や経験が必要不可欠です。特に経験は重要で、何度も失敗しないと身につかないものです。優秀で経験豊かなエンジニアが示す数字が、計算機がたたき出す数字と等しい、はたまたそれよりも優れているということはよくある話ですが、果たしてそういった感覚は『地頭力』によって成しうる創造性、独創的な問題を設定し解を導く力、によるものなのでしょうか? 創造力というのが知識や経験と切っても切り離せない関係にある、つまり『地頭力』の存在自体怪しい、とは僕の意見ですが、それにしてもこのフェルミ推定で『地頭力』を量るのは筋違いでないかと思います。 そういえば僕の先輩で、彼女に求める3つの条件が『オーダーがわかること』、『遊園地にあるフリーフォールを見て(2gh)^{0.5}』、『omega^{3}=1がわかる』だった方がいます。それと照らし合わせて考えると、『地頭力』をフェルミ推定で量ろうとしているのは、単に理系が得意とする論理的思考ができることを求めているだけなのではないでしょうか。論理的思考は概して解の多様性と相容れない部分があるので、『地頭力』による創造にあふれた世界の真逆、益々つまらない社会になってしまうのではないかと心配です。 April 09, 2008apache2 + mod_perl2 + mod_ruby + mod_ssl + mod_dav最近もっぱらサーバの移行作業を行っています。というのも、今年で6年目になる現役サーバ(PowerMac G3 350MHz + MacOSX 10.2.8)のHDDがいつお亡くなりになるかわからず、はらはらドキドキの毎日が続いているからです。バックアップはこまめに取っているのでデータ消失の心配はひとまずないのですが、サーバが一時的にでも落ちるとこのサイトの休止をはじめとして、複数の拠点のデータ共有ができなかったり、と大損失になります。ということで最近は時間を見繕って、新サーバ用に購入したMac Mini(MacOSX 10.5.2 + Intel Core2 Duo 1.83GHz)への移行作業をできるかぎり早く進めています。 新サーバとなるMac Miniでは、メモリの増強(1G -> 2G)とHDDの換装(24時間稼働を想定したサーバ用HDDへ変更)を、過去記事で紹介した分解ヘラを利用して完了してあります。またソフトについても これまで旧サーバではapache1.3+mod_perl+mod_ruby+mod_ssl+mod_dav(dav以外の拡張モジュールはビルトイン、davはDSO)という構成をとっていましたが、新サーバでもできるだけ同じ構成でいこうと思います。パッケージを導入すれば簡単だと思いますが、ここでは向学のために野良ビルドをしました。以下、ひたすらコマンドが並びます。 続きをどうぞ。 April 14, 2008データストリームの終端をシリアルポートにUSBの工作は大好きですが、機器の制御といえば未だにシリアルポート(RS232等)やパラレルポート(IEEE1284)といったレガシーインターフェイスが活躍しています。そのため機器に添付されているPC側の制御ソフトは、そういったレガシーなインターフェイスのみが想定されており、最近のインターフェイスやLAN越しの制御がサポートされることはありません。もし機器のプロトコルを解析して自作のソフトウェアを作るとなると、いったい時間がどれだけかかるのでしょう? そこで何とかしてデータストリームの終端をシリアルポートにし、元からあるソフトウェア資産を活用しようという手段にうって出ることにしました。 まず考えたことはドライバの自作です。仮想的なシリアルポートが一方にできればよいわけで、それならばマイコンメーカー各社(例えばFTDIやSilicon Laboratories、Microchipなど)がそういったドライバを提供していることを思い出しました。ところがターゲットのマイコン側のファームウェアのソースは公開されている一方、ホスト側のソースはことごとく未公開という状況でした。ソースがあれば改造してなんとかできると思ったのですが、残念。 それならば、LAN越しにCOMポートを中継するソフトはどうだ、ということになりました。この類のソフトに対する需要はかなりあるようで、いたるところでシェアウェアを発見しました。しかしフリーでソースが公開されているものが、すぐには発見できませんでした(後で発見しました、後述)。これもまた残念。 結局行き着いたのが、ヌルモデムエミュレータを使う方法でした。ヌルモデムとはその名の通り何もしないモデムのことで、一端のポートに入れたデータが他方のポートから出て行く、逆もまた然りなデバイスのことです。これのエミュレータということは同一PC上にCOMポートが2個でき、双方のポート間でデータを中継してくれます。つまりは一方のポートを機器の制御ソフトから従前どおり指定し、もう一方のポートへは自作プログラムでデータを入出力してあげれば色々カスタマイズできるというわけです。 M$用ヌルモデムエミュレータも無償なものが発見できました。sourceforgeにあったcom0comというNull-modem Emulatorを利用しています。GUIを利用してポートの名前も任意に設定することができるので、例えば制御ソフト側のポート番号が決めうちだとしても対応可能です。勿論ソースも公開されているので安心です。 April 18, 2008『からりおん』を見に行こう!!
[Timely]
『からりおん』ご存知ですか? EPSONのインクジェットプリンタ『Colorio』なら皆さんご存知だと思いますが、それで音楽を奏でてしまう素晴らしいアイデアです。詳細は開発元『マイナスドライバー』のページをご覧ください、衝撃の映像がご覧戴けると思います。 というわけで、次の日曜日はこの『からりおん』を見に、Make: Japan Tokyo Meetingに行ってみようと思います。『からりおん』の他にもニコニコ技術部の不在通知Pさんをはじめとして、『技術の無駄遣い(褒め言葉ですよ!!)』をしている方がたくさん出展されているようです。このサイトでも何か展示できるものがあれば良かったのですが、あまりにも実用を意識しすぎ且つキナクサイ(笑)ので断念しました。次回があるのなら是非、出展者側で臨みたいですね。 ※当日の様子 rerofumiさんともお会いしてきました。ニコニコ技術部のブースには、本家の『初音ミク』をはじめ『弱音ハク』やら『亞北ネル』やら亜種も展示されていてちゃんとツボは抑えられておりました。まったく今後の活動にも目が放せません。 オライリーのスタッフの方に聞いたところ、次回は10月頃にあるそうです。作品を考える期間は十分にあるので技術のムダ使いをしてみたいと思いますが、どうなることやら。できれば体験型の何かを作りたいですね。 April 23, 2008Super Sylphide 進捗状況(16) -- Windows XPでMSD+CDCのUSB compositeが相変わらず動かない年度が替わりまして、オートパイロットシステムSuper Sylphideの開発が別案件に組み込まれたせいもあり、開発スピードをあげる必要が出ています。できれば夏頃に完成させたい予定ですが、予定は未…、いや、がんばらせていただきます。 今回の記事は以前からこのサイトでもとりあげているUSBの複合デバイス(composite device)の話をとりあげてみようと思います。Super Sylphideには計算を担当するDSP以外に、SDカードへのログの記録、そしてセンサ情報の取得など、基本的な処理を担当するマイコンSilicon Laboratories C8051F340が搭載されていますが、これにはUSBの機能が搭載されています。ならばSuper SylphideをUSBでパソコンに繋げて、USBのメモリスティックよろしくログの送受信が簡単にできたり、あるいは通信機能を備えてHIL(Hardware in the loop)試験を簡単に行えたら、どんなに素晴らしいだろうという結論に至りました。そういう理由からUSBには2つの機能、記憶装置として認識させるMSD(Mass Storage Device class)と、通信環境を備えていることを示すCDC(Communication Device Class)、2つの規格に準拠させることにしました。 実はこの部分はGPSロガーと共通の実装であり、今までの開発履歴、『USBでMSD+CDC (Composite Device)』や『WindowsでMSD+CDC (USB Composite Device)』、『USB Composite DeviceでCDCが動作しない』を見ていただくと現状が把握していただけると思います。過去の記事の表題からもわかるとおり、この実装がうまくいっていませんでした。 そこで最近、久しぶりにコードや規格書のおさらいをしてみたところ、規格標準を無視している箇所がいくつか発見されて、これ以上バグがでないだろうという状態まで改善することができました。主な修正点としては以下のものがあげられます。
現在の状態はGPSロガーのファーム、特にMSDの実装とその内部コマンドであるSCSIの実装を見ていただけるとよいと思います。問題の発見にあたっては、USB.orgが提供している準拠度をはかるプログラム USBCV R1.3、並びにSilicon LaboratoriesのUser Forum(特にTsuneoさんという方の情報が的確)やusb.orgのDeveloper Forumが参考になりました。 さて、この状態で意気込んでWindows XPのPCに接続を試みたところ、従来どおり認識はされました。お次はデータのやり取りはできるか、というとことでファイルの読み書きをしてみると、これも従前どおりできました。MSDの機能は正常に動作しています。 残念ながら、今回の実装でも問題を解決するには至りませんでした。USB解析ツールのSnoopyProを使って取得したUSBパケットの流れは以下のとおりです。 CDCのCommunication InterfaceのInterrupt IN Endpoint 0x81とData InterfaceのBulk IN Endpoint 0x82がMSDのBulk IN Endpoint 0x83と心中している様子が伺えます。0x83はその後回復するのですが、0x81と0x82はその後復調していませんでした。これはWindowsのドライバ側の問題であると思うのですが、物理的にプロトコルアナライザによる計測はしてはいない為、真実はわかりません。新たに出たHotfixも色々と試してみてはいるのですが、状況は改善しませんでした。そろそろWindows XP SP3の提供がはじまるそうなので、現在はそれに期待しております。 ※その後、I/O拡張基板の動作確認がとれました。 |
かれんだ~
スポンサード リンク
|