だ〜れ〜だ〜。
最近あやち聴いてばっかり。
佐藤さんのFPGAのコミュニティーに顔を出しておきながら、めっきり論理設計してない私。論理設計屋さんからソフト屋さん転職して早4年。そろそろ何か書かないと勘を忘れそうなので、ちょっとリハビリしてみました。
まずは家のリポジトリ漁って、使いまわせそうなやつを集めてGitHubに共通モジュールとして突っ込んでみたのが一週間前。なんかもうISEインストールして、今更なSpartan 3 Starter Kit(しかも無印)で動作確認するだけでぐったりですよ。だって今時パラレルポートとかないですもん。しかもUSB変換器じゃ駄目っていうJTAGお馴染みの問題。さらにUbuntuが新しすぎてドライバがインストールできないとか、おーのー。ここに時間かけるくらいならZynq買ったほうが安上がりだった。玄人志向のPCIとか買ってる場合じゃない!
で、とりあえず最近おなじみ、かつお手軽そうな6502でも実装してみるか、と。とにかく昔のCPUなんで今時のCPUとは違う楽しみがあるかもな、とか思ったわけです。で、いきあたりばったりで一気に書き上げてみたんですが……そうとうなカオスコードになってしまったorz 今にも書き直したい気分だけど、面倒って気持ちの方が大きかった。
このくらいなら手書きでデコード論理組めるだろー、とか甘く見てたんだけど結構ぐちゃぐちゃ。これだったら素直にcase文でパラの線にバラして、論理圧縮は合成ツールに任せたほうがマシだった。
あとやっぱり面倒だったアドレッシングモード。本家のマニュアルにアドレスバスに出てくるパタンが説明されてるので、だいたい中でどう動かしてるのか想像つくんだけど。なんか計算途中のゴミアドレスをバスに流してて気持ち悪い。こんなんでメモリマップドI/Oとかホラー過ぎる。で、資料がある故に厳密に倣って作ってみたんだけど、いろいろとチグハグにならざるを得なかった。やっぱり当時は資源共有して最小限の論理数で作ることに命かけてるんで、そこはあえて同じこだわりで設計してみた。
モジュール間のインターフェースもエンコードするかバラして流すかってのは悩むんですけどね。FFに突っ込むにはエンコードしといた方が資源節約になるけど、CPUの場合せっかくデコードしたのになー、みたいな気持ちもあって。今回は中途半端にエンコードしたままにしたせいで、条件がいろいろ複雑になってしまった。
でもまぁ、マイクロコード以前のCISCがどんな感じで作られてるか体験する良い機会にはなった。
まぁ、来年はApple IIをグラフィック込みで動かすくらいはやるかもです。
あ、ちなみに合成するとXC3S200で論理21%、FF 3%くらいの使用率。もっとFF使っても良いですね。800ロジックセルだから、あてにならないゲート換算で1万ゲートくらい?綺麗に書き直せば500ロジックセルくらいまで減らせないかなぁ。
2014年12月31日水曜日
2014年12月13日土曜日
ARMの上で動くリンゴ印のOSで究極のLチカを楽しむ
ARMは仕事で初めてゲームを作ったコンシューマ機、ゲームボーイアドバンスのCPUという事で、とても思い入れのあるCPUです。ゆんゆんに「ちょっと手伝ってー」と言われて立ち寄ったのが今や泣く子も黙る神移植のM2さん。タイトルはデ・ジ・キャラット。楽曲は憧れの並木学さん。そしてサウンドプログラムを手がけていたのがX68k界でブイブイ言わせてた齊藤彰良さん。当時はお二方ともM2移籍前。僕もワクワクしながら仕事をしていました(最近は大きな仕事に慣れすぎてワクワク感が麻痺してしまってるかも……)。
そんな思い入れのあるARMですが、今やモバイルを中心とした組み込み世界の覇者。AndroidやiPhone向けの高性能プロセッサであると同時に、ホビー向けには個人でも100円程度で手に入るモデルが沢山あります。そこで、せっかくだから久々に何か遊べないかなー……という事で考えたのが……
そう、あれです、あれ。Apple II。
秋月で手に入るLPC1114の性能を見ていてピンと来ませんか?
1は単純なローテクで実現。ROMはFlash側に埋め込み、VRAMについては一切記憶しない事でメモリ節約(次節でも説明)。ゼロページやスタック、Apple BASICが本気で使う空間にはRAMをまじめに割り当て、それ以外の領域に関しては全部同じ1-Byteを共有するようにしてあります。主記憶のないキャッシュみたいなもんで、書いて読んで比較……という単純なメモリチェックに対しては正しく動くけど、本当にワークとして触りだしたら動きません。まぁ、初期化コードを騙して、小さいプログラムを動かすには十分。
2は気合。UART入力をキーボードに変えるのは比較的簡単ですが、出力をUARTに変換するのはちょっと大変です。VRAMへの書き込みを見はりつつ、前に書いたアドレスからの差分でカーソル移動を行います。書き込み内容はTXに送るだけでVRAMの実体は実装しません。読まれたら固定値0xFFを返すだけ。スクロール時の画面書き換えは書き込みパタンから自動判別します。読んで1段上のラインに書き込んで……という処理を繰り返すのでアドレスパタンからも判別できるし、本来使われることのない"読み出し値0xFF由来の値"の書き込みを検知する事でも判断できます。スクロール処理中は再描画の書き込みを無視し、スクロール終了を検出したらしれっと改行を送って通常モードに戻ります。
3は特に難しいことはなく。拡張スロット用のI/O空間が開いているので、そこへのアクセスをGPIOにつなげてみました。Apple BASICからはPEEK/POKEで気軽に全メモリ空間へアクセスできるので、これだけでBASICからGPIO制御が可能になります。
という事で簡単なデモ。YouTubeの編集機能使って音とか説明つけてみた。携帯片手に左手でぽちぽち入力した映像なんですが、フラフラしてた画面も手ぶれ補正であっさり安定。
そんな思い入れのあるARMですが、今やモバイルを中心とした組み込み世界の覇者。AndroidやiPhone向けの高性能プロセッサであると同時に、ホビー向けには個人でも100円程度で手に入るモデルが沢山あります。そこで、せっかくだから久々に何か遊べないかなー……という事で考えたのが……
120円ARMの上でリンゴ印のアイツを動かす!
そう、あれです、あれ。Apple II。
秋月で手に入るLPC1114の性能を見ていてピンと来ませんか?
- ARM Cortex-M0
- 50MHz(最大)
- Flash: 32KB
- RAM: 4KB
- CP/Mega88 ... CP/M Z-80 on ATMEGA88 (20MHz, Flash: 8KB, RAM: 1KB) + 外付けSRAM 64K
- MegaZ-80K ... MZ-80K on ATMEGA644 (20MHz, Flash: 64KB, RAM: 4KB) + ATMEGA328 (20MHz, Flash: 32KB, RAM: 2KB) + TINY2313(20MHz, Flash: 2K, RAM: 128B)
- I/O 4KB、ROM 12KB、RAM 48KBをFlash 32KB、RAM 4KBだけでごまかす
- ビデオ出力とキーボード入力をUARTのTX/RXに変換する
- 空いてるI/OにGPIOを割り当てて、Apple BASICからLチカ
1は単純なローテクで実現。ROMはFlash側に埋め込み、VRAMについては一切記憶しない事でメモリ節約(次節でも説明)。ゼロページやスタック、Apple BASICが本気で使う空間にはRAMをまじめに割り当て、それ以外の領域に関しては全部同じ1-Byteを共有するようにしてあります。主記憶のないキャッシュみたいなもんで、書いて読んで比較……という単純なメモリチェックに対しては正しく動くけど、本当にワークとして触りだしたら動きません。まぁ、初期化コードを騙して、小さいプログラムを動かすには十分。
2は気合。UART入力をキーボードに変えるのは比較的簡単ですが、出力をUARTに変換するのはちょっと大変です。VRAMへの書き込みを見はりつつ、前に書いたアドレスからの差分でカーソル移動を行います。書き込み内容はTXに送るだけでVRAMの実体は実装しません。読まれたら固定値0xFFを返すだけ。スクロール時の画面書き換えは書き込みパタンから自動判別します。読んで1段上のラインに書き込んで……という処理を繰り返すのでアドレスパタンからも判別できるし、本来使われることのない"読み出し値0xFF由来の値"の書き込みを検知する事でも判断できます。スクロール処理中は再描画の書き込みを無視し、スクロール終了を検出したらしれっと改行を送って通常モードに戻ります。
3は特に難しいことはなく。拡張スロット用のI/O空間が開いているので、そこへのアクセスをGPIOにつなげてみました。Apple BASICからはPEEK/POKEで気軽に全メモリ空間へアクセスできるので、これだけでBASICからGPIO制御が可能になります。
という事で簡単なデモ。YouTubeの編集機能使って音とか説明つけてみた。携帯片手に左手でぽちぽち入力した映像なんですが、フラフラしてた画面も手ぶれ補正であっさり安定。
2014年12月5日金曜日
11月の読書
前回の読書から別のテーマでブログ書いてなかった……良くないですね。それはともかくとして、11月の読書は15冊。今月は読みたいと思った内容の本にうまく巡り会えてないんだけど、タイトルと内容が一致してなくて、予想とは違う観点で面白かった本もチラホラ。
「アンドロイドは〜」の方はタイトルは有名だけど、ブレードランナーの原作だったり、Android Nexusシリーズの元ネタだったりするのは最近知った。そしてブレードランナーって事はスナッチャーだったりサイレントメビウスだったりが持つ世界観、憧れの退廃的近未来都市です。チューリングテストに合格するアンドロイドがボチボチ登場するようになった時代の、アンドロイドとそれを狩る賞金稼ぎの話。前半の世界観の説明は退屈だけど、最初のNexus 6との対峙あたりから止まらなくなってくる。自分がアンドロイドだと知らないアンドロイドとか、ぐっと来る。
エンターテイメント
「夢をかなえるゾウ」は確かホリエモンが「こんな本が書けちゃう水野さんが憎い」みたいに言ってたので図書館キューに入れた本。半年くらい待ってようやく順番が来た人気の本。いわゆる7つの習慣に集約されるような堅苦しい成長の秘訣を、ゆるーいガネーシャさんを通してじわじわっと脳に染み込ませてくれる。こんな本が書けるんだな、って驚いた。真面目ぶった頭の悪いビジネス書とは正反対のおふざけ優良図書。内容的にはガネーシャさんも言ってる通り、どこでも言われてる話です。
「アンドロイドは〜」の方はタイトルは有名だけど、ブレードランナーの原作だったり、Android Nexusシリーズの元ネタだったりするのは最近知った。そしてブレードランナーって事はスナッチャーだったりサイレントメビウスだったりが持つ世界観、憧れの退廃的近未来都市です。チューリングテストに合格するアンドロイドがボチボチ登場するようになった時代の、アンドロイドとそれを狩る賞金稼ぎの話。前半の世界観の説明は退屈だけど、最初のNexus 6との対峙あたりから止まらなくなってくる。自分がアンドロイドだと知らないアンドロイドとか、ぐっと来る。
視野を広げる
「歴史をつかむ技本」は今月読んだタイトルと内容がずれてる本の1つ。大人向け教科書の流れに乗ろうとして編集が煽ったと想像してるんだけど、ちょっと残念。実際の内容は歴史研究を仕事としている人たちは、どうやって歴史を紐解いているのか。教科書に淡々と書かれた史実は、何を起源にどうやって事実と認められてきたのか、という歴史研究の裏舞台に関する本。その題材として、魏志倭人伝を拠り所にした古代、正史を持つ平安時代、私的な記録も多い戦国時代などを扱っている感じ。一応、歴史の流れというか、普遍的な何かを知りたい、という想定読者の問には答えようとはしているんだけど、オマケっぽさはある。歴史研究について知るにはとても良い本だと思いました。年寄り向けじゃななくて、未来の学者に向けた本として、魅力的なタイトルで売りだして欲しい。
「フラクラル幾何学」はマンデルブロ自らが書いた本が出ているって事で、ちょろっと流し読み。難しいし。物体と観察者の距離によって実効的な次元が違ってくるでしょ?って説明は直感的だった。はじめからコンピュータ使ってCGやシミュレーションと絡めて研究が進んで来たってのも新鮮に思えた。学問って太古の昔からあって、創始者に対するリアルなイメージを持ちにくいんだけど、ここ数十年で誕生した分野の話を聞くとやっぱり不思議な気持ちになる。
「社会契約論」は先月の漫画で読破シリーズの補完としてピックアップ。なのだ調で書かれているけど、女性らしい靭やかでユーモアのある文体になっていて、硬い内容もわりと読みやすく感じる。ルソーが知りたくて読んでみたけど、ルソーの部分は少ないし難しかった。漠然と論説を追うことはできても意図まではなかなか。けど、有名な割には他の思想家に比べて無鉄砲で粗野な印象。一方でホッブズの物体論はちょっと面白い。自然科学の論法をいち早く政治の世界に持ち込んだってことらしいけど。個人を捉える際、精神は物体と同じように個別の反作用の積み重ねによるもので、個々の反応は恐怖などの根源的な感情に基づく反射と、経験・記憶との比較による判断とに分けられる、という解釈。言葉は少し違っても最新の認知心理学の理解するところと一致する。ちょっと哲学に興味が出てきた。
ってところで続けて読んでみたのが「あなたを変える七日間の哲学教室」。タイトルを間違ってしまったもう一冊の本。邦題が中途半端な自己啓発書みたいに変更されちゃってるせいで、正しい読者にリーチできていない印象。原題は「哲学者のように考える - 7日間のガイド」。第一級の現役哲学者による著書。読者と哲学者の対話の形で、哲学が対象とする問題をわかりやすく議論。〇〇学がどうのとか、誰それの考えといった事を体系的に説明する事はなく、哲学全体を説明する上で必要ならば軽く触れる程度。哲学の概念を知る上での取っ掛かりとなる本で、途中で理解につまずく事もないように書かれている。色々な分野で見かける囚人のジレンマ、哲学の視点で見ると、社会契約の話に繋がるってのは読んでいて「おぉ、そうか」と。他の章では神経科学、言語学などとの繋がりも見えてきて学問は色々なところで繋がっているんだな、感心しました。アリストテレス「厳密性を求めるなら、そのことがらにふさわしい程度の厳密性を求めるのがよい。教養のある人は、どのことがらにどの程度の厳密性を求めていいかを知っている」という言葉はこの本の中で気に入った言葉の1つ。普段、計算機を相手にしていると、つい全てが完全でなければいけないという勘違いをしがちなので。自分への戒めとして。さらには過度な品質管理をお家芸として衰退した日本の製造業に対する戒めとして。イヌイットの自立できなくなった両親を流氷と共に流す慣習の話は、本編とは直接関係ないけど、今の少子高齢化社会で行き詰まった日本に生きる者としては刺さる内容。あとがきの自殺についての話もそうだけど、日本はもう少し西洋哲学的な考え方を積極的に取り入れた方が良いのかもしれない。儒教的な道徳観、教育制度との対比として。もともと純粋に哲学的な話に興味があって読み始めたんだけど、最近受けてるグローバル・コミュニケーションの研修での問題と重ねて考える事が多かった。
どうする日本系
危機感持ちつつも自分は安全な場所に逃げこんじゃってて卑怯なんですが。自分なりの考えは持ちたいな、とは思っているのです。ってことで、どんな事を考えてる人がいるのかな、この10年日本は何を失敗したんだろうってテーマで選んでます。この手の本は図書館キューが長いので、思い出した頃になってポツポツと手元に届きます。後者について言えば、自分が「これはもう駄目だ、どうにもならない」って見限って来た物が、世間ではどう判断されてるか。それを確認したいというのも正直なところあります。
で、まずは「日本の論点」から覚えているテーマについて徒然に。
最初の論点はバブル後の日本経済について。ケインズのマクロ経済が一切通用しないグローバル資本主義について軽く触れている。じゃぁ、いったい何が起きてるの?って点については、藤沢数希の「日本人がグローバル資本主義を生き抜くための経済学入門」が詳しかったな、と今になって思えました。同著者の他書は今のところ微妙なんですが、この本だけは良い気がしています。
地方分権問題については橋下は俺が育てた、的な話なんですが。大阪都構想みたいなのは背景を全然知らなかったので中立的に読みました。結局はゼネコン絡みなのかもしれませんが。
憲法については知識の修正が必要になりました。「占領軍が間に合わせで作った英文を無理やり翻訳したから、文章がめちゃくちゃ」みたいな批判をしてるので、あれ?と。たぶん池上さんの本で読んだ気がするんだけど、実は日本国憲法って民間の憲法研究会が提出した案を元にしてるんだよ、って話があって。そっちに理解が振れてたので。調べてみると「参考にした可能性もある」くらいの論調が安全みたいですね。ただ、それは別としても、実質憲法改正が不可能になってる現状は深刻だな、と思いました。
震災を起点とした原発問題。1,000年に一度の大震災を想定してインフラ整備とか馬鹿げている、というのは全くその通りだと思う。公共事業で道路の補強やっても投資になってないし、下手したら投機ですらない。稀な有事にはある程度の被害を受け入れる覚悟が必要かな、と思う。僕ら人類、期待値を計算したら飛行機事故で死ぬ確率よりも巨大隕石落下で人類滅亡に巻き込まれる可能性の方がずっと高いという話もある。わかりやすい災害にコスト割き過ぎなんですね。ただ一方で、そういう事実はあるにしても原発にはまだまだ対費用効果の高い安全対策がたくさんあるはずで。そういう事を考えて実行できれば良いのですが。世間の風当たりは良くないですね。大衆は理屈ではなく感情で動くので。まだまだ人類は野蛮です。
新しいお家芸については、みんなわかっちゃいるけどノーアイデア。バイオ、ナノテク、ロボットみたいなシンギュラリティに繋がるような研究は戦略的に研究してきたはずなんだけど。蓋をあければSTAP細胞事件だったり、外資系企業に買収されたり。宇宙開発とかもっと盛り上がらないかなぁ。
「半導体衰退〜」は元半導体エンジニア、現在コンサルというバックグラウンドを持つ著者による執筆で、技術的にもかなり細かい事が書いてあった。基本的な論調は「日本は垂直統合が強みになったアナログ時代のノウハウは蓄積していたが、主戦場がデジタルに切り替わりその恩恵として分業が可能となって以降、開発体制の切り替えが遅れて競争についていけなくなった」というもの。垂直統合=アナログ、分業=デジタルって切り口は自分にはなかったですね。デジタルでも垂直統合できればそっちのほうが有利だとは思うんですが。そのためには半導体プロセスでも世界一を競えてないと駄目。土台が転んだから上に乗ってる全てがぽしゃったわけで、どちらかと言えば不採算部門をサクッと切れない日本の雇用体制の問題だと思うのです。社内政治的にもそれこそ増税したら解散必至な内閣と一緒で、刺される前に実行、運良く実行できてもいずれ消される、みたいな。
あと現場の雰囲気で言ったら、末端の現場が力を持ちすぎていた事が、寿命を縮めたかな。研究より開発、開発より品証。過去の成功体験に強く縛られた近視眼的な経営判断を続けた結果、技術への正しい投資ができなくなってしまった。現在抱え込んだ技術者を大切にするあまりに、時代の変化に合わせて体制を変えることに二の足を踏んでしまった事が大きい。いずれにしても雇用制度に本質的な問題がありますね。
2014年11月1日土曜日
10月の読書
10月に読んだ本は17冊。ちょっと減った。読書の代わりに電車でニュースとかメールチェックするのを止めてたんだけど、Inboxアプリ使うようになってから通勤時間潰しちゃう事が増えた。慣れれば20冊くらいに戻って安定に入るかな。ぐっと来る本が少なかったのも敗因か。
「俺が生きる意味」のほうはガガガっぽいな、と。ストーリーらしいストーリーもないまま、いきなり化物に惨殺されまくる。アクションシーンの描写力はなかなかだけど、構成力はちょっと。読んでいて話のテンポがブレまくるのと、伏線でもないのに脇道にそれるのとで、読みながら振り回されがち。ただ、構成しっかりしちゃうと、今度はストーリーの面で物足りなくなりそうだから、良くも悪くも微妙なバランスで成り立ってるのかも。これ以上ない意外な結末で2巻に続く……どうしたものか。
小説
その時僕がどんな話をしていたのか覚えていないけど、同僚から「まさに虐殺器官の世界観ですね」と言われてその場で僕の図書館予約キューに入った本。ナノテク、認知心理学、チョムスキー、ミーム、遺伝子。最近興味を持って読んでいる本とテーマがモロ被り。出てくるパイソンのスケッチもどういうわけか知った物ばかり。世の中ほかにネタはないのかと言いたくなるほどの同調っぷりで、同僚の直感は正しかった。作者と世代も近いし、僕もスナッチャー大好きだったからなぁ。読み始めの印象では、文章は冗長でリズムもイマイチ、多少の読みづらさを感じさせる文体なのだけど、独特の艶めかしい死体描写と近未来の世界観にすぐに引きこまれた。文体に関しては後半になると安定してくる。構成的には伏線が少ないわりには飽きずに読めたとは思う。贅沢を言えば、死者の国をもう少しうまく書き分けられたらもっと立体的な作品になったかな、とも思うけど。ウェットな描写を死者の国側に押し込めるとか。終盤はやや疑問の残る展開もあり、最後の大きなオチに向かって強引に進んでいる感じではあったので、やっぱり伏線がもう少しあっても良かったかな。「俺が生きる意味」のほうはガガガっぽいな、と。ストーリーらしいストーリーもないまま、いきなり化物に惨殺されまくる。アクションシーンの描写力はなかなかだけど、構成力はちょっと。読んでいて話のテンポがブレまくるのと、伏線でもないのに脇道にそれるのとで、読みながら振り回されがち。ただ、構成しっかりしちゃうと、今度はストーリーの面で物足りなくなりそうだから、良くも悪くも微妙なバランスで成り立ってるのかも。これ以上ない意外な結末で2巻に続く……どうしたものか。
まんがで読破シリーズ
先月読んだ本の中で社会契約ってなんだっけ?と思って探したら謎のまんがシリーズを見つけたので気になっていくつか予約してみた。まんがで読破……とは言うものの、読破したところで実際には各著書の序盤の主題に触れただけ。興味を持った人はぜひ原著を〜的なもの。まぁ、でも僕の場合はその程度で良いかも。
選んだ本の性格もあるけど、いまのところ必要以上に感情に訴えかける系になってる気がするので、一度原著読んでみて、どのくらい歪んで描かれてるか確認しないと……。
業界モノ
CD売れないって騒いでるけど本当に音楽業界大変なの?と思って読んでみた業界本2冊。コンテンツ市場は10兆円規模、うち音楽は5000億弱。コンテンツとしては書籍と動画でそれぞれ4割超、音楽とゲームでそれぞれ1割弱、という感じ。思った以上に書籍が強いのと、音楽が弱いのとに驚いた。コンテンツとしての音楽はまだまだ成長の余地ありなんだな、と。世界市場の約半分が日本って事を考えると、海外ではもっともっと弱い。そもそも騒いでるのはレコード会社。レコード会社を中心としたプロデュース形態から、イベント会社による企画運営を中心とし、コンテンツ配信はあくまでも広告、というモデルに移行しようとしているだけですね。レコードが出始めた頃とは正反対の力学です。
再販制度とCD+DVD抱き合わせ問題、Amazonによる既得権益への攻撃などの話題も読んでいて面白かった。
「メディアの苦悩 - 28人の証言」は新旧メディア関係者の苦悩を語ってもらい、これからのメディアについて考える、という内容。なんだけど、第一章に関しては印象操作としか思えない酷いインタビュー記事。編集後の記事で会話のキャッチボールすらできてないってのは意図をもって編集したとしか思えない。
二章以降は僕みたいに社会の仕組みを知る前にインターネットにどっぷりはまった人には考える事の多い内容。視野が広がった。
学問系
今回、この分野の読書はイマイチだった。最初の2冊はサンタフェ系のお話。科学というよりはエッセイに聞こえるし、今の僕にはトンデモと区別がつかないのが実情。もう少し入門的な内容を地に足がついた形で説明してくれる本はないものか。
「利己的な遺伝子」は完全に読まなくて良かった本なんだけど、記録のために敢えてピックアップ。「柔らかな遺伝子」とセットで薦められる例も見るんだけど、個人的な感想としては「柔らかな遺伝子」を読めば十分。フォーカスは違うんだけど、自然淘汰については現代ではあまりにも知られすぎていて、改めて読む意義は小さい。前書きと後書きだけで一冊の本になる分量には圧倒。この辺はさすが古典。
そう言えば、この辺の本を読んでいてパレートの法則とか、たんなる経験則じゃなくて、自己組織化と関連してたりするのかな、とか思ったんだけど、調べてみたらやはりそういう考え方もあるらしい。そう言えば大学でサイバーカスケードの研究してる人の話を聞いたんだけど、カスケード規模はべき乗分布って話を聞いて、こっちの世界でやったほうが良いんじゃないの、と思った。
ファインマンの本は量子電磁力学の考え方について説明した本。全然直感的じゃないものを(慣れれば)直感的に理解できるように説明してて凄い。高校物理の最後、光子と電子で混乱した頃から大学の電磁気が出てくる前の間に読むのが良いのかな。この辺り、わかってたつもりでも、ちょっと考えだすと理解を超えてる現象が多いことに気づき悲しくなった。
前から読んでた生物本の第4巻は進化論。次の5巻でシリーズ終了。生物に関して非常にざっくりとした俯瞰が得られつつある。他の専門分野の人たちが何を問題にして、どういった道具を使って謎を究明しようとしているのか、知れば知るほど面白いです。2014年10月22日水曜日
Web Music Platform 魔改造
YAMAHAさんのWeb Music Platform。
bower使ってmodule化されつつあり、自分のモジュールを追加した魔改造もしやすくなってきてます。とりあえず自分の方でもtssやtmalibなんかをPolymer化、bowerで突っ込めるようにして、2つばかりVisualizerとして追加、さらにHerokuにdeployできるようにした魔改造版を作ってみました。
実際にdeployしたデモはこちら。
そう言えばHeroku、ここ2ヶ月くらいで変な最適化が入ったのか、謎な挙動をしますよね。例えばpostinstallのスクリプト中にgit cloneしたリポジトリから特定のrevisionをcheckoutしようとすると、そこはrepositoryじゃないよ、的な事を言われてcheckoutできない。Google Codeからだとbranch作ってbranch直指定でcloneする以外に解決方法見つからなかった。GitHubの場合はtagを切ってないモジュールをbowerでinstallしようとしても、同じように怒られる。さらにbowerが途中でエラーするとbuild directoryから最終的なdeploy先にbower_componentsの中身がコピーされない? こっち系はあまり詳しくないので、詳しい人がいたら対処法というか裏で何が起きてるのか教えてもらえると嬉しいです。というか、今日ささださんとお昼食べるから聞いてみれば良いのか。
それはそうとscript tag injectionとかXHR、そのままだと並列読み込みとか扱いが面倒なので、Promise化してPromise.allで一気に待つようにしてみたら結構お手軽に高速化できた。もうPromiseなしでは生きていけない。
bower使ってmodule化されつつあり、自分のモジュールを追加した魔改造もしやすくなってきてます。とりあえず自分の方でもtssやtmalibなんかをPolymer化、bowerで突っ込めるようにして、2つばかりVisualizerとして追加、さらにHerokuにdeployできるようにした魔改造版を作ってみました。
実際にdeployしたデモはこちら。
そう言えばHeroku、ここ2ヶ月くらいで変な最適化が入ったのか、謎な挙動をしますよね。例えばpostinstallのスクリプト中にgit cloneしたリポジトリから特定のrevisionをcheckoutしようとすると、そこはrepositoryじゃないよ、的な事を言われてcheckoutできない。Google Codeからだとbranch作ってbranch直指定でcloneする以外に解決方法見つからなかった。GitHubの場合はtagを切ってないモジュールをbowerでinstallしようとしても、同じように怒られる。さらにbowerが途中でエラーするとbuild directoryから最終的なdeploy先にbower_componentsの中身がコピーされない? こっち系はあまり詳しくないので、詳しい人がいたら対処法というか裏で何が起きてるのか教えてもらえると嬉しいです。というか、今日ささださんとお昼食べるから聞いてみれば良いのか。
それはそうとscript tag injectionとかXHR、そのままだと並列読み込みとか扱いが面倒なので、Promise化してPromise.allで一気に待つようにしてみたら結構お手軽に高速化できた。もうPromiseなしでは生きていけない。
2014年10月3日金曜日
9月の読書
ニコファーレ関連でペースが落ちた9月。最後にちょっと追い上げたけど読めたのは14冊でした。半分忙しかった事を考えると、こんなもんか。冊数は少なかったけど実りは多かった。
小説
今回の読書ブームの中でも最高の1冊になった「世界の終わりとハードボイルド・ワンダーランド」から。読み始めてすぐに感じた印象は「安部公房」版「灰羽連盟」。でも、正しくは灰羽連盟が「安倍吉俊」版「世界の終り」。ついでに言えば麻枝准も影響を受けたと言っているのでAngel Beatsが「麻枝准」版「世界の終り」らしい。村上春樹の本は短編も含めて3冊目。今までは感じなかったけど、この本からは安部公房の香りを随所から感じた。主人公の理屈っぽい思考・意識の在り方、登場人物の醸す不思議な存在感、そして不条理な世界と理系的ストーリー展開。自分が高校時代から惚れ込んだ安倍文学の世界そのものだった。加えて村上春樹特有の音楽のエッセンス。前回の読書ブームは安部公房のカンガルー・ノートで一段落しちゃった感じなんだけど、今回のブーム中にこの本に巡り会えたのは幸福。また本を読む楽しみが出来た。
もう1冊はラノベで有名すぎないあたりから適当に選んだ本。引っ込み思案で変な趣味をもつ娘は嫌いじゃない。最後の展開は独特のノリを活かしつつも魔法少女モノの王道をオマージュって感じで。新人作家の初々しさが作品の雰囲気にマッチしてるし、好きな物を書いてるって愛が感じられた。ロープライス¥1って表示されてる(投稿日10/2現在)と申し訳ない気分になるけど。
もう1冊はラノベで有名すぎないあたりから適当に選んだ本。引っ込み思案で変な趣味をもつ娘は嫌いじゃない。最後の展開は独特のノリを活かしつつも魔法少女モノの王道をオマージュって感じで。新人作家の初々しさが作品の雰囲気にマッチしてるし、好きな物を書いてるって愛が感じられた。ロープライス¥1って表示されてる(投稿日10/2現在)と申し訳ない気分になるけど。
安部公房関連
そして安部公房に戻る、と。もう振り返る作家なんだなぁ……。という事で、1つ目は「安部公房とわたし」。安部公房の愛人だった女優の山口果林さんが大学入試での安部公房との出会いから別れの日までを記した本。実際の日記をかき集める形で編集したのか、日々の細々とした出来事についての短いメモ書きを集めたような構成になっている。安部氏のプライベートについて知る機会はなかったのでなかなか貴重。作品の取材や演劇の話も出てくるので、安部氏とともに歩んできた人なのだな、と妙に感心したりもする。ただ、浮気中の最初の妻とのやり取りなんかは生々しくて重い。
もう1冊はチョムスキー。インタビュー中心なので、これで何かを理解できると思わないほうが良いかも。チョムスキーと生成文法について知ったのは安部公房「死に急ぐ鯨たち」を読んだ時だったと思うけど、あちらもインタビュー中心でこの本と雰囲気が似てた気がする。いつかチョムスキーについて知ろうと思って20年経ってようやく読んだ本がこれでした。文法の構造(最近の翻訳だと統辞構造論?)も読まないとですね。
もう1冊はチョムスキー。インタビュー中心なので、これで何かを理解できると思わないほうが良いかも。チョムスキーと生成文法について知ったのは安部公房「死に急ぐ鯨たち」を読んだ時だったと思うけど、あちらもインタビュー中心でこの本と雰囲気が似てた気がする。いつかチョムスキーについて知ろうと思って20年経ってようやく読んだ本がこれでした。文法の構造(最近の翻訳だと統辞構造論?)も読まないとですね。
短編
ロシアの音楽家はみんな大好きプーシキン。って事でチャイコフスキーのオペラで有名なスペードの女王。スイスに出張に行った際、たまたまホテルがオペラ座の近くで、本当にたまたま出張中にこの演目をやってたんですよ。これも高校の頃からの因縁の1つ。ついでに言えば、あとはオネーギンと未完7番が見れればチャイコフスキーは満足。で、原作が青空文庫経由でKindle化されてたので。オペラのストーリーはかなり原作に忠実ですね。大団円は流石にオペラ向けに大幅に書き換えられてるようですが。原作は昔ばなしみたいに各登場人物の後日談を淡々と語るような地味な終わり方でびっくりする。これが当時のロシアの作風なのかな。
最近のぷちお気に入り夢野久作さんで瓶詰地獄。妖精ではない。最後の瓶は……怖い。この心に刺さってくる感じは夢野作品の特徴ですね。
最近のぷちお気に入り夢野久作さんで瓶詰地獄。妖精ではない。最後の瓶は……怖い。この心に刺さってくる感じは夢野作品の特徴ですね。
技術書ほか
GLES 2.0入門書。GLはいわゆる黄金本で勉強しただけだったので、もう少し現場視点で書かれた本を復讐がてら読んでおこうかな、と。ついでだからmobileフォーカスなら尚良し。応用編は今現在読んでいるところ。この辺りを読みつつ自分のAndroid用のJavaライブラリにAPIを足してジェネラティブ・アートのサンプルコード(for Processing)を動かしてみる、とかチマチマやってます。本の内容的にはAndroidとiOSそれぞれ固有の下準備についての解説が少し。その後はAttributeとUniformを使ったシェーダーの基礎とテクスチャの説明、あと行列を使った座標変換についても軽く触れてる。情報少なめではあるけど最近のモバイル端末(Nexus5/7/10、iPod Touch 4th/iPad 3rd)でのglGetIntegervが返す値の比較なども。対象言語はC(++)。AndroidはNDK前提。Javaでも基本は一緒なのでimport android.opengl.GLES20で書きたい人も読み替えながらなんとかなるかな?Bufferの扱いが特殊なのを除けば簡単になってる部分のほうが多かった。エラーメッセージの文字列の扱いとか。BufferもJavaに詳しい人にとっては常套手段なのかな?しばらくエラー・メッセージに悩んだのでメモ書きしておくと、
こんな感じで確保、格納してやればOK。
| @Override public FloatBuffer createFloatBuffer(int length) { | |
| return ByteBuffer.allocateDirect(length * 4).order( ByteOrder.nativeOrder()).asFloatBuffer(); | |
| } | |
| @Override public FloatBuffer createFloatBufferFrom(float[] values) { | |
| FloatBuffer buffer = createFloatBuffer(values.length); | |
| buffer.put(values).position(0); | |
| return buffer; | |
| } | |
あとは技術書じゃないけどワインの本。チームにソムリエ試験受けてる人がいて、詳しい人がいるなら好都合!と興味を持って読んでみたんだけど、やっぱり難しい。チームでお祝いとかも多くて、ワイン飲む機会も増えてきてるんで、詳しくなればもっと楽しいかなって。褒めてるのか貶してるのか素人にはわからないような暗号めいた形容詞が面白いです。まぁ、気長に覚えます。
2014年9月14日日曜日
ニコファーレ完結編
イベント終了。突貫工事だったけど、なんとかそれなりに仕上げることができたかなぁ、と。イベント中はプロの映像制作屋さん・オペレータの2名と一緒にLED照明卓に張り付いていたので、プロの作業を仕込みの段階から長時間見ることができたのが何よりの収穫。
作った素材的にはこの辺にあるモノ+αの15種類くらい。3chのミキサーをMIDIコントローラから制御できるようにしたホストアプリをtmalib上に構築してました。今回のために書いたコードは175 commitsにわたり、コード量も倍増。
% git log -p --full-diff --since Aug | wc -l
23742
だそうです。
Tell Your Worldのステージ中に使った素材の一部
ライブラリ実験用に作った3D版Waypointsがパラメータを変えるだけで色々と使いまわせたのは助かったです。特に直前に追加で作ることになったエンドロールとかは数時間しか作業できなかったので……。フォントからテクスチャ作るライブラリ工事だけで時間切れになっちゃった感じ。
本番のエンドロールはMichael Jackson版Behind the Mask
で、色々と見つかった課題。
- 自分の作ったライブラリで一番まずかった点はミキサーのフェーダ。うかつにも線形に作ってしまったけど、どう考えても対数で作るべきだった。コードばかり書いてて操作をあまりやってなかったので気付かなかった。
- 機能として足りなかったのはプレビューと速度調整。プロの現場だと、次に使う絵をプレビューで先出ししてて、ステージ上の音楽に合うように映像のループ位置や速度を調整して、ここからって場所が来たら瞬時に切り替えて使う。DJアプリと一緒ですね。今のフレームワークでもタイムラインはきちんと管理してるので、UIさえつければすぐにでも動く。けど、性能的にプレビューまで出すのはちょっとキツイ。本番ではFull HDで生成・出力をしていたけど、エフェクトを重ねてると現状でも30fpsに落ちることがあった。そもそもコンソールと外部出力、複数のウィンドウに対して、同じタイミングで絵を送るのがちょっと難しそう。Web Music Hackathonの打ち上げでも話題に出てたけど、それこそOS XのSyphonみたいな仕組みが欲しくなってくる。
- シェーダーのコンパイルに数百msec必要で、その間requestAnimationFrameが届かなくなるため、エフェクトのダイナミックなロードが難しい。フレーム落ちを避けようとすると、基本的に曲の頭で色々なリソースを先読みする事になってしまい、メモリ消費が激しくなりがち。ちなみにこのアプリは起動時に500MB以上食ってたし、デバッグ時には作業しているうちに2GB付近まで増えてタブ落ちする事も。
でもまぁ、ウェブアプリベースで本格的な照明制御を行う実験としてはまずまずかな。思いついた事を全てやるには圧倒的に時間が足りなかったけど、まずまずは満足。
登録:
投稿 (Atom)



