タグ

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

  • (iOS 4) バックグラウンド動作するラジオアプリを作ってみる - Radium Software

    プログラム関係の仕事をするときはたいてい、ネットラジオを使って部屋の中にBGMを流している。最近のお気に入りはSomaFMのチルアウト/アンビエント系専門チャンネル"Groove Salad"だ。いい感じで生活の邪魔にならない音楽を絶え間なく提供してくれる。 つい先日ようやくiPhone 4を導入したので、できればバックグランドで動作するネットラジオアプリを入れてGroove Saladを垂れ流しにしたい。ただ、「バックグラウンドで動作するネットラジオアプリ」で無料かつ使いやすいものというのは、なかなか存在しないようだ。 まあ、無いなら自分で作ってしまおう。 ストリーミング再生 iOS 4を使ってネットラジオ的なものを作るのは難しくない。AV Foundation FrameworkのAVPlayerクラスを使えば簡単に実現できる。例えばGroove Saladを再生するのだったら、以下の

    (iOS 4) バックグラウンド動作するラジオアプリを作ってみる - Radium Software
  • 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
  • openFrameworksでiPadアプリを作る - Radium Software

    openFrameworksは、なんだかごちゃごちゃっとしているけれど、使って楽しいフレームワークだ。Processingの思想を受け継ぎつつも、「もしProcessingがC++だったら、もっと色々なことが派手にできるぜ!」という奔放さを持ち合わせているような感じがする。 openFrameworksにはWindows版、Mac版、Linux版の他に、iPhone版が用意されている。iPhone版は少しビルド設定を変更すればiPadアプリの制作に利用することもできる。 上のビデオは、試しにopenFrameworksを利用して作ってみたiPadアプリの例だ。オーディオ入力レベルを算出し、それに比例した量で画面上のテキストを歪ませている。openFrameworksを使ってこんな感じのスケッチを作るのは非常に簡単だ。このスケッチのソースコードも60行程度しかない。 ごちゃっとしていて、ふわ

    openFrameworksでiPadアプリを作る - Radium Software
  • ミニ・ブログとしてのBuzz - Radium Software

    Google Buzzはいまいち使いどころの分からないツールだ。Twitterのようないわゆる「マイクロブログ」のサービスなのかなと思い触ってみたところ,色々と面倒な部分が多く,すぐに触るのをやめてしまった。 ところが最近,GoogleのDeWitt Clinton氏が,主なブログの場をBuzzの方に移したと言っていて,この「Buzzをブログとして使う」という考え方が面白いなと感じた。初めて個人的に納得することのできるBuzzの使い方を見つけた気がする。 ということで,僕もブログのような使い方を少し試してみている。たぶん飽きたら止める。 感想としては,ブログほど格的でもなく,Twitterのようなマイクロブログほど簡易的でもなく,その中間のような,言うなれば「ミニ・ブログ」とでも言った感じかなと思う。悪く言えば,格的にブログを書くほどの機能もなく,それでいてTwitterのような気軽さ

    akkun_choi
    akkun_choi 2010/03/14
    ありかも
  • 足枷になったレコード会社 - Radium Software

    上の動画は今月初めに公開されたOK Goの新曲"This Too Shall Pass"プロモーションビデオだ。OK Goの曲に合わせてルーブ・ゴールドバーグ・マシン――いわゆる「ピタゴラスイッチ的なもの」が大アクションを繰り広げる。後半の盛り上がりが非常に印象的な作品だ。この動画は公開されてから猛烈な勢いで再生されていて,13日の時点で750万再生に達している。 この動画はそれ自体が非常に面白い作品だけれど,実はその裏には複雑な事情が潜んでいる。 簡単なまとめ OK Goが契約しているレコード会社(EMI)はPV動画の外部埋め込みを許可しない方針をとっている。しかし,外部埋め込みが無ければバイラル的な広がりは起こりえないということを知っているOK Goのメンバー達は,この制約を迂回するために,State Farmという保険会社と交渉し,この会社の広告という形でPVを制作することにした。制

    足枷になったレコード会社 - Radium Software
    akkun_choi
    akkun_choi 2010/03/13
    「恐らくState Farmは,このOK Goの一件を通して,同社がネットや若者の文化を理解していること,また彼らのようなアーティストを支援するぐらいの「クールさ」があることをアピールしようと考えたのではないかと思う」
  • Code Bubbles - 統合開発環境の新しい形 - Radium Software

    Code Bubbles: Rethinking the User Interface Paradigm of Integrated Development Environments 上の動画は,ブラウン大学のAndrew Bragdon氏らによって開発された統合開発環境"Code Bubbles"のデモだ。プログラミングと統合環境に興味のある人は,とにかく一度見てみて欲しい。とてもインパクトのあるデモだ。 現行の統合開発環境は,いまだにファイル単位でのエディットを基としており,それが様々な不便を生み出している。Code Bubblesはその不便を解消するべくデザインされた,まったく新しい形の統合環境だ。バブルと呼ばれる概念を導入することによって,ソースコードのナビゲーションを,より視覚的かつインタラクティブなものへと進化させている。 残念ながら現状ではこのデモが公開されているのみで,他

    Code Bubbles - 統合開発環境の新しい形 - Radium Software
    akkun_choi
    akkun_choi 2010/03/11
    いいなー
  • 行動の感染と人数の関係性 - Radium Software

    上の動画は少し前に話題になったものだ。動画紹介サイトなどで見たことがあるかもしれない。とある音楽祭における一場面。最初は一人の男が妙な踊りを踊っているだけだったのが,2人,3人と加わるにつれ人数の増加が加速度的になり,最終的には辺りの人を全員巻き込んだ現象になる,というビデオ。3人目が加わった後からの急激な増加が鮮やかで面白い。 この現象にちょっと似た実験を,ミルグラム実験で有名なスタンリー・ミルグラムが行っている。 その実験は,街の雑踏の中にただ上を見上げているだけの人を配置したとき(見上げている先には特に何かあるわけではない),そこを通りがかる人の何割がつられて上を見上げるか調べたものだった。実験結果によれば,1人の人間が上を見上げていた場合は4割程度が「つられた」のに対し,4人の人間が上を見上げていた場合は8割近くが「つられた」のだという。 この実験の再現を試みた映像が YouTub

    行動の感染と人数の関係性 - Radium Software
  • プログラミング言語の特徴を視覚的に比較する - Radium Software

    The Computer Language Benchmarks Game のページでは,計 32 個のプログラミング言語処理系のベンチマークを集計して,そのパフォーマンスを比較している。そして最近,このページに新たなプロットが追加された。単純にパフォーマンスだけの比較を行うのではなく,パフォーマンスと「コードの長さ」を関連付けて比較を行うというものだ。上はそのプロットから一部を転載したもので,全体はこのページで見ることができる。 このプロットでは,縦軸が処理時間(上にいくほど遅い),横軸がコードの長さ(右にいくほど冗長)に割り当てられている。このようなプロットを行うと,多くの言語は3通りの偏り方を見せる ― 左上(簡潔だけど遅い)に偏る「スクリプト系」,右下(速いけど冗長)に偏る「システム系」,そして,左下(速くて簡潔!)に偏る「理想系」だ。ちなみに,右上(遅くて冗長)に偏る言語は無い…

    プログラミング言語の特徴を視覚的に比較する - Radium Software
  • Impromptu: Scheme ベースのライブコーディング環境 - Radium Software

    Impromptu は Andrew Sorensen 氏によって作成されたライブコーディング環境だ。言語としては Scheme をベースとしており,それに映像や音楽を扱うためのライブラリ群と,リアルタイムにコードを記述し実行するためのエディット環境が統合されている。 実際に触ってみると,関数型言語とライブコーディングの親和性が,なかなか良いことが分かってくる。エディターの出来も良く,リアルタイムにコードを書きつつ実行するという作業をスムースに流れるようサポートしてくれる。 上のビデオでは, Impromptu のサンプルプログラムを参考にしつつ,簡単なアルゴリズム作曲のコードを組んでみた。ちなみに,ビデオ中に登場する "my:play" 等の関数は,作業を簡略化するためにあらかじめ用意しておいた関数なので悪しからず。 いくつかのデメリットもあるものの(最大の弱点は Mac OS 版しか存

    Impromptu: Scheme ベースのライブコーディング環境 - Radium Software
    akkun_choi
    akkun_choi 2009/09/19
    いいなー自由に使ってみたい
  • Change blindness - 変化の見落とし - Radium Software

    Change blindness (変化の見落とし;変化盲)と呼ばれる現象に関する実験。実験に参加する人々は,受付で同意書にサインするよう求められるが,その同意書を渡す人物と,その後に実験の説明書を渡す人物は,瞬間的に入れ替わっている。違う顔,違う髪型,違う服装,違う声 ― 相違点は多くあるにも関わらず,ほとんどの人はその変化に気が付かない。実に75%の人が変化に気付く事ができなかったのだという。比較的大きな変化でも,人間が普段行っている情報の選択から外れたものに関しては,気付く可能性が低いということが分かる。 (via Cognitive Daily)

    Change blindness - 変化の見落とし - Radium Software
  • 抽象化されたゲームたち - Radium Software

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

    抽象化されたゲームたち - Radium Software
  • オーディオプログラミング言語 ChucK - Radium Software

    オーディオプログラミング言語 ChucK を使って組んでみたサンプルプログラムの映像。 最初のプログラムは,1度,短3度,5度,短7度の音(つまりマイナーセブンスコードの構成音)からなるランダムなシーケンスを延々と鳴らし続けるもの。 二番目のプログラムは,構成音は最初のプログラムと同じだけど,ただランダムに鳴らし続けるのではなく,簡単な繰り返し構造を持たせるようにしたもの。最初のプログラムよりも,いくぶん音楽的な要素が加えられていると思う。 ChucK は,こういった類の実験を行うには非常に適した言語だと思う。上の二番目の例では,プログラムを動かしている最中に変更を加え(繰り返しの構成を変えてみている),それを「オン・ザ・フライ」で再実行している。同様のことは SuperCollider などでもできるけれど, ChucK は仕様の簡潔さと,統合環境 (miniAudicle) の手軽さが

    オーディオプログラミング言語 ChucK - Radium Software
  • 質より量に学ぶ - Radium Software

    Coding Horror - Quantity Always Trumps Quality Art & Fear という芸術家向けのの中に,こんなエピソードがある ― ある陶芸クラスでのこと,最初の授業において,教師は生徒をふたつのグループに分けた。一方のグループは作品の「量」によって評価を行うとし,もう一方のグループは作品の「質」によって評価を行うとした。 これはどういうことかというと,「量」グループの生徒たちは,提出した作品の量のみによって評価が下される。作品の総重量が50ポンドに達していたらA評価,40ポンド台ならB評価,というように。それに対して「質」グループの生徒たちは,たったひとつの最高の作品を提出すればいい。その作品の出来に対して評価が下される。 すべての授業が終わり,さて評価は,となったとき,少し奇妙な事実が判明した。提出された作品のうち,最も高い質を持つものは,すべて

    質より量に学ぶ - Radium Software
    akkun_choi
    akkun_choi 2009/01/22
    考えるより、手を動かせ
  • 単純で正しそうなものが正しいとは限らない - Radium Software

    Coding Horror: The Danger of Naïveté 配列の中身をランダムな順序にシャッフルするコードを書きたい。単純でいいから分かりやすくて間違いの無いコードを書こう。例えば,こんな感じに…… for (int i = 0; i < cards.Length; i++) { int n = rand.Next(cards.Length); Swap(ref cards[i], ref cards[n]); } これは単純で分かりやすい! でも残念! このコードは間違っている。シャッフル後の順序に偏りが出てしまう。正解はこちら。 for (int i = cards.Length - 1; i > 0; i--) { int n = rand.Next(i + 1); Swap(ref cards[i], ref cards[n]); } ぱっと見て違いが分かる? イン

    単純で正しそうなものが正しいとは限らない - Radium Software
    akkun_choi
    akkun_choi 2008/12/09
    前者はn^n、後者はn!。前者だと同じキーが再度選ばれる可能性がある
  • 「アルファベット順」の発明 - Radium Software

    research!rsc rsc: Alphabetical Order いわゆる「アルファベット順」の概念が一般的に使われるようになったのは,案外と遅くのことらしい。 1286 年に書かれた文書に「単語全体をアルファベット順にソートする」という,今で言う「アルファベット順」の概念が解説されているのを初めてみることができるという。当時やそれ以前の文書においては,単語の先頭一文字や二文字だけでソートされることが多かったらしい。 初めての英語の辞書 "A Table Alphabeticall" (1604 年)においては「アルファベット順」が使われているものの,慣れていないせいか,最初の方のページでは順序のミスが多い。それより後ろの部分ではそれほどミスが無いというから,やはり徐々に慣れていったんだろう。 恐らく,日語においても,単語全体を「あいうえお順」に並べる方式が使われるようになったの

    「アルファベット順」の発明 - Radium Software
    akkun_choi
    akkun_choi 2008/12/09
    へー、まぁめんどくさかったんじゃない?w
  • 抽象概念と数学学習 - Radium Software

    Real-life examples may not be best for teaching maths - BPS Research Digest 身近な具体例の利用は数学学習の助けにならない ― いきいき健康 NIKKEI NET 子供たちに算数を教えるのに,実世界の例を使うのは,いい方法のように思える。分数を教えるのにピザを使ってみたり,小数を教えるのに瓶と水を使ってみたり,とかね。紙の上で「これはこういうものだから,とにかくこうなるんだ」なんてふうに叩き込むよりも,目の前で実際に起こる出来事として見せた方が,実感をもって学ぶことができるんじゃないか……と。 ただ,こういった手法を数学の領域にまで持ち込むのは,あまりいい方法とは言えないかもしれない。オハイオ州立大学の Jennifer Kaminski らが大学生に対して行った実験によれば,抽象的な記号などを使って数学問題を教えら

    抽象概念と数学学習 - Radium Software
    akkun_choi
    akkun_choi 2008/06/17
    具体例→抽象よりも、抽象を先に学ぶ方が応用がきく
  • Cuckoo Hashing - Radium Software

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

  • メールは「伝わったつもり」メディア - Radium Software

    人と何かやりとりをするとき,メールでやりとりをするよりも,直接面と向かって話し合った方が,より正確なニュアンスを伝えることができるというのは,みんなが知っていること。 だから,「正確なニュアンスを伝える」という点において,メールは弱いメディアだと言える。 でも,メールにはさらに困った点がある。それは,「ニュアンスが伝わった」と勘違いしやすいということ。メールはニュアンスを伝えにくいけど,頑張れば伝わるに違いない! ……って頑張っても,結局,伝わらないんだよね。 ある社会心理学者による面白い実験がある。 Egocentrism Over E-Mail: Can We Communicate as Well as We Think? 被験者を集めてペアにして,用意された文面を使ってふたつの異なるニュアンス(「真面目に」「皮肉っぽく」)を相手に伝えるという作業を行ってもらう。被験者の半分はメール

    メールは「伝わったつもり」メディア - Radium Software
  • 1