タグ

ブックマーク / kzr-2.hatenadiary.org (15)

  • Grand Central Dispatchでお手軽並列処理 - Radium Software

    Grand Central DispatchはMac OS X 10.6およびiOS 4に追加された新技術だ。 このGrand Central Dispatch(以下"GCD")は、プログラマー以外にその効用を説明することが難しい技術だ。漠然と「マルチコアプロセッサを効率的に使うための技術」と言っておくこともできるが、それじゃあなんでiOS 4に搭載されてんの?という話になってしまう。 これをプログラマー向けに説明するならば、次のような感じになるかと思う。 GCCを拡張してクロージャ的な機能を追加してみたら、非同期処理とか並列処理とかすげー書きやすくなったんで、ちょっとその辺りまとめてみました。 僕の個人的な意見としては、単にAppleのコンパイラー技術者たちがC言語ファミリー(C/C++/Obj-C)にクロージャを追加したかっただけなんじゃないかな、と考えている。 とりあえずマンデルブロ

    Grand Central Dispatchでお手軽並列処理 - Radium Software
    RanTairyu
    RanTairyu 2010/09/06
  • iPhone/iPadゲーム開発ガイド - Radium Software

    O'Reilly Japan - iPhone/iPadゲーム開発ガイド 来月9/3にオライリー・ジャパンより発売される「iPhone/iPadゲーム開発ガイド」に、日語版の特別付録記事を寄稿させていただきました。 このは、ゲーム制作に内容を絞ったiPhoneアプリ開発です。他のiPhoneアプリ開発とは違って、トラディショナルな2D・3Dゲームを制作するのに必要な事項だけを集中的に解説しています。ちょっとユニークなコンセプトのです。 僕が寄稿した記事では、Box2Dを使った簡単なアプリの制作を行っています。最近、色々なところでBox2Dを使いまくっているのですが、いちばん使いでがあるのはiPhone上でのカジュアルゲーム制作だと思っています。このでも触れておくべきだろうと考え、執筆した次第です。 上の写真は原著の英語版ですが、日語版も似たような表紙になっています。書店で見か

    iPhone/iPadゲーム開発ガイド - Radium Software
    RanTairyu
    RanTairyu 2010/08/24
  • Bonjourを使う - Radium Software

    イベント用のアプリを制作するにあたって第一に考えたのは、なるべくUIを作らずに済まそう!ということだった。どんな環境においても、とにかくUIの実装は面倒だ。今回は自分さえ使えればいいというプライベートアプリだから、手を抜こうと思えば限界まで手を抜くことができる。願わくば単一のステートしか持たないような仕様にしたい。 ひとつだけ懸念としてあったのは、ネットワーク上での接続先を指定するにあたって、どうしてもユーザーからの入力が必要とされるかもしれない、ということだった。接続先をソースコード内に決め打ちしてしまってもいいけれど……いや、さすがにそこまでは…… しばらく考えたのちに妥協案として思いついたのは、Bonjourを使う方法だった。Bonjourを使ってネットワーク上にあるOSCサービスを検索し、最初に見つかったホストに即接続する。僕の使い方では複数のOSCサーバーを立ち上げる事は無いから

    Bonjourを使う - Radium Software
    RanTairyu
    RanTairyu 2010/07/26
  • 日経ソフトウエア6月号に寄稿しました - Radium Software

    日経ソフトウエア 2010年6月号にゲームプログラミングの入門者向け記事を寄稿しました。 入門者向けの記事を,というオファーで引き受けたのですが,特集記事の限られた誌面の中で,当に基礎中の基礎に触れるだけで終わってしまってはつまらない――最小限の内容で最大限に面白さが得られるものって何だろう,と考えた結論としてProcessingと2D物理エンジンJBox2Dという組み合わせに挑んでみることにしました。 記事の内容は当に入門者向けなので,ある程度プログラミングの経験のある人には敢えておすすめしません。ただ,このProcessingとJBox2Dという組み合わせが手軽に使えて面白く,かつ強力なものであるのは確かです。Processingが好きな人はレパートリーのひとつとして加えてみてはいかがでしょう?

    RanTairyu
    RanTairyu 2010/04/28
  • 抽象化されたゲームたち - Radium Software

    The Linear RPG Sophie Houlden の The Linear RPG は,最低限の構成要素によって構築された RPG だ。プレイヤーは直線の上を進むか戻るかすることができる。直線上を移動していると,勝手に戦闘が発生したり,勝手に経験値を得たりする。直線の各所に配置されている点は「町」で,跨ぐことによって体力を回復することができる。ストーリーは背景で勝手に流れているので,読んだり読まなかったりすればいい。 このゲームは,いわゆる「一道な RPG」の抽象的な表現とみることができる。非常にシンプルな内容であるにもかかわらず,それなりの達成感を得ることができるとの意見も存在する。 Progress Quest Eric Fredricksen の Progress Quest は,プレイヤーのステータス情報のみによって構成された RPG だ。プレイヤーはキャラクター作成を

    抽象化されたゲームたち - Radium Software
    RanTairyu
    RanTairyu 2009/09/17
  • Arduino Shield: ミーティングコスト時計 - Radium Software

    「シールド」とは Arduino では「シールド」と呼ばれる類の拡張基板が用いられることがある。「シールド」とは Arduino のピンソケットと同じ位置にピンを持つ基板のことで,これを Arduino に挿して接続することによって, Arduino の機能を様々に拡張することができる。 スイッチサイエンスでは,このシールドを自作するための「バニラ」シールドを販売している。これは,シールドの規格に合わせて設計されたユニバーサル基板の一種だ。これを使えば,様々な拡張回路を簡単に自作することができる。 この「シールドの自作」が,実際にやってみると独特の面白さを持っていることが分かる。限られたスペースの中に機能を詰め込むための工夫が面白い,というのがまずあるし,シールドを入れ換えるだけで Arduino の機能を様々に変化させることができる,という点も面白い。まるでファミコンのカセットを入れ換え

    Arduino Shield: ミーティングコスト時計 - Radium Software
    RanTairyu
    RanTairyu 2009/08/14
  • strchr.com - Radium Software

    strchr.com は,西シベリア在住のプログラマー Peter Kankowski 氏が綴るプログラミング TIPS 集 Wiki だ。主に C と x86 アセンブリと Win32 における最適化の話題について触れている。比較的一般性の高い話題から構成されているため,プログラマーであれば大抵の人にとって参考になる部分があるのではないかと思う。 例えば各種のハッシュ関数について性能の比較を行っているページなどいかが? このページの結論として勧められているのは MurmurHash 2.0 というアルゴリズム。僕はこのアルゴリズムをこのページで初めて知った。

    RanTairyu
    RanTairyu 2009/07/20
  • Guitar Hero はゲーム機を必要としない? - Radium Software

    Photo: RXAphotos VideoGamer.com - Harmonix: music games could abandon consoles Guitar Hero と Rock Band の開発会社として有名な Harmonix 社の Josh Randall は言った ― 将来的にゲーム機は持ってなくてもいいようになるかもしれない。ギターが TV へ直接に接続できるようになれば,それでいいのだと。 Xavix 系の「TV に繋げて遊ぶ体感ゲーム」の類を連想するといいのかもしれない。またこの場合は, TV に繋がなくてもある程度遊べるようになっているといいと思う。モバイル性を与えることによって生まれる遊びもありそうだからだ。 これを実現するのに必要な技術は既に揃っているし,市場も存在することが実証されているから,誰かがやる気になればすぐにでも実現しそうなビジョンだと思う。

    Guitar Hero はゲーム機を必要としない? - Radium Software
    RanTairyu
    RanTairyu 2009/07/15
  • Arduino は 8-bit の世界 - Radium Software

    Arduino で使われている Atmel 社の AVR マイクロコントローラーは 8-bit RISC アーキテクチャを採用している。僕は8ビット CPU で C 言語を使うのは初めての経験だったので,これだけでもちょっと面白いことだと思った。 AVR 用 C コンパイラーでは, int 型の大きさは16ビットに設定されている。8ビット CPU なんだから int も8ビットなんじゃないの?と思うかもしれないけれど, int はポインター型と互換でなくてはいけないから*1,やはり16ビットになる。でも AVR の汎用レジスターの大きさは8ビットだから,結果として「int は扱いの重い型」という具合になる。 例えば次のようなコードがあるとする。 int mulTen(int x) { return x * 10; } このコードをビルドした後に avr-objdump を使ってディスアセン

    Arduino は 8-bit の世界 - Radium Software
    RanTairyu
    RanTairyu 2009/06/21
  • Context Free - デザイン文法で遊ぶ - Radium Software

    Context Free は,CFDG と呼ばれる文脈自由デザイン文法を使って画像を生成するためのソフトウェア。語弊を恐れず砕いて言えば「お絵描きプログラミング環境」の一種だ。とてもシンプルなプログラムから,恐ろしく複雑な絵や,細密な絵を作り出すことができる。 以下は,とりあえずの習作。「プログラミング」とは言えども,普段のプログラミングとはまったく異なる部分の脳細胞を使っているような感覚があって,とても新鮮。命令型言語の発想で染まりきってしまった頭をリフレッシュするには最適!かも! include i_pix.cfdg startshape HOGE rule HOGE { H_5by5 {x 0 } O_5by5 {x 1.2} G_5by5 {x 2.4} E_5by5 {x 3.6} HOGE {s 0.75 y 1 r 30} } startshape Origin rule O

    Context Free - デザイン文法で遊ぶ - Radium Software
    RanTairyu
    RanTairyu 2009/02/05
  • 5分間オーディオプログラミング:ChucK入門 - Radium Software

    オーディオプログラミング言語 ChucK のチュートリアル的デモ。画面が見難いのは仕様。Mac でスクリーンキャストをするには何を使うのがいいんだろう? 一点だけ補足。このデモでは miniAudicle という統合環境を使っている。ChucK を単体でダウンロードしてもコマンドラインツールしか入ってなくて面倒なので注意。miniAudicle には元から ChucK が同梱されているので,これさえインストールすればすぐに遊ぶことができる。

    5分間オーディオプログラミング:ChucK入門 - Radium Software
    RanTairyu
    RanTairyu 2009/02/04
  • ChucK 日記:マイクトリガー - Radium Software

    ChucK でマイク入力をトリガーに使う実験。 ノート PC のマイク入力を拾い,一定の入力レベルを超えていた場合に,Aマイナースケール上の音を2個ランダムに選び,和音を構成して鳴らす,というもの。マイクで拾った音はエフェクトをかけたうえで出力することにより,それ自体が打楽器っぽく使えるようにもしてある。リズム感がイマイチなのはご愛嬌。 バックでうっすらと鳴っているベースは,なにげに重要。これが無いとキーが分からなくなって,コード感が出なくなってしまう。このベースも ChucK で鳴らしている。 こんな感じの,トリガーを拾って自動演奏するネタは大好物。ただし,今回のプログラムのように入力をダイレクトに出力へ繋いで使う場合は,正帰還を作らないように注意しなくちゃいけない。耳が潰れるよ!

    ChucK 日記:マイクトリガー - Radium Software
    RanTairyu
    RanTairyu 2009/02/03
  • 未初期化メモリを使う方法 - Radium Software

    research!rsc: Using Uninitialized Memory for Fun and Profit N個のフラグを扱う場面があるとする。まず,こんな感じで書き始めることになると思う。 bool flags[N]; for (int i=0; i<N; ++i) flags[i]=false; もしこのとき,Nがものすごく大きかったら……フラグをクリアする処理だけで,結構な時間をってしまうかもしれない。 そんなときのために編み出されたのが,上のエントリーで紹介されているアルゴリズム。二つのテーブルを組み合わせて使うことにより,メモリを未初期化のまま使うことを可能にしている。 未初期化のメモリへのアクセスなんて,それ自体が不正なことのように感じられるかもしれないけれど,たまには未初期化のまま使ってみるのもオツなものですよ……という話。実用性については,正直なところあまり無

    未初期化メモリを使う方法 - Radium Software
    RanTairyu
    RanTairyu 2008/12/03
  • Cuckoo Hashing - Radium Software

    ハッシュテーブルからエントリーを検索する処理は,一般に定数時間で済むとされている。つまり,どんなにエントリーが増えても検索の速さは変わらない,ということ。データ構造の教科書には必ず載っていることだね。 でも実際には,ハッシュの衝突が起こった場合に,速度の低下が発生する可能性がある。例えば,一般的なチェイン法(オープンハッシュ)だと,衝突したエントリーに関して線形検索を行うことになるから,衝突が多ければ多いほど,定数時間からは遠のいてしまう。 この速度低下を防ぐ方法はいろいろある。なかでも cuckoo hashing (カッコウ・ハッシング)は仕組みが面白い。こいつは,エントリーの検索を必ず定数時間で済ませてくれるという優れものなんだ。 Cuckoo hashing では,2つのハッシュ関数と,2つのテーブルを用いる。ここでは,2つのハッシュ関数をそれぞれ h1, h2 として,2つのテー

    RanTairyu
    RanTairyu 2008/06/01
    「……と,こんな感じの cuckoohashing,見ての通り挿入処理にかなりのクセがあるのだけれど,検索が必ず固定」
  • YAML 1.2 - Radium Software

    YAML 1.2 Ensconces and Envelopes JSON - hackety.org why さんより YAML ワーキングドラフト 1.2 のお知らせ。 YAML 1.2 の目玉は JSON との互換性が正式にサポートされていること。 JSON は YAML のサブセットという扱いになって,すなわち YAML 1.2 に対応すれば自動的に JSON 対応にもなるという美味しい話。 ところで, YAML って使ったことある? Ruby 界隈では比較的出番が多いのかな。個人的には,数年前に XML の代替物を探していたとき,はじめて YAML と出合った記憶がある。その頃はまだマイナーな存在で,サポートの弱さを理由に導入を見送ったんだ。今ならどうかな……。 それにしても,いつのまに XML はこんなにも冴えない存在になってしまったんだろう。 YAML は「human-rea

    YAML 1.2 - Radium Software
    RanTairyu
    RanTairyu 2008/05/26
    「これはYAMLがhuman-readableであるというアピールでもあるのかな。」
  • 1