Upload
masashi-umezawa
View
294
Download
0
Embed Size (px)
DESCRIPTION
iPadでScratchを動かすためのポイント解説です
Citation preview
iPadでScratch自分なりのDynabookを作ろう
第64回Smalltalk勉強会
合同会社ソフトウメヤ 梅澤真史
モノは既にある
● J. M. MacintoshさんによるScratch Viewerhttps://github.com/johnmci/Scratch.app.for.iOS
● 当時はApp Storeでの配布が許されなかった顛末は...https://mobilewikiserver.com/Scratch.html
● 2011年4月にgithubに置かれ、放置
でも今は??
ガイドライン的にはOK (にできる)
● アプリケーション審査ガイドラインhttps://developer.apple.com/jp/appstore/guidelines.htmlhttps://developer.apple.com/programs/terms/ios/standard/ios_program_standard_agreement_20130610.pdf
● ダウンロードしたプログラムを実行、インストールしなければOK○ Scratch Viewerはまさにこれ
● プロジェクトの保存、読み込みをローカルに限定すれば問題ない
復活の試み(1)
● 元はXcode 3系、iOS 3.1用のプロジェクト
なので、 Xcode 5系、iOS 7用にコンパイル できるようにしていく
● Build Settings○ コンパイラをApple LLVM 5.1に○ -fno-cse-follow-jumps コンパイルオプションを外す
● General○ Bundle Identifierを適当なものに
■ com.softumeya.MyScratch など
復活の試み(2)
● ソースの修正○ Other Sources/platforms/iOS/iPhone/sqPlatformSpecific.h
■ マクロの修正。LLVM 5.1になったため
○ Other Sources/CSCScratchiPhoneInterface/ScratchiPhoneAppDelegate.m■ 有効なemailアドレスの指定。とりあえずコメントアウト
#define ReturnFromInterpret() return↓
#define ReturnFromInterpret() return 0
#error you must alter the localization data…
↓//#error you must alter the localization data…
ビルド成功!!
あとはお好きなように...
● Objective-CとSmalltalkの知識があれば、好きな用にカスタマイズできます!!
ObjC部分のクラス解説(1)● ScratchIPhoneAppDelegate
○ 最初に見るべきクラス。中心的なコントローラとしての役
割を持つ。ログイン処理、ScratchのVM起動、エラーの
レポートなどを統括
● ScratchIPhonePresentationSpace○ Scratch本体の表示を行う
● LoginViewController○ Scratchアカウントへのログインを行う。ローカルで閉じ
る際には不要
● CSCWebsiteViewController○ Scratchのプロジェクトサイトにアクセスするためのコント
ローラ。ローカルで閉じるなら不要
ObjC部分のクラス解説(2)● ASI* シリーズ
○ 非同期でHTTP通信を行わせるためのものhttp://allseeing-i.com/ASIHTTPRequest
○ ローカルで閉じる場合は不要
● SqueakNoOGLIPhoneAppDelegate○ ScratchIPhoneAppDelegateのスーパークラス。画面の回
転、レンダラ(View)の選択など
● SqueakUIViewCALayer○ Scratch本体画面のView
● SqueakUIViewOpenGL○ 本体画面のView。高速。Retinaディスプレイでは、正しく動
作しない (極端に小さく表示)
Smalltalk部分の変更
● 基本的な流れ○ Scratch.imageをMac上のSqueak VMで立ち上げ、開
発者モードに移行する○ 開発者モードでSmalltalkプログラミング○ ユーザモードに復帰してイメージをセーブ
■ 変更部分は チェンジセットで書き出しておくと良い
MacからのScratch.imageの起動
● レガシーVMを使うこと(Cog VMではない)○ Squeak3.10.2J-all-in-one.zip同梱のSqueak-4.2.2.
bata1Uが便利
○ http://sourceforge.jp/projects/squeak-ja/downloads/51524/Squeak3.10.2J-all-in-one.zip/
● Scratch.imageを指定して、Scratchが立ち上がったら、Shiftキーを押しながらFileメニューを選び、”Exit User Mode”で開発者モードに
● 抜け出るときは”Save Image in User Mode”
Smalltalk部分のクラス解説
● IPhoneScratchProxy○ ObjCとScratchFrameMorphとのつなぎ役。
○ startUpクラスメソッド内で、ObjC側から呼び出し
可能となるメソッド群をエクスポートしている
■ ObjectiveCSqueakProxy>>addSigViaString: aString aSignature: aSignatureString
● ObjectiveCBridge○ Smalltalk側からObjCのメソッドや関数を呼び出すため
のブリッジ
ObjectiveCBridgeの例
● NotificationCenterによる通知
dfc := (ObjectiveCBridge classObjectForName: #NSNotificationCenter)defaultCenter.
dfc postNotificationName: squeakVMIsReadyNow object: nil asObjc.
● 任意のObjective-C のメソッドをSmalltalkから呼び出し可能
Scratch for iPad
● Scratch for iPad○ iPadに特化し、ローカルに閉じる形にカスタマイズしたア
プリの開発中。 ○ App Storeにデビューさせる
● 現状○ ログイン画面、プロジェクトダウンロードの消去○ iPad用に画面の大型化○ レンダラの修正
■ Retina でも表示可能なように○ Tapの調整
■ 簡単にタップできるように
などなど修正中 。ちょっとデモ。
テスター募集中!!
● TestFlightで皆さんのiPadにインストールし、テストできます
https://www.testflightapp.com
● ご興味のある方は[email protected]まで