Tweet
こんばんは、五十川です。 symfony 1.3/1.4で、それまでのPropelに代わってデフォルトのORMとなったDoctrineには、組み込みのキャッシュ機能があり、クエリーの実行結果データを手軽にキャッシュすることができます(これは「結果キャッシュ」と呼ばれます)。また、実行結果だけではなく、DQLに基づいて生成されるSQLをキャッシュする仕組みもあり、これを利用することで、DQL解析のオーバーヘッドを回避して処理の高速化を図ることも可能です(こちらは「 クエリーキャッシュ」という紛らわしい名前で呼ばれます)。 Propelの場合はそれ自体にはキャッシュ機能がなく、必要な場合は自力で頑張る必要がありました(Propel 1.5で、query_cacheビヘイビアが提供されるようになりました)。Doctrineの場合には当初から用意されていたキャッシュ機能が、特にsymfony 1....
Tweet
新年あけましておめでとうございます、五十川です。 PHPデベロッパー向けのAmazon Web Services(AWS)のリソースはhttp://aws.amazon.com/php/にまとめられていますが、そのArticles & Tutorialsカテゴリーにある、Introduction to AWS for PHP Developersという記事は、AWSの主要サービスの概要と、PHPによるその操作を学ぶチュートリアルで、ここで取り上げられているサービスに初めて取り組むPHPデベロッパーには格好の入門となっており、ここではこのチュートリアルを紹介したいと思います。 また、このチュートリアルはAmazon純正のライブラリを利用していますが、AWS用のライブラリには様々なものがあり、この記事の最後ではそのひとつ、CloudFusionを紹介しようと思います。 なお、以下のチュ...
Tweet
こんにちは、五十川です。 RjDjというiPhoneアプリをご存知でしょうか。既によく知られたアプリですが、音声入力やタッチパネル、加速度センサーなど、iPhoneのデバイスインタフェースを使って、ユニークな音響をインタラクティブに作り出すことができるアプリです。と言っても、RjDj自体はその上で動作するアプリケーションのプラットフォームであり、さまざまなアプリケーションをインストールすることで、それぞれに異なるサウンドが体験できます。 RjDj上で動作するアプリケーションは「シーン」と呼ばれます。 以下のビデオの冒頭で流れる映像の音声は、Eargasmというシーンによる録音で、緩やかに流れる背景音に、深いエコーがかかった子供の声が重なり、なんだか夢の中にでも迷い込んだかのような雰囲気が醸し出されます。このシーンは、iPhoneのマイクが拾った音をリアルタイムに加工しており、それを加速度セ...
Tweet
こんばんは、五十川です。 ご存知の通り、5月以降に発売開始されたNTTドコモの携帯電話の殆どには、新しいiモードブラウザ 2.0が搭載されています。iモードブラウザの大幅な仕様の拡張はi-XHTMLの登場以来ということになりますが、iモードの登場から10年経って登場した新しいブラウザは、i-XHTMLのときよりも遥かに大きな、過去最大の変化を遂げています。 iモードブラウザ 2.0の詳細は、ドコモ公式のiモードブラウザ 2.0にまとめられています。以下では主要な変更点を確認していこうと思います。 キャッシュ容量拡大 1画面あたり読み込めるデータの最大量が、従来の100Kバイトから500Kバイトに、大幅に拡大されました。ご存知の通りiモードの場合この値は、画像などの外部リソースもすべてひっくるめた値ですが、iモードブラウザ 2.0では、新たにCSSファイルやJavaScriptファイルも外部...
Tweet
こんにちは五十川です。 先日、gooホームとmixiアプリが立て続けに公開され、いよいよ日本でもOpenSocialが注目を集めるようになりました。そこで今回は、これからOpenSocialアプリケーションの開発を始めるにあたっての基礎的な内容をまとめてみたいと思います。 OpenSocialとは Google Code - OpenSocialの冒頭には、OpenSocial は複数のウェブサイト間で使用可能な、ソーシャル アプリケーションの共通 APIの定義であると書かれています。 あるOpenSocial対応のウェブサイトで動作するプログラムは、他のOpenSocial対応アプリケーションでも動作する — 例えばmixiアプリ用のプログラムは、gooホームやMySpaceなどでもそのまま動作する可能性があるというのがOpenSocialの重要な点です。もちろんウェブサイト...
Tweet
ウノウでは特に最近、積極的にエンジニアを採用しています。 ご興味のある方は求人ページから、ぜひご応募ください!! おはようございます、五十川です。 先日GmailがGearsに対応してオフラインサポートを開始したのはご存知の通りですが、このとき久しぶりにGearsという名前を聞いたというかたも多いのではないでしょうか。 2007年5月のデベロッパーデーで鳴り物入りで登場したGears(当時の名称はGoogle Gears)でしたが、その後Gearsを積極的にサポートしたという話を聞く機会は決して多くありませんし、実際ウェブを検索しても決して多くの情報が見つかるわけではありません。 先日社内の定例のコードレビューで、他にネタがなかったのでしょうがなくGearsのデモアプリを作ってみたのですが、やはりGearsそのものに対する反応は芳しいものではありませんでした。 ちなみにそのとき作ったデモア...
Tweet
ウノウでは特に最近、積極的にエンジニアを採用しています。 採用ページをご覧になり興味のある方、ぜひご応募ください!! こんにちは、いそがわです。 PHPでアニメーションGIFを操作しようとすると、GDはアニメーションGIFをサポートしていないのでImageMagickを利用することになるかと思いますが、いかんせんImageMagickはメソッドの数がベラボーで分かりづらく、Imagickに至ってはまだまだドキュメントがスッカスカで、間違ってたりもするためなのか、意外とアニメーションGIFのリサイズ処理に混乱が見受けられるようなので、ご存知のかたには今更な話題ですが、あらためて。 ImageMagickでアニメーションGIFを“お手軽に”リサイズする基本的な手順は以下のような感じです。 シーケンスのイメージの“結合”(coalesce) ...
Tweet
こんばんわ五十川です。 しばらく前になりますが、ソーシャルスクラップブックclippのモバイル版をリリースしました。cippモバイルではドコモ以外は、セッション管理にCookie(のみ)を利用することにしたのですが、そのときCookieドメインではまりました、というお話。 PC向けclippのドメイン名は、トップページなどのユーザ共通ページは「clipp.in」、ユーザ個別のページは「{username}.clipp.in」(例えばclipp-info.clipp.in)となっています。ケータイサイトをマルチなサブドメインにする例はあまり多くないと思いますが、clippモバイルでは、ルーティング直すのめんどくさいという怠け者な理由で、PC版のドメイン名がそのまま使えればいいなと思って取り掛かりました。しかし、その目論見はあっさりと破綻することになるのでした。 以下の内容は手元の数多くない端...
Tweet
おはようございます五十川です。 ウノウでは近頃、ソーシャルスクラップブックclipp、関連会社サノウによる広告配信サービスNeoAd、そして携帯ゲームまちつく(あ、これはまだ正式リリースじゃないや)と、立て続けに新サービスをリリースしてますが、今回はそのうちclippについて、そういえばちゃんと紹介してないや、ということで、制作担当への聞き込みをお届けします。要するに宣伝。 そもそもclippってなに? 「スクラップブック」です。もしくは「ネタ帳」。リアルのネタ帳って、見聞きしたもののメモと、思いついたアイデアの両方が分け隔てなく記録できて、そこに写真を貼ったり、新聞とか雑誌の切抜きを貼ったりできるじゃないですか。従来ウェブのネタ帳といえば、ブログやソーシャルブックマークでまかなってきたと思うんですけど、ブログは柔軟に過ぎて、情報の整理には長けてない面があるし、ソーシャルブックマークは、逆...
Tweet
五十川です。 携帯サイトの見栄えをシミュレートするウェブアプリ作りました。と言っても、実際に作ったのはかれこれ半年以上前で、手直ししてから公開しようと思ってたら、結局「guid=ON」を付け足したくらいであとは放置だったので、さすがにいい加減晒そうと。 任意のヘッダでリクエストして、レスポンスの絵文字とか変換してサイトの見栄えを確認するというものですが、これはそもそもExt JSをいじってた頃に、Ext JSでこういうの作ればいい感じになるんじゃね?ということで、丁度2.0がリリースされた頃にデモ用に作ったものなのでした(なので、かれこれ半年以上前) 実機テストの代用になるわけでは、もちろんありませんが、絵文字も含めたマルチキャリアでの見栄えを手軽に確認したいときなどに、わりと便利に使えてたりします。 スクリーンショット 機種ごとのプリセットのヘッダグループをYAMLファイルに書いておいて...
Tweet
五十川です。 ウノウではただいま「clipp(クリップ)」と名付けた新しいサービスを試験的に公開しています。これはソーシャルブックマーク+ミニブログといった体のもので、ページのURLやタイトルに加えて、文章の抜粋や画像のサムネイルなどに、自分のコメントを添えて登録できるというもので、気になったページを“切り貼りして”保存し、他者と共有する、“ソーシャルスクラップブック”といった趣のサービスです。 ※ clippは試験公開ということで現在は招待制とさせていただいておりますが、興味をお持ちいただいたかたは、clippのユーザ登録ページからメアドを登録しておいていただくと、招待状を送付させていただけると思いますので、是非どうぞ。 さて、clippでは画像を扱えるという特徴を活かして、画像をiTunes/iPodのCoverFlow風に表示する機能を...
Tweet
isogawaです。 題名のままのコードを書く用事があったので、できたものを晒します。とはいえ、ググれば多くの先達が既にさまざまなコードを書いておられ、目新しいものではないんですが。ついでなんで、大昔の「ISBN=~」を含めて、自分の知ってるURLのパターンを洗いなおしてみました(それでも、まだ他のパターンがありそうな気がしますが…)。 例えば、「The Elements of Style」という書籍の個別商品URLとして思いつくものには、以下のようなパターンがあります(細かいバリエーションは適宜省略)。 http://www.amazon.co.jp/exec/obidos/ASIN/020530902X http://www.amazon.co.jp/o/ASIN/020530902X http://www.amazon.co.jp/exec/obidos/ISBN=020530902...
Tweet
isogawaです。 以前紹介したJavaScriptフレームワークExt JSのメジャーバージョンアップである2.0の正式版が、先週末にリリースされました。 Ext 2.0が提供する機能については、以下のサンプルページをご覧いただくのが手っ取り早いでしょう。 Ext 2.0 Samples さて、Ext 2.0は従来の1.xから大幅に刷新されており、残念ながら1.xとの互換性は高くありません。おそらく1.x用に書かれたコードの殆どは、そのままでは2.0で動作しないでしょう。以下にマイグレーション用のドキュメントが用意されていますが、かなりの量で、ひと通り目を通すだけでも大変です。 Ext 1 to 2 Migration Guide 以下では、自分がこれまでに作成した1.x用のコードに対して2.0へのマイグレーションを行ってみた際に気付いた点をまとめてみました。ただし、以下の内容...
Tweet
isogawaです。 さまざまな形式の動画を携帯電話向けに変換して配信するサービスでは、変換処理をFFmpegで行っている例が多いと思われます。しかしFFmpegが出力する3GPPファイルは、NTTドコモiモーションの、ストリーミング(プログレッシブダウンロード)方式での再生はできません。QuickTime Proや携帯動画変換君で作成した動画はストリーミング再生も可能ですが、変換処理をLinux上で行っている場合には、これらを利用するわけにもいきません(できないことはないですが)。ではどうしたらいいでしょう?という小ネタ。 なにが問題なのか +--ftyp +--free +--mdat +--moov +--mvhd +--trak | +--tkhd | +--mdia +--trak | +--tkhd | +--mdia +--udta 3GPPの...
Tweet
Extは、ウェブアプリケーションを構築するための、クライアントサイドのJavaScriptフレームワーク(公式サイトのFAQより)です。日本ではまだ実際の利用例はあまり多くないようですが、たぶんに日本語のドキュメントがまだそれほど多くはないからではないかと思われ、今後利用事例は増えていくだろうと思われます。 Extの真骨頂は高機能でデザインの洗練された、(直ちに利用可能な)レディメイドのユーザインタフェースウィジェット群です。Extは「アダプタ」として、prototype.jsやjQuery、Yahoo! UIといったJavaScript拡張ライブラリを利用する設計ですが、現在は独自のアダプタも用意され、サードパーティのライブラリに依存しない実装も可能です。 現時点での安定版はバージョン1.1ですが、既に、大幅な機能強化が図られたバージョン2.0のアルファ版が公開されており、以下のページで...
Tweet
isogawaです。 MP4や、その派生である携帯電話向けの3GPP、3GPP2などのファイルフォーマットはボックス(あるいはその基になったQuickTimeでの用語のAtom)と呼ばれるデータブロックで構成されます。ボックスによってはその内部にさらにボックスが入れ子になるツリー構造になっています。 以下はNTTドコモの「MP4対応iモーション」ファイル(3GPP)の冒頭部分です(16進コードと文字が混在してて気持ち悪いあたりは気にしない)。 table.mp4box th, table.mp4box td { font-family:Monospace; text-align:center; } table.mp4box td.mp4box-size { color:inherit; background-color:#354; } table.mp4bo...
Tweet
こんばんわ、isogawaです。 ウェブサービスのブログパーツを提供しようと思ったときに、ブログサービスによっては利用可能なHTMLタグが制限されていて、ブログパーツの貼り付けタグをどういったものにするべきか悩む場合があります。そこでいくつかのブログサービスについて、ブログパーツ類の扱いがどうなっているかサクっと調べてみました。大雑把な調査なので、間違ってたりするかもしれません。お気づきの点があれば訂正させていただきますので、お気軽に突っ込んでいただければ幸いです。 Flash貼り付け用HTMLタグの利用可否 まずは、ブログパーツの多くで利用されているFlashオブジェクトを表示するHTMLタグの選択肢としては、OBJECT/EMBED、SCRIPT、そしてIFRAMEがあると思いますが、以下はこれらのタグが各ブログサービスで利用できるかどうか(裏技による例外は除く)の一覧表です。 ...
Tweet
こんばんわ、isogawaです。 PHP 5.2.2以降には、Windows版限定で一部のスキモノには注目の機能が追加されています。GDライブラリの開発者Pierre-A. Joyeによって実装された、imageGrabScreenとimageGrabWindowのふたつの関数がそれで、それぞれ画面全体と個々のウィンドウをキャプチャーするものです。 これを使えば、例えばInternet Explorerの画面をキャプチャーして、ウェブページのスクリーンショットやサムネイルを簡単に作成できたりします。ウェブページのキャプチャーはすでに色々な方法が知られていますが、標準機能として用意されたことで、(既存の手法と比べて性能面での優劣はさておき)実にお手軽に作成できるようになったわけです。 てなことで、これで遊んでみようと思うのですが。まずもちろん、Windows版PHPの5.2.2以降は必須です...