初めまして! 初ITブログポストを書かせて頂いてます、テイラーと申します。よろしくお願いします。
ご存知ない方々がいるかもしれないのですが、最近(18日~19日)幕張メッセで東京ゲームショーがありました。他のブログは最新の人気タイトルまたはキャンペーンガールの写真や記事とかを結構書いてると思うのでもうちょっと知られてないとこを紹介したいと思います。それはForum8社が開発したUC-win/roadという社会的にメリットの高い「ゲーム」です。

運転中
私が試したのは車みたいな機械で、高速道路での車の運転のシミュレーションです。しかもスコア付き!コントロールはとっても難しく少しアクセルを踏むだけであっという間に80キロ以上超えてしまいます。機械自体が揺れたりしてましたが走ってた感覚があまり感じなかったです。
全体的に思ったのが初めて車を運転する前に今自動車学校にあるシミュレーションよりもリアルに練習が出来ます。ただしそれで運転が出来るようになるかと言われたら絶対に出来ないと思います。それ以外にもForum8社は町のビルや道路などの3Dデザインを簡単な操作で作る事も出来リアルタイムにシミュレーションが行える最先端のソフトウエアを開発しています。ただ、こういうのはもう必要ないかもしれない。Googleworldは近いうちにそのようなものを開発するような気がします。だからと言ってForum8社の努力は無駄ではないと思いますのでぜひ頑張って貰いたいです。
現在AndroidMarketから弊社のMusicFlyが配信停止中となっております。
MusicFlyをお探しになられた方々には、大変ご迷惑をおかけいたしました。
申し訳ございません。
弊社側にしてみても突然の配信停止でして、その理由について問合せをしているのですが
いまだ回答をいただいておりません。
また、これと同時期にJASRAC様から音楽データの取り扱いに関して問合せをいただき
現在、正式に協議中であります。
なお、これらの問題が解決いたしますまで
弊社ホームページなどからアプリをダウンロードできるようにするなどの対策もいたしません。
正式なサービスとして再開できるまで、しばらくお待ちください。
ご理解、ご協力下さいますようお願い申し上げます。
Webを作っていて、「このタグをコピー」ボタンはよく作ります。
HTML/JavaScriptのみでは、IE以外のブラウザでクリップボードにコピーする機能は対応できないため、基本的にFlashを使うことになります。
それを簡単に実現できるライブラリが、ZeroClipboardです。
使い方は簡単。$関数を作っておき、onloadのタイミングでZeroClipboard.Clientオブジェクトを初期化・設定するだけです。
<html>
<head>
<script type="text/javascript">
function $(id) { return document.getElementById(id); }
function init() {
clip = new ZeroClipboard.Client();
clip.setHandCursor(true);
clip.setText('コピーして欲しい文字列');
clip.blue('button', 'container');
}
</script>
</head>
<body onload="init();">
<div id="container">
<img id="button" src="button.png" />
</div>
</body>
ところが、HTMLを間違えると、IEでのみ「未知の実行時エラーです」となり、動作しないことがあります。
(Firefox/Chrome/Operaなどでは動作します)

未知の実行時エラーです
これは、glue()の第2引数として渡すcontainer要素が、pタグなどになっている場合に発生します。
ZeroClipboardは、内部的にembedタグを生成し、Flashを埋め込んでいるのですが、HTMLの仕様上pのなかにembedは入りません(詳細はDTD参照)。
そのため、HTMLとしては一見Validに見える以下のHTMLでも、
<p id="container">
<img id="button" src="button.png" />
</p>
glue(’button’, ‘container’); とやった時点(InnerHTMLが編集される)で、IEのみ厳密なチェックが入るため、エラーになります。
対策として、container要素は必ずdivなどのembedを含める要素にしましょう。
また当然ですが、内部で$()関数を使うため、jQueryやprototypeとの併用には注意が必要です。
Web業界ではHTML5の採用実績も増えてきました。
動画機能がクローズアップされがちですが、Web開発者として見逃せないのがWebFont機能。
文字で良いのに、フォントが気に入らないというデザイナー様からの意見で、全部画像で作ることが多いはずです。
Google Font APIは、ブラウザごとの違いも吸収してくれる上、使い方もものすごく簡単です。
以下のように、GoogleのCSSを読み込んでfont-familyを指定するだけ。
サンプル
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Reenie+Beanie:regular">
<style>
body {
font-family: 'Reenie Beanie', serif;
font-size: 28px;
font-style: italic;
text-shadow: 4px 4px 4px #bbb;
}
</style>
</head>
<body>
<p>Hello world! I am peter. Nice to meet you.</p>
</body>
</html>
サンプルを見てみる
Google Font プレビューページで、色々編集しながらフォントを決めることが出来ます。
Google Font APIの仕組み
読み込んでいるCSSを開くと、以下のようになっています。
@font-face {
font-family: 'Reenie Beanie';
font-style: normal;
font-weight: normal;
src: url('http://themes.googleusercontent.com/font?kit=ljpKc6CdXusL1cnGUSamX_cCQibwlboQP4eCflnqtq0');
src: local('Reenie Beanie'), url('http://themes.googleusercontent.com/font?kit=ljpKc6CdXusL1cnGUSamX4jjx0o0jr6fNXxPgYh_a8Q&chromeframe') format('truetype');
}
このうち、最後の行がWeb Fontの読み込み。これにより、Firefox/Opera/Chrome/Safariなどではtruetypeフォントを読み込めます。
最後から2番目の行は、User-Agent制御により、IEで開いたときのみCSSに出力されるようです。
このURLを開くと、.eot形式のファイルがダウンロードできます。IEはなんとIE4の時代からWeb Fontをサポートしていたようですが、そんな歴史的理由により.ttfではなく.eotファイルを読ませてあげないと動かないため、Google側で吸収してくれています。
これは便利!
こんな簡単にWeb側からフォントが指定できるのは、かなり便利ですね。
このAPIも、やっていることは要するにUser-Agentを見てttfとeotを振り分けているに過ぎないので、自前でやるのも十分可能です。
ただ、日本語フォントは重いので、サーバ負荷やローディング時間が気になるところです。
Google Codeを見ると、読み込み中の処理を(デフォルトフォントで表示するなど)制御できるJavaScriptも公開されています。
フォントのライセンス問題がクリアできれば、すぐにでも積極活用していきたいですね。
メモリを食うものの、軽快な動作でとても快適なGoogle Chrome。
バージョン6になってから(?)、アドレスバーのHTTPS警告が厳しくなったようです。
今までは、
・フルSSLのページ→緑
・SSLだけど一部SSLじゃないコンテンツが含まれる→黄色
・オレオレ証明書、期限切れ証明書、サーバ名が違う証明書→赤
だったのですが、
新しいChromeでは、証明書が正しくても、NonSSLのスクリプト類が含まれる場合、赤になるようです。
たとえばhttps://twitter.comが偽サイトみたいになってしまいました。
サイト制作者は、信頼を損なわないように気をつけないといけませんね。

正常なSSL

HTTPの画像が含まれるページ

HTTPのスクリプト類が含まれるページ

正常なSSLのタイトルバー

HTTPの画像が含まれるアドレスバー

HTTPのスクリプト類が含まれるアドレスバー
Containableビヘイビアをご存知でしょうか?
もし、使用していならばこれを機にぜひ導入してみてください。
公式ページによると
ContainableBehavior は CakePHP のコアの新機能です。このビヘイビアは find を実行するときに関連したモデルを選別したり限定したりするために使用します。コンテイナブル(Containable)は、データベース中の不要なものを削減し、アプリケーションの速度やパフォーマンスを改善します。このクラスを使うと、ユーザに対するデータの検索とフィルタを、美しく一貫した方法で行うこともできます。
と、魅力的に説明されています。
使用方法や動作は、公式ページをみるのが手っ取り早いので割愛しますm(_ _)m
#ググってください
このビヘイビアのメリットはたくさんあるのですが、
特に便利だと思う点が
- recursiveやbindModelやunbindModelの記述がなくなって、ソースコードがきれいでわかりやすくなる
- あとで関連を選別できるからモデルの関連をモリモリの最大で書いておくことができる
の2点で、とにかく便利です。
さらに以下のサンプルのようにモデルのrecursiveのデフォルト値を-1としておけば、
何をcontainすればいいのか、しているのかがソースコードからわかりやすくなってお勧めです。
class UserModel extends AppModel {
public $recursive = -1;
public $actsAs = array('Containable');
}