注意

このページの内容はXcodeによるコンパイルが出来ないことで,すでに意味のないものとなっています。記録として残していますので注意して下さい。

ソースコード

公開先

現在,iOSで動作するSqueakのソースコードは以下のものであるが,Xcodeでビルドする際にそれぞれ問題点がある。 区別のため,前者をEtoys4bf,後者をiSqueakとよぶことにする。

ビルド

Etoys4bfのビルド

Dr. Bert Freudenberg: Squeak Etoys on iPad
Etoys4bfは,Xcode4.1+iOS SDK 4.3では,(Base SDKを4.2から4.3に変更することで)そのままビルドできるが,最新のXcode 4.3.3+iOS SDK 5.1では残念ながらビルド後に実行すると,EXC_BAD_INSTRUCTIONエラーがでて動作しない。開発者向けに公開されているXcode4.5+iOS SDK 6 beta4 でも同様である。ソースコードの作成者であるBert Freudenberg氏は,現在のところrebuildする予定はないとetoys-devで発言している。Xcode 4.1+iOS SDK 4.3でビルドしたものは,iOS 4.3搭載のiPadでは問題なく動作するが,iOS 5搭載のiPadでは動作が不安定ですぐに落ちてしまう。追記(2013.1.17):iOS 6搭載のiPadでは,ときどき起動に失敗することがあるが,今のところ安定して動いている。追記(2013.11.18):iOS 7搭載のiPadでも安定して動くようである。
補足:iSqueakやjohnmci/Scratch.app.for.iOS - GitHubは最新のXcode+iOS SDKでビルドできるので,Etoys4bfも手を入れればビルドできるのではないかと期待している。

iSqueakのビルド

iSqueakは最新のXcodeとSDKでビルドが可能であるが,ソフトキーボードが表示されない(従って文字入力ができない)欠点がある。
(注:iOS6 simulatorでは問題ないが,iOS6 を入れたiPad(3rd generation)で実行すると,iSqueakの全体画面が極端に小さくなる。これは上述のScratch for iOSも同様である。iOS 5とiPad(3rd generation)の組み合わせで試していないので,iOS 6の問題かiPad(3rd generation)のどちらの問題かは確認できていない。
(注追加:上記で画面は小さくなったと書いたが,画面上のタッチ領域は小さくなっていない。表示だけ小さくなっている。最後に画像を載せる。)
(注追記(2013.2.22):Retina用のシミュレータを実行すると同様に小さくなってしまう。Retina用の設定ができていないだけのようである。)
(注追記(2014.11.15)SqueakUIViewOpenGLの問題で,Retinaディスプレイでは正しく動作しないことが原因であった。(第64回Smalltalk勉強会の資料より)

iSqueakのビルドは次のトウヨウリンゴさんのページを参考にする。 トウヨウリンゴ:iSqueakを動かしてみる

  1. ソースのダウンロードは,トウヨウリンゴさんのページに従って,ターミナルで
    $ svn co http://squeakvm.org/svn/squeak/trunk/
    を実行する。
  2. http://www.pharo-project.org/pharo-download
    のfile-serverへのリンクをクリックしてリンク先から,PharoV10.sources.zipをダウンロード後解凍して,PharoV10.sourcesをtrunk/platforms/iOS/vm/iPhone/ に入れる。
  3. trunk/platforms/iOS/vm/SqueakPureObjc.xcodeprojをダブルクリックしてXcodeで開き,最初にValidate settingsで設定をチェックする。
  4. トウヨウリンゴさんのページに従って,trunk/platforms/unix/plugins/SocketPlugin/sqUnixSocket.cを以下のように編集する。
    82行目の
    # include <netinet/udp.h>
    を以下のように変更する。
    
    # ifndef TARGET_OS_IS_IPHONE
    # include <netinet/udp.h>
    #endif
    
  5. http://squeak.org/Download/などからSqueakV41.sourcesをダウンロードして,trunk/platforms/iOS/vmにおく。
  6. trunk/platforms/Cross/vm/sqVirtualMachine.hの
    	#ifndef VM_PROXY_MINOR
    	/* Increment the following number if you add functions at the end */
    	# define VM_PROXY_MINOR 12
    	#endif
    
     を12から9にする。(10以降はビルドするとエラーがでる。)
  7. imageはトウヨウリンゴさんのページに従って作成してもよいが,Etoys4bf内のetoys.image,etoys.changes,EtoysV4.sourcesを流用する。この3つのファイルを trunk/platforms/iOS/vm/iPhone に入れて,XcodeでAdd filesで追加する。さらに,XcodeのBuild settingsのApple LLVM compiler(またはGCC4.2)のpreprocessingの項目にある
     ISQUEAK_IMAGE="iPhone"
     ISQUEAK_SOURCES="PharoV10"
    
     ISQUEAK_IMAGE="etoys"
     ISQUEAK_SOURCES="EtoysV4"
    
    に変更する。
これでXcodeでのビルドが通るが,Simulatorで実行するとEtoysは動くがソフトキーボードは表示しない。

日本語化について

配布されているEtoys4bfのetoys.imageでは日本語表示に問題がある。日本語化を含め修正したetoys.imageとmoファイル群を圧縮したetoys4ipad.zipを作成した。主な修正点は です。なお,日本語入力はできない。

実機で動かす

実機で動作させるときの注意

実機に入れる為には,AppleのiOS Developer Program(有料)に加入する必要がある。実機用にビルドする方法についてはWeb上に様々な情報があるのでそれを参照して欲しい。Etoysに関して実機用にビルドするときの注意は以下の通りである。
  1. XcodeでTARGETSのinfoタグをクリックして,KEYを増やし, 一番下のKEYで右クリックすると+キーが現れるのでそれをクリックする。

    Application supports iTunes file sharing にして valueをYESにする。

    これでBuildして,実機にEtoysを入れる。
  2. 入れた後で,iTunesで実機のAppタグを見るとファイル共有の Appのところに,Etoysが現れ,実機とファイルのやり取りが できる。

  3. 実機のiPadの設定でEtoysに割り当てるメモリも上限まで増やしておく。
タブレットでEtoysを使う時指でメニューやハロが隠れるためうまく対象をタッチするのが難しく,Bert FreudenbergさんはことあるごとにUser Interfaceに問題があり改善が必要と発言している。実際,実機で試してみると指だけで操作するのはなかなか難しいのだか,先が透明になっているスタイラス(例えば,Jot Pro)を使うとそれほど違和感は感じない。なお,User Interfaceの問題については,Bert Freudenbergさんがタブレット上でのEtoysの操作感を体験できるEtoys-To-Go touch emulatorを公開しています。

上の注に関して


赤い点の当たりをタッチすると,"MAKE A PROJECT"をタッチして,新しいウインドウを開く。
2013.1.17 iOS6での動作について追記しました。
2013.2.22 iSqueakがRetina対応していないことの補足を追記しました。
2013.3.12 説明の補足として画像を追加し,表現も一部変更しました。
2013.3.14 日本語化についての情報とUser Interfaceの情報を追記しました。
2013.11.18 iOS7iOS6での動作について追記しました。
このページの内容は,JSPS科研費 23650507の助成を受けた研究の過程で得られたものです。