Sunflat のブログ

ソフトウェア開発についての話題が多いかも

F#も少し使ってみた

.NET向けアプリの開発にOCamlをベースにしたF#という言語が使えるらしいので、id:sunflat:20110305:p1 で作ったミニゲームを、F#用に修正してみた。

ソースコード(game1.fs)

Ubuntu上のmono+F#2.0でコンパイル&動作確認済み。Windowsでは動作未確認。
インデントの構文は良く知らないので、OFFにしてあります。


.NETのAPIは、普通にC#っぽい構文で呼び出すみたいなので、OCamlC#をごちゃまぜにしたような感じのコードに。
Objective C と C++ が混ざった Objective C++ みたいなノリで使えそう。

ocamljsで簡単なシューティングゲームを作ってみた

名古屋Reject会議02で話を聞いたocamljsが面白そうだったので、OCamlよく分からないけど、ocamljsを使ってみた。なんか、シューティングゲームっぽいものが出来た。

[ゲームを起動] (Firefox, Chrome, Safariで動作。IE不可)

遊び方:クリックでゲーム開始。上から敵(水色の四角形)が降ってくるので、マウスで宇宙船(緑色の四角)を動かして、クリックで弾を撃って倒す。敵に当たるとゲームオーバーなので、ブラウザをリロードしてリプレイ。5点ごとにスピードが速くなるよ!

追加仕様:150点以上取るとエラーが出るかもしれませんが(未確認)、それがゲームクリアということでw

ソースコード(game1.ml)

ocamljsとは

OCamlのプログラムを、Webブラウザで動作するJavascriptに変換してくれる。
id:keigoiさんの記事が詳しい:
http://d.hatena.ne.jp/keigoi/20101101/1288584308

OCaml入門

OCaml.jpのチュートリアルで勉強した: http://ocaml.jp/
あとは、ocamljsについているexamplesを眺めたりすると良さげ

使ってみた感想

  • 良かった点
    • mutableな変数を定義すれば、普通にjavascriptと同じような感覚でコードが書ける。関数型言語的にはあまり良くないらしいが
    • 型推論が強力なので、静的型付け言語にもかかわらず、ActionScript3みたいに型名だらけにならない
    • コンパイルエラーと戦う必要があるが、コンパイルが通った後は、ランタイムエラーはめったに発生しない(コンパイル時に多くのエラーを見つけられる)
    • onMouseMoveメソッドでの return false; のし忘れとかを、自動検出できた
    • 関数の部分適用が結構便利。引数の一部のみを指定した関数(残りの引数を取る)を作って、別の関数に渡したり
    • バリアント型やパターンマッチが便利そう!
  • 困った点、気になった点
    • OCamlの構文に慣れるのが結構大変。セミコロンの有無を間違えたり、演算子の優先順位を勘違いしたり、負の数を括弧で囲み忘れたり
    • 複数のレコード型に、同じ名前の要素を定義してしまうと、型推論がうまくいかない(ship_t, bullet_t, enemy_t に、同じ変数 x,y を定義した場合など)。id:mzpさんによると、shipX, bulletX, enemyX のように、別々の名前をつけるのが良いらしい
    • ocamljsで生成されるJavascriptのコードには、LGPLのコードが含まれているようだけど、静的にリンクされちゃっているので元のOCamlのソースも公開が必須になるのかな?ライブラリ部分を別のjsファイルに分ければ大丈夫?

Android 1.5/1.6 のsampleのビルドエラー

Android 1.5/1.6 のsample(ApiDemo)を、最新のAndroidSDKでビルドするとエラーが出るようだ。
以下のように、res/values/strings.xmlアポストロフィー(')の前に、バックスラッシュ(/)を入れれば解決するっぽい。

例:

変更前: <string name="summary_on_advanced_toggle_preference">I'm on! :)</string>
変更後: <string name="summary_on_advanced_toggle_preference">I\'m on! :)</string>


まだまだAndroid1.5端末は生き残ってるので、当分は対応が必要そうだなぁ
http://developer.android.com/resources/dashboard/platform-versions.html

スマートフォンまみれ

ふと気づけば、机の上がスマートフォンまみれだ。(iPod touch含む)

ほんの2〜3年前までは、ガラケーまみれの環境でFlash Lite開発の日々だったのになぁ。
(2007年に撮った写真)


今から3年後は、どんな環境で開発してるんだろうか。
とりあえず、iPhone7には3D液晶と指紋センサと心拍計ぐらいはついてそうだな。
CPUは32コアぐらいになって、並列処理向け言語のErlangやgoとかでソフト開発してたりするのかな。

Apple Wireless KeyboardをiMacからiPadへ付け替える方法

1. iMacBluetoothをOFF

    • タスクバーのBluetoothアイコンから。WirelessMouse利用時には、USBマウスを接続する必要

2. Keyboardの電源ボタンを"長押し"して、電源切
3. iPadBluetoothをON

4. Keyboardの電源ボタンを押して、電源入

    • 初回接続時には、iPadの画面上でKeyboardを選んで接続

元に戻す場合は、上の説明の"iMac"と"iPad"を入れ替えた操作をすればOK

ナイパッド族のためのiPadシミュレータ活用方法

1980年代、パソコンに興味を持ちながら所有出来ない者のことをナイコン族と呼んだ。

そして2010年4月、アップルによる突然のiPad発売延期を受け、iPadに興味を持ちながら所有出来ない「ナイパッド族」が大量発生するだろう。

そこで、iPadシミュレータ中心のゲーム開発手法を探求する。

続きを読む