iPadでScratch
自分なりのDynabookを作ろう
第64回Smalltalk勉強会
合同会社ソフトウメヤ 梅澤真史
モノは既にある
● J. M. MacintoshさんによるScratch Viewer
https://github.com/johnmci/Scratch.app.for.iOS
● 当時はApp Storeでの配布が許されなかった
顛末は...
ガイドライン的にはOK (にできる)
● アプリケーション審査ガイドライン
https://developer.apple.com/jp/appstore/guidelines.html
https://developer.apple.
com...
復活の試み(1)
● 元はXcode 3系、iOS 3.1用のプロジェクト
なので、 Xcode 5系、iOS 7用にコンパイル
 できるようにしていく
● Build Settings
○ コンパイラをApple LLVM 5.1に
○ -f...
復活の試み(2)
● ソースの修正
○ Other Sources/platforms/iOS/iPhone/sqPlatformSpecific.h
■ マクロの修正。LLVM 5.1になったため
○ Other Sources/CSCScr...
あとはお好きなように...
● Objective-CとSmalltalkの知識があれば、
好きな用にカスタマイズできます!!
ObjC部分のクラス解説(1)
● ScratchIPhoneAppDelegate
○ 最初に見るべきクラス。中心的なコントローラとしての役
割を持つ。ログイン処理、ScratchのVM起動、エラーの
レポートなどを統括
● ScratchI...
ObjC部分のクラス解説(2)
● ASI* シリーズ
○ 非同期でHTTP通信を行わせるためのもの
http://allseeing-i.com/ASIHTTPRequest
○ ローカルで閉じる場合は不要
● SqueakNoOGLIPho...
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://sourcef...
Smalltalk部分のクラス解説
● IPhoneScratchProxy
○ ObjCとScratchFrameMorphとのつなぎ役。
○ startUpクラスメソッド内で、ObjC側から呼び出し
可能となるメソッド群をエクスポートしてい...
ObjectiveCBridgeの例
● NotificationCenterによる通知
dfc := (ObjectiveCBridge classObjectForName:
#NSNotificationCenter)defaultCen...
Scratch for iPad
● Scratch for iPad
○ iPadに特化し、ローカルに閉じる形にカスタマイズしたア
プリの開発中。
○ App Storeにデビューさせる
● 現状
○ ログイン画面、プロジェクトダウンロードの...
テスター募集中!!
● TestFlightで皆さんのiPadにインストールし、テス
トできます
https://www.testflightapp.com
● ご興味のある方はume@softumeya.comまで
Upcoming SlideShare
Loading in …5
×

iPadでScratch

841 views

Published on

iPadでScratchを動かすためのポイント解説です

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
841
On SlideShare
0
From Embeds
0
Number of Embeds
29
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

iPadでScratch

  1. 1. iPadでScratch 自分なりのDynabookを作ろう 第64回Smalltalk勉強会 合同会社ソフトウメヤ 梅澤真史
  2. 2. モノは既にある ● J. M. MacintoshさんによるScratch Viewer https://github.com/johnmci/Scratch.app.for.iOS ● 当時はApp Storeでの配布が許されなかった 顛末は... https://mobilewikiserver.com/Scratch.html ● 2011年4月にgithubに置かれ、放置 でも今は??
  3. 3. ガイドライン的にはOK (にできる) ● アプリケーション審査ガイドライン https://developer.apple.com/jp/appstore/guidelines.html https://developer.apple. com/programs/terms/ios/standard/ios_program_standar d_agreement_20130610.pdf ● ダウンロードしたプログラムを実行、インストールしなければ OK ○ Scratch Viewerはまさにこれ ● プロジェクトの保存、読み込みをローカルに限定すれば問題 ない
  4. 4. 復活の試み(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 など
  5. 5. 復活の試み(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… ビルド成功!!
  6. 6. あとはお好きなように... ● Objective-CとSmalltalkの知識があれば、 好きな用にカスタマイズできます!!
  7. 7. ObjC部分のクラス解説(1) ● ScratchIPhoneAppDelegate ○ 最初に見るべきクラス。中心的なコントローラとしての役 割を持つ。ログイン処理、ScratchのVM起動、エラーの レポートなどを統括 ● ScratchIPhonePresentationSpace ○ Scratch本体の表示を行う ● LoginViewController ○ Scratchアカウントへのログインを行う。ローカルで閉じ る際には不要 ● CSCWebsiteViewController ○ Scratchのプロジェクトサイトにアクセスするためのコント ローラ。ローカルで閉じるなら不要
  8. 8. ObjC部分のクラス解説(2) ● ASI* シリーズ ○ 非同期でHTTP通信を行わせるためのもの http://allseeing-i.com/ASIHTTPRequest ○ ローカルで閉じる場合は不要 ● SqueakNoOGLIPhoneAppDelegate ○ ScratchIPhoneAppDelegateのスーパークラス。画面の回 転、レンダラ(View)の選択など ● SqueakUIViewCALayer ○ Scratch本体画面のView ● SqueakUIViewOpenGL ○ 本体画面のView。高速。Retinaディスプレイでは、正しく動 作しない (極端に小さく表示)
  9. 9. Smalltalk部分の変更 ● 基本的な流れ ○ Scratch.imageをMac上のSqueak VMで立ち上げ、開 発者モードに移行する ○ 開発者モードでSmalltalkプログラミング ○ ユーザモードに復帰してイメージをセーブ ■ 変更部分は チェンジセットで書き出しておくと良い
  10. 10. 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”
  11. 11. Smalltalk部分のクラス解説 ● IPhoneScratchProxy ○ ObjCとScratchFrameMorphとのつなぎ役。 ○ startUpクラスメソッド内で、ObjC側から呼び出し 可能となるメソッド群をエクスポートしている ■ ObjectiveCSqueakProxy>>addSigViaString: aString aSignature: aSignatureString ● ObjectiveCBridge ○ Smalltalk側からObjCのメソッドや関数を呼び出すため のブリッジ
  12. 12. ObjectiveCBridgeの例 ● NotificationCenterによる通知 dfc := (ObjectiveCBridge classObjectForName: #NSNotificationCenter)defaultCenter. dfc postNotificationName: squeakVMIsReadyNow object: nil asObjc. ● 任意のObjective-C のメソッドを Smalltalkから呼び出し可能
  13. 13. Scratch for iPad ● Scratch for iPad ○ iPadに特化し、ローカルに閉じる形にカスタマイズしたア プリの開発中。 ○ App Storeにデビューさせる ● 現状 ○ ログイン画面、プロジェクトダウンロードの消去 ○ iPad用に画面の大型化 ○ レンダラの修正 ■ Retina でも表示可能なように ○ Tapの調整 ■ 簡単にタップできるように などなど修正中 。ちょっとデモ。
  14. 14. テスター募集中!! ● TestFlightで皆さんのiPadにインストールし、テス トできます https://www.testflightapp.com ● ご興味のある方はume@softumeya.comまで

×