2010年7月19日月曜日

iSqueakを動かしてみる

iPhoneやiPad上で動かせるSqueakとしてiSqueakというのがあります.

そのためのコードを作者であるJohn M McIntoshさんが公開してくださっています.
John M McIntoshさんに感謝です.

http://isqueak.org/HomePage

このiSqueakのVMを利用してEtoysのイメージを動かしているのが,先日公開されました.



このソースはBert Freudenbergさんが公開してくれています.こちらでは,キーボード入力ができるようになっています.マルチタッチも可能.

ということで試してみました.
きちんと利用できるのにするためには.少し手間がかかったので,ここに記録しておきます.

いろいろと間違っていたらすみません.

必要なもの

  • Mac(intel + Snow Leopard )
  • Xcode(iPhone開発環境が含まれているのもの)
  • iSqueakのソースコード
  • PharoV10.sources.zip(iPadでEtoysを動かさないなら必要ない)
  • iPadでEtoysを動かすためのソースコード(キーボード入力を可能にする人)
  • Etoys(Etoys-To-Go4-Final.zip)
  • iPhone Developer Program(実機で動かしたい場合には必要です.1ライセンスで100台まで動かすことが可能なので,私に連絡していただけたら,一部の方だけなら・・・.)
  • iPhoneまたはiPad(実機で動かしたい場合には必要です)
  • あとは根性w?
まずは,iSqueakのソースコードをダウンロードしましょう.Subversionで公開されているので,保存したいディレクトリに移動して,ターミナルで以下のように入力します.

$ svn co http://squeak.org/svn/squeak/trunk/
$ svn co http://squeakvm.org/svn/squeak/trunk/

続いてPharoV10.sources.zipをダウンロードします.

http://www.pharo-project.org/pharo-download

PharoV10.sources.zipを解凍して,PharoV10.sourcesをtrunk/platforms/iOS/vm/iPhone/ に入れます.

trunk/platforms/unix/plugins/SocketPlugin/sqUnixSocket.cを以下のように編集します.

82行目
# include <netinet/udp.h>

以下のように変更します.

# ifndef TARGET_OS_IS_IPHONE
# include <netinet/udp.h>
#endif

ダウンロードしたiSqueak内のSqueakPureObjc.xcodeprojをダブルクリックをします(trunk/platforms/iOS/vm/ 内にあります).
「ビルドと実行」をします.問題があったら大変なので,まずはシミュレータを使って実行しましょう.

続いて,iPadでEtoysを動かしてみたいと思います.Xcodeを開いてる場合,終了します.

以下のアドレスから,Etoys4iPad-VM.zip,touchHand-bf.1.cs,touchSensor-bf.1.csをダウンロードします.

Bert Freudenbergさんに感謝

http://lists.squeakland.org/pipermail/etoys-dev/2010-June/005098.html

touchHand-bf.1.cs,touchSensor-bf.1.csは,拡張子をcsファイルとしてダウンロードしてください.

Etoys4iPad-VM.zipを解凍して,Etoys4iPad-VMディレクトリのplatforms/Mac\ OSObjC/vm/iPhone/Classes の中にあるファイルをtrunk/platforms/iOS/vm/iPhone/Classesにコピーします.


続いて,Etoys-To-Go4-Final.zipをダウンロードします.

http://www.squeakland.org/download/

Etoys-To-Go4-Final.zipを解凍しましょう.Etoys-To-Go 4.appで右クリックをして「パッケージ内容を表示」を選択します.

Contents/Resourcesからetoys.image,etoys.changes,EtoysV4.sources,fontsディレクトリをtrunk/platforms/iOS/vm/iPhone にコピーをします.

コピーしたetoys.imageをEtoys-To-Go 4.appにドラッグして起動します.
起動したら,日本語フォントを導入するかは任意です.

touchHand-bf.1.cs,touchSensor-bf.1.csをWorld内にドラッグをして読み込ませます.

etoys.imageでワークスペースを開く方法がわからなかったので,Etoysのライセンス表示で開かれるWorkspaceを利用して以下のプログラムを実行.

TouchCmdMorph new openInWorld.

表示されたMoprhは好きな一に移動させておきます.
変更内容を保存します.etoys.imageだとどのように保存するかわからないので,Workspaceで以下のコードを実行.

Smalltalk snapshot: true andQuit: true.

終了したら,コピーしたfontsディレクトリは削除しても構いません.

Xcodeを開きます.etoys.image,etoys.changes,EtoysV4.sourcesをXcodeの左側に表示されているResourcesフォルダにドロップします.

Xcodeで「プロジェクト」—「アクティブターゲット"SqueakNoOGLIPhone"を編集」を選び,「ビルド」のタブを選択します.

GCC 4.2 - プリプロセスのプリプロセッサマクロにISQUEAK_SOURCES="PharoV10"とISQUEAK_IMAGE="iPhone"を追加します.
動作させるイメージはetoys.imageですけど,追加しないと動作しません.
ここまでが終わったら,ビルドと実行をしましょう.最初はシミュレータを使ってビルドすることをおすすめします.

起動すると,画面がおかしいので,command + ← をして画面を横にします.
横になるときちんと表示されます.

command + → で画面を縦にするとキーボードが表示されます.
仕様で画面を縦にしないと表示されません.

TouchCmdMorphを押しながら,pなどをするとprint itができます.



素敵ですね!!
よかったらお試しあれ.

私は,iPadを3.2.1にアップデートしてしまったので,iPadインストールができない状態ですorz

iOS 4.1 betaには対応しているけど,3.2.1には対応していないのはどうなんだろう・・・.
Xcode早くアップデートして欲しい.

さすがに,ここまで書くと疲れる.



ビルドしてきちんと動作しない場合は,Xcodeで「キャッシュを空」にして「全てのターゲットをクリーニング」しましょう.
他にもいったんXcodeを終了して,再度ビルドをしてみるのもいいかもしれません.

0 件のコメント:

コメントを投稿