未踏作業日誌――余計なもの作るよ!

未踏の作業日誌的なものを書きましょうということで書くことにしました.余計なことばっかりしています.

コーディングが進まないので日記を書く

昨日,今日で股関節の壮絶な筋肉痛の療養のため,長時間の睡眠を余儀なくされているわけですが,長く寝ると当たり前のように頭も痛くなるのでつらい.昨日はかなり酷くて,余りにも筋肉痛が酷くて足を伸ばすのが苦痛だったのですが,今日に入って多少はマシになりました.研究室が11階で,自販機が12階にあるわけなのですが,いつもは階段登って行くのに足が上がらないのでエレベータ使いました.あばばば.

筋肉痛になったのも,大学にトレーニングルームというものがありまして,トレーニング機材がひと通り揃ってるんですね.おかげさまで,普通なら会員になってお金を払わなければならないところが,学生なら無料でトレーニングできるというわけです.

最近後輩が筋トレをやっているので面白半分でついていったら,最初はそれなりに負荷かけても深刻な筋肉痛にならなかったのをいいことに,2回目で股関節周りの筋トレもやってみたら案の定という感じで地雷を踏み抜いてしまいました.

「40回負荷100%2セットぐらいになるように調整すれば筋持久力が上がるはず」とか思っていましたが,負荷はその半分ぐらいがちょうどいいんですね.10回90%ぐらいにして2セットにしようかなと.いずれにせよ,筋トレって難しいですね.

筋トレをはじめた理由の一つに,体重が45キロしかないということです.体脂肪はもともと少ないので,筋肉をつければ自然と体重も増えるだろうと思うわけですがどうなんでしょう? 体力が付けば,研究発表でもエネルギッシュになるはず() それよりも,観光しているときに疲れないほうが重要ですね.半日歩き回ってもくたくたになって死にそうにならない程度の体力が欲しいです.

 

正直なところ頭痛が酷くて頭痛薬を2錠飲んだのですが,あまり効かないみたいです.カフェイン200mg頂いた上にコーヒーも飲んでいるので,意識は鮮明でいろいろなことを思いついてガリガリできそうなのですが,いかんせんコーディング作業はセンシティブで,何かしら邪魔があると集中できない.

今やっているのは一度バッファリングした内容を,再度ドライバ側のバッファに書き込むためのメソッドを書いている最中でして,ホスト側のバッファの型をドライバ側の型に変換しなければなりません.この処理はほぼメタプログラミングを使っていて頭脳の変な場所を使っているせいか,集中していないとコードが全然書けなくてこまりました.

例えば,ドライバの設定で,44100Hzでサンプリング,バッファリングが256サンプルの場合,1秒間に171~3回ぐらいコールバック関数が呼び出されます.なるべく遅延を出さないように考えると,3GHzのCPUで17メガサイクル以内に処理を行いたいと考えます.そうすると,全てのサンプルに対して適宜変換処理を行ったとしても,それほど深刻な感じにはならないかな.ゆーて,多くてMOV命令4回,掛け算1回,ループ回す感じであれば,1サンプル10サイクルぐらいなので,余裕で処理終わらせられます.SIMDを使えばさらに早くなるかなと.

 

これを書き始めて20分ぐらい経っているのですが,まだ頭痛が治まらなくて困りました.頭痛薬2錠飲めば,いつもなら痛みはおさまるのですが,今日の頭痛はなかなか厄介な方らしいです.思考力はそれほど鈍ってはいないのですが,痛いのは本当に頭だけです.ありがとうございました.

 

どうでもいいですが,11月9日ぐらいにSiv3Dの勉強会があるので,そちらでLTやろうかなと思います.タイトルは「TinyCLとTinyASIO――コンパクトなライブラリの紹介」を予定してます.

この前,TinyCLを作ってみたわけですが,物凄く短くOpenCLのコードを書けるようになるので,自分でもこれはktkrと思うわけですね.一度,コードメトリクス(使ったことないですが)とかで分析して,ネイティブなOpenCLコードとTinyCLコードの比較をして論文にしてみたいなとか思っています.

TinyAISOも同様に論文にしてみたいなと.これはかなり酷いコードになりやすいので,絶対的な行数は100行以上削減できると思いますし,関数と引数の数を2桁減らせるんじゃないかなと.

 

ライブラリを書く上で重要視しているのが,インターフェース側のクラスなり変数なりの数もそうですし,わかりやすい構成にするのももちろんなのですが,引数の数はかなり最重要視しています.

というのも,WindowsAPIで引数地獄を見ていますので,そんなに引数が山ほどあって覚えられるかという気持ちが少なからずあるためです.もちろん,引数の数が少なくなれば少なくなるほど,元来ラップする対象のライブラリが持っていたポテンシャルを狭めることになるのですが,それ以上に本来使いたい方法で使うということを視野に入れれば,別にポテンシャルが狭められたって目的は達成できるのでいいわけです.

例えば,ASIOではリアルタイム音楽プレイヤーなんか作れるわけですが,コールバック関数を弄ると再生速度も弄ることができるようになります.果たしてリアルタイム音楽プレイヤーに再生速度なんて必要あるのかどうか考えると,その機能は全く必要がないわけです.あくまで,ASIO SDKを使う人達のほとんどは,ASIOでリアルタイムで低レイテンシのバッファリングができればいいというわけでして,せいぜい,音ズレがなければいいかなぐらいかな.ASIO SDKを使って驚きの機能を実現するとかそのあたりになってきますと,ハードディスクでOnly my railgunを演奏するレベルと同じかなと.そうするともはや,ラッパーライブラリを使わずに生のSDK使えよって話になるので,引数を減らすという方向性は間違っていないかなと思うわけです.

 

頭痛が緩和されましたが慢性的なめまいに襲われたので,ああ頭痛の正体はめまいだったんだなぁとか思いました.ビタミンB12を食べれば少なからずめまいは緩和されるようなのですが.ビタミンB12は単体だとなぜか高いんですよね.いや,全体で見れば安いんですけど,それ単体で飲むよりネイチャーメイドのちゃんとした奴を買うほうがお得なんです.ただ,処方される薬は1日に必要な量の100倍ぐらい含まれているので,水溶性ビタミンということを利用して物量に任せるスタイルがアレですね.

足は痛いし頭は痛いし集中できないので,適当に任せるまま何も考えず駄文を垂れ流しているわけですが,やっぱりタイピング速度はもうちょっと早くならないかなぁとか思ったりするわけです.

どこだったか忘れましたが,たぶん,パソコン入力スピード検定で2段を一応持っています.10分間で1250文字でした.でも,実際に使っている配列はDvorak配列なので,実はQwertyのほうが少し速いのです.

もう一度,Dvorak配列でパソコン入力スピード検定を取ることができたら,少しチャレンジしてみたいなぁとか思うわけですが,なかなかそんな時間とか暇な時間もないので,まあ日々精進するしかないわけですね.

タイピング速度が早くなると,頭で思ったことがすぐに反映できるようになるわけなのですが,将来のテクノロジーの如何によってはきっと脳波タイピングとか,脳波IMEとかできるんじゃないかとか思うわけですがどうでしょう? もちろん,脳波を自在にコントロールしたり,独特の思考法を使わないと入力ができないわけですが,人間は意外と訓練すればどうにかできてしまうので,ワンチャンあるんじゃないかなぁとか思うわけです.当然,脳波IMEなんて出てきたら,それを自在に使いこなせる人は専門職みたいな形になるのかもしれませんね.ハードボイルド・ワンダーランドみたいな感じです.

 

頭痛もやっと緩和されてきたので,MMD Transporterのデバッグやってます.主にバリデーション周り.MMDはBulletで入力できない値があったらどう対処してるのかちょっとだけ気になります.例えば,AngularDampingとかは0~1までの間じゃないと困るわけですが,PMX Editorのほうでは,100などを設定できるので,実際にMMDへロードされたとき,本当に100で動かしているのかどうかで,値を丸めればいいのか,なるべく値を保持したほうがいいのかで対応が変わってくるわけですね.その辺がなかなか難しいです.

 

そういうわけで,頭も痛くなくなってきたのでそろそろ閉じます.ばいばい.