2011年8月15日月曜日

第8回中国GTUG勉強会@岡山を開催しました。

一昨日の事ですが、第8回中国GTUG勉強会@岡山を開催しました。

詳細は中国GTUGのサイトを見て頂ければ、写真と合わせて見ることが
できるようになっています。

第8回中国GTUG勉強会@岡山
http://sites.google.com/site/chugokugtug/event/8

ここでは、私のチームの事について掘り下げておこうと思います。
私のチームでは、「作業用BGMを再生するアプリケーション」を作ろうと
考えました。私が欲しい物だったのですが、作業用BGMを再生するために
毎回YouTubeやニコニコ動画にログインしたりするのは、ちょっと面倒だと
思っていました。そこで、YouTube Data APIとカスタムプレーヤーを使えば
いちいちYouTubeのサイトに行かなくても何とかなるかな?と考えたわけです。

第8回は初心者向けということで、ノープランの人の為に、チームに誘って
私ともう一人の方の2人のプロジェクトになりました。

カスタムプレーヤーの件については以前のエントリーに書いてある通りで
httpを経由してデータを受け取らないとコールバック関数が呼ばれない
現象があるようなので当日はGAE/Gの開発サーバを使ってhttpでの経由をさせました。

カスタムプレーヤーが置いてあるだけでは面白味がなかったので、
テレビの絵を描いて頂いて、テレビのように見せることにしました。

結局、HTML5的要素としては、DOCTYPEとscriptタグにtypeを付けないだけに
なってしまいましたが、早くYouTubeのカスタムプレーヤーがvideoタグで
実現できるようになってくれれば良いなあと思っています。

ソースコードも公開していますので、興味がありましたら
以下のURLから取得して下さい。

作成したテレビアプリケーションのソースコード(github)
https://github.com/tyokoyama/chugokugtug_tv

(2011/08/31追記)
忘れていましたが、秋葉さんにCSS3の本にサインをして頂きました。
良い本だと思いますのでよろしければ。





2011年8月11日木曜日

YouTubeのカスタムプレーヤーAPIのコールバック関数の件が解決しました

以前、以下の件で苦戦していた事について、一応の解決をしたのでメモ。
http://takashi-yokoyama.blogspot.com/2011/07/youtubeapionyoutubeplayerready.html

どうやら、YouTubeのカスタムプレーヤーのコールバック関数はファイルを直接開くと
(file://というURLで開く場合)
onYouTubePlayerReady()が呼び出されないようです。
仕様の記述を見つける事ができていないのですが、
Webサーバに配置してhttpアクセスをした場合は関数が呼び出される事が確認できました。
Webサーバはapacheでも良いし、GAE/Gの開発サーバを使っても良いです。

ということで、利用する場合はWebサーバに配置した状態でアクセスする必要があります。

これはブラウザの仕様なのか、httpの仕様なのか、まだまだ勉強が必要なようです。

2011年8月2日火曜日

Google App Engine Goでは"_"(アンダースコア)に気をつけろ

Google App Engine for Go SDK1.5.2のローカル環境で発生しているのですが、
アプリケーションの初回ビルド時にGo言語のソースファイルに"_"が含まれていると、
ビルドは正常に通るのですが、レスポンスが404になってしまいます。
※MacOSX(32bit版SDK)とUbuntu11.04(64bit版SDK)で現象を確認しました。

例えば、以下のような構成で、
app.yaml
compiletest(ディレクトリ)
  compile_test.go

app.yaml
application: helloworld
version: 1
runtime: go
api_version: 2

handlers:
- url: /.*
  script: _go_app

compile_test.go
package compiletest

import (
 "fmt"
 "http"
)

func init() {
 http.HandleFunc("/", handler)
}

func handler(w http.ResponseWriter, r *http.Request) {
 fmt.Fprintf(w, "Hello World!")
}

中身はただのHelloWorldですが、この構成で初回ビルドを行うと、404が返ってきます。これが、ファイル名から"_"を削除した状態にして
アクセス(コンパイル、実行)した後、再度、"_"を付けた状態にしても正常に動作するようになります。

ということで、バグなのか、仕様なのか(多分バグだと思います)わかりませんが、ファイル名に"_"を付けた命名は
今の所、気をつけた方が良いと思います。

ちなみに、本番環境では試していないのでわかりません。

2011年8月1日月曜日

vi、emacsにGoのソースコード設定を追加する。

Go言語のソースコードを読んだり、書いたりするためには、
今の所、私が知る限りでは、vi、emacs、その他テキストエディタで開いて中身を見るしか
方法がありません。
ということで、Go言語のソースコードをダウンロードすると、一緒にvi用、emacs用の設定ファイルが
ついてきます。それを導入したので、メモを残しておきます。

●viの設定(on Ubuntu11.04 64bit版)
設定ファイルの場所:$GOROOT/misc/vim

1. sudo apt-get install vim
初期状態のvimだと2の設定が有効にならない(エラーになる)ので最新の状態にしておく。

2. ~/.vimrcに以下の記述を追加する。
filetype plugin on
filetype indent on

2.5. Mac OSXだと、.vimrcに以下の記述も追記する必要がある。(2011/08/31追記)
syntax on

3. ~/.vim/に$GOROOT/misc/vimの設定ファイルをすべてコピーする
例)
$ cd $GOROOT/misc/vim
$ cp -rp * ~/.vim

4. Goのソースコードをviで開いて、以下のように色が変わっていれば成功



●emacsの設定(on Mac OSX)
設定ファイルの場所:$GOROOT/misc/emacs

1. $GOROOT/misc/emacsにある設定ファイル(*.el)を~/emacs.dにコピーする
例)
$ cd $GOROOT/misc/emacs
$ cp -p *.el ~/emacs.d

2. .emacsに以下の設定を追記する。
;;これはお好みに合わせて。。(初期値は8)
(setq-default tab-width 4)

(add-to-list 'load-path "~/emacs.d")

(require 'go-mode-load)

3. emacsでGoのソースファイルを開き、以下のように色が変わればOK

2011年7月29日金曜日

Google Android WebAPIプログラミング入門(正誤表)

私が執筆したGoogle Android WebAPIプログラミング入門の正誤表を載せておきたいと思います。(ちなみに以下の本です)
このページは非公式のものとします。(2011/12/20:秀和システムさんに連絡して公式の正誤表となりました。)
また、発見、報告があり次第、追記したいと思います。



正誤表
P.272−9行目:
(誤)また、後述しますが最新版Twitter4j 2.2.1が…
(正)また、最新版Twitter4jが…

9章の9-4に関して書籍のサンプルが動作しなかったという報告をいただきました。
ありがとうございます。現象を確認したいのですが、すぐに時間が取れないので、
取り急ぎ、サイトへのリンクを掲載しておきます。
http://sarl-tokyo.com/wiki/index.php?Google%20Android%20WebAPI%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80%E3%82%92%E8%AA%AD%E3%82%93%E3%81%A7%E3%81%84%E3%81%A6

2011年7月25日月曜日

Google App Engine Go SDK 1.5.2での注意点

Google App Engine SDKのバージョンが1.5.2になりました。

リリース内容は以下のサイトを御覧ください。
http://googleappengine.blogspot.com/2011/07/app-engine-152-sdk-released.html


私もGoのSDKを更新してプログラムが動くかどうか確認していたのですが、
ローカルサーバで実行するとdev_appserver.pyのエラーが出て実行できなくなりました。

いろいろ調べているとapp.yamlのapi_versionを2にしないといけないことがわかりました。

ということで、ドキュメントサイトを確認してみたら、サンプルコードは2になっていましたが、説明には1と記述されていたので注意が必要です。

一応、Hello Worldのコードを掲載しておきます。

application: helloworld
version: 1
runtime: go
api_version: 2

handlers:
- url: /.*
  script: _go_app


package hello

import (
       "fmt"
       "http"
)

func init() {
     http.HandleFunc("/", handler)
}

func handler(w http.ResponseWriter, r *http.Request) {
     fmt.Fprint(w, "Hello World!")
}

大したコードではないですが、api_versionには注意してください。
これに気がつくのにかなりの時間を取られました。

ただ、クラウド上にデプロイして実行する分にはapi_versionが1でも動作します。
(※HelloWorldレベルで確認しただけです)
デプロイのコマンドは以下のコマンドです。
appcfg.py update [ソースコードがあるディレクトリ]

2011年7月9日土曜日

第10回OITEC勉強会に参加しました。

今日は岡山でMicrosoft関連の技術を主に扱っているOITEC勉強会に参加しました。

会場が県立図書館のデジタル情報シアターだったので、飲食禁止。
しかも、いい感じで無線LANスポットも使えず、色々と残念な状態でした。
(結局、Android端末でテザリングをしました。電源が使えたので良かった。)

午前の部はTDDBCのサテライトということで、Ust放送をしていました。
テスト駆動開発がテーマでしたが、良い点、悪い点はあるような気がしました。
Twitter上でのやりとりは以下にまとめられています。
http://togetter.com/li/159430

午後の部
Kinect開発、はじめの一歩
・結構スペックを要求される。

開発方法
・OpenNIを利用する
Macでは開発が不可能かと思ったら、詳細は以下のブログにまとめられていました。
http://switch.dip.jp/toro/blog/?p=266

・Microsoftが提供しているSDKを利用する。

価格に対して、いろいろ遊べるので良いそうです。
導入、開発も簡単。(Visual Studio 2010とKinect SDKがあれば良いのかな?)

教育、医療分野では導入実績もあるそうです。
服を買う時に、服を着た映像を表示するなどマーケティングにも利用される。

手話を声に変換するという使い方もできるようになるかもしれない。
一番の期待はアクセシビリティ

しかし、環境がWindows7限定になっているのが残念。

ASP.NET MVC 3
・Microsoft .NET Framework 4のみのサポート

・データを参照する(Model)
・ルーティングに従って、クラスが実行される(Controller)
・Razorビュー・エンジン
View内でもブレークポイントがおける。

Razorでは、@変数名でView内に値を表示させる事ができる。
@("<strong>")なんてことをすると、HTMLがエスケープされる。
@Html.Row()を使うと、HTMLがそのまま出力される。
@{ }で囲むと、View内でコードを書くことができる。
コードブロック内でもHTMLのタグはタグとして認識してくれる。
<text>タグで囲むと、プログラムと認識されずに、そのまま出力してくれる。

ASP.NET MVC 3 EF4.1 Code FirstとNuGet
・Ruby on RailsのようにModelからデータベースを生成してくれる。
・バリデーションも自動的に。

・SQL Server Compact Edition 4.0をWebサーバにデプロイすることができるようになった。
SQLiteのような利用が可能になる。
・ただし、利用可能なホスティング業者が少ないので、実運用するためには…?

NuGet
・Ruby Gemのようにプロジェクトに必要なライブラリを取り込むアプリケーション
GUI、CUIどちらでも利用可能。

0から始めるExpression Blend + Phone 7
・疲労困憊により、デモを眺めているだけになりました。
(やっぱり最近、目の疲労からくる疲れ(?)に悩まされます。)

2011/07/10 追記
プレゼント大会で、以下の書籍を頂きました。以前からSilverlightはやりたかったので
しっかり読んでみようと思います。