C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

食塩と隕石と珈琲と

今考えている事のメモ。NaCl(食塩)とMeteor(隕石)でマイゲーム基盤を作ろうかと言う事。
ゲームのアイデアではなくて基盤技術の概要に関するメモだけど。

NaCl; Natice Client

  • 概要
    • ウェブブラウザーでELFバイナリを安全に実行するC++処理系
  • 執筆現在
    • g++ 4.4.3 使用可能
      • (対応プラットフォーム:x86_64/x86/ARM)
    • OpenGL ES 2.0 使用可能
    • embedによるHTML5文書への組み込み
      • (NaCl要素とHTML要素は共存可能)
    • ELFバイナリ と JavaScript のメッセージング可能
      • (NaCl要素とHTML要素はJavaScriptを通じてイベント駆動に連動可能)
      • (NaCl要素はJavaScriptを通じて外部リソースとAJAXも可能)
  • 将来性
    • LLVM/clang++ バックエンド対応予定
    • LLVM/clang++ 3.1 は美しく機能的で完成にかなり近いC++11コンパイラーらしい
    • WebGLもWebCLもJavaScriptを大前提としている以上はコンパイルされたC++コードの性能的な安定性にはそうそう接近しようがない
    • NaClがコケたところでウェブブラウザーを介さない真のネイティブバイナリへの移行は低コストに済む。
      • (ブラウザーというプラットフォームに拘りたいプロダクトならWebGL/JSへの移植とか必要だろうけど個人的にはどうでもよい)

Meteor: JavaScript web framework

  • 概要
    • サーバーからクライアントまで手広くカバーするJavaScriptによるWebサイト統合フレームワーク的なもの
    • keyword: real-time

CoffeeScript: JS Compiler

Node.js/npmが既に使えるのなら:

% sudo npm install -g coffee-script

READMEもろくに読まずにとりあえず、"Coffeeならfunctionが->にできるよ"という小耳に挟んで記憶に残っている情報と、基本的にはJavaScriptという事から闇雲に処理系を動かしてみるや:

% coffee
coffee> a = (a,b) -> a+b
[Function]
coffee> a(1,2)
3

先ず、`coffee`を実行したらインタープリターが動作した事に感動したし、次には「こうかしら?」と思った挙動を示してくれて少なくとも私には学習コストが非常に低いであろう事が予想された事も嬉しい。今後は積極的にCoffeeScriptを使って行きたい。

とは言え、JavaScriptやCoffeeScriptの様なスクリプト処理系を私は好きではないし、動的に生成する必要が無い部分までフレームワークだからという理由だけで一緒くたに扱いたいとは全く思っては居ません。基本的には処理系にネイティブなバイナリや、ウェブブラウザーにDOMを構築させる為にならHTML5などを最速でデリバーできる状態をデプロイして措けるのが理想郷なサーバーというものだと考えています。

そうそう、最後にいつもの一言を遺しておこう:

「Webはコンパイルされるべきである( ・`д・´)」