Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
How to make and publish a Swift playground book...
Search
sonson
September 01, 2018
Programming
19k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
How to make and publish a Swift playground book for iPad
sonson
September 01, 2018
More Decks by sonson
See All by sonson
計算グラフのJITコンパイラをLLVM on C++で作ろう
sonsongithub
2
630
LLVMでHalideみたいな計算グラフ+JITを作りたい
sonsongithub
0
1.6k
LLVM Tutorial 02 - わいわいswiftc
sonsongithub
1
460
LLVM Tutorial - わいわいswiftc
sonsongithub
0
360
Swiftで実装するHTML特殊文字の高速処理
sonsongithub
3
8.1k
First step of 3D touch
sonsongithub
0
720
Getting started with 3D Touch
sonsongithub
0
820
SSLって必要ですか〜Let's Encryptを試してみよう
sonsongithub
3
610
Other Decks in Programming
See All in Programming
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
3.1k
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
280
Are APIs Still Relevant in the AI Era?
soyuka
0
290
WebAssembly in Android Apps 〜 WASMはJNIの夢を見るか
keiji
1
110
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.7k
AHC070解法紹介
eijirou
0
130
Heart of Swift Concurrency
koher
0
950
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
270
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
260
Family mrubyの進捗
kishima
1
130
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
500
SREの越境 / SRE Collaboration
y0hgi
2
260
Featured
See All Featured
How to build a perfect <img>
jonoalderson
1
6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Are puppies a ranking factor?
jonoalderson
2
3.9k
Building AI with AI
inesmontani
PRO
1
1.2k
Building the Perfect Custom Keyboard
takai
2
880
Paper Plane (Part 1)
katiecoart
PRO
2
11k
WCS-LA-2024
lcolladotor
0
830
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
460
Deep Space Network (abreviated)
tonyrice
0
320
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
940
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
700
Transcript
Χϝϥ͔Βͷը૾ΛϦΞϧλΠϜʹ͍͡ΔPlayPixels Tech. Yuichi Yoshida Senior researcher, DENSO IT Laboratory, Inc.
#iOSDC2018 @sonson_twit © 2014 DENSO IT Laboratory, Inc., All rights reserved. Redistribution or public display not permitted without written permission from DENSO IT Laboratory, Inc. Swift Playgrounds Bookͷ࡞ΓํͱΓํ
ࣗݾհ • sonson • twitter: sonson_twit • github: sonsongithub •
portfolio • 2tchɾɾɾଟɼࣙΊΔ • numsw • iOS11 Programming Book(ൃചத) • ࣄ(computer vision, machine learning) • ը૾ೝࣝɾݕࡧٕज़ • ࠷ۙσʔλαΠΤϯεతͳ͜ͱ
$PSF.-ͱ$SFBUF.-ʹ ͍ͭͯॻ͘Α
ࠓͷత
Swift Playgrounds
None
σϞ • AppleͷσϞ
ࠓͷ͓ • త • iPadʹࣗΈͷSwift codingڥΛ࡞Δ • ͦ͏͍͏ڥΛΈΜͳͰެ։͋ͬͯ͠ɼָ͠Ή • ࡞Γํͱެ։ํ๏
• AppleۘͷςϯϓϨʔτʹΑΔ࡞ΓํΛհ • ެ։Ͱ͖ΔΜͰ͢Αɼ͜Ε͕ɽ • Χϝϥͷը૾ॲཧΛ͢Δαϯϓϧ • ը૾ॲཧͷࠜװΛͬͯΒ͏
͜͏͍͏ͷΛΈΜͳͰ • ରʢ͓͢͢Ίʣ • Binary searchͷσϞ • ֆจࣈॲཧͷσϞ • numsw
- ઢܗ • PlayPixelsʢࠓͷϝΠϯσΟογϡʣ
͍͍ͱ͜Ζ • ϝΠϯͷతڭҭΒ͍͠ • ͰͶ͐ɾɾίϯςϯπ࡞Δͷେม • iPadͰಈ͘ʂʂʂ • Ͳ͜Ͱίʔυ͕ॻ͚Δ •
͓खܰɼ͔ͬ͜Α͘σϞͰ͖Δ • ͲΜͲΜਐԽ͍ͯ͠Δ • Χϝϥ͕͑ΔΑ͏ʹͳͬͨʂ • Bluetooth͕͑ΔΑ͏ʹͳͬͨʂ
ͭΒ͍ͱ͜Ζ • ϑϨʔϜϫʔΫϥΠϒϥϦ͕͑ͳ͍ • ͯ͢ιʔείʔυΦʔϓϯʹͳͬͯ͠·͏ • σόοά͕େม • Ϛγʹͳ͖ͬͯͨ •
AppleLEGOͷίϯςϯπ͕͗͢͢͝Δ • ૉਓ͕࡞Δͱɼ൵͍͠ɾɾɾɾ
PlaygroundBookͷ࡞Γํ
PlaygroundBook
Playgroundbookͷߏ ├── Chapters │ └── Chapter1.playgroundchapter │ ├── Manifest.plist │
└── Pages │ ├── Basic.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ ├── Binarize.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ └── Filter.playgroundpage │ ├── Contents.swift │ ├── LiveView.swift │ └── Manifest.plist ├── Manifest.plist ├── PrivateResources │ ├── Base.lproj │ │ └── LiveView.storyboard │ ├── en.lproj │ │ └── ManifestPlist.strings │ └── icon.png └── Sources ├── LiveViewController.swift └── LiveViewSupport.swift
֓ཁ -JWF7JFXTXJGU $POUFOUTTXJGU
࡞Γํ • AppleͷςϯϓϨʔτΛ͏ʢమଇʣ • Swift Playgrounds Author Template for Xcode
9.3Λσ ϕϩούʔαΠτ͔Βμϯϩʔυ
·ͣઃఆ • README.mdͷ”First Step”ʹै͍ɼϓϩδΣΫτͷ໊લ ͱ͔Λมߋ͢Δ • దʹΔͱ໘ष͍͜ͱʹͳΔͷͰҙ • AppleͷςϯϓϨ͔ͳΓνϡʔϯ͞ΕͯΔɾɾɾʁ
ϓϩδΣΫτͷ ໊લͳͲͷม ·ͣಡΉ Ͱͳ͍ͱϋϚΔ γϛϡϨʔλ্Ͱ#MVFUPPUI ͳͲΛ࠶ݱ͢ΔͨΊͷπʔϧ-JC γϛϡϨʔλΞϓϦຊମ 1MBZHSPVOE#PPL ຊମ
Swift Playgrounds Author Template • ΞϓϦͱͯ͠BookΛಈ͔͠ɼσόοά͘͢͠ • BluetoothͷUIΛΤϛϡϨʔτ • ϏϧυεΫϦϓτࠐΈ
• σόοά • iOS12ͰSwift PlaygroundsͰNSLogΛ࣮ߦͯ͠Կ දࣔ͞Εͳ͍ɾɾɾɾ • ͜ͷςϯϓϨʔτ͕།Ұͷ։ൃڥɾɾɾɾ
λʔήοτ 4XJGU1MBZHSPVOE#PPL
λʔήοτ #PPLͷγϛϡϨʔλͱͯ͠ͷΞϓϦ
λʔήοτ ΞϓϦͷͨΊʹίʔυΛ-JCʹ
-JWF7JFX5FTUBQQͷͨΊͷ ϑϨʔϜϫʔΫ
ͷத
Playgroundbookͷߏ ├── Chapters │ └── Chapter1.playgroundchapter │ ├── Manifest.plist │
└── Pages │ ├── Basic.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ ├── Binarize.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ └── Filter.playgroundpage │ ├── Contents.swift │ ├── LiveView.swift │ └── Manifest.plist ├── Manifest.plist ├── PrivateResources │ ├── Base.lproj │ │ └── LiveView.storyboard │ ├── en.lproj │ │ └── ManifestPlist.strings │ └── icon.png └── Sources ├── LiveViewController.swift └── LiveViewSupport.swift
Playgroundbookͷߏ ├── Chapters │ └── Chapter1.playgroundchapter │ ├── Manifest.plist │
└── Pages │ ├── Basic.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ ├── Binarize.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ └── Filter.playgroundpage │ ├── Contents.swift │ ├── LiveView.swift │ └── Manifest.plist ├── Manifest.plist ├── PrivateResources │ ├── Base.lproj │ │ └── LiveView.storyboard │ ├── en.lproj │ │ └── ManifestPlist.strings │ └── icon.png └── Sources ├── LiveViewController.swift └── LiveViewSupport.swift ຊମ
Playgroundbookͷߏ ├── Chapters │ └── Chapter1.playgroundchapter │ ├── Manifest.plist │
└── Pages │ ├── Basic.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ ├── Binarize.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ └── Filter.playgroundpage │ ├── Contents.swift │ ├── LiveView.swift │ └── Manifest.plist ├── Manifest.plist ├── PrivateResources │ ├── Base.lproj │ │ └── LiveView.storyboard │ ├── en.lproj │ │ └── ManifestPlist.strings │ └── icon.png └── Sources ├── LiveViewController.swift └── LiveViewSupport.swift ϖʔδ ࠷খ୯Ґ
Playgroundbookͷߏ ├── Chapters │ └── Chapter1.playgroundchapter │ ├── Manifest.plist │
└── Pages │ ├── Basic.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ ├── Binarize.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ └── Filter.playgroundpage │ ├── Contents.swift │ ├── LiveView.swift │ └── Manifest.plist ├── Manifest.plist ├── PrivateResources │ ├── Base.lproj │ │ └── LiveView.storyboard │ ├── en.lproj │ │ └── ManifestPlist.strings │ └── icon.png └── Sources ├── LiveViewController.swift └── LiveViewSupport.swift ֤ϖʔδͷઃఆ
Playgroundbookͷߏ ├── Chapters │ └── Chapter1.playgroundchapter │ ├── Manifest.plist │
└── Pages │ ├── Basic.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ ├── Binarize.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ └── Filter.playgroundpage │ ├── Contents.swift │ ├── LiveView.swift │ └── Manifest.plist ├── Manifest.plist ├── PrivateResources │ ├── Base.lproj │ │ └── LiveView.storyboard │ ├── en.lproj │ │ └── ManifestPlist.strings │ └── icon.png └── Sources ├── LiveViewController.swift └── LiveViewSupport.swift ຊͷߏ
Playgroundbookͷߏ ├── Chapters │ └── Chapter1.playgroundchapter │ ├── Manifest.plist │
└── Pages │ ├── Basic.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ ├── Binarize.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ └── Filter.playgroundpage │ ├── Contents.swift │ ├── LiveView.swift │ └── Manifest.plist ├── Manifest.plist ├── PrivateResources │ ├── Base.lproj │ │ └── LiveView.storyboard │ ├── en.lproj │ │ └── ManifestPlist.strings │ └── icon.png └── Sources ├── LiveViewController.swift └── LiveViewSupport.swift Ϧιʔε
Playgroundbookͷߏ ├── Chapters │ └── Chapter1.playgroundchapter │ ├── Manifest.plist │
└── Pages │ ├── Basic.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ ├── Binarize.playgroundpage │ │ ├── Contents.swift │ │ ├── LiveView.swift │ │ └── Manifest.plist │ └── Filter.playgroundpage │ ├── Contents.swift │ ├── LiveView.swift │ └── Manifest.plist ├── Manifest.plist ├── PrivateResources │ ├── Base.lproj │ │ └── LiveView.storyboard │ ├── en.lproj │ │ └── ManifestPlist.strings │ └── icon.png └── Sources ├── LiveViewController.swift └── LiveViewSupport.swift Ұ൪େ ڞ௨ͷΫϥεͱ͔
playgroundpageͷߏཁૉ • LiveView.swift • Contents.swift • Manifest.plist
LiveView.swift • LiveView.swiftʹॻ͘͜ͱ͋Μ·Γͳ͍ • LiveViewControllerΛ͜͜Ͱੜ • receiveͰίϯτϩʔϥ͔ΒσʔλΛ͏͚ͱΓඳը • ॏཁͳͷɼLiveViewControllerͷ࣮ import
UIKit import PlaygroundSupport PlaygroundPage.current.liveView = sharedLiveViewController
Contents.swift • ίʔσΟϯάʹؔ͢Δίϝϯτώϯτɼεέϧτϯίʔυ • ษڧͱͯ͠ͷίϯςϯπͪ͜Β͕ओ //#-hidden-code import UIKit import PlaygroundSupport
//#-end-hidden-code func process(input: UnsafePointer<CUnsignedChar>, output: inout [CUnsignedChar], width: Int, height: Int, bytesPerPixel: Int) { //#-editable-code // write your own code //#-end-editable-code } //#-hidden-code class Listener: PlaygroundRemoteLiveViewProxyDelegate { func remoteLiveViewProxy(_ remoteLiveViewProxy: PlaygroundRemoteLiveViewProxy, received message: PlaygroundValue) { // handle message from LiveViewController } } let listener = Listener() if let proxy = page.liveView as? PlaygroundRemoteLiveViewProxy { proxy.delegate = listener } //#-end-hidden-code
Manifest.plist - Page 1MBZHSPVOE-PHHJOH.PEF0⒎ -JWF7JFX&EHF5P&EHF:&4
Manifest.plist - Page 1MBZHSPVOE-PHHJOH.PEF/PSNBM -JWF7JFX&EHF5P&EHF:&4
Manifest.plist - Page 1MBZHSPVOE-PHHJOH.PEF0⒎ -JWF7JFX&EHF5P&EHF:&4
cutscenepageͷߏཁૉ • playgroundpageͱҟͳΓHTMLදࣔՄೳ • ϑΥϧμ໊ɹ00.cutscenepage • Manifest.plistʹHTMLΛࢦఆ • PrivateResourcesʹݴޠ͝ͱʹHTMLΛ༻ҙ͢Δ •
ίʔυෆཁͷϜʔϏʔͬΆ͍ͷʹ͏Α͏ͩ
جຊίϯηϓτ -JWF7JFXͷϓϩηε $POUFOUͷϓϩηε
جຊίϯηϓτ -JWF7JFXͷϓϩηε $POUFOUͷϓϩηε
جຊίϯηϓτ -JWF7JFXͷϓϩηε $POUFOUͷϓϩηε 1SPYZ
ૹΔͱ͖྆ํͱಉ͡ -JWF7JFXͷϓϩηε $POUFOUͷϓϩηε 1SPYZ TFOE @NFTTBHF1MBZHSPVOE7BMVF
ૹड৴Ͱ͖Δܕ public enum PlaygroundValue { case array([PlaygroundSupport.PlaygroundValue]) case dictionary([String :
PlaygroundSupport.PlaygroundValue]) case string(String) case data(Data) case date(Date) case integer(Int) case floatingPoint(Double) case boolean(Bool) }
ૹΔͱ͖྆ํͱಉ͡ -JWF7JFXͷϓϩηε $POUFOUͷϓϩηε 1SPYZ TFOE @NFTTBHF1MBZHSPVOE7BMVF
ड৴͚͕ͩҟͳΔ $POUFOUͷϓϩηε class Listener: PlaygroundRemoteLiveViewProxyDelegate { var pixelBuffer24bit: [CUnsignedChar]? func
remoteLiveViewProxy(_ remoteLiveViewProxy: PlaygroundRemoteLiveViewProxy, received message: PlaygroundValue) { // handle a message } func remoteLiveViewProxyConnectionClosed(_ remoteLiveViewProxy: PlaygroundRemoteLiveViewProxy) { } } let listener = Listener() if let proxy = page.liveView as? PlaygroundRemoteLiveViewProxy { proxy.delegate = listener }
ૹΔͱ͖྆ํͱಉ͡ -JWF7JFXͷϓϩηε $POUFOUͷϓϩηε 1SPYZ TFOE @NFTTBHF1MBZHSPVOE7BMVF
ड৴͚͕ͩҟͳΔ -JWF7JFXͷϓϩηε @objc(Book_Sources_LiveViewController) public class LiveViewController: UIViewController, PlaygroundLiveViewMessageHandler, PlaygroundLiveViewSafeAreaContainer {
public func receive(_ message: PlaygroundValue) { update(message) } }
جຊίϯηϓτ -JWF7JFXͷϓϩηε $POUFOUͷϓϩηε 1SPYZ
PlayPixelsͷ߹ -JWF7JFXͷϓϩηε $POUFOUͷϓϩηε 1SPYZ ը૾ॲཧ $BNFSB ͜ͷॲཧͷίʔυ $POUFOUTTXJGU Ωϟϓνϟͨ͠ ը૾Λ%BUBʹ
PlayPixelsͷ߹ -JWF7JFXͷϓϩηε $POUFOUͷϓϩηε 1SPYZ %BUBʹ ύοΩϯά 6**NBHFʹ 6**NBHF7JFXʹηοτ
LiveViewTest.app • UIApplicationΛվʁ • LiveViewControllerͷಈ࡞֬ೝ༻ͷΞϓϦ • Swift Playgroundsઐ༻ͷUIͷςετ • ͦͷͨΊͷBluetoothͳͲͷϑϨʔϜϫʔΫ
• Contents.swiftͷཧίʔυͷ࣮͕ඞཁ ͏͖ɽσόοάͰࢮͶΔ #if LiveViewTestApp // γϛϡϨʔλͰಈ͔͢ͱ͖ɼϝιουΛͰୟ͖ɼContents.swiftͷΘΓΛ࣮ߦ self.update(value) #else // PlaygroundͰಈ͔͢ͱ͖ɼproxyܦ༝ͰContents.swiftʹσʔλΛૹΔ self.send(value) #endif
Playground Book • PlaygroundSupportͱݺΕΔϞδϡʔϧ͕৭ʑػೳΛఏڙ • ςϯϓϨʔτͰγϛϡϨʔγϣϯՄೳ • PlaygroundValueܕͰͤΔσʔλͷܕͷόϦΤʔγϣϯ͕গͳ͍ • ؔͱ͔ͤͳ͍
• LiveViewTest.appɼContents.swiftͱແؔ • ίϯςϯπΛ͏·͘දࣔͤ͞ΔͨΊͷςετίʔυ͕ඞཁ
։ൃͷྲྀΕʁ • TemplateΛฤू • LiveViewControllerΛ࣮ • AppDelegate.swiftͰίϯςϯπΛදࣔ͢ΔίʔυΛ ॻ͘(Contents.swift) • iPad࣮ػͰɼLiveViewTest.appΛςετ
• PlaygroundBookΛϏϧυ • AirDropͰiPad࣮ػʹPlaygroundBookΛૹΔ • Swift PlaygroundsͰ࣮ߦ͢Δ
υΩϡϝϯτ • Playground Book Format Reference • Swift PlaygroundsͷϓϩδΣΫτࣗମ͕ιʔεͷๅݿ
Furthermore, • Contents.swiftͷৄ͍͠ઃఆ • ίϯςϯπ࡞ΓͶ • ଟݴޠԽʢَʣ • Key-value store͋Δ
• AssesmentStatus • ϢʔβͷਐḿධՁ༻ͷΈʁ
PlaygroundBookΛެ։͢Δ
ެ։ํ๏ • ࠷ۙͬͱެ։Ͱ͖ΔΑ͏ʹͳͬͨ • Ϣʔβ͕Swift Playgrounds͔ΒfeedΛొՄೳ • ϒϥβ͔Βొ͢Δ͜ͱͰ͖Δ
खॱ • ެ։ͷͨΊͷjsonϑΝΠϧ(feed)Λ࡞Δ • BookΛෳݸऩΊΒΕΔ • ϋϚΔϙΠϯτ • λΠτϧͱ໊લ͕Ұக •
λΠτϧͱղౚޙͷ໊લ͕Ұக • identifier͕Ұக
feed { "title": "sonson", "publisherName": "Yuichi Yoshida", "feedIdentifier": "com.sonson.playground", "contactURL":
"mailto:
[email protected]
", "formatVersion": "1.0", "documents": [ { "title": "PlayPixels", "overviewSubtitle": "To be written.", "detailSubtitle": "αϒλΠτϧৄࡉ", "description": "ৄ͍͠આ໌", "contentIdentifier": "com.sonson.playground.PlayPixels", "contentVersion": "1.0", "url": "https://sonson.jp/playgrounds/playpixels/PlayPixels.playgroundbook.zip", "publishedDate": "2018-05-18T12:00:00+00:00", "lastUpdatedDate": "2018-05-18T12:00:00+00:00", "thumbnailURL": "playpixels/thumbnail.png", "bannerImageURL": "playpixels/thumbnail.png", "additionalInformation": [ { "name": "Languages", "value": "English" } ], "previewImageURLs": [] } ] }
खॱ • ެ։ͷͨΊͷjsonϑΝΠϧ(feed)Λ࡞Δ • BookΛෳݸऩΊΒΕΔ • ϋϚΔϙΠϯτ • λΠτϧͱ໊લ͕Ұக •
λΠτϧͱղౚޙͷ໊લ͕Ұக • identifier͕Ұக • feedʹࢦఆͨ͠ύεʹzipͰݻΊͨbookϑΝΠϧΛஔ͘ ├── feed.json ├── index.html └── playpixels ├── PlayPixels.playgroundbook.zip └── thumbnail.png
ϒϥβ͔ΒμΠϨΫτʹొ "https://developer.apple.com/ul/sp0?url=https://sonson.jp/playgrounds/feed.json"
https://sonson.jp/playgrounds/
Swift Playgrounds͕ىಈ
ొɾɾɾɾײಈ
PlayPixelsͰֶͿը૾ॲཧͷجຊ
https://github.com/sonsongithub/PlayPixels
ը૾ॲཧͷجຊ
ը૾ॲཧͷجຊ
ը૾ॲཧͷجຊ
ը૾ॲཧͷجຊ
ΈࠐΈԋࢉʔϑΟϧλ ೖྗը૾ ग़ྗը૾
ϑΟϧλ
ΈࠐΈԋࢉʔϑΟϧλ ೖྗը૾ ग़ྗը૾
ΈࠐΈԋࢉʔϑΟϧλ ೖྗը૾ ग़ྗը૾
º
ΈࠐΈԋࢉʔϑΟϧλ ೖྗը૾ ग़ྗը૾
ΈࠐΈԋࢉʔϑΟϧλ ೖྗը૾ ग़ྗը૾
ΈࠐΈԋࢉʔϑΟϧλ ೖྗը૾ ग़ྗը૾
ΈࠐΈԋࢉʔϑΟϧλ ೖྗը૾ ग़ྗը૾
ϑΟϧλͷαΠζͰ ͪΐͬͱখ͘͞ͳΔ
͜ΕɾɾɾͲΜͳϑΟϧλʁ
࣮ ܀ాଟتɺึতଠ, ύλʔϯೝࣝ ૣҴాେֶߨٛ – ฏ18
ྲྀߦΓͷCNN Y. Lecun, L. Bottou, Y. Bengio and P. Haffner,
"Gradient-based learning applied to document recognition," in Proceedings of the IEEE, vol. 86, no. 11, pp. 2278-2324, Nov. 1998. ͜ͷॏΈΛػցֶशͰಘΔ
·ͱΊ • Swift playgroundsͷָ͠͞ • Swift Playgrounds Author TemplateΛ͓͏ •
Bookͷجຊ • Proxyϕʔεͷϓϩάϥϛϯά • Feedͷઃఆ • ެ։ɼPlayground.appͰͰ͖Δʂ • PlayPixelsͰֶͿɼը૾ॲཧͷجຊ