クジラ飛行机の開発状況+プログラミングメモ
« 2006年11月 | メイン | 2007年01月 »
2006年12月のアーカイブ
多忙2.0状態で、何もできなかったのですが、ようやく未踏プロジェクトの開発が本格始動できそうです。
今回、開発がすぐに開始できない分、採択が決まってから、いろいろな人に考えていることを話してフィードバックを得ました。
完成するものがどんなものなのかは当然として、どうやって実現するのか、開発後の継続開発のこととかも、いろいろ話すことができました。
今回は、日本語プログラミング言語を用いて、WEBブラウザや携帯電話で動かすことができるプログラミング言語「葵」を作ります。
携帯電話上で、テトリスやブロック崩しやクイズゲームなどの簡単なゲーム、ローン計算や見積もりなどの簡単なツールが簡単に作れるようにしたいと思います。
Web上で、プログラミングできるような開発環境を用意して、「誰でも気軽に日本語でプログラミングできる!」というのをキャッチフレーズにして作ろうと思います。
技術的には、Flash/Flash Lite2上で、葵のバイトコードを動かすというものです。
そして、コンパイラは、Linux/Mac/Windowsのプラットフォームで動くものにしたいのです。
現在の葵はCでできています。Cは移植性が高いので、すばらしいのですが、私がやると、ぜんぜん開発速度が出ないです。生産性のは、Delphiで書いている時の10分の1くらい。
そこで、このままの生産性を引きずるより、ライブラリが多く、私の開発力が最大限生かせる、.net上で動くDelphiでやろうかと考えています。(この辺りも挑戦です。)
加えて、既存のDelphi製のなでしこ、サクラという私のソフトも.net対応させて、mono上で、Linux/Macで動くと最高です。
・・・
と、思ったのですが、
Delphiがmono上でどうもうまく動かないとの記事を読み...
Javaでやろうかなぁと
再度計画を練り直すのでした。
FlashでBasic認証をする方法。
参考は、以下のスレッド。
http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=605&forum=7&post_id=6065#forumpost6065
どうやら、アクセスするURLを以下のようにすれば良いということ。
http://"ID":"password"@aaa.bbb.com/cgi-bin/test.cgi
せっかくなので試してみました。ですがうまくいきませんでした。うーん?!
そこで、「addRequestHeader()」でヘッダを足す方法で挑戦。
すると、以下のようなソースでうまくいきました。
var url = "http://example.com/example.php";
var user = "user";
var pass = "pass";
var auth_str = Base64.encode(user + ":" + pass);
lv.addRequestHeader("Authorization","Basic " + auth_str);
lv.sendAndLoad(url, res, "POST");
BASIC認証は、Base64が必要なので、Base64も前に自分で作ったやつを使ってみました。
Base64.asをダウンロード
ダウンロードしたBase64.asをFlashと同じフォルダにコピーして使います。
*携帯電話キャリア動向まとめ
http://level0.cuppy.co.jp/2006/10/flashlite20.html
ソフトバンクのFlash Lite2.0がSharedObjectを使えないそうで、
期待していただけに致命的です。
ちょっとした設定ファイルも、サーバー側に保存する必要があるのかぁ。
■ソフトバンク
対応機種:910SH、810SH、811SH、910T、810T、811T
■AU
W43SA、W45T、W43CA、W43H、W43S、W43K、W42SA
■DoCoMo
未定
class test {
static function main()
{
var txt:TextField = _root.createTextField("txt", 100,0,0,400,400);
txt.text = "*";
var ld:LoadVars = new LoadVars();
ld.onData = function (s2) {
txt.text += ("nadesi.com~" + s2 + "\n");
//
};
ld.load("http://nadesi.com/test.txt");
var ld2:LoadVars = new LoadVars();
ld2.onData = function (s) {
txt.text += ("aoi-project=" + s + "\n");
};
ld2.load("http://aoi-project.com/test.txt");
var ld3:LoadVars = new LoadVars();
ld3.onData = function (s3) {
txt.text += ("kujira-test=" + s3 + "\n");
};
ld3.load("http://kujirahand.com/test.txt");
}
}
===
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
===
各所で置かれているAPIでは、だいたい、これが設置されているので、
APIを渡り歩くことができそうです。
せっかくActionScript2.0を使っても、配列の中身はどうしても
タイプセーフにならない。
ところが、フリーのActionScript2コンパイラのMTASCは、配列をチェックしてくれる。
===
/*# Strictly typed arrays :*/
var x : /*String*/ Array;
===
こんな感じで書くらしい。
試しに、
===
class a {
function main()
{
var b:/*String*/Array;
b = new Array();
b[0] = 30;
}
}
===
こんなん書いてみたら、無事エラー出ました。
意外と重宝しそう。
Mac 上で、vi で ActionScriptを書く時のTips
「Vim6.3」の場合は以下:
http://www.dango-itimi.com/blog/archives/2005/000738.html
Mac OSX 10.4.8 のvimは、6.2なので、ちょっと手順が違う。
(1)下記のサイトより、ActionScriptの辞書ファイルをダウンロード
http://bitmap.dyndns.org/blog/archives/001207.html
(2)下記のサイトより、ActionScriptのハイライト定義ファイルをダウンロード
http://www.vim.org/scripts/script.php?script_id=1061
(3)Vimのインストールフォルダ /usr/share/vim/vim62 を $VIM と置き換えて読んでください。
(4)辞書ファイルを、$VIMにコピー
(5)ハイライトファイルを、$VIM/syntax/にコピー
(6)$VIM/filetype.vim に以下を追記
===
au BufRead,BufNewFile *.as set filetype=actionscript
autocmd FileType actionscript :set dictionary=/usr/share/vim/vim62/actionscript.dict
===
ちなみに、上記のサイトに書りますが、
:set complete+=k
とすると、通常の単語補完
の一行を追加すればよい (k は辞書オプション)。
無事、未踏に採択されました!
雰囲気的には、葵がFlash上で動くようにします!
雰囲気的には、なでしこが、Webブラウザや携帯電話で動くようになる感じを想像しています。
なんとか成果を出せるようにがんばろうと思います!
[なでしこ]
http://nadesi.com
[葵]
http://aoi-project.com
[IPA]
http://www.ipa.go.jp/about/press/20061130.html
[news]
http://www.thinkit.co.jp/free/news/0612/1/3.html