2004年10月アーカイブ

ケータイアプリを作る心境

技術系がいい具合に「ピックアップニュース」のほうに移ってきているんで、こっちの日記ではもう少しだらだらした内容を書いてみようかと思う。

わざわざこの日記を見ている人なら、私がケータイ向け(Vodafoneのみだけど)のアプリを作って公開していることを知ってる人は多いと思う。ここみてもらえばどんなのを作っているのかがだいたいわかるでしょう。パソコンを本格的にさわりだしたのは大学入ってから、ちょうど5年半前になるのか。もともとプログラム系をやってみたかったということもあり、HTMLに始まり、JavaScript、コンソールC言語、簡単なJava遊びとやってきた。

転機は大学2年後期の4年前。某友人の某プロジェクトがらみでいろいろと教わった影響で、単なるプログラム遊びとシステム構築の違いなどをかいま見ることができた。オブジェクト指向とはなんたるやが何となく見えてきたのもこのころ。ただ、当時のNTTによる人間廃人化計画の完成系であるテレホの影響もあり、大学の勉強がおろそかになり、それが響いて留年となる。留年回避のため大学3年の時はかなりがんばったんだけどね。

大学4年の時、当時としてはそこそこ最先端だったJ-T51というケータイ端末を買う。で、この端末に電卓が標準搭載されておらず、しかもJ-T51専用サイトで配布しているJava製の電卓があんまりにもうざいという状況に出くわす。「おしゃべり電卓」と名付けられたこのJ-T51専用サイトで配布されたJavaの電卓は、起動に時間かかるわボタン押すと無意味に音が出るわ、しかも無駄に見た目のグラフィックにこだわるわで使いにくいと非常に評判でした。ちなみに、時効だと思うんで白状しちゃいますが、★★J-T51絶対買うぞ!★★PART2スレの1は私です。

そんな電卓に不満を覚えて、自分でJavaアプリで電卓作ったれということでケータイJava(J-PHONEのみ)の仕様を調べ始める。ちょうどこのころJアプリ★ゲットで公開されていた(今は見えない)開発入門記事が大いに助けになった。大学2年の頃の某プロジェクトの甲斐もあって仕様自体はすんなりと理解できました。まぁ開発自体の経験がほとんどなかったので、実際に作る上ではいろいろと苦労しましたが。ケータイJavaではdouble,floatの浮動小数点が使えないということもあって、小数扱える外部ライブラリ探したり結局自分で自作したりとなかなかおもしろい経験となった。結果、起動1秒で動作も軽快な電卓を作れました。まぁ各種関数を使った場合の有効数字は未だに結構怪しいですが。

大学4年の後半頃に初めてLinuxをさわり始める。いろんな小物作りのためにPerlを多用するようになり、結果Apacheの設定やらMySQLやらをちょっとだけ触れるようになりました。でも、未だにSQL構文理解が怪しいのはナイショです。大学5年の今からちょうど1年半ほど前に初自作PC組んだことで、ハードウェアについて一通りわかったような気になりました。そんな知識を生かし、現在rarul.comサーバは自宅サーバとして運用されてます。なので、ちょっと設定ミスったり雷で停電したり犬が回線を引っこ抜いたりすると、たちまちrarul.comはインターネットの墓場と化します。

まぁそんな経緯があって、今はstViewerというテキストビューア作ったりしているわけです。ケータイアプリを作る上では有料化するという選択肢もあるんですが、よほどの作り込みのあるアプリか私が生活に困るほどにならない限りは有料でアプリ提供するつもりはありませんね。いいとこ「カンパウェア」でしょう。有料にするとユーザも敬遠するし、こんなアプリはお金取れるほどのものとも思えないし、有料による「しがらみ」(金払ってるんだからサポート・機能拡張バグ取りしろといわれること)も受けたくないですし、何よりこれまで多くのお金いらないソフト使わせてきてもらってるわけですし。特に最後、数多くのソフトがあるんで全部上げ切れないですが、現状ではK2Editorをあげときます。テキスト類は全部このテキストエディタを使わせてもらってます。

文章の最初と最後でですます体が変わっていても(゜ε゜)キニシナイ

Apacheがmmap_handler: mmap failedをはく

Apacheのmod_bandwidthを有効にしてから、error_logに大量の「mmap_handler: mmap failed」というメッセージが出てむちゃくちゃ気になっていた。調べても日本語じゃほとんど情報がなかったので、やむなく英語サイトも回ることに。探すと・・・・ありました。・・・てかApace本家かよ!

Apache 1.3b3 Bugsによると、「it is a logic error and does not indicate any problem」だそうです。訳すと「これはコードロジック的なエラーでありノープロブレムだ」らしいです。・・・て1997年頃のベータバージョン情報のようです。なんでこんなのが紛れ込んでるんだろ。。VineLinux2.6でapt-getしただけなのに・・・

mod_bandwidth.cによると、829行目ですね。ifに引っかかるとエラーメッセージを吐くけど、エラーメッセージを出すだけで処理的には何もしてませんねぇ。確かに問題なさそうです。でもねぇ、error_logファイルが肥大化するという実害があるんで何とかしたいんですがねぇ。。

たとえば、プライベートLAN内にWebサーバが立っていて、ルータのStatic NATを使って外部に公開しつつも、LAN内部にいる自分のPCからもこのサーバにアクセスしたいような場合です。外部向けにたとえば「www.rarul.com」なんていうホスト名をDNS登録していた場合、外からは「www.rarul.com」でアクセスできるようにするわけですが、LAN中から「www.rarul.com」とアクセスするとほとんどのルータでは正しくアクセスできません。

そんなとき、%windir%\system32\drivers\etc\hostsファイルを編集しましょう。デフォルトで「127.0.0.1 localhost」とか書いてあるので、これにならって改行はさんで「192.168.1.111 www.rarul.com」とか書いてやると、書いたマシンからはwww.rarul.comへのアクセス時にDNS参照せずここで設定したやつを優先してくれます。これで、中からも外からも「www.rarul.com」でアクセスできるようになりますよ。

一部ルータ、噂ではYAMAHAあたりのらしいけど、そいつはLAN側からWAN側に割り当てられたIPアドレスでアクセスすると、あたかも外からアクセスがあったのと同じようにルーティング処理をするようで、こういう機能を持っているなら、先のような場合でも問題ありません。

なつゲー定額開始

[BroadBandウォッチ] なつゲー、定額プランの提供や「ダウンタウン熱血行進曲」の対戦モード
200円で1時間、390円で1日プレイし放題プランのようです。・・・高っ。せめて1週間500円にしてよ。。さらに1日単位でプールできるように。

以前からなつゲーに関する記事を何個か書いてますが、これはベータに当選したからと言う責任で書いているだけではなく、前々からこういう昔のゲームをエミュなどの違法手段でなく正当にプレイしたいと思ってたからです。ファミコンミニは1つ2000円しますが、本当に2000円で売るべきなのかはちょっと疑問です。過去に任天堂はスーパーファミコンのカセットを詐欺まがいに値段つり上げてましたしね。やろうと思えばパソコンでエミュ使ってタダでできるこの時代、まっとうな価格でプレイできるような環境を待ってました。

自分検索

「自分検索」という、自分の名前でWeb検索して結果を見るという現象というか遊びというかそんなのがあります。そこで出てくる件数や自分の評判を見てウヒャウヒャするわけですね。試しに私の本名で検索してみると・・・あk;lk;lkl;あsこえわ(略 例えば「rarul」で検索してみるといろんなページが引っかかりますね。「らるる」だと、古典の助動詞「らる」関連の文章が大量に引っかかってあんま役に立ちませんが。

自分の名前で検索すると言うことは自分の評判や見られ方を知りたいわけです。例えば、BF1942というゲームをプレイしてるとき、自分ではうまくチームプレイに徹してがんばってるつもりなのに、実は「こいつまたTK(見方殺し)してる」「こいつの動きヘタいなププ」などと思われてないか気になるわけです。気になって知りたいと思ってくるくせに、実際に他の人に直接言われるとむかついたりするという感じに矛盾するわけですが。

先週末にAJBF III(第三次全日本BF1942選手権大会)てのがあってBF1942ゲーマとして参加させてもらいました。日頃煙草部屋(=国内BF1942で現在うまい人が一番集まるとされるサーバ)には行かない私は、BF1942のプレーヤネーム的にあまり知名度高くないと思ってるわけで、今回のAJBF III出場は名前を売りたいという面もあったわけです。結果はさえない動きであまりチームに貢献できたとは思えないですけど。そもそもの担当が一般歩兵なので、少々うまかろうがヘタだろうが目立ちませんけどね。例えば、DD(=駆逐艦, BF1942では数が限られた重要兵器)担当者ともなれば、うまさが認められクランに勧誘されたりすることもあるみたいで。まぁ実世界も、実際の技量うんぬんよりアピールのうまい人が得する仕組みですね。人間は社会的動物なので逃れられない事実です。

日頃と全然違うテーマの日記になってしまってますが、まとめると、「BF1942のプレイの技量向上に限界を感じてきてる」です。限界を感じてるからこそ周りが気になるわけで。。もはや、グラフィックボードを交換するなりADSLをやめてFTTHにするなりしないとこれ以上対抗できません。。。トホホ。

Vアプリ256K ver.2で変わったところ

Vアプリ256K ver.2向けの開発ドキュメント類が更新されてます。ver.2, ver.2と言われるだけで実際には256K(=J-SH53/V601SH)と比べてどこが変わったのかよくわからなかったんですが、今回のドキュメントで具体的にどのあたりが変わったのかが見えてきたんで簡単にメモっときます。「新機能導入の手引き2004 〜P6型端末編〜」というPDFのドキュメントにまとめてあります。。・・・・ということは、W-CDMA端末であるVGS向けのドキュメントも裏では存在するんでしょうか。。まぁそれは置いといて・・・

・英語の音声認識対応に拡張(API追加)
MA5対応
3DポリゴンエンジンVer.4対応(機能拡張)
・V-kara関連に新規対応
・グラフィック関連機能拡張(拡大縮小・マスクパターンタイルによる疑似半透過・明度調整・色調反転・モノクログレースケール変換・単色変換)→API追加
・タイマー起動アプリの廃止
・オフスクリーン(Image)の描画を規定内で高速化

私3D関連はいじったことがないのでこれは置いといて、追加されたAPI関連は以下です。
・com.j_phone.io.VoiceRecognition
・com.j_phone.util.GraphicsUtil
・com.j_phone.util.ImageUtil

で、追加されたMIDlet属性です。
・MIDxlet-LCD-Sync
・MIDlet-Karaoke
「MIDxlet-LCD-Sync」は、Zentek(PC向けエミュを提供してる会社)のエミュレータのドキュメントでは「MIDlet-LCD-Sync」と書かれてるんですが、これはたぶんZentek側のドキュメント記載ミスでしょう。で、MIDxlet-LCD-Syncが何のために利用するのかがよくわからんのですが。。描画の同期を取るとか曖昧でよくわからん。

まとめると、ver.2という名前だけあってたいした機能拡張はなされてないようですね。一番大きいのは3D関連かと思います。まぁver.2も、MIDP2.0準拠のVSCL2.0環境と端末が出るまでの短い運命です。・・・というかJSCL全部消えちゃうんですよね・・・?

パンヤおもろい

パンヤという、みんなのゴルフのパクリゲームオンラインゴルフゲームが、現在無料ベータテスト中です。ベータ版と言うこともあって一部バグがあったりホール数が少なかったりもするんですが、3Dグラフィックスのできもそこそこよくシステムも快適、キャッチフレーズ通りの「スカッとゴルフ」が出来るのでなかなかおすすめです。

私はまだ2日しかやってないんですが、最初+10とかで18H回ってたのが、たった数時間で-13まで成長しました。もちろん同じコースですよ。もし「rarul」とかいう名前を見かけたら声をかけてみてくださいね、、きっとシカトしますので。

ただ、同時30人プレイできるんですが、同時プレイする意義があまり感じられないと言う問題がちょっと気になるんですよね。ホントにおしゃべりを共有しているだけって感じがします。もうちょいインタラクション制があってもいいかも。まぁほぼリアルタイムに相手のプレイの様子が見られるだけでも大きいんですがね。

P2Pでネトゲの対戦相手検索

P2Pの有効な使い道についての提案。

ネトゲはサーバ運用にコストがかかる。中央でIDやらログイン状況やらから、実際に動いているゲームのアタリ判定や勝敗判定まで幅広いから、それぞれに処理するマシンなりが必要になる。けど一括管理しないのならばかなり楽になる。たとえばBF1942というゲームは、基本的にパッケージを店頭で売るのみ、一部ユーザは各自でサーバをたてるツール(無料配布・パッケージにも含まれる)を使ってサーバをたてる、んでユーザはASEGameSpyといった、第三者企業が提供するサーバ一覧管理ツールを使ってユーザが立てているサーバを検索しゲームに参加する。ユーザがサーバに参加するときにシリアルキーのハッシュ値チェックを行い、ユーザが正規製品購入者かどうかをチェックする。つまり、ユーザは一度製品を購入すればあとは月額料金なんて払わなくてもすむ。

ASEやGameSpyなんかは、サーバ検索に関して付加価値をつけたバージョンをライセンス販売して儲けている。が、やはりサーバ一覧管理や新しいゲームへの対応には手間暇がかかる。ここで、こういうサーバ一覧管理をP2Pで行えないだろうか。

P2Pでは、どんなIPアドレスを持つどんな種類のゲームサーバがあるかを共有する。で、各自のP2Pソフトは特定の種類のゲームのサーバのIPアドレス一覧をゲームのアプリ側に受け渡す。ゲームアプリ側はIPアドレス一覧から、実際にサーバにアクセスしてみて参加できるかどうかの確認を行い、その結果をP2Pソフトへ返答する。で、P2Pネットワーク上でもう有効でないサーバを削除していく。この仕組みを一般化してAPI提供してやれば、汎用のゲームサーバ検索P2Pネットワークが完成する。・・・はず。

これが一般的なプラットフォームとして提供できるのならば、たとえ有料のゲームであっても先のBF1942のようなシリアルキーのハッシュ値でのチェックなどで活用できるのではないだろうか。しかも、ゲーム提供企業はサーバを用意するコストがかからない。(ゲームサーバを動かすためのアプリを提供する必要があるが)

とかとか提案するのは、一般的な日曜プログラマがネトゲを作ろうとした場合、サーバを用意するのがどうしても苦痛なんですよね、ID管理とか。かといってクライアント同士の接続だけで動くアプリの場合、対戦相手を広く捜すのが面倒です。そんなのの解決に使えないでしょうか。。と提案してみる。提案するだけなのは、私がそんなP2Pネットワークなんて作れないからですが(ぉ)

mod_bandwidth制限の設定値は厳しめ

ちょいと前の日記と障害情報ページの通り、Apacheのmod_bandwidthで帯域制限を開始したんですが、考えてつけた値よりもApacheは実際はもっともっと厳しい帯域制限をしている模様です。LargeFileLimit 100 25600と書いて、100KB以上のファイル転送時は25.6KB/secに制限して、と設定したつもりが、実際は5KB/secほどしか出なくてorz...ごめんね200KBほどのJPEG転送に数十秒も待った方々。

設定してApache再起動させて実際に転送させて・・・を繰り返してみた結果、LargeFileLimit 100 153600(100KB以上は153.6KB/secに制限)と記述して、実測では50KB/secほどになってようやく落ち着く。なんだこの設定値とはかけ離れた値は?なんだかよくわからないが実測でこうなってるんだから仕方ない。

というわけで、mod_bandwidthで設定するときは理論値ではなくて実際に転送させたときの実測値を元に値を決めましょう。。

このアーカイブについて

このページには、2004年10月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2004年9月です。

次のアーカイブは2004年11月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 7.9.0