ActionScript 3.0 , AIR , FLEXからCocoa, OpenGL
1 May
自分への備忘録的なメモです。
iPhoneアプリ開発で、sqliteに対してFMDataBaseを使う場合、
select : executeQuery
他(delete, update, create table, insert..) : extecuteUpdate
です。
さっき間違って使っていて、[db close]しようとするとそこでロックしたような状態で動かなくなってしまいました。
1 May
結構前になってしまうのですが、4/18-4/19の2日間、湯河原にてiPhoneアプリ開発合宿#2を行いました。
メンバーは、kara_dさん、gnueさん、allnightappsさん、kirara_397さんと僕(mmlemon)の5名で、幹事はkara_dさんでした。
宿泊先近辺はこんな感じです。

宿泊地の岩本旅館。とても風情のあるところでした。


今回は当然ですが、ネット(e-mobile)が使える環境でした。
今回も各自自分の作りたいアプリを作るという形式で、実際にアプリを作られて操作感などをテストされていた方、ウェブと連携させるアプリを作られている方で、サーバー側のロジックを作られた方、またはiPhone OS 3.0の機能について技術調査されていた方、これから作ろうとするアプリのコンセプトを考えるかた、と本当に一人一人がいろんな事をやっていて日頃一人で開発している時はあまり意識していなかったところに気づかされることもあり、大変有意義な時間を過ごす事ができました。
僕はというと、最近どはまりしていたところがあったのですが、allnightappsさん、gnueさんの力を借りて簡単に解決できました。
やっぱりこうやって同じところに集まって合宿することは明日からも頑張ろう!という良い刺激にもなるし、合宿の日までに或る程度形にしないといけない!と自分を追い込むこともできるので、これからも続けたいな、と思いました。
で、月も変わった事ですので、第三回の予定を立てようと思います。
http://123.writeboard.com/8464cc38ec43064f5/v/show/6745677
pass: ipdc09
です。
ご興味もたれた方はtwitterのアカウントなどご連絡先などを添えて追記して下さい。
あるいは、twitterで@mmlemonまでDMいただければと思います。
26 Feb
2009年2月25日に開催された、第31回Flash OOP 勉強会に行ってきました。

場所:
サイバーエージェントビル1F セミナースペース
4万円ほどで作れるマルチタッチディスプレイということで、マルチタッチのデバイスを自作して、ActionScriptをUIとして使っていました。
iPhoneとかで最近マルチタッチの話題が増えてきていたので、どの様にしてマルチタッチの機能を実現しているのか、実際の制作時の話しを含めて聞きたかったので行ってきました。
実現方法は、sakusan様のブログに説明していらっしゃいましたのでご興味のあるかた是非どうぞ。
簡単にはWebカメラで映像を受け取り、tbetaいうソフトが解析してsocketでAS3にタッチの情報を送る、という仕組みの様です。
AS3でタッチイベントを扱いやすくするためにMulti-Touchライブラリを自作されており、
・TouchManagerクラス:Touchを管理するクラス
・TouchEventクラス:触ったときに発生するイベント
・Fingerクラス:触った座標(0〜1の相対座標)、touchを一意にするためのIDを所有するクラス
を持っていて、TouchEventクラスのインスタンスがfingerを持っているので、Touchイベントが発生したときにイベントハンドラ内部で
e.finger.id
e.finger.x
e.finger.y
と記述することで触られた点を知る事ができるというものでした。(e = TouchEvent)
実際に触る時間がいっぱいあったので触ってみたのですが、

でかい。
タッチ可能な領域が大きいということは、iPhoneの様にはいかず、タッチする人数が多くなる可能性があり、コンテンツを作るときに気にしないといけない問題が沢山あるのでどのようにタッチイベントの制御を行えばユーザーが意図した動きにるように作れるのかというのは結構難しい問題であるな、と感じました。
finger.idとタッチイベントが発生した座標をとって、或る程度の範囲内なら同じ人物の動作とみなすという判定が必要になるのかな?実際に作ったわけではないので想像でしかありませんが。
後は、このマルチタッチのデバイスを作ること自体が結構むずかしそうな気がしたので、どこかの段階でハードウェア屋さんと協力して新しいデバイスを次々と作る事ができると面白い展開があるのかも?とか想像していました。
このデバイスをみたり触ったりしているときに、感触を再現することができれば面白いなあなんて思ったのですが、これって音圧とか使うと少しは再現できたりするのかな?この辺の研究は一度やってみたいです。
この様なマルチタッチのデバイス+コンテンツを業務時間外で作り上げる力にはただひたすら感心するのみでした。本当にご苦労様でした。これからも面白いコンテンツを見せていただける事を楽しみにしています。
ってかうらやましいっす!
補足2:
サイバーエージェントさんって、こういうのも作ってたんですね。すてき。

18 Feb
さて、先日2009.02.14-02.15の間、自分のちょっとしたつぶやきから始まった『iPhoneアプリ開発合宿』に行ってきました。
場所は箱根、強羅 一の湯。
http://www.ichinoyu.co.jp/gora/
twitter上で呼びかけ、twitter上でやりとりしている方や知り合いの方合計5人で開催されました。
参加者は実際にiPhoneアプリを作っている人だけで、普段はなかなかきくことができないObjective-Cの話をする事ができました。
今回の合宿は、あくまで各自作りたいもの、やりたいことがあって、同じ場所でそれぞれの目標に向かって一日作りましょう、という主旨でした。
それぞれが作った(作ろうとした)アプリについてはどこまで何を書いてよいのかわからないので、大まかに書いておくと、
で、僕はここ最近取り組んでいるOpenALを使ったアプリの開発を続けました。(完成にはたどり着けなかったですが、そこそこ進めることができました)
なんと『インターネットが使えない』という問題があったものの、豊富な経験とバックグラウンドを持っているメンバーが集まったおかげで、各自メインテーマが違っていたり、ネットが使えなかったりしながらもみんなで協力しながら開発を続けることができ、いい刺激になりました。
特に、appleのサンプルソースがいかに優れているかという事を実感しました。
また、チェックイン15:00のチェックアウト12:00であることもあり、夜中まで頑張っていました。
途中で温泉につかったり、飲める人はお酒を呑んで開発を続けたり。意外とお酒を呑んでもみんな開発を続けていたのがとても印象的でした。
何より、みんなで集まってiPhoneアプリ作りができる、という環境が今まで無かったのでとても濃く、充実した時間を過ごす事ができました。
これからiPhone合宿が色々と開催されたり、この会も第二回目が開催されますが、iPhone開発している人と沢山であって、良い刺激を受けたいと思っています。

夜中の風景。広い部屋に5人なのでそれぞれ自分のスペースで作業してました。
飲酒後ですが意外にもエンジンがかかってました。

合宿 朝の風景
そして朝。Emobileが赤いのが何とも残念ですね。(EMobileが圏外という事です)

箱根登山鉄道
箱根登山鉄道。スイッチバックを堪能しまくりでした。
また次回も開催予定ですので、今回参加された方&興味のあるかたは是非一緒に合宿しましょう!
参加された方へ:初幹事でいろいろと御迷惑おかけしてと思いますがありがとうございました。これからもよろしくお願いします。
18 Dec
今回は前回のpostに引き続きscilabについて。
scilabには、コマンドラインからサウンドをならす関数である、playsndが最初から定義されていて、変数でサイン波とかを用意してplaysndに突っ込むと音がなる、という仕組みなのですが、Macの場合はなぜだかそのままでは使う事ができません。
本当は、http://science6.2ch.net/test/read.cgi/kikai/1068735555/108n-
に書いているようにすればplaysndを使えるようになるらしいのですが、僕の環境ではできなかったので、代わりに自分でplaysnd関数もどきを定義しよう、と考えました。その手順からテストするまでを記述します。
当然、Macであることを前提とします。
1 playsnd.sciを開く。
playsnd.sciはscilab.appを右クリック(Control+クリック)し、「パッケージの内容を表示」を選択、その後、「Contents/Resources/macros/sound/playsnd.sci」と進み、ファイルをテキストエディタか何かで開く。
すると、どうやらplaysndは
しばらく眺めると、12行目あたりからが怪しい、とわかります。(理由は、12行目のelseに対応するif文に、”MSDOS”と書いているから、12行目以降はWindows以外を指しているんだろうな、と検討をつける事ができます。だってMac OS XってBSDベースでしょ。)
ここを見ると、「/dev/audio」と書かれているところがあります。
![]()
が、まずこの階層は、デフォルトではないと思いますし、なんか別のアイコンが表示されていて、/devを作るのは難しいと思うので、ここでは、/audiodevというフォルダを作り、そこにオーディオファイルを作成します。
次に、なぜか僕の環境ではwavファイルを扱うsavewave, rwaveなどが使えなかったので、前回のポストでも使った、.auファイルを生成してならすことにします。
.auファイルの書き出しに関しては、まさに前回のauwriteを使うのですが、では再生はどうすれば良いでしょうか。
幸いにもシェルぽく使えるunix関数があるので、コマンドラインで音を鳴らせるプログラムと.auファイルを指定する、という方針にします。
ここではコマンドラインからオーディオファイルを鳴らすプログラムとしては、afplayをつかう事にします。
afplayに関しては、ここが詳しいです。(こちらはOctaveでの例ですね。)
で、afplayにパスを通します。(.bash_profileとかをいじって下さいね。)
これでコマンドラインからオーディオファイルを鳴らす事ができるようになりましたので、あとは独自に定義したplaysoundという関数を作成します。
それでは、playsound関数を作成しましょう。
といっても、playsnd関数をちょこっといじるだけです。
16 Dec
scilabでのオーディオファイルの書き出しについて。
Windows環境では、wavが標準なので、swaveとか、rwaveなんてコマンドがあり、このコマンドに値を渡すとファイルの書き出しやら読み込みを行えています。
書き込みを例にとると:
swave(’ファイル名’, [書き出す対象となる変数], [書き出す周波数]);
ですが、Macの場合に標準でついている関数は、.auファイルを読み書きするので、
auwrite([書き出す対象となる変数], [書き出す周波数], ‘ファイル名’); // 拡張子は当然、”.au”
となります。
引数の順番が違うのね。
29 Nov
本当にものすごく久々の投稿になってしまいました。
先日、11/26に行われた、Spark勉強会で、Dynamic Sound Generationの発表をしてきたので、その資料をアップします。
(※再生には音楽ファイルを必要なので、各自用意して下さい。)
「フーリエ変換を使わない、エフェクトのかけかた」というタイトル通り、信号処理には本来フーリエ変換は欠かせないものですが、フーリエ変換の話しになると一気に敷居が高くなる(というか自分が今勉強している状態なので、この様な発表になりました。
ただ、やはりフーリエ変換を使えていない&勉強途中での発表になってしまったので、波形が途切れてしまっているところがあるようで、ぷつぷつと途切れる音が結構聴こえてしまいます。。。
あくまでご参考程度にしていただければと思います。
[ファイル構成について]
SoundGeneration.mxml:ラジオボタンやスライダーがついているView + 実際に音を鳴らすファイル
model/SoundObj.as:Dynamic Sound Generationを使って音楽を再生したり、エフェクトをかけたりするスクリプトを記述しているファイル。
SoundObj.asに関しては、mxmlでも使いやすいように、IMXMLObjectインターフェイスを実装しています。
[SoundObj.asの仕組み]
_currentEffectというプロパティを切り替えて、どのエフェクトをかけるのかを選択します。
extractメソッドを呼び出すたびに、bufferプロパティにデータを蓄えています。
これを使って、ディレイや逆再生を実現しています。
なお、逆再生に関しては、こちらが大変参考になります。
23 Jul
さて、7.22はadobeにてspark勉強会でした。
会社を早めに出勤して、そうそうに向かったのですが、若干の遅刻。
やっぱり時間は苦手だなあ。
到着すると、Adobeの方からFlash Playerやpixel Benderなどの紹介がありました。
pixel Benderは是非試してみたいのですが、あいにく僕が持っているのはMacBookなので、まだ試す事はできなさそうです。。
MovieClipだけでなく、動画にもエフェクトがつけれるらしいですし、さらには噂では音にもエフェクトをつけられるという話しを聞いているので、とても興味があるのですが。。
Flash Player10は、Dynamic Sound Generationや、縦書きテキストの対応など、とても期待をしております。
ただ、いづれも最先端過ぎるのか、文献が少ないので習得するのは大変そうですね。
あと、FlashのSEO対策は、外部XMLとかも検索対象にしてくれるようだ、という話しを聞けたので、今後FlashはSEOに弱い!という通説が覆りそうで、楽しみです。
で、発表会。
はじめは、主催者でもある、yossy@beintaractiveさん。
Spark Projectの今までの経緯と、Actionscriptで疑似スレッドを実現する、ActionScript Thread Library 1.0 (そうめん)の紹介をされていました。
非同期処理を処理の流れ通りに記述できたり、割り込み処理や例外処理など、使いこなすとかなりASの開発が便利になりそうでした。
次は、seagirlさんの「Genius Framework」のご紹介。
シンプルで使い勝手が良さそうでした。Flexの方は一度触られてみてはいかがでしょうか?
あとは、コマンドラインでスケルトンコードを作ってくれる機能は、かなり便利なんじゃないかと思っています。
つぎは、mutsuさんのFrocessing。
テキストの扱いとか、3Dとかが比較的書きやすそうなのと、これで覚えれば本家Processingも使えるようになりそうですので、一度触ってみたいですね。
つぎは、arkwさん。
今まで全く考えていなかったような深い、深すぎるフレームについての話しが聞けて、すごく勉強になりました。
そして、最近Dynamic Sound Genrerationに興味を持っている僕が特に楽しみにしていた、
どこかでみたようなおもちゃから繰り出される音には、ただただ感激するのみでした。
勉強になります!
これがspark projectにコミットされているだなんて。すごいですね。
あまりにも文献が少ないサウンド系の情報を充実させよう!と思っていらっしゃるようです。
僕も何か力になれればと思うのですが、なかなか壁は高そうです。
サイトは、ksakaiさんの発表。
Swfを埋め込む時のタグについてや今後の方向性など、詳しいレベルでご説明いただいて、とても勉強になりました。
とってもためになる勉強会で、満足しつつ、2次会へ。
うーん。反省ですわ。。かなり気持ち悪い事を言っていたような気が。。。
しまった。
でも楽しかったです。
AIRとしょこたん。
なんか自分のやるべき事が見えた気がしました。
AIRでなんかしないとなあ。
お断り:
タグとかカテゴリーについては、無視して下さい。
21 Jul
7/21、Kayacさん主催の「ごはんとFlash 2杯目」に行ってきました。
場所が鎌倉は由比ケ浜、DONBURI BEACH CAFE bowls @鎌倉・由比ガ浜海岸でした。
http://www.crocs-bowls.com/access/
最近やろうとしては苦労していたSound周りをすでにやっていらっしゃる方や、興味のある方、システムの人やデザインの人、Flash界の著名人の方達といろんな方が参加されていました。
bowlsさんのおいしいごはんを食べつつFlashの話しなどをする、という僕にとってはこれ以上ない幸せなイベントです。
で、最後にプレゼントコーナーがありまして、
ART-Meterさんで販売している作品や、
Kayac代表の柳澤さんの書籍など、素敵な品物が次々とプレゼントされているのを見ながら、
「どうせ自分はこんなのはあたらないのよね」
とか、
「元気玉があたったら僕の夢を叶えてもらおう(*)」とか考えていたのですが、当然あたらないまま、最後へ。
発売したばっかりの、『Adobe Flash CS3 詳細!Actionscript 3.0 入門ノート』(大重美幸 著)!
全然想像もしてなかったので、驚きながらも興奮しながら頂きにステージへ。
なんと本人様からの手渡し。うれしいですね。
さらにはコメントも求められ、取り乱してしまったのですが、
「でかっ」とかおいしいところ持って行った、と行っていただけたので、個人的には大満足でした。
Flashでちゃんとなんか作りますね。

前回のごはんとFlash、さらにはおかわりと参加させて頂いていますが、本当にいいイベントを開いていただいて心から感謝いたしますよ。Kayacさんをはじめとする主催者の皆様に。
さらには昨日は京都でも開催されていて、そちらも盛り上がったようです。
このようなつながり感とか、デザインよりの人とシステムよりの人がFlashを通して一緒に話しができること、さらには音楽の人とかいろんな人とFlashというアプリケーションを通じて交流ができる、この流れがきっと(しっかり調査したわけではありませんが)他の言語とかにはない、魅力だな、と感じています。
もちろん他の技術とかも楽しいし大好きですが、こういう交流が生まれるのは本当すごいことだと思います。
ほんと本日出会えた皆様、ありがとうございました。今後ともよろしくです。
あと、
こういっといて何なのですが、最近はiPhoneの勉強会やりたいなあ、って思ってるんですが、やっぱり「Cocoa勉強会」に参加するべきですよね?
iPhoneのCocoaは、GCとかないみたいなので(Mac OS X 10.5になって、GCが搭載されるようになったようです。)
*:ここで書くと気持ち悪い人、と思われそうなので控えておきます。
12 Jul
PHP4のサポートが終了してから、結構な時間が経ち、レンタルサーバーでもPHP4を打ち切るところが出てきましたが、
変更点の一つが、
ってことは、http経由でごにょごにょしている人には、file関数とか、fopenとかに問題がでる恐れがあります。
それを回避するには、様々な方法がありますが、一つには、socket通信する、という方法があります。
使い方はこんなふうです。要はPHPでtelnetしてる感覚ですね。
ちなみに、以下の例では、80番ポートと決めうちしてアクセスしているので、サイトによっては別途ポートを指定する必要があります。
$domain = "www.hi-farm.net"; // 対象ドメイン
$file = "sample.php"; // URL以下のパス(GETも使えます)
$fp = fsockopen($domain, 80, $errno, $errstr, 4); // 80番ポートに接続
$out = "GET /{$file} HTTP/1.1\r\n";
$out .= "Host: {$domain}\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
stream_set_timeout($fp, 4);
while(!feof($fp))
{
$file_data0 .= fget($fp);
}
fclose($fp);
セキュリティうんぬんはわかるので、PHP側での対応はわかるけど、php.iniでしか変えれないのよね。。。
レンタルサーバーやっている業者さんは、単に「変更されますので準備しろ」だけでなくて、テストする環境を用意してくれよ
って思います。。。
ぐちってしまった。。。