ログ: 2009/08
今さら感漂うが Google V8 JavaScript Engine を使ってみた
D 言語上から JavaScript 使いたいでござると試行錯誤した記録*1.SpiderMonkey もトライしたんだが結局 V8 に.
説明の順序がアレな気もするけど Google V8 JavaScript Engine っていうのは名前にもあるとおり JavaScript エンジンで,Chrome に採用されてるやつ.オープンソースなのでフリーに使うことができて,組み込むことでアプリケーションに JavaScript を解釈する機能を持たせることができる.
この手のモジュールってオプソとは言いつつも自社製品特化のためとかなのかなんなのか,ごにょごにょだったりして使い勝手がいまいちで,自アプリに便利に組み込んで使えるという地点からかけ離れていることが少なからずあるんだけど,さすが Google というべきか,
- 言語 C++
- 気の利いたビルド環境
- 導入ドキュメントばっちり*2
- 隠蔽度が必要十分
- 他外部ライブラリに非依存
- ライセンスは修正 BSD
と十分に使いやすいものになっていた.
参考ページ
-
V8 JavaScript Engine - Google Code
Google Code のプロジェクトページ. -
V8ドキュメント日本語訳 (ゆとり)
公式ドキュメントの一部の日本語訳.「(ゆとり)」 は英語ダメな人への当てつけかしら(w -
V8: V8 API Reference Guide
ちょっと古いけど Doxygen で生成されたリファレンス.継承関係追っかけたいときなど便利 -
CodeProject: Using V8 - Google’s Chrome JavaScript Virtual Machine
Hello World,単純な変数・関数のエクスポート,C++ クラスオブジェクトのエクスポートのサンプルコードと解説.
Google Code にある公式ドキュメントの Embedder’s Guide の内容をなぞっている.説明の仕方が違うので両方読み合わせると理解が深まるかも. -
電波 t-日記,[V8] - 電波日記@はてな
日本語でブログな情報の中では一番充実していると思う.ビルドから応用まで.
実際使う上で重要そうなポイントがまとまっててとても役立つので通読するべき*3.
できたこと
- 簡易インタフェースを C++ で書いて共有ライブラリ化. D からそれを呼ぶ.
- 実行コンテクストの切り替えや js の評価と結果の取得とか基本的なこと.
- D の関数を js にエクスポート(js から D の関数を呼べる).
- tsuikyo.js を実際に D から使ってみるなど.
まだだけどやりたいこと
- ラッパをなんとかして D のオブジェクトの js エクスポートを楽に.これ的な.
- 拡張を考えて実装してみる (誰でも考えるであろう include(’hoge.js’); とか).
- ゲーム用スクリプトエンジンとして js 使えるようなフレームワーク考える.
ぐだぐだメモ
通算 64 回打ったらしい
Typenist の SPiCa ,常用 22 秒とかの初音ニクさんに 15,459 点で抜かれている
↓
まあノーミス記録出してみるか
↓
15,410 点 (ニク -49 点)
↓
頑張る
↓
15,449 点 (ニク -10 点惜しい!)
↓
さらにスピードを上げる
↓
ノーミス記録がなかなか出ない
↓
かなり頑張る
↓
15,446 点 (ニク -13 点.さっきより 3 点低い)
↓
涙目
↓
↓
打ち切り点アベ 130 点も取れれば十分とわかり意欲が湧く
↓
再挑戦
↓
でもミスが減らない
↓
超がんばる
↓
まぐれで噛み合う
↓
後半は慎重に……
↓
15,465 点来たッ! (ニク +6 点)
↓
↓
初音ニク 15,666 点になっている (俺 +201 点)
↓
涙目 ←いまここ
-
まあ実力差がありすぎるとさすがに点差つきますね,はい.
でも前半部については予言通り,数点とか十数点とかの勝負になりうるということを実証したのでいいとする(涙目).
[Typenist] お膳立て.人参が吊されると尚良い
そんなわけで Typenist ちょっとやった.ぼっち過ぎてチャットとか協力プレイとかありえないので黙々とスコア狙いする予定.今後も.
で,一日の平均ニコニコ視聴時間が 1 秒くらいの人なのでボカロ曲とか大して知らず,とりあえず一番上にあった SPiCa をぼちぼち打ってたら,スコア計算が初期と全然違うんだなぁと気づいた.
初期のチェイン仕様は,なんというか,良くも悪くも素人考えで(タイピング)ゲームの得点ルールを作るとああなるよなあというもので,というかまあ具体的にはうろおぼえだけど,ミスしないで順調に打ってる間チェインが続いて,随時チェインが得点倍率となる,という感じだったのね. これだとどっか途中で 1 ミスした途端にやる気がなくなる,ただのマゾゲー仕様というか,ノーミスジャンキーにしか楽しめない得点稼ぎよね.
で Season2 の得点方式はというと,なかなか面白いと思った.タイパーの人は得点換算の詳細とかが明示されないとやる気にならないタイプが多そうなのでまとめておくと,
- 打ってる最中にもらえる点数(打鍵点)が,ひらがな一区切り*1ごとに 2 点
- ワード(一行)の打ち切り毎にもらえる点数(打ち切り点)が,打鍵速度に基づいて(後述) 0~150 点
ワードの間ノーミスだとこれに + 100 点のボーナス - 一曲終了後に換算される得点,最大チェイン数 * 50 点追加,ミス数 * 10 点減点
ただし Season2 では歌詞を規定時間内に打ち切れなかった時に限ってチェインが途切れる(ミスタイプで途切れない)
どの辺が面白いかっていうと,色んなレベルの曲に対してちゃんとスコア争いできるようになってるあたり.
難易度が高くて全ワードを打ち切ることがほぼ不可能な曲については,打ち切り点とチェインボーナスで勝負がつく.乱打しまくってよほどミス数を爆発させない限り,速度重視でチェインを維持したり打ち切り点を多く狙った方が得. この辺は素の速度のあるタイパーの独壇場と言える.
それに次ぐ頑張って全力打鍵すればなんとかフルチェインできるような曲については,とても難しい.チェインを諦めてノーミスボーナスを取るか,その逆か,はたまた運良くノーミスフルチェインを達成するまでやり込むか.最後を除けば計画高く得点狙いした者が勝つ感じだ.
そしてある程度以上に簡単な曲になってくると,エタイとかでならしてるタイパーならさすがにノーミスで打てるレベルになってくる.なんたって定型文だし.こうなるとさすがに正確性が必須になってくる.チェインボーナスで差がつかないとなるとノーミスでワードあたり 100 点,これがどれだけ取れるかでほぼ勝負が決まる.
もちろん打鍵速度によって打ち切り点が決まるので,トロトロ打ってノーミスになればいいというわけではないのだが,この打鍵速度に基づいて 0~150 点,という部分の詳細がクセモノで,内部での計算はどうなっているかというと, x を打鍵速度(kpm : 分間に何打の速さか)として,
150 - 9000/x 点(小数点以下切り上げ)が得点となるのだ!!!!!
……と書いてなるほどねと納得する人ばかりではない気がするので補足すると,得点を y とすれば y = 150 - 9000/x はグラフ上で双曲線をなして(多分数III.分数関数のとこかな),打鍵速度に対してリニアに点数がつかないのである.
ぷろっとったので右図見ていただくと頭の良い小学生でもわかると思う.
すなわち,打鍵速度が高くなればなるほど,得点の変化率が落ちてくる.漸近線は y = 150 だ.
1000 kpm という驚異的な速度でワードを打てれば 141 点がもらえる*2が,600 kpm で打っても 135 点もらえる.差は 6 点. 10 ワード分積もり積もったとしてもノーミスボーナス 1 回分にかき消されてひっくり返る程度の差である.
ってことは,結局普通に打てる曲についてはノーミスジャンキーの勝利ってことね……と言われれば,まあそれはそうなんだけど,そこで話は終わらない.
簡単な曲なのでやろうと思えばノーミスで打てる人はたくさんいるわけで,その中で競おうとすると,今まで変化率が小さい差がつかないと貶められていた打鍵速度・点数グラフが別の側面を見せる.チェインボーナスとかノーミスボーナスとかいう大味要素で差がつかないので,まさに数点差の戦いを始めることができるわけだ.
数点差とかみみっちくて底が浅そう,と直感的には感じるんだけど,むしろ逆で,一部でむちゃくちゃに高い速度を出しても得点差はほとんどつかないので,ワースピをどれだけ伸ばし,全てのワードで安定して稼ぐかが重要になってきて奥深い.
TW 的な最大速度で勝負が決まるような争いではなく,定型文やクセのある文字列や超短文といった色々な要素をうまいことカモって攻略すれば,最大速度でいくらか劣っていても勝負になる.ここが割と新しいと思う*3.
例を挙げれば,速度が低くなればなるほど変化率が大きいので,ちょっと失速して 500 kpm 割る(ワードがそんなに長くないのでちょっと詰まると楽々割る)とかすると 10 点オーバーロスして涙目になったり.逆に,極短時間であれば打鍵速度を爆発させることもできるので,数打鍵のワードをタイミングをあわせ超速で同時打鍵して 140 点オーバーを狙いにいったり.
とまあ,長々書いて伝えたかったのは,ネトゲとして見なければ楽しいんじゃないという極めてストイックな一人プレイ方法ね. 他人とだべって打って経験値があがってレベルがあがってわーい,とかはさすがに敬遠したいんだけど,各曲がエタイ長文や TW 憲法みたいなやり込み項目だと思えば楽しいという.
経験値とか要らないからプレイ中 Esc で曲セレ画面に戻れるようになると幸せだよねとか,間奏スキップしたいでござるとか,曲別ランキングで入賞*4すると曲ごとにポイントがついて,ポイントの合計でランキングとかがあるとタイパーが全曲やり込みたくなるんじゃないかな*5とか,IE8 で曲再生後に一度マウスで画面内クリックしてフォーカス当てなおしてやらないとキー入力受理されないんだが既知の問題かしらとか,1 日の間に割と色々なことを思ったけど,Season3 ではほとんどフルスクラッチっぽいことがアナウンスされているので今言ってもなんだかなーだし,とりあえず Season3 に全力を傾けて欲しいなぁと思いましたまる.
あとはなんだ,言い出しっぺの法則というかで SPiCa については暫定 1 位のスコアを出した気がするので噛ませにどうぞ. ノーミスかと思いきや普通にミスしてるんでノーミスで普通の速度が出てれば抜けます,多分.
Typenist でもやるかと思ったら minie かできた
最初期には顔出してたのにどうして結局 Typenist やってないんだっけ……,とふと思って行ってみたら Fx には対応していませんと弾かれて,なるほどと思った.
だが
- まだ健全に続いていること(サーバ転送量的に.モチベーション的に)
- 曲数が驚異的に増えている*1こと
- Season3 の情報が出ていてがっつり改良される予定もあること
それぞれに驚かされ,プレイを鼓舞された俺だった.腹をくくって IE を起動したね.確かに腹をくくったんだよ.確かに.
でもポップアップウィンドウが開いたあたりでもう耐えられなかったね. ダメでした. Typenist がじゃないよ, IE がだよ.
デザインなのか操作感なのかわからんけど,うわああと来たので,諦めて,軽量で UI がシンプルでウザくなくてゲームに集中できるような IE コンポーネント系ブラウザってなんだろうとぐぐったんだ.
で,2 分くらい探したんだけど,望む機能のものがぱっとは見つからなかったので,探す時間があればそれくらい書けるわボケが,と思い上がり,書き出して,まあ結局探したほうが早かったなって程度の時間はかかったんだけど,minie とかいうのがでっちあがったわけです.
誇張でもなんでもなく,コード書いてる時間よりアイコン作成にかかった時間の方が長いという.アイコンのネタが思いついてとりかかったのは良かったんだけど,終わってみると恐らくネタとして超既出な気がするし,何より yaet も IE マークアレンジだったので飽食すぎるだろうという.
まあアイコンの話はどうでもよくて,超シンプルにウィンドウに IE コンポーネントが貼り付いているだけ,そしてそれを起動引数で若干制御できるという代物で,メニューバーとかアドレスバーとかステータスバーとかツールバーとかそういう極めて醜いうんこの子がアニヒレイトされているので,これで web アプリケーションを走らせるとあたかもデスクトップアプリケーションであるような気分になって,気分がいい*2というものです.
気分かよ,という突っ込みを受けると実際そうなのでアレなんだけど,フルスクリーンで Typenist を起動してみたりすれば気分って大事だなあということがある程度理解されるんではないかという予想はできて.
あとおまけでショートカット一発で画面キャプって保存してくれるよーというおせっかいな機能がついている*3のでそういうの大量に溜め込んで悦に浸るのが趣味な人とかにはいいかな.いないだろうけど.
おすすめの使い方はショートカット作ってショートカットのプロパティの 「リンク先」 で必要な設定を書き込んでショートカットのアイコンをネギなりに変えちゃってそいつをデスクトップに置くとかして,Typenist とかが IE 上で動いてる web アプリだーというのを忘却して安らかな気分になることね.
冷静になるとこれ別にタイピングと直接に関係ないんだけど,きっかけがきっかけなのと割と Typenist 用チューンが入ってる*4ので dvorak.jp においときますね.というか他にこういうものをちょこっと整理しておいておける場所みたいなのがないからしょうがないんだよね.実際のところは.
もそもそタイピング
自演乙だろうが夏厨乙だろうが話題がエンドレスエイトだろうが*1,一日数レスしかない寂しさに比べればマシだと実感しまくっている今日この頃……みなさまいかがお過ごしでしょうか.
やはり他の人が活気づいてると自分もやる気になるものでもそもそと動いたり動かなかったり.
トプスピ伸ばすぞーと最近乱打気味だったのでたまには気分を変えて正確性重視で打って TWJR@qwe 常用ノーミス ZJ が出た.久しぶり.まあ意識すれば出るようだ.
エタイの 「ことわざ」 が新しいとかなんとか.090623 にチェックした 「ことわざ」 は 「短いことわざ」 だったんだけど,確かに今回のはそれとも 「慣こと」 とも別物のよう.
うーん,このワードセットも前からあったような気もするんだけど……記憶があやふやだな.
傾向としては 「短いことわざ」 はもちろん 「慣こと」 よりも平均ワード長が長い. 分散も 「学校にあるもの」 とかと比べれば小さく,即死ワードみたいなのもぱっと見た感じなさげなのでそこそこ優良なワードセットという印象. 645pt とか出たのでまあ満足.
- もちろん見てない. [↩]
続・右カーソルキー
冷静に考えると Num1, Num2, Num3, Num5 をカーソルキーにすればいいだけだった.
テンキー付きモデルでよかった,と珍しく思った.
他にはマウス操作しながら右手親指でテンキーのエンターを叩いたときとかに思うよね.
それくらいだけど.
12インチ外付けケースファン
あるある.
初めて iPhone 3GS のカメラで撮ったがサムネイルサイズなら見るに堪えるね.
撮ったその場でメールに添付して送れるので SD メモリ抜き差しが必要なデジカメより手軽か*1.ライフログ用にはこれで十分だな.便利便利.
右カーソルキーがぶっ壊れた
前もこの話書いたっけね?
リアフォって水分こぼしてもキー無反応になったりはあんまりしなくて頑丈なんだけど,砂糖山盛りの液体はさすがに厳しかった.
押せば反応はするのだがネトネトして押した後返ってこない.キートップ外して掃除するも改善せず.もっと内側のスプリングとかあるあたりまで掃除すればなんとかなるのかもしれないが分解する気にならない.
Ctrl + Shift + HJKL にアサインして頑張るもただのカーソル移動のためだけにモディファイアキーは,常用してるといちいち左手も動かす必要があって嫌になってきた.HHKB 最高カーソルキーとかバッカじゃねぇのって思ってた時期もありましたがそのためだけの物理キーが配されているメリットはやっぱりある*1.
買い換える余裕今はないけども次こそは 106S(LA0200) を入手するぞ.
タイピングらしいネタなのでついでに本日の残念賞 TWJR@qwe 常用 28.133 (ZJ).
3 lap 目で死んでからやれやれ……一応打ち切ってやるか……って感じのローテンションで行ったのだがこれで 3 位はひどい.Esc 厨なのがバレる.
インディケータを 26 秒 (ZH) にセットしていつもそれ見て打ってるから 26.5 秒くらいの記録は当然持っているように自分でも錯覚してしまうんだけど実際は 27.7 秒しか出てないからね.ZH の前にとりあえず打ち切って 26 秒台くらいは出そうね.
とか余裕ぶれる程度に記録更新自体は楽勝そうだ.言うは易しだけど.
- HHKB のカーソルキーもモディファイアキーで Fn + キーボードの右の方なんだけど,こちらは Fn を右手小指でこちょっと押さえるだけなんであんまり気にならない. [↩]
夏バテではない.いや,そうなのか?
仕事はかどらないわブログ改装も終わらないわ他の所用も放置だわで絶賛死亡中.でも next week って前エントリに書いたから正しいのか,これで.
そもそも PC の前に座る時間が以前よりずっと短くなっている. 外出する用なんてのがたくさんあるわけがないのだし,PC の前に長時間いると目が疲れるんだよーとかいう人でもないのだけど.
なんでだろうね.やはりというかメンタルな気はする.
まっさらなデスクトップやテキストエディタやコンソールや about:blank を見るとうわあああああと気が遠くなって肩の力が抜けて何もする気が起きなくなる.呆けたような表情で秒針を眺めるのが精一杯.ぶっちゃけ早く向精神薬を飲めよという感じ.飲まないけど.
数日で元に戻るのなら普通のあれだけど戻らないからね.きっかけが必要だね.何がベターだろうね.あ,向精神薬は除いてね.
そういえばコミケは最後まで悩んだ末,行かなかった. いつもの地引き網活動をするに足る資金が無いことによる. 完璧に集められないならもう行く必要ないや,といういつもの極端思考.損こそあれ得はない考え方だと頭ではわかってるんだけど直らないねぇ.
サイト内検索
ログ
最近のコメント
携帯版

PC と共通の URL で OK.




