2006年07月15日

Re:[ロデオ]iアプリ風にajaxでゲームプログラミング

UEIの清水さんのブログでJavaScriptゲームが紹介されていた。

http://plusdblog.itmedia.co.jp/mobilecowboy/2006/07/iajax_6f06.html

サイトスニーカー開発者の布留川英一さんのJavaScriptのGraphicsライブラリ。

文中にg_drawImage()ではなくg.drawImage()だとよりリアルだなと。

という訳で布留川さんのgraphics.jsをクラス化してみました。

graphics.js

//コンストラクタ
function Graphics() {
//メンバ変数
this.g_buffer =""; //バッファ
this.g_color ="#000000";//色
this.g_fontSize=12; //フォントサイズ
this.g_oriX =0; //原点のX座標
this.g_oriY =0; //原点のY座標
}


//幅の取得
function Graphics.prototype.getWidth() {
if (self.innerWidth) {
return self.innerWidth;
} else if (document.body.clientWidth) {
return document.body.clientWidth;
}
return 640;
}

//高さの取得
function Graphics.prototype.getHeight() {
if (self.innerHeight) {
return self.innerHeight;
} else if (document.body.clientHeight) {
return document.body.clientHeight;
}
return 480;
}

//原点の指定
function Graphics.prototype.setOrigin(oriX,oriY) {
g_oriX=oriX;
g_oriY=oriY;
}

//フォントサイズの指定
function Graphics.prototype.setFontSize(fontSize) {
g_fontSize=fontSize;
}

//フォントサイズの取得
function Graphics.prototype.getFontSize() {
return g_fontSize;
}

//色の指定
function Graphics.prototype.setColor(color) {
g_color=color;
}

//色の取得
function Graphics.prototype.getColor() {
return g_color;
}

//画面をクリア
function Graphics.prototype.clear() {
g_buffer="";
}

//文字列の描画
function Graphics.prototype.drawString(string,x,y) {
x+=g_oriX;y+=g_oriY;
g_buffer+="
"+
string+"
";
}

//塗り潰し矩形の描画
function Graphics.prototype.fillRect(x,y,w,h) {
x+=g_oriX;y+=g_oriY;
g_buffer+="
";
}

//矩形の描画
function Graphics.prototype.drawRect(x,y,w,h) {
this.fillRect(x,y,w,1);
this.fillRect(x,y+h,w,1);
this.fillRect(x,y,1,h);
this.fillRect(x+w,y,1,h);
}

//イメージの描画
function Graphics.prototype.drawImage(image,x,y) {
x+=g_oriX;y+=g_oriY;
g_buffer+="<img src='"+image+"' style='position:absolute; "+
"left:"+x+"px; top:"+y+"px;'>";
}

//画面に反映
function Graphics.prototype.flush() {
document.getElementById("canvas").innerHTML=g_buffer;
}


main.js

//シーン
var S_TITLE =1;//タイトル
var S_PLAY =2;//プレイ
var S_GAMEOVER=3;//ゲームオーバー

//システム
var init =S_TITLE; //初期化
var scene=S_TITLE; //シーン
var image =new Array(20);//イメージ
var label =new Array(2); //ラベル
var format=new Array(2); //フォーマット

//ゲーム
var score; //スコア
var mouseDown; //マウスダウン
var girlX; //女の子のX座標
var girlY; //女の子のY座標
var girlSpeed; //女の子の速度
var starX=new Array(20);//星Xの座標
var starY=new Array(20);//星Yの座標
var g=new Graphics(); //グラフィックス

//ロード
function onLoad() {
//タイマー指定
setTimeout("tick()",100);
}

//タイマーイベントの処理
function tick() {
var i,j;

//初期化
if (init>=0) {
//タイトルとプレイの初期化
if (init==S_TITLE || init==S_PLAY) {
score =0;
girlX =40;
girlY =140;
girlSpeed=0;
for (i=0;i<20;i++) {
starX[i]=-20;
starY[i]=0;
}
}
mouseDown=false;
scene =init;
init =-1;
}

//共通の処理
g.clear();
g.setOrigin((g.getWidth()-240)/2,(g.getHeight()-240)/2);
g.setColor("#ffffff");
g.fillRect(0,0,240,240);
g.drawImage("0.png",0,200);
g.drawImage("1.png",girlX-16,girlY-16);
g.setFontSize(12);
g.setColor("#000000");
g.drawString("SCORE:"+score,2,2);
for (i=0;i<20;i++) {
g.drawImage("2.png",starX[i]-8,starY[i]-8);
}

//タイトルの処理
if (scene==S_TITLE) {
//描画
g.setFontSize(30);
g.setColor("#000000");
g.drawString("Broom Fight",(240-11*15)/2,50);

//イベント
if (mouseDown) init=S_PLAY;
}
//プレイの処理
else if (scene==S_PLAY) {
//スコア
score++;

//キャラの位置
if (mouseDown) {
if (girlSpeed>-20) girlSpeed--;
} else {
if (girlSpeed<20) girlSpeed++;
}
girlY+=girlSpeed;
if (girlY<0 || 240
//星の出現
if (rand(10)==0) {
for (i=0;i<20;i++) {
if (starX[i]>-20) continue;
starX[i]=260;
starY[i]=rand(200);
break;
}
}

//星の移動
for (i=0;i<20;i++) {
if (starX[i]<=-20) continue;
starX[i]-=3;
if (calcLen(girlX,girlY,starX[i],starY[i])<360) {
init=S_GAMEOVER;
}
}
}
//ゲームオーバーの処理
else if (scene==S_GAMEOVER) {
//描画
g.setFontSize(30);
g.setColor("#000000");
g.drawString("GAME OVER",(240-9*15)/2,50);

//イベント
if (mouseDown) init=S_PLAY;
}

//描画反映
g.setColor("#ffffff");
g.fillRect(-g.g_oriX,-g.g_oriY,g.getWidth(),g.g_oriY);
g.fillRect(-g.g_oriX,240,g.getWidth(),g.g_oriY);
g.fillRect(-g.g_oriX,0,g.g_oriX,240);
g.fillRect(240,0,g.g_oriX,240);
g.setColor("#000000");
g.drawRect(0,0,240,240);
g.flush();

//タイマー指定
setTimeout("tick()",100);
}

//距離の2乗の計算
function calcLen(x0,y0,x1,y1) {
return (x0-x1)*(x0-x1)+(y0-y1)*(y0-y1);
}

//乱数の取得
function rand(num) {
return Math.floor(Math.random()*num);
}

//マウスダウンイベントの処理
function onMouseDown(x,y) {
mouseDown=true;
}

//マウスアップイベントの処理
function onMouseUp(x,y) {
mouseDown=false;
}


実行してみたら、なんか星がゲーム枠より外から描画されるようになってしまいました。どっかエンバグしたのかな。(スタイルのoverflow:hiddenを使ってみましたが、改善しませんでした)
FireFox用では強力なJavaScript用デバッガがあるとか。
環境が整っていないので詳しくデバッグしていない。

たしかに、g.drawString()とかg.drawImage()できるなら、ちょっとゲーム作ってみようかな〜みたいに思えますね。

スタイルのbackground-position:を使うと背景画像をスクロールとかもできそう。

ちなみにこのブログ、ibisブログへ引っ越したと宣言しつつ更新。
ibisブログにトラックバック機能がないから(がーん)

かみやんのたわごと from ibisブログ

kamiya_eiji at 01:39|PermalinkComments(0)TrackBack(1)技術 

2006年05月23日

引っ越しました

今までlivedoorブログを使ってきましたが、ibisブログができたので
引っ越します。
引越し先は、

http://ibis.ne.jp/blog/4523409/

です。
RSSリーダを使っている人は、上記URLまたは、

http://ibis.ne.jp/rss/blog4523409.xml

をRSSリーダに登録してください。


kamiya_eiji at 18:08|PermalinkComments(1)TrackBack(0)

2006年03月16日

新年会?

先週の金曜日は、愛知県庁主催でなぜか有識者として私が呼ばれてしまった
デジタルコンテンツの座談会の新年会(おそすぎ(笑))でした。

金城大学N先生は、超Mac派で相変わらずMacすげーという話。Shi3zもMacだし、
はてなの伊藤直也さんもMacに変えたらしいし。Intel Macも出たことだし
とっても気になる今日この頃。うちだと、専務が昔からMac派。
Macに変えたら困ることといえば、DoCoMoのアプリのDoJaエミュレータが
動かなくなることぐらいか。DoJaエミュレータもほとんどJavaで書いて
あるだろうからMacに対応してくれればいいのだが。
Intel MacでVMWareが動くらしいからそれでいいか。
この飲み会で知ったのだが、Intel Macのノートは、MacBookだとか。マジかい。
Intel PowerBookかと思っていた。
PowerBookのPowerはPowerPCのPowerなのか。

話は変わってSuica。
モバイルSuicaやってみなきゃということでViewカードを申し込んだが
Viewカード自体は届いた。でもまだアプリのダウンロードをしていない。
あぁ、面倒。サイフにSuicaカードとViewカードを入れて改札を通ろう
としたら、複数枚のSuicaカードを認識したとかいうエラーでとおれなかった。
どうもViewカードもSuica機能が付いているらしい。

話は変わってibisBrowser。
ケータイBESTVol.31にibisBrowserが紹介されていた。
jig、ibisBrowserDX、サイトスニーカが紹介されていたが、機能の有無とかで
間違っている部分もあるなぁ。ま、よく調査してくれているが。

ibisBrowserでいろいろと商談は進めているがなかなか時間がかかるもの
だなぁ。
最近コーディングをする時間がないので、新幹線の移動中にibisBrowserの
コーディングをしている。やりすぎると乗り物酔いするのが難点。


kamiya_eiji at 19:22|PermalinkComments(0)TrackBack(0)経営 

2006年03月14日

飲み会

先週の木曜日は、監査法人の人、主催のベンチャー企業の会合に行った。
さすが若くてやる気のある社長ばかりで面白かった。
カラーバーコードの会社とか、インターネットストレージの会社とか
メルマガの会社とか、メディア系の会社とか、無料電話の会社とか。

2次会、3次会になるとお金を借りるところを探している会社とか、
ベンチャーキャピタルに出資してもらいたいと思っている会社とか
本音がでてきて面白い。

社員にBLOGを書いてもらっている会社とかの話を聞いて、やってみたい
な〜と思ったり。

社長が忙しいためか、バツイチの人が多かった。
自分はそうならないことを願う。

#あ、Suicaのチャージはコンビニでできないのか、と以前の
エントリーで書いたところy-Akiさんに
#ファミポートでチャージできるよ。とのことだったので、チャージ
#してみました。はい。できました。便利。

kamiya_eiji at 17:07|PermalinkComments(1)TrackBack(0)経営 

2006年02月23日

1行マスタ画面

一つ前のエントリで簡単なマスタなら15分でできるよなぁ。などと
書いていて、理想のフレームワークならどう書くかなぁと考えると


protected void doPost(HttpServletRequest req, HttpServletResponse res){
SimpleMasterTable.render(req,res,"select * from MEMBER order by Name");
}


って感じだろうか。1行でテーブルの一覧表示、追加、編集、削除ができるというもの。
フレームワークっていうかライブラリだな。
DBスキーマは、java.sql.ResultSetMetaDataで列の型等は調べられるので
ぎりぎり実現可能ではないかな。(や、DB名がないか)

さすがインスタンスなしでは、スキーマ構造の解析やDBのコネクションプールが
使えないので、


SimpleMasterTable smp;
public void init(ServletConfig cfg){
smp=new SimpleMasterTable("jdb/CompanyDB","select * from MEMBER order by Name");
}
protected void doPost(HttpServletRequest req, HttpServletResponse res){
smp.render(req,res);
}


あたりかな。init()イベントで初期化するとsmpインスタンスにはリクエスト
ローカルな情報は保持できないかな。ま全部POSTの中に保持されていれば
いいか。

みたいなことを考えていたら、Ruby on Railsが人気とあちこちのBlogに出ている
のでみてみたら、びっくり10分でWebアプリムービーがあった。
なるほど、これで世界にインパクトを与えているのか。

Railsは、Rubyがスクリプト言語だから、リクエストの度にDBスキーマをチェック
しているのだね。モデルクラスが空っぽでOK&DBスキーマを変更するとコードを
まったく変更せずとも自動的にコントロール(エディットボックスなど)も
追加される。かっちょいい。
モデルは空。コントローラも1行でOK、ビューはコマンドラインから自動生成
ツールで生成。空のモデルやほぼ空のコントロールもコマンドラインから自動
生成できるってのお面白い。
特徴は、テーブル名、列名に制約をかける&主キーも列名idのINTEGER型の
自動連番型。なるほど。

オープンソースマガジンとかJava PressとかにRuby on Railsが紹介されていた
ので買ってみた。が、ネットで見たほうが分かりやすかった。ぐた。

Ruby on RailsのJava版はないかな〜と思っていたらTrailsというのがあるそうな。
モデルクラスの作成を中心にする。Beanでは不足の情報をアノテーションで
修飾する。しかもUIに影響する修飾まで!。これはいい。モデルもビューも
モデルクラスに集中させようということだ。
Trailsに期待。



kamiya_eiji at 18:21|PermalinkComments(0)TrackBack(0)技術 

2006年02月09日

チャージってなんですか?

やー、クレジットカードとかEdyとかSuicaとか大分カードが便利になったねぇ。
タクシーもここ2年ぐらいでクレジットカードがほぼ使えるようになったし。

今日は、ファミマでSuicaで買い物をしたが、「これでチャージできますか?」
って店員の女の子に聞いたら「チャージってなんですか?」と。
。。。

「現金をこのカードに入れることです」
「やー、たぶんできないです」
。。。
うーん。本当にそうなのかあやしい。。

Edyはコンビニでチャージできるぞ。

大分前にタクシーもEdyに対応する計画みたいなニュースを読んだような気がする。
クレジットカードのあのオーソリ通信の間はなんともいえない気まずい時間。
名古屋のつばめタクシーだけオーソリ通信せずに即決済完了(たぶんETCと同じようにブラックリストチェックのみ)。
電子マネーもっとひろがれぇ。

自分としては、自動販売機が電子マネーになれば楽だなぁ。一日になんどもジュースやタバコを買うので(やタバコは何度も買わないか)。

あ、モバイルSuicaやらなきゃと前のエントリーに書いたが、ビューカードがいるそうな。まんどくせぇ。と言いつつネットで申し込んだ。ま、2週間ぐらいはかかるだろう。

さてさて、そんなこんなで開発中、EclipseでCVSサーバから最新ソースを取得しようと思ったら取得できない。。通信中にとまる。。。原因を調べたら、自分のノートPCがディスクフルだった。がーん。無駄な時間を消費した。
私のノートは40G(OSからみると34G)。しょぼい。とっとと次のノートを買わないとな。

そして、次に東京オフィスのプリンタに接続できないなーということで調べること数時間。原因は、NetBIOS over TCP/IPがOFFだった。がーん。
TCPのみで印刷させてくれよ。プリンタよ。
それを調べる過程で、ドメイン参加からワークグループに変えたのだが、プリンタ問題が解決したのでドメインに戻ろうと思ったら、がーん。ドメインサーバは名古屋オフィスにいる。。
当然ドメインに戻れない。。
私のメインアカウントは、ドメイン参加なのだ。ワークグループのアカウントは、初期インストールのときのまま。がーん。設定ファイルやらマイドキュメントやらがすべてない。名古屋オフィスにいくのは月曜。それまで待てないので、設定を一生懸命移すことに。。
あー、また無駄な時間をすごした。。
まだ、RoboFormがインストールできていない。

あ、そうそう。Sleipnirをインストールしたときにいっしょに無料だと思ってRoboFormをインストールしたが、本当はシェアウェアで3500円だったのだが、これは便利。Webページのパスワードをどんどん保存していってくれる。(でも不安だからパスワード管理ファイルにも書いているが)(って前BLOGに書いたっけか)。

あとは、原価計算システムだけ、給与情報が入っているためメインのイントラネットサーバとは別のサーバに入っているために東京オフィスから入れない。。名古屋のスタッフに頼んでなんとか入れるように設定してもらった。名古屋も忙しいだろうに。thx。

毎日ホテルに泊まっているが昨日は、東横インがとれずに無名なところにとまったが、やっぱりしょぼかった。ビルは古いし、受付はおじいさんだし、部屋は汚いし、タオルもきたないし、高い。。。東横インは安くてよいサービスだよなぁ。
なんであんな経営者がこんな会社をやっているのか。。

面白かったのがおととい東横インにとまったときに、「東横イン成功の経営!」みたいな社長直筆の本の宣伝が部屋のデスクに置いてあった。これはブラックジョークなのか。

さてさて、一つ前のエントリー。はずかしいミスをしてしまっている私。gc()をコールしているが、参照を切り忘れている。これではメモリは開放されない。。しょぼいミスだ。

昨日のホテルはネットが使えなかったのでスタンドアロンで開発できるちょっとしたibisBrowser用システムを書いていたが、どこまで短時間でかけるかな〜と思っていたが、思ったよりもかかった。とうか作りかけ。
やっぱりJSP、Servletだけという素のままじゃ効率悪い。

.NETならとっくに2画面ぐらいは作れる時間だったが1画面も作れなかった。
JSFはまだやったことなし。よく考えると単純なWebアプリケーションは最近やってなかったな。
昔、ケータイ用Webアプリを.NETで書こうと思って挫折した。どんどんスタイルシートとか、JavaScriptを吐かれて、ケータイに向いていなかった。スタイルシートやJavaScriptを吐かないように修正するほうが手間でやめた。

でもDataTableクラスは便利。ある意味一番開発速度が速いのはAccess。単純なマスタなら15分ぐらいで作れる。.NETのDataTableもかなり楽。
JSFも多分そうなんだろうな。

社員に聞けばJSFに詳しい人もいるだろうけど。その社員はJSFが出たばかりのころにJSFのシステム開発で、JSFの不具合と戦ったと聞くが。
日経システム構築でもJSFの検証特集のときに不具合とかテーブル入れ子のオプションボタンが動かない(?)とか不具合が書いてあって、大変そうだったな。

名古屋にいたときもベンチャーキャピタルがよく来たが、東京に来ても「東京進出と聞いて連絡しました」とか来る。どこで聞くのか。。

そんな日。

kamiya_eiji at 23:34|PermalinkComments(4)TrackBack(0)日常 

2006年02月08日

StringBuffer vs StringBuilder

ibisBrowser高速化したいなぁ〜と思っている毎日。

Java 5.0になってからStringBuilderができてちょっと速くなっているんだよね。 などという話題が社内の技術MLで出たのでちょっと計測。

StringBufferはスレッドセーフ。StringBuilderはスレッドセーフではない。
	private static void startStringBuffer(){
		System.out.print("startStringBuffer ");
		StringBuffer sb=new StringBuffer();
		long t=System.currentTimeMillis();
		for(int i=0;i<MAX_STRING;i++){
			sb.append(" ");
		}
		System.out.println("time="+(System.currentTimeMillis()-t)+"ms");
		System.gc();
	}
こんな感じで、1文字の文字列を追加するループを計測した。
ま、その前にJavaの新人が気をつけなければならない「Stringの+をループで使わないこと」というのがあるので、それも計測した。Javaの基本中の基本だが、Stringは文字列クラスだが、可変長文字列ではなく固定長文字列クラスなので、サイズが変わるときはメモリの再確保と内容の移動が発生する。

計測環境:PentiumM 1G, Mem 768M JDK1.5.0_6 WindowsXP(Pro)

結果 5万ループ(50k)
startStringBuilder time=10ms
startStringBuffer time=20ms
startString time=30233ms

という訳で5万回のループのときは0.01秒 vs 30秒。はい。Stringの+=をループの中で書くのはやめましょう。

あと、VectorはタイプセーフでArrayListはタイプセーフではない。これも計測しよう。
あと、StringBufferやVectorなどはキャパシティを設定することができる。これを設定しておくとメモリの再確保と移動が発生しなくなる。キャパシティ設定版はメソッド名の最後にCをつけた。

あと、VectorやArrayListで追加する要素だが、ループの外で1つのIntegerをnewしたものをVectorなどに追加するパターンと、ループの中でIntegerをnewしたものを追加するパターンを計測した。現実問題、1つのインスタンスを大量にVectorなどに追加するよりも、後者のN個のインスタンスをVectorに追加するほうが多いだろう。後者のメソッド名はNをつけた。

結果 1000万ループ(10M)
startVector time=1331ms
startArrayList time=1692ms
startVectorC time=681ms
startArrayListC time=441ms
startVectorN time=4806ms
startArrayListN time=5418ms
startVectorNC time=4296ms
startArrayListNC time=4417ms
startStringBuilder time=1272ms
startStringBuffer time=1572ms
startStringBuilderC time=1072ms
startStringBufferC time=1382ms

考察
・キャパシティを設定しないとVectorの方が速い(謎)
・キャパシティを設定するとVectorよりArrayListの方が30%ほど速い
・Vector,ArrayListはキャパシティを設定するとかなり高速になる
・Nインスタンスでは、キャパシティ設定による高速化は20%程度
・StringBufferよりStringBuilderの方が20%速い
・StringBuffer,StringBuilderはキャパシティを設定すると20%ほど速い


結論
積極的にArrayListを使う意味はなさそう。Vectorでいいや。

やっぱりそもそもこの程度の軽い処理の速度を気にしてもしょうがなさそう。
気が向いたらキャパシティを設定するかというレベル。
StringBuilderはクセをつければよいだけなので、まぁ使うとしても、大した高速化にはつながらないな。
1000万回のループでループの中が追加のみだからね。たいていの処理は多くて10万ループぐらいで済むことが多い。そうすると、StringBufferとStringBuilderの差は3msぐらい。1万ループなら0.3msぐらい。10万ループぐらいからキャパシティとか気にしたほうがいいかな。

ベンチマークのソースを見ると分かるが、これはgcの速度を除外したもの。100万ループぐらいになるとgcの発生頻度やスワップを気にしたほうがよくなる。
やっぱり、高速化は、
  1. 最適なアルゴリズムにする(オーダーがnかn*nかnlognか、lognかなど)
  2. キャッシュする
  3. APIの処理速度を計測して別のAPIを使う
というのが先だね。今回のようなコンスタント部(オーダーは同じだけど1ループあたりの処理速度が違うもの)は、後回しだな。

ベンチマークのソースはこちら

kamiya_eiji at 12:53|PermalinkComments(9)TrackBack(0)技術 

2006年02月07日

東京〜

東京に来た(まだホテル暮らし)ということで、地下鉄のパスネットと
Suicaを購入。
東京のファミマはSuica対応か。ということで早速Suicaで買い物。
なんか最初からチャージされている金額が1500円とかで、あっという間に
Suica空になるな。

名古屋だとサークルケイサンクスでは、Edyが使えておサイフケータイで
支払っているが、ファミマ対応しないかなぁなんて思っていたが、ファミマ
はEdy対応しそうにないな。こりゃ。

あー、モバイルSuicaも始まったんだよね。手順が面倒らしいがこれも
やってみないとね。

そう。マピオンのアプリを契約した。無料のは使ったことがあったが、
スクロールできないのでアプリの意味なしだったが、契約(月額210円)
したら、思ったよりもよかった。Googleマップのようにぐりぐりスクロール
できる。綺麗に通信でスクロール先の地図を読み込むし、スクラッチパッド
にこまめにバックグラウンドで保存しているらしくて、再起動しても
最後の地図がでる。

ニューロポインタに対応していないのが残念&メニューはショートカット
キーが欲しい。というところか。
あと、食事ができるところが知りたいと思って最寄のグルメを検索したが
あんまり多く登録されていない模様で役に立たなそう。ユーザにガンガン
登録させてお店が充実すると面白いのだが。

あとiエリアはかなり精度が悪いな。隣の駅を指すことがしばしば。
この辺は、ドコモのえらいさんが公演で、将来全機種GPSをつける方向になる
とか言っていたからそれに期待。全機種GPSがつくとかなり面白いことが
できるよなぁ。GPSとGoogleMapsの連携はすごそうだなぁ。

マピオン契約とともにコミックiを解約した。
なんか仲間ゆきえがCMでマンガ読んでいたから契約してみた。
これも結構面白い。暇なときに寝ながらマンガが読める。
4〜5本落として読んだが、文字が多いマンガは読む速度と先読み
(マンガは先読みができるからいいよなぁ。ブラウザはできない)
の速度がちょうど同じぐらいで、ひっかかりなくさくさく読める。
ただ、絵とか擬音が多いマンガは通信待ちが発生する。

マンガとしては、コマが省略されていたり、コマ割が違っていたりする
気がする。これっていいんだろうか?って最初すごく抵抗があった。
マンガってページの構成やコマ割を含めて著作物なわけで、それを改変
して提供しているわけで、作者としては残念な気もしているのではない
だろうか。映画がTVで放送されるとカットされるのと同じようなものか。

で、結構面白いとは思ったのだがやっぱりマンガ読む時間はないので
解約。1本30円〜40円ぐらいで全然ポイントが減らない。
解約時にポイントが800ポイントあまっていますが、解約するとポイント
が消えます解約しますか?みたいなメッセージ。
すごくもったいない気もするが、読まずに毎月どんどん300ポイントずつ
増えてしまうので解約しないほうがもったいないんだよね。
PayPerViewなら解約しないんだが。

あ、中国語を勉強するアプリとかあったらいいな。単語やセンテンスが
表示されてクリックすると発音してくれるとか、発音を聞いて文字列から
選ぶとか。NintendoDSでも英語ソフトとかCMしているし。
ケータイのフォントに中国語の漢字が入っていないから全部GIF化しない
と駄目で通信が重過ぎるかな。
需要としては中国語の前に英語なんだろうな。


kamiya_eiji at 03:39|PermalinkComments(1)TrackBack(0)日常 

2006年02月02日

東京引越し

久々日記更新。はぁ、集に一回は書くとか決めないと駄目だね。

今日は、東京オフィスの稼働日。オフィスは12月下旬ぐらいに契約が済んで1月中旬から搬入が始まって先週ぐらいから先発隊が来ている。
私は、オフィスを見るのは初めて。八丁堀の近くらしい。たどり着くのに道に迷った。迷った挙句、ibisBrowserで自社のホームページの地図をみてたどり着いた
名古屋のオフィスより内装は、綺麗で新しいな。外観は名古屋の方がよいか。

オフィスに入るとすでに私の机やLAN環境やプリンタ、会議机などが整備されていた。まだ人が少ないので広々。初めてオフィスを借りたときや、名古屋オフィスで2フロアになったときのように、ガランと空いたオフィスは新鮮でよいな。

がつーんと頑張るぞ〜って感じでエネルギーがみなぎる。

ibisBrowserを出してから問い合わせが東京からが多いので出張が頻繁になったので自分も引っ越すことにした。10月ごろに東京支店を出すと決めたときには私は来るつもりではなかったけど。

出張できて眺める東京と東京に住んでみる東京は見え方が違うんだろうなと。

ちなみに私は引越しを10回ぐらいしていていつも引越しはぎりぎりでアパートの契約も即決即入居だが、今回はぎりぎり過ぎた。というか忙しすぎて何も手配できなかった。

今日、不動産屋に行って「今すぐ住みたい!」と言ってみたが通らず(あたりまえだ)、来週から借りれるらしい。ま、今日は契約のみはしたけど。
せっかく今日入居できると思って、実印や印鑑証明、住民票、カーテンとか持ってきたのに。ぐた。
しばらくは、ホテルで住むか。渦中なので東横インならあいているかなぁ。

さてさてまとめ日記。
・ibisBrowserDX正式版リリース。
リリースしてからは、私はコーディングにあまり参加できず。設計の指示や、レビュー、ソースレビュー、サーバ運用引継ぎなどでいっぱいいっぱい。その他、ibisBrowserDX正式版リリース後から問い合わせが多いので営業。
いくつかのアライアンスはよい結果になりそう。そのうち成果を正式に発表できればと思う。

・愛知県庁に呼ばれて名古屋のデジタルコンテンツなんとかという座談会になぜか有識者として呼ばれて、未来のネットワーク社会について数回にわたり討論した。しかし、ブラウザってコンテンツっていうよりツールなんだけどなぁ。ま、名古屋にはコンテンツ会社って非常に少ないから私が呼ばれてしまったのだと思うけど。ちなみに名古屋だとパチンコメーカが多いのでパチンコのコンテンツを作っている会社はいくつかあるな。

・名古屋大学。ひょんなことから名古屋大学の先生とあって、産学共同研究をしようかなぁという話が進んでいる。進んでいるというか進めなきゃ。というところだけおど。Web系の技術ネタです。

・誕生日
娘の1歳の誕生日が来た。めでたい。やっと数歩歩くぐらいのところ。週末ぐらいしか相手をできないけど。言葉を覚えだすともっとかわいいのだろうな。

・東京引越し
東京へ転勤ですが、2年前に家を建ててしまったところということでとりあえず妻子を残して単身にした。週末は名古屋に帰るつもり。私としては家族全員引っ越したいところだけど、妻は東京が怖いイメージを持っているのか住みにくいイメージを持っているのか、乗り気ではない。

<本>
前回のエントリーで読んでなかった本。
『ポスト産業社会』。これはすでに知の労働社会に変わっているのだよ。資本重視から知的労働者へという話。確かに昔に比べると1次産業、2次産業の労働者は減っていて多くの人が3次産業に携わっているなと。

『僕が六本木に会社をつくるまで』。GREEの社長の本ですね。若い勢いがあっていいですね。ちょっと見栄っ張りなところとちょっと経営があぶなっかしいなと思うところがあったけど、余計なお世話ですね。実際には堅実に経営しているのだと思う。

<事件>
耐震偽装問題。やーなんでこの事件で出てくる経営者みんな暴言を吐くのか。経営者なら最後は腹くくってサムライ魂を見せて欲しいものだ。あんな証人喚問で終わってしまっていいのか。東横インの社長もどうかしている。ああいう危機にきちんと腹をくくれる魂を持った経営者認定証とかあったら面白いかも。

ライブドアショック。粉飾決算は駄目ですね。有価証券報告書で虚偽があってはだめですね。アメリカのエンロン事件を思い出す。エンロン事件以降、アメリカの景気は後退。法整備を進めて厳罰。監査法人も一緒に破綻(エンロン事件は監査法人が加担している(おそらくライブドアも))。ストックオプションは経費としてあらかじめ落とすべき。という変化がありました。どうも今の様子だとライブドアショックが引き金で景気後退になることはないようですね。2000年のネットバブルのころは本当みんなおかしかった。赤字でも上場できたし、うちも2000年設立だが設立直後のまだ私と専務の2名しかいない上に実績もないのにキャピタルがくる。産業革命以来の革命だ。ネットイヤー、ドッグイヤー、ビターバレーといわれた。ライブドアの上場は2000年ごろだから、みんなおかしかったころに間違って上場してしまったというところだろう。
ちなみに、会計について詳しくない人には説明しにくいが、決算書は作る人によってバラバラの結果になるようになっている。どのコストはどの科目に入れなければならないというのは法律であるわけではない。業界ごとだったり、業態ごとだったり、その会社の都合だったり、経営トレンドだったりにより変わる。なので逆に粉飾決算書というのは簡単に作ることができる。
ビジョナリーカンパニーにもあったが、100年繁栄する企業を作るには法令順守の精神を持たないと続かない。あと一撃必殺クリティカルなリスクは可能な限り持たないに限る。

<さいご>
はー、日記ためすぎ。技術の話をもっとしたいな。

kamiya_eiji at 01:02|PermalinkComments(7)TrackBack(0)日常 

2005年11月01日

最近読んだ本。

うーむ。今日もibisBrowserバージョンアップできず。

最近読んだ本。
<会社は誰のものか>
Shi3zのBLOGに吉田望さんの「会社はだれのものか」についてのエントリー
があって、吉田望さんがアマゾンのレビューアに対して暴言をはいて、
吉田望さんのBLOGが荒れたと知り、「こんな暴言はいちゃまずいはなぁ」
と思ったのですが、思わず買ってしまいました。
最初の方で、ホリエモンとか三木谷さんの人格や会社の社風の説明は、
「あんた、ホリエモンや三木谷さんを評論するほどエライのかよ」と
思わずつっこみたくなりました。あとは、読みやすい本で勉強になった
点もあります(ヨーロッパの経済の歴史などは俺はうとかったので)。

<ビジョナリーカンパニー>
これもShi3zお薦めの本で、UEIに飾ってありました。21億の男Nも絶賛
だったのでいまさらですが、読みました。ハードカバーで結構分厚かっ
たけど、さすが評判の本だけあってよい本です。ビジョナリーカンパ
ニーにならなければ!と思わず思ってしまう本です。
「100年栄える会社にしよう」「ワンマンにならないほうがよいよ」
「基本理念をまげるな」「大きな目標をかかげてリスクをとって挑戦せよ」
「小さな挑戦をたくさんやれ」「社員を教化せよ」「後継者は生え抜きに
せよ」という本ですね。

<ポスト産業社会なんとか>
これもShi3zお薦めの本だったと思うが、買ったけどまだよんでないや。
(最近読んだ本ではないな)

<Winnyの技術>
をを、昔、金子さんと3D野郎時代に技術を競った(って全然かないませ
んが)金子さんの本ということで買いました。Winny自体は昔たわごと
で書いたけど、一度も使ったことがない。未だにない。
うちの会社でも2,3年前に某研究所の依頼でP2Pシステムを開発した
ことがあって、C++とJava(+JXTA)とRDF(XML)をつかったシステム
でした。Winnyを読んで驚いたのは、クエリを6ホップぐらいで分岐
せずに6ノード程度しか伝播させないという点(+上流ノードにキー
を集める)。これはすばらしいアイデアだと思う。
上流ノードがあることでスター型ネットワークのようなパフォーマンス
のよさとP2Pの分散のトレードオフというバランス。これはよさそう。
JXTAではノードが増えるとクエリ負荷が高すぎるようになる。
あとは、想像していたよりも匿名性が低く転送のときの中継ノード数
が少ないこと。匿名性を重視したシステムではなく検索効率や転送効率
を重視していたとは知らなかった。

<僕が六本木に会社をつくるまで>
GREEの社長の田中良和さんが本を書いたということで買ってみた。
これまたまだ読んでいない。

<日経システム構築、日経ビジネス>
これは、定期購読しているので常に呼んでいる本。
日経システムは、大型システムのサーバダウンの詳細が載っているので
面白い。ただ、サーバやルータの説明はやたら高いものが多いので、
うちでは買えない。ま、日経システム構築を読み始めたころも、こんな
大型システムは作らないだろうと思って読み始めたが、ibisBrowserの
クラスタリングはかなり大きくなってきている。いつか高いサーバや
高いルータも買えるときがくるでしょう。
日経ビジネスの今週号は「グーグルとアマゾン」という特集。
両方とも技術思考でアフィリエイトをやっていると言う点が共通点です
ね。

本はまぁよく読むほうだが、学生時代に壁一面が本棚になってしまって、
引越しのたびに移動させるのが面倒になってすべて捨てました。
今は、買った本はつぎからつぎへと捨てることにしています。
(ビジョナリーカンパニーだけとっておこう)
ちなみに本は通勤の往復で読んでいます。地下鉄通勤なのでブラウザは
みれません。。

kamiya_eiji at 05:40|PermalinkComments(5)TrackBack(1)日常 

2005年10月18日

日記

まとめ日記。

先々週末は、動物園に行ってきました。子供にとって初の動物園。
動物を見せたが半分ぐらいは見ていない。リアクション薄い。
まだ8ヶ月では理解できない模様。
ま、動物園は歩いていけるほど近いので何度も来ることになるで
しょう。

先週末は、ミュージカルのモーツアルトを見に行った。
元々ミュージカル、バレエとか見るタイプではなかったが、妻と
出会ってからよく見に行くようになった。みれば面白いもので
ある。でもやっぱりミュージカルは出世ものより恋愛とかの
方が面白いな。

先週頭は定時取締役会。期首なので予算決め(売上目標、利益目標、
製品開発予算、東京進出予算などなど)ですね。あとは、増資の手配。

先週末は、ひさびさのブラウザバージョンアップで緊張しました。
バージョンアップの間があくとどんどんプレッシャーが高まる
というのがあるが、試験がまとめてできるので効率がよいという
のもある。冷静に慎重に集中して開発できるのもよい。
小まめなバージョンアップは、タイムリミットが近いため、冷静で
なくなり集中力に欠けてしまう点がある。
まぁレイアウト問題修正はまとまったタスクだが、他の改良は
CSS、RSS対応以外は、粒度が小さいタスクのはず。

昨日はびっくりしました。風呂に入ろうかと思って直前にケータイを
みたらサーバダウン警告メールが。。創業当初以来ひさびさに、
23時から会社に出社して会社に泊まりこみ。
高いマシンに交換したので安定してくれるとは思うが。

明日は始発で東京へ向かう予定。

kamiya_eiji at 22:56|PermalinkComments(5)TrackBack(0)日常 

2005年10月07日

開発

ibisBrowserファンの方。バージョンアップできていなくて申し訳ない。
状況的には、未だ次のバージョンアップの日の予定がたたず、難航して
います。手元のバージョンはより綺麗になっているページもあれば、
よけい壊れているページもあります。今一番辛いところですが、出口
のない開発はないはずです。そう信じて一歩ずつ前に進むしかないと
思っています。大儀をはたすための情熱は衰えていません。

ibisBrowserファンの方々がibisMailの登場でがっかりさせてしまって
いるかもしれませんが、ibisMailの方はずいぶん前に私が設計をしま
したが、それ以降のコーディング等は私がしている訳ではありません。
私は進捗管理と方針を決めているだけです。ibisBrowserとibisMail
の開発速度は無関係です。

競合製品と伍して戦えるようになれるよう努力を続けます。

kamiya_eiji at 00:18|PermalinkComments(5)TrackBack(1)経営 

2005年09月27日

渡辺秀行

やー、すごい!かっこいい!
専務の暗号研究の成果がメディアに紹介されました。
3年ぐらい暗号の研究をしてきただけのことはある。
ちなみに私は、グレブナー基底関数とか言われても分かりません。

■INTERNET WATCH
IPAが暗号技術Toyocryptを世界で初めて解読、今後はAESやE0の安全性評価も
http://internet.watch.impress.co.jp/cda/news/2005/09/26/9245.html

■IT Media
世界初! IPAがストリーム暗号「Toyocrypt」を解読
http://www.itmedia.co.jp/enterprise/articles/0509/27/news003.html

■IT Pro
IPAがストリーム暗号「Toyocrypt」を解読,「世界で初めて」
http://itpro.nikkeibp.co.jp/article/NEWS/20050926/221686/

■@IT
世界初! IPAがストリーム暗号「Toyocrypt」を解読
http://www.atmarkit.co.jp/news/200509/27/toyo.html

■CNET Japan
IPAが世界初の暗号解読に成功--100億年かかるところを20秒で
http://japan.cnet.com/news/sec/story/0,2000050480,20087578,00.htm

■BCNランキング
IPA、「解読に100億年かかる」暗号「トーヨークリプト」を27分で解いた!
http://bcnranking.jp/service/11-00004214.html

■IPAプレスリリース
世界初!ストリーム暗号「Toyocrypt」の解読に成功
http://www.ipa.go.jp/security/enc/pressrelease/press_IPA-SMW_20050926.html

kamiya_eiji at 13:46|PermalinkComments(8)TrackBack(1)経営 

2005年09月18日

Re:増資しました(します?)

Shi3zにトラックバック。
株式会社化おめでとう。先日の大幅増員、オフィス移転と嬉しい話だね。

お互い同じような年齢で会社を興して、同じような時期に人を雇って、
株式化して、増床して。

でもSh3zの方がやっぱり才能があって利益率が違いそう。流動資産はUEIの
方がうちよりも多そう。そして上場を目指しているってのがいいね。
Shi3zへ。上場についてまたエントリーを書いてください。
前会ったときは、上場を目指していないと言っていたので。

さてさて。
会計士と会う予定と2つ前のエントリーで書いたけど、結果から言うと
どうも、うちも好調で例年の10倍ぐらい税金を納めなければならなそう
な感じ。嬉しいことは嬉しいのだが、やっぱり流動資産が減る=会社の
安定度が減る。という訳で複雑な気持ち。

ま、好調といっても私が頑張っているからではなく、私以外のみんなが
頑張ってくれたお陰な訳で、ibisBrowser&ibisMailは周知の通り売上0
で赤字100%なんで、なんとか頑張らなければいけないけど。

ちなみにうちの役員間は会議もほとんどしないし、顔もあまりあわさな
い。仲が悪いわけではなくて、メールがあるし、お互いに信頼してい
るし、以心伝心、1を言えば10を知ってくれるからです。
お互い他の役員がなにをやってもしくじることはないと思っているし、
リスクがあることは事前報告承認があるし、危機の兆候があれば超高速
でメールが来るし、夜中3時だろうが4時だろうがクイックレスポンスが
くるためです。
何をするか(ビジョンやプラン)を決めたり、目標を立てたり、
どう実現化するかを考えたり、効率化を考えたり、とどれも必要だけ
ど、リスク管理はかなり重要。会社がつぶれてしまっては、ビジョンも
目標もなにもない。役員は常に、あるリスクの起こる確率と起こったと
きのダメージと、起こらないようにする対策のためのコストのバランス
をイメージする。特にダメージの量が大きいものの対策を考える。
1発倒産という危機には会いたくない。そんなんで倒産したら社員や
顧客に申し訳がたたない。そして世の中ダメージは大きいがコストが
ほとんどかからないものがおおい。困ってしまうのが、起こればダメー
ジが大きいが、対策のコストも無限大。というもの。対策をほどこせ
ばビジネスモデルが崩壊し、会社がなりたたないもの。これは諦める
しかない。ま、会社も人も万能ではないと開き直るしかない。ただ、
その危機が起きたときは、事前にイメージトレーニングができている
とダメージも想定できているので初動動作が速くできる。初動動作が
速ければダメージが抑えられる事象は世の中多い。
平時は、普通の速度でいいけど危機のときだけは、超高速クイック
レスポンスが行える姿勢であるべきだ。

閑話休題。
来週は、年1回の全社員ミーティングである決算発表祝賀会。これも
最初のころは居酒屋、去年はホテルをやっと借りれました。今回は、
さらにランクアップしたホテルで行う予定。非常に楽しみです。
1年間死ぬ思いでみんなが必死に完遂してきたプロジェクトをお互い
に思いながら、お互いに慰労する場。最高のひとときです。

ブラウザの開発の方ですが、昼間は連日人に会ったり、決算関係の会議
があったりで、少し時間が縮小ぎみです。すみません。
今は、コーディングし過ぎると頭の回転が速くなりすぎてオーバーヒート
するのでエントリーを書いています。

kamiya_eiji at 03:43|PermalinkComments(6)TrackBack(0)経営 

RE:水陸空両用ラジコン

Shi3zのラジコンにトラックバック。

やー、マジすごいな。このラジコン。想像を絶する動き。
昔プレステで遊んだパネキットのキットみたいな動き。
俺は、航空力学を勉強してフライトシミュレータを作ったり、セスナに乗りに
行ったりというほど飛行機は好きなほう。
動きをみると、主力のモータの出力が相当強そうだね。ヘリコプターのよう
にホバリングに近い動きもしているし。
やー、すごい。

そういや、俺、高校のときに模型飛行機を作ったのを思いだした。ラジコン飛行
機用のキットとかを買うのではなくて、航空力学の本を読みあさって、設計から
フルスクラッチでバルサと紙で作った。結局、プロペラの工学知識とモーターの
出力が不足してほとんど飛ばなかったけど。
模型飛行機はかなり慎重に作らないといけない。翼の骨組みになるバルサを切り
出したあと、ハカリで重さを量って左右均等になるように左右に分けて、ボンド
も重さに影響がでるから同じ量を使ってと、かなり精密。かなり時間をかけて
つくった記憶がある。

ゲームだと、パネキット。これは面白いゲームだった。昔かみやんのたわごと
で書いたけど。プレステのゲームで、パネルを組み立ててモータをつけて
車とか飛行機とか船とかロボットを作れるゲーム。プレステのパワーで、
これだけの物理計算と衝突判定と描画ができるのかと驚いた。パネキットの
プログラマは相当の凄腕間違えなし。ところでパネキット2とか出たのだろ
うか。PS2版のパネキットが見たい。そしてネット上でキット自慢とか、
仮想空間を共有して、キット対決とか、航空ショーとかできたら面白い
のだが。

ちなみに今日は、家具作り。先週妻がリビングに棚が欲しいというので、
いっしょに家具屋に行った。15万円のローユニットと3万5000円の組み立て
ローユニットとどちらを買おうか散々迷った。15万円のローユニットを
見た後、3万5000円の組み立て棚をみて、うーん、使い勝手は同じような
もん、見た目も同じようなもんだな。3万5000円のにするか。と決めよう
と思ったところ棚の側面に穴がぽつぽつと空いていた。
組み立て棚は、外枠、引き出し、ちょうつがい、扉が別売りで好きに組み
合わせて作るタイプ。どうも横に棚を並べて連結するために穴があるらし
い。
うーむ。この穴は安っぽい。。俺の組み合わせたパーツでは棚を2つ使う
ものの連結は不要。。あと、自分で組み立てると立て付けが悪くなる可能性
もあるな。。ということでやっぱり15万円のローユニットの売り場へ移動。
ローユニットをみていると、やっぱり15万のは立て付けがよい。こっちに
しようかと思ったところ、サイズをみると高さが72cm。駄目だ。俺のイメー
ジでは、80cmはないと駄目だ。組み立て棚の方は、92cm。こっちの方が
イメージに近い。
というわけで散々迷って3万5000円のにした。(普段即決で決める俺にして
は久々に迷った)

今日、午前に部材が届いたが、結局未だ完成せず(ま、一日中家具と格闘
していたわけではないが)。そしてリビングは、梱包のダンボールの山。
完成したらプラ板とかで穴を埋めたい。

デキはというと。。うーむ。やっぱり微妙に引き出しの手前の板がずれて
いる。や、俺が悪いんじゃないんだ。キットだからすでに板の切り出しや
下穴が空いているのだが、下穴の位置が部材ごとに少しずれている。
やっぱり15万のにしておけばよかったか?!

ちなみに、設計から自分で興すフルスクラッチの家具作りはやったことが
ない。ウッドデッキをトンカチもノコギリも持っていないところから、
フルスクラッチで作ったぐらいだから家具も作れるかというとそうでも
ない。家具は、かなり精密だからかなり難しい。
ウッドデッキは、数センチずれても全然わからない。
家具は、0.1mmずれれば立て付けが悪くなるし、0.2mmずれれば見た目で
デキが悪いことが分かってしまう。
それと、ウッドデッキはガンガン、クギやコーススレッド(木ネジ)を
使ってもいいが、家具は基本的に目にみえるところにクギを使っては
いけない。見えないところに使うための構造にするために手間をかけた
り、ノミでホゾを掘ったりしないといけない。
0.1mm単位の仕事なのでカンナやヤスリが必要。触ってササクレに刺さる
家具じゃ困るし。
精度を上げるには、相当の職人技と道具と時間が必要。ということで
今はやる気がおきない。

のんびりするときが来たらやろう。いつか。

kamiya_eiji at 02:17|PermalinkComments(0)TrackBack(0)娯楽