2008年1月 Archives

« 2007年12月 2008年2月 »

書き初め

あけましておめでとうございます。
今年もよろしくお願いします。


Blogでの新年の挨拶って何となく白けた気分に成るのは僕だけでしょうか。
漫画とかでも夏や冬、クリスマスを題材にしているのには一向に平気なんだけど、これが正月になるとすごくベタなネタに感じてしまいどうにもこうにも。


それはさておき、今年のmemo.kappa-labの豊富を語っておきます。
まず月間PV
2000pv/m
次に月間ユニークユーザ
1000u/m

うーん欲張り過ぎかな。
一応昨年12月と比較
1069pv/m
月間ユニークユーザ
570u/m

Google Analyticsだとjavascriptを切ってるユーザは集計とれないから、何%かは上乗せできるかもしれないけど、それでもつくづく弱小ブログだ。なにせ一日のPVが60超えたぐらいで大はしゃぎしてるもんね。
この目標値がそこそこ影響力のあるブログからすればアリンコみたいな数字であることは承知してるんだけど、去年の1月に公開してからコツコツ書きためて最近ではようやくRSSリーダからのトラフィックやSBSの登録なんかも僅かながら増えてきて、声に成らない励ましを頂いてます。

読みにくい文章だけどこれからもおつきあいください。


                   memo.kappa-lab.com

yahooの新トップページ

βがリリースされた時点で、すぐに乗り換えたけど、やっぱり新ページはいいと思う。時代遅れのディレクトリを取っ払ってくれて本当によかった。yahooUSやらyahooKoreaはとっくにこの形に成っていたので日本はどうなってんだと思っていたがようやくです。

もう一つ、特筆すべき点が、MacIE5xをサポート対象外にしているところ。これで堂々とクライアントにMacIE5x対応なんて無駄ですよって言える。色々資料を用意しなくてもyahooが対象外ってことを伝えるだけで事足りるだろう。

しかし、なぜかsafari1.3が弾かれるのにIE5.5とこれまた老害ブラウザが含まれている。IE5.5なんかに対応させるんだったら、safari1.3に対応するなんて分けないと思うんだけど?しかもsafari2.0はTiger以降のOSを購入しなくちゃあ利用できないんだし、これはなんとか改善してほしい。

Flash屋に入れときたいフリーウェア4つ

なんかのエントリーに「○○のための△△個の方法」っていうタイトルを着けるとトラフィックが伸びる!と真しやかに書いてあったので早速実践。

Flash制作で使えるフリーソフト4点です。
その他にも色々あるけど個人的に気に入ってるところから。


1.FlashDevelop

もうこれなしではやっていけません。聞けばMacユーザの中にはパラレルにwindowsをインストールしてでもFlashDevelopを使ってるとか。英語版しかないけどシンプルなのですぐなれます。これになれるとFlashIDEのアクションパネルなんざタダのテキストエディタです。比較にならない。とにかく一押し!
http://www.flashdevelop.org/community/

2.TortoiseSVN

これも最早離れらないバージョン管理ソフト。svnなんてコマンド叩けよ!と言われても知りません。リビジョングラフやらログ一覧やら(ログからダブルクリックで該当バージョンのファイルが開ける)とにかく便利。httpsとかsshも使えるので最高。
http://www.gside.org/Gentoo/subversion/subversion_client.html

3.PluginSwitcher

FlashPlayerのバージョンを切り替えるやつ。そういえば最近あんまり使ってないけど、無いとかなり困る。縁の下の力持ちってやつでしょうか。
http://www.pluginswitcher.de/

4.FlashTracer

これはもう本当に「かゆいところに手が届く」って表現がぴったりなんじゃないかと思うFirefoxのアドオン。ブラウザ上で動作するFlashからのtraceを表示してくれます。


とまあこんなところで。

mobileWebがきたら

テレビの無かった幼少期(今もないけど!)一人の時間は何をしていたかというともっぱら漫画を読むかプラモで遊ぶか黙々と一人遊びに講じていた。思えばネクラなガキだった。

周りの奴らは何をしてたのかと言うと同様に漫画やプラモもあったが、そこにテレビやゲームが加わった。テレビもゲームもない自分にとってそれらは垂涎の的だった。

ところが最近のゲームは一人で黙々とプレイするよりは家族で楽しんだり、電車の時間つぶしとしてプレイされる事が多い。言うまでもなくそれはWiiとかDSの事だ。もちろんPS3やxboxを忘れた訳では無いが、ゲームと言うと時間を忘れて没頭したあげく宿題をやってなくて「明日風邪ひいたら学校休めるのに」みたいな事は過去の話しに成りつつある。

さて、それではゲームが撤退してしまった(一部撤退くらいにしておこう)
「黙々と没頭する一人の時間」は今誰の手にあるのか、これが問題。

この暫定王者をはっきりさせればmobileWebにもヒントが見つかるかな。

FlashDevelopでtrace()を受け取るメモ

既に前のエントリーの末尾で書いてしまったネタだけど、なんかハマりやすいみたいなので、敢えて別のエントリを立ててみた。アルバムからのシングルカット、の感じで。


SWFの起動時のウィンドウモードを「Documment」から「External」に変更してやればOK。

>Project >Properties >Output >TestMovie>Open SWF in  から。

ちなみにAIR開発のtrace()を受け取るにはここをどうぞ。


それと、Beta5を日本語SDKでコンパイルさせると、swfを終了させた後Outputパネルが終了イベントをキャッチできずに延々とループしてしまいますが、そいつはここをご参考に

AS3のparentが何故MovieClipではないのかが少しわかった

今から3ヶ月ほど前、漸くAS3を勉強し始めた頃にこんなエントリーを書いた。
parentの扱い
内容は「AS3ではparent.gotoAndPlay()が出来ない、なぜならparentはMovieClipではなくDisplayObjectContainerだから」という具合で、その解決策とかを載せていた。そして最後に「でもなぜparentがDisplayObjectContainerなのか今の理解じゃあわからんなあ~」と締めくくっていた。


そして、3ヶ月。なんとなくわかってきた!(気がする)


要するにOOP的なものがいまいち理解できてなかったのだ(今でも怪しいが)。なんとなく概念は読み囓ったものの、実際のクラス設計で継承やインターフェイスの使い方を知らなかった(今でもインターフェイスは全然使ってなかったりだけど)。ポリフォーリズムなんて本当にうわべだけだったと思う。

いまなら、なぜparentがDisplayObjectContainerなのかは表示リストの概念からそれなりに理解できる(でも神髄を掴んでいるかと言えばそうではない)。SpriteにaddChilde()したらparent.gotoAndPlay()はどう考えても無茶しすぎだろうと肌で感じる事が出来る。

そんなわけで、この仕様が至極まっとうな物であることに漸く気づくに至った。

ここら辺のOOPに対する理解の難しさや、誤解を含んだ理解はAS1→AS2→AS3とプログラミングの極北の様な道を純粋に突き進んできたからかもしれない。そろそろ別の道を覗いてみようと思う。


けどAS3で抽象基本クラスってどうやって定義してるんだろう。ビルトインクラスだけか?

MT4 install .....?

今度のプロジェクトでMT4を使うかもしれないので、MT4にUpdateしてみたが、そしたらタグが機能していない様子。困ったな。今から色々調べてみます(←勉強不足)

新しいMTはまだ慣れなくて、どこに何があるのやらよく分からん。あんまり所感をだらだら書くとボロが出そうなので素人はひっこんでおこう。

でも印象的には前バージョンよりクライアントに勧めやすい操作性になったのでは、と思う。(というかそうあって欲しい)
wysiwygエディタとか文章の自動保存など、wordPressにあって、MTに無かった利点を上手く盗んで取り入れている。


ところで今日のコーヒーはなんだか不味い。

more.. "MT4 install .....?" »

MacProは前菜扱いか...

MacWorld目前にして、MacProとXserverのアップデートのニュース


参照の記事でも触れているけど、これはMacWorldで発表されるかもしれない”極薄マック”やらその他のコンシューマ向け製品の存在を強く感じさせる。と同時に、少しでもプロ向け製品の陰が薄くならないうちに発表してしまえ!という対応があからさま。この調子でプロ向け製品はどんどん冷遇されていくんだろう。そりゃそうだ、もうApple Incだもんな。

一時期狂ったようにMacProが欲しかったけどだんだん萎えてきた。

まぁでもMacに限らず、机に縛り付けられたコンピューターの終焉は確実にやってきそうだ。新しいwebサービスとか模索するより現状のコンテンツを如何にしてモバイルに親和させるかの方が圧倒的に未来があるかもしれない。

MacBookで良いかな?

MT4雑感

とりあえずMT4の雑感を書いておこうと思う。

よくなった点。
1.自動保存してくれる!
2.wysiwygエディタがそこそこ使える
3.エントリーの「確認」が実際のwebページそのままにできる。!
4.シンプルなUIになった。

悪くなった点。
1.値段か上がった(費用対効果はいい)
2.少し遅くなった?


今のところこれといって不満はないです。全体的にはかなりよくなってきたと思う。前のUIも慣れればどうってことないんだけれど、クライアントに勧めるならこっちの方が進めやすい。geek向けのBlogツールではなく、企業向けのライトなCMSを目指した成果が現れているのかもしれない。

ただ、いつもタグの追加とカテゴリの選択を忘れてしまう。

赤っ恥

RoR(Ruby on Rails)ってなぜかわからんけど勝手にルビーオンラリーズと読んでいた。


本当はレイルズだ!


ぐわっ!顔から火が出そうだぜ!

Colin Moock のセミナー

Colin MoockのAS3セミナーに参加してきたよ。

詳しい内容とかは他のブログでレポートされると思うので(Adobe自身ブログレポーターを募集していた)かなりどうでも良い個人的な感想を書いておこうかと...

1.MacもWindowsも好きじゃ無いんだ!
質疑応答の時、「開発環境はMacですかWindowsですか?」との質問にColin氏の解答は「Macははっきり言って嫌い。でもwindowsも良くない」とばっさり。更に「どうしても使いたいソフトがwindowsにしかないからwindowsを使っているだけ。iTuneとかは好きだけどMacのファイルシステム、あれはだめだね」って感じのことを言っていた。個人的には一番印象に残った場面かも。そう、世の中にアホとバカしか居なかったとしていったいどうして選べと言うんだ。

2.Flexの環境設定がやりにくいんだ!
コードアシストや行単位の操作に関してはべた褒めしていたColin氏だったが、フォントサイズを変えるのに煩雑なコントロールパネルの操作を強いるFlex(おそらくvr3)についつい不満を漏らす。「まあ開発者向けだしね。でもAdobeサン頑張ってね」って感じのことを言ってた。ここら辺はFlexっていうよりEclipseが原因なんだろうか?悪いのはSunIBMだっ(言い過ぎ?)

3.コードアシストなしですらすら
プレゼンの半分以上はFlexなどIDEを全く使わず、Macのエディタ(多分シンプルテキスト)でコーディング。ミスタイプしそうな関数やらクラスをサクサクと手打ちしていた。これくらいは普通に出来なきゃだめかもしれないけど、やっぱスゴイ。

4.オブジェクト、関数、引数の関係は英語の文法そのまま
 " pet.eat(apple) ; "
ってのは英語の文法での他動詞SVOそのまんまなのでプログラムに通じていなくとも直感的に理解できる。と言っていた。英語圏はトクだね。

more.. "Colin Moock のセミナー" »

Evrything in the ....

なにがスゴイかというとやっぱりJobsだ。

MacBookAirの薄さもすごいけど、ついに映画のレンタルを開始してしまったJobsの意志に圧倒される。

おそらくiPodに動画再生機能が追加された辺りから(ひょっとするともっと前かも)、このプロットは明確に意識され、組み立てられてきたんだろうけど、じわじわと確実に準備を整え(iTuneStoreとかAppleTV、スタバとの提携とか)絶妙のタイミングで映画レンタルを投入する辺りがすごい。すごすぎる。

早すぎも遅すぎもせず、ずっと隠し持っていた切り札を、見せびらかしたくてウズウズするのをグっと我慢して、周到に準備を重ね、そして遂に、満を持して発表する、それこそがJobsのすごさかもしれないとふと思った。

ここに、自分たちのプロダクツで人々をあっと言わせたい!という強い姿勢を感じる。

見習わないと。

笑う門には福来たる

笑う門には福来たる

おそらくそれは真実だが、果たせるかな後世に残る大作を作り上げた作家たちはほぼ確実に幸福ではなかったはずだ。


ドストエフスキーも
ニーチェも
ゲーテも
三島由紀夫も
川端康成も
太宰治も


本物を生み出すには幸福こそ断ち切らなければならないのが世の常かもしれない。


で、あるなら。偽物でも良いと開き直りもするが


或いは偽物がいずれ、幸福にして大作の前例として認められるかもしれない。

My Mini City

myminicity.gif

もうひと月以上前に作ったフィジーの町だけど、全然人口が増えないので、ブログに貼り付けてみた。

とは言えこれで人口増加させたいのかと問われると、必ずしもそうではない。そもそもこのサービス(?)の楽しみ方がいまいちピンとこない。或いはこれもブログの様に継続し続ければ楽しくなるのかもしれないが、残念ながらそんな気もおきない。

これを見ていると「新しいサービスを流行らせるのって本当に大変だな」という気持ちばかりが起きる

new 111();

どうやら、このエントリーは111回目にあたるらしい。

個人的にはブログで「XX回目だ!」と大声で嬉しがるのはなんとなく小恥ずかしいので、控えめに祝っておきたいところ。ただ、いつも読んでいただいている読者さんに素直にお礼を言える機会もなかなかないので、改めてお礼を申し上げます。

いつも読んでいただいて本当にありがとうございます。

年始に書いていたようにこのブログのトラフィックは月間1000pv少々の極小規模なblogだけど、ダイレクトブックマークや各種RSSリーダからのトラフィックがあると「おお、常連さんがいるのか!」と俄然やる気が湧いてくる。Blogとはまったくもってモチベーションコントロールに最適な存在だ。

更に最近は一日辺りのPVも増加傾向にあって、前月比で1.5倍程度。年始に目標としていた月間2000PV(つくづく小さい)は案外あっさりクリアするかもしれない。

その一方で新規ユーザの獲得はあまり進んでいない。全体の8~9割がリピーターなので、ユニークユーザの増加率はかなり鈍化。内容的にも大衆受けを狙えるものではないので、このまま常連さんを大切にして一見さんにうつつを抜かさぬのが宜しいようで。


トラフィックをぼんやりながめていると、見慣れたIPとかを目にするとつくづく幸せだったりするが、ここら辺の気持ちをどうやって読者に伝えるかが今後の課題だ(?)。ラジオなどで、パーソナリティが「いつも聞いてくれてありがとうね」という旨の発言をしているが、あれってリスナーが思っているよりかなり感情がこもっているだろう。少なくとも知り合いの駆け出し喋り手は心の底から思ってそうだ。


話がそれてしまったが、今後も頑張って駄文を綴ろう。


追記:文中にでてくる「ここら辺の気持ちをどうやって読者に伝えるかが今後の課題だ」は真面目にもう少し考えようと思う。活発なコミュニケーションでなくても雰囲気ぐらいは伝わる方法ってないかな?

POPFORGEでドレミをならすテスト

久しぶりにPOPFORGEを弄った。

とりあえず音階表現をある程度理解しないことには先に進めそうにないので、簡単なキーボードを押すことでドレミファソラシド(#、♭なし)がなるようなサンプルを作ってみた。

http://memo.kappa-lab.com/samples/createASound_Key.html
createASound_Key.png

音が終端で「ぶちっ」とちぎれるのはAudioBufferクラスではなく、単純なSamplesクラスを使っているから。(だと思う)
AudioBufferを使ってストリームを生成すれば解決するはずだけど、やや難しいのでペンディング。

音階に関してはこちらのサイトを参考にさせて貰いました。
http://www.dai3gen.net/onkai11.htm
図表を見れば分かるように1オクターブごとに220Hzずつ周波数が増加するって事を初めて知った。いろいろ勉強になるなあ。

ソースはこちら
http://memo.kappa-lab.com/samples/createASound_Key.zip

Kick Off Meeting

某プロジェクトのキックオフミーティング(第一回目のミーティングをこう呼ぶらしい)をしてきた。

ミーティングというよりはプレゼンの気分で、資料を作ってサイトの方向性やらシステム導入、スケジューリング、ページレイアウトの提案をしてきた。正直けっこう緊張してしまったが、無事に承認をいただくことができた。

まずはキンチョーして早口で捲し立てるプレゼンターの話を熱心に聴いてくれたクライアント様に感謝。

この手の上流工程はしばらくご無沙汰だったので、今回は色々と準備したが、その中でも一番良かったのはシミュレーションかもしれない。

具体的にはできあがったプレゼン資料を片手にミーティングのイメージをしながら実際に喋りつつシミュレーションをし、気づいたことがあれば資料に書き込んでみた。ココまでは以前からもやってはいたので、今回はその工程をすべて録音してみた。そして一通り終わった後にそれを聞いてみた。

まず思ったこと。
1. 喋るの早すぎ!
2. 声の通りが悪い!
3. なんか時々冷たい印象

2番は声帯の問題なのでもうどうしようもないかもしれないが、問題は1と3だ。特に3番。1番はある程度気をつけて喋ればゆっくり喋れるのかもしれないが、3番に関してはものすごく微妙な瞬間(咳払いとかちょっとした仕草)なのでこれが難しい。改めて自分が冷たい(冷たそう)奴なんだと認識してしまった。

それでも、そのことに気づけたという点で録音はとても良かった。プロジェクトとはあまり関係のないところで今後の課題が明確になった形だ。

で、肝心のミーティング中、3の印象を与えることが無かったのかどうか。
う~ん。精進します。

Theatre Musica

sound off を実装しないとな~と言い続けてそろそろ一年が経ちそうな
愛すべきインディーレーベルのwebサイトです。

いっそリニューアルした方が早いかもだけど、結構気に入ってくれているようで嬉しい限り。

theatre_1.png


theatre_1.png

http://www.theatremusica.com/


この手のプロジェクトってギャランティなんて無かったりするんだけど、ついつい手間暇をかけてしまうのは何故だろうか。

AS3で小数点を扱うとAS2と挙動が違う

trace(1.90-1.0)
trace(1.9-0.9)

上記コードを実行して期待される値はもちろん、「0.9」「1」なんだけど、残念ながら事実は違うようだ。実際の数値は以下の様になる。

0.8999999999999999
 0.9999999999999999

なんだよこれ!
AS3でNumber、int、uintが導入されて数の扱いは改善されたはずじゃなかったのか!?
更に腹立たしいことにこれをAS2で実行すると、

 0.9
 1

と期待通りの値が帰ってくれる。もちろんAS1でもAS2と同様なのだ。どうすりゃいいんだ!?既出の問題の可能性が高いし、仕様としてそうなってるのかもしれないけど困った。

more.. "AS3で小数点を扱うとAS2と挙動が違う" »

windowsでMT4(MovableType4)をセットアップ

ローカルのwindowsにMT4をインストールしたら驚くほど簡単だった。

+だいたいの流れ+
1.Apacheインストール
2.ActivePerlインストール
3.Apacheのhttpd.conf設定
4.MT4のPerlのパスを書き換えてインストール
5.普通にMTのセットアップ


+詳細+
1.Apacheインストール
apache_2.2.8-win32-x86-no_ssl.msi をインストール
ローカル限定なのでSSLなし。
インストールで何も特別な事はしない。ひたすらYes

2.ActivePerlインストール
ActivePerl 5.8.8.822をインストール
これも特別な設定なし。ひたすらYes
モジュールの追加もしない。

3.Apacheのhttpd.conf設定
2カ所変更
その1-------
AddHandler cgi-script .cgi のコメントアウトをはずす。
その2-------
DocumentRootの
Options Indexes FollowSymLinks に +ExecCGIを追加↓
Options Indexes FollowSymLinks +ExecCGI
これでどこからでもCGIが動く。

4.MT4のPerlのパスを書き換えてインストール
デフォルトで.cgiファイルの1行目が
#!/usr/bin/perl -w なので
#!c:/Perl/bin/perl.exe -w に変える
Dreamweaverでフォルダ指定して一発変換が楽。
インストールするディレクトリはデフォルト直下
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\mt\


5.普通にMTのセットアップ
後はフツーにセットアップ。DBはSQLiteに限定される。
メールの設定とテストはしない(メールサーバがないから)


前に挫折したことがあったので面倒くさい印象があったものの、意外とすんなり入ってしまった。特にApacheの設定変更がたった2行ですんだりPerlモジュールの追加がなくて動くのが素晴らしい。
バーチャルホストで別のHDとかパーティションにMTを設置する場合はhttpd-vhosts.confの設定でOptions Indexes FollowSymLinks +ExecCGIを忘れがちなので注意。

more.. "windowsでMT4(MovableType4)をセットアップ" »

AS3でwavファイルをEmbedしたりエフェクトかけたり(要POPFORGE)

FlashIDE(FlashCS3)だとライブラリにwavファイルを追加してリンケージすることによって、Embed可能だけど、Flex環境というか.asファイルにwavファイルのEmbedは不可能。(だと思うけど違っていたら教えてください)

そこでバイナリーとして読み込んでPOPFORGEで復元、再生することにした。

派生物として、サウンドの生データが取得できるのでそれにフィルターをかけてやるとエフェクトをかけることも可能。やる気出せばサウンドへのリアルタイムエフェクトの可能性が見えるかも。

もともとはPOPFORGEでオリジナルの音源を使って、ストリームを生成させることが目的だったんだけど、Voiceクラスを解析するのがかなり大変そうなので、泥臭いがシンプルな方法を模索しているウチに上記の様な事になった。いつの日かドップラー効果やリバーブ、ディストーションをグリグリかけられるようになるかも。

フローは以下の形。
1.バイナリーとしてwavを読み込み、Class化
2.バイトコードを取得
3.fromByteArrayにバイトコードを渡す
4.再生
*エフェクトのサンプルとして1オクターブ高くなるeffect()が付随


package
{
  import de.popforge.audio.output.Audio;
  import de.popforge.audio.output.SoundFactory;
  
  import flash.display.Sprite;
  import flash.media.Sound;
  import flash.utils.ByteArray
  import flash.utils.Endian
  

  public class SirenASound_REF extends Sprite
  {
    
    //バイナリーとしてwavを読み込み、Class化
    [Embed(source="wav/siren_short.wav", mimeType="application/octet-stream")]
    public static const Song:Class;
    
    //wavファイルヘッダー部分のoffset
    public static const WAV_HEADER_END:uint = 44
    
    public function SirenASound_REF(){
      init();
    }
    
    private function init(): void {
      //バイトコードを取得
      var bytes:ByteArray = getByteArray()    
      var array:Array = byteArray2Array(bytes)
      
      //effectの有無 1オクターブ高くなる
      //array = effect(array)
      //var bytes2:ByteArray = array2ByteArray(array)
      
      //fromByteArrayにバイトコードを渡す
      SoundFactory.fromByteArray(bytes,Audio.STEREO, Audio.BIT16, Audio.RATE44100, onSoundGenerated );
    }
    
    private function onSoundGenerated( sound: Sound ): void {
      //再生
      sound.play();
    }
    
    private function getByteArray():ByteArray {
      var bytes:ByteArray = new ByteArray()
      bytes.endian = Endian.LITTLE_ENDIAN
      var wavData:ByteArray = new Song() as ByteArray
      bytes.writeBytes(wavData, WAV_HEADER_END)
      bytes.position = 0    
      return bytes;
    }
    
    private function byteArray2Array(bytes:ByteArray):Array {
      var array:Array = new Array()
      while(bytes.position < bytes.length-1){array.push(bytes.readShort())}      
      return array;
    }
    private function array2ByteArray(array:Array):ByteArray {
      var bytes:ByteArray = new ByteArray()
      bytes.endian = Endian.LITTLE_ENDIAN
      for each(var index:int in array){bytes.writeShort(index)}      
      bytes.position = 0
      return bytes;
    }
    
    private function effect(sample:Array):Array {
      var array:Array = new Array()
      for (var i:int = 0; i < sample.length;i+=2){
        array.push(sample[i])
      }
      
      return array
    }
  }
}

* http://qurage.net/labo/as2html/ でコードフォーマットさせていただきました

サンプルファイル

AS3でwavをループ再生(要POPFORGE)

前回に引き続いてPOPFORGEを使ってwavファイルのループ再生してみた。


http://memo.kappa-lab.com/samples/sirenAStream_REF.html

sirenAStream_REF.png
*ご注意:いきなり音が鳴ります

例によってFlashCS3を使えば何の造作も無い事だけど、今後のサウンドエフェクトの可能性を切り開くためにもPOPFORGEのbufferクラスを使って再生。何故かAudioBufferクラスに音源データを渡すとき、そのままではなく一つおきにデータを渡す。結果的にデータが圧縮されていることなって音質が下がって居るんじゃ無いかと思うが、詳しい解析をしたわけではないのでよく分からない。訳は神のみぞ知るってところかな。

フローは以下の形。
1.バイナリーとしてwavを読み込んだSirenクラスからサンプリング配列を取得
2.AudioBufferインスタンスを生成してサンプリング配列を参照
3.AudioBufferサンプリング配列にSirenクラスのサンプリング配列を渡す
4.3の時に配列の終端で折り返す
5.再生

と言う感じ。前回は一つしかクラスが無かったけど、今回は音源データを別クラス(Sirenクラス)にしてある。ついでに波形をモニタリングするクラスもくっついているのでややウザイコードになったかもしれない。

サンプルコード
http://memo.kappa-lab.com/samples/SirenASound_REF.zip

噂のPHP

巷では久々にPHPが話題をかっさらっているみたい。

自分でPHPを書いたのは、小規模な掲示板の様なシステムとか、ActionScriptから投げたバイナリーデータの処理だったので、これくらいの規模だとちょうど良かった。プライベートワーク以外に結構大規模な開発でPHPのなんちゃってメンテナーをしたこともあったが、コードをフルスクラッチしたデベロッパーが有能だったおかげで、ほとんど問題はなかった。

けどそろそろサーバサイドの処理はRubyにしようかしらと考え中。
何となくRubyだとPHPを書く上で悩んでいた細々したところが解決されそうなきがしているからだ(まだ勉強はじめなのでよく分からないが)。

やっぱりPHPって「お手軽に書けるけど、ぐちゃぐちゃで読めない」という印象が強い。

PHPの功罪を要約すると「お手軽に書けるけど、ぐちゃぐちゃで読めない」という事に行き着くと思うんだけど、ActionScript(主に1.2)をフレームアクションの中でぐだぐだに書き殴っていた頃を思い起こすとかわいいもんではないかと思えて、不思議。

また、PHPの功罪というかPHPユーザーの特性として「他の言語から積極的に学んでいない」という言葉が出ていたが、これまた耳が痛い台詞だ。自分の言語スキルは「なんちゃってActionScript」と「読み囓ったPHP」と「盗み聞きしたJava」くらいしかないからだ。

AS1、AS2、AS3で3言語出来ます!って言うのはだめかな?だめだよな。

「再構築」いらずのBlog

Livedoorブログが「再構築」不要のBlogの開発に取り組んでいるらしい。

参照記事

個人的にはMTの再構築はそんなに苦じゃない。まだエントリーが100~200の間だからかもしれないが、そもそもBlogは再構築がつきまとって当たり前という感覚で、それをなくしてしまおうと考える人がいることにビックリした。

と同時に自分はまだまだユーザエキスペリエンスとかおもてなしとか言ってても口先ばっかりだな~と痛感。自分が関わっているプロジェクトで同じような要求がクライアントやユーザから出てきたとき、叶える事ができるだろうか?否、叶えようと努力できるだろうか。

ユーザに優しくかつイノベーティブな感覚を磨かないといけないな。自戒。

RSS + Contuct

  • rss
  • email

Credit

Copyright (C) 2007 kappa-lab.com.
All Rights Reserved.