X



プログラミング言語Swift Part4 [無断転載禁止]©2ch.net
0001名称未設定 転載ダメ©2ch.net(8級) (ワッチョイ 33a8-bj6g)垢版2017/01/19(木) 03:18:15.58ID:YIGkvQUZ0

iBooks:
The Swift Programming Language
https://itunes.apple.com/jp/book/swift-programming-language/id881256329?mt=11
Using Swift with Cocoa and Objective-C
https://itunes.apple.com/jp/book/using-swift-cocoa-objective/id888894773?mt=11

ドキュメント:
The Swift Programming Language
https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/
Using Swift with Cocoa and Objective-C
https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/
Swift Standard Library
https://developer.apple.com/reference/swift


http://swiftdoc.org/
https://swift.org/
https://developer.apple.com/swift/blog/

関連スレ
http://echo.2ch.net/test/read.cgi/tech/1476758084/l50

過去スレ
http://potato.2ch.net/test/read.cgi/mac/1408762479/
http://anago.2ch.net/test/read.cgi/mac/1401736921/
http://anago.2ch.net/mac/kako/1401/14017/1401736249.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0212名称未設定 (ワッチョイ 690c-ODKA)垢版2019/01/21(月) 23:02:49.81ID:xe+XFScy0
CGRectの引数のoriginとは何でしょうか?
ドキュメント読んだり調べたりしたけれどはっきりとはわかりませんでした。
Creates a rectangle with the specified origin and size.
明記された原点とサイズを持つ長方形を作る
とは書いていますが、
この”原点(origin)”はその長方形”内”におけるアンカーポイントの位置のことでしょうか、
それともsuperview座標における長方形のアンカーポイントの位置のことでしょうか。
座標の系がわかんねえ
時間がある神が居たらご教示いただけたら幸いです。
0214名称未設定 (ワッチョイ 690c-ODKA)垢版2019/01/22(火) 02:05:25.63ID:QXXimgo50
>>213レスありがとうございます。
ただ、質問がうまくできてなかったみたいで、
聞きたかったことは、originがさすx,yはそのイメージの座標系におけるものでしょうか。
あるいは、viewの座標系におけるものでしょうか。
シミュレーターでoriginの値を色々変えてみましたが、いまいちピンと来ませんでした。
0216名称未設定 (ワッチョイ c1b1-d3bv)垢版2019/01/22(火) 08:03:23.23ID:fi7CDqih0
アンカーポイント(回転や拡大でのピン留め位置)はデフォルトでは中央とか
原点とアンカーポイントは別物
原点の位置は213で書いた通り

どこを0,0とするかはメソッド次第、大抵はsuperviewの原点を0,0としたもの
スクリーン原点を0,0とする場合もある
CGRectは単なる数値の入れ物
0217名称未設定 (ワッチョイ 690c-ODKA)垢版2019/01/22(火) 08:40:01.19ID:QXXimgo50
>>215,>>126
スッキリしました!
ありがとうございます
すごく助かります
0218名称未設定 (ワッチョイ ed0c-msPf)垢版2019/01/26(土) 05:40:20.41ID:naefrdUr0
>>212, >>216です。
助言をいただけたおかげでとりあえずConwey's Game Of LifeをSwiftで
カタチにはできました。
https://qiita.com/TrapedInABottle/items/91635fd7eb3db6ae8a29

ただ、重い。
どこで非効率的な処理をしているか指摘していただける方はいねえがぁ。
0219名称未設定 (ワッチョイ ed0c-msPf)垢版2019/01/26(土) 05:41:38.44ID:naefrdUr0
あ、>>212 , >>214 , >>217でした
0220名称未設定 (ワッチョイ 714e-cnES)垢版2019/01/26(土) 19:08:16.35ID:72UE6h1N0
>>218
大量描画を高速にするならMetalとかOpenGLとか使ってGPUに描かせないと。
0224名称未設定 (ワッチョイ 1b75-STzE)垢版2019/03/27(水) 02:06:16.50ID:UhEZh4XY0
どっかに差分分かりやすくまとめてくれないと追いつかない…
0226名称未設定 (ワッチョイ 8ba3-MMF7)垢版2019/03/31(日) 13:56:02.40ID:GAfz2pSI0
>>225
ざっと読んだけどあんま変わってねーのな
0227名称未設定 (ワッチョイ fb58-HJcM)垢版2019/04/03(水) 15:21:11.33ID:hpEJVX5q0
import Foundation

let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .full
dateFormatter.locale = Locale(identifier: "ja_JP")
dateFormatter.calendar = Calendar(identifier: .japanese)
print(dateFormatter.string(from: Date(timeIntervalSinceNow: 60*60*24*30)))

令和まだか
0228名称未設定 (ワッチョイ 8d89-wMV2)垢版2019/04/09(火) 13:16:26.76ID:5eh4ypGL0
Result type@Swift5のuse caseが判らん。
0230名称未設定 (テトリス MM81-sJ3o)垢版2019/06/06(木) 18:55:46.75ID:Xy4pyHGnM0606
丸2年Swift勉強してきたが(合間合間に)まだ1つもアプリリリースできてない。しかし不思議と飽きない、ところでSwift2の本があったのでそれ見てコード写して勉強してるがエラーだらけで …こんなのやるだけ無駄かな?
0232名称未設定 (テトリス MM81-sJ3o)垢版2019/06/06(木) 19:05:15.86ID:Xy4pyHGnM0606
これは意味なさそうやな…リリースする時は10個位まとめて出した方がええからとおもて時間かかるんよなぁ
0233名称未設定 (テトリスW d1dc-2y5O)垢版2019/06/06(木) 19:08:13.48ID:HFUOO6K900606
先ずは何でもいいから一つ完成させろよ。
アレもコレもと手を出していると、いつまで経っても完成したものができないぞ。
0234名称未設定 (テトリスW 03e4-FZF1)垢版2019/06/06(木) 19:34:53.81ID:rxAEsIyB00606
丸二年勉強してて今時Swift2のテキストからコード拾ってるってちょっとどんな状態なのかイメージ出来ない。
もし英語にアレルギーなければ↓のサイトで最新バージョンで一通り勉強できるよ。無料だし

Hacking With Swift 100days of Swift
https://www.hackingwithswift.com/100
0235名称未設定 (テトリス MM81-sJ3o)垢版2019/06/06(木) 19:54:16.11ID:Xy4pyHGnM0606
ほとんど書籍からしか勉強してなかったから そんな動画もいいね 基礎的な事から紹介されてる様だ
いまスマホだから帰ってから見るわ ありがとさん
0236名称未設定 (テトリスW 03e4-FZF1)垢版2019/06/06(木) 20:11:32.33ID:rxAEsIyB00606
動画は補助だね。
テキストがメイン。
効率的に記述できる技なんかも織り混ぜつつ、覚えた方が良いコードは敢えてリピートに入れずに徹底的に手で書かせてくれる。
そんな箇所を後で自分なりに書き直してみたりと、かなり美味しい。
よく考えられた教科書だよ。
0237名称未設定 (テトリスW 4376-2y5O)垢版2019/06/06(木) 20:24:49.63ID:M4duoceW00606
アプリリリースって審査を通すがかなり大変じゃない?
大手のバグフィックスリリースも含めて、全体の通過率4割じゃなかったっけ?
そういったものを除いた新規のもののみだと通過率がかなり厳しそう。
0238名称未設定 (テトリス 13d9-vESq)垢版2019/06/06(木) 21:47:41.62ID:Yqd2/WDV00606
>>234
ちょっとプログラムに興味あるけど
初学者とかでもこの人の動画大丈夫?
0239名称未設定 (ワッチョイW 03e4-FZF1)垢版2019/06/06(木) 22:28:02.11ID:rxAEsIyB0
>>238
お勧め。
動画は補助で、メインはテキスト。
全くの初学ならiBooksストアからダウンロードできる「Swiftによるアプリケーション開発:入門編」あたりをやっておくと良いかも。これ、残念ながら内容が少し古いんだけど、基本の部分は通用するし、レッスンがインタラクティブでわかりやすい。
0240名称未設定 (ワッチョイ 13d9-vESq)垢版2019/06/06(木) 22:39:46.16ID:Yqd2/WDV0
>>239
ありがとうございます。ちょっとがんばってみます!
英語の人聞き取りやすいし1日1時間のコンセプトもすばらしい
その前に入門編みてみます
0241名称未設定 (ワッチョイW 03e4-FZF1)垢版2019/06/06(木) 22:42:04.11ID:rxAEsIyB0
英語大丈夫なら、やはりiBooksストアからダウンロードできる「App Development With Swift」の方が内容は新しい。
0244名称未設定 (ワッチョイW 03e4-FZF1)垢版2019/06/07(金) 23:31:36.25ID:YkJU3b1t0
>>243
つXcode11(+macOS10.15)
0245名称未設定 (ワッチョイ 8958-KOFD)垢版2019/06/07(金) 23:36:01.05ID:VCRI3J210
ほんとだ
PlaygroundでもmacOSだと
"令和元年7月7日 日曜日¥n"
で、iOSとtvOSだと
"平成31年7月7日 日曜日¥n"
だな

バグ報告しなされ
0246名称未設定 (ワッチョイW 03e4-FZF1)垢版2019/06/07(金) 23:50:09.01ID:YkJU3b1t0
つうか、シミュレーターのバージョンがiOS12だと平成
iOS13だと令和
これはXcode10でも11でも変わらない

playgroundはXcode10では平成
Xcode11では令和
0247名称未設定 (ワッチョイ 8958-KOFD)垢版2019/06/08(土) 06:40:20.30ID:vU6SqN5F0
11で治ってるならバグ報告要らんね
Bug Reporterがいつの間にかFeedback Assistantにリニューアルしてる
0248名称未設定 (ワッチョイW 03e4-FZF1)垢版2019/06/08(土) 14:01:08.91ID:r0kbYvOO0
SwiftUIはDateFormatterのロケールに未対応
0249名称未設定 (ワッチョイW 1ab1-u1gE)垢版2019/08/14(水) 16:54:00.22ID:X8XFYxZG0
バカみたいな質問だが、アプリ作る時で分からない無い時 公式のリファレンスで調べたりまたはプラグインを導入もやるのが普通なのかな?
自分は欲しい機能がありどう書けば分からなければ ググってコードをコピペして書いてるのだがこれはアホみたいな作り方で非効率なのかな?
0250名称未設定 (ワッチョイW dae4-/ovj)垢版2019/08/14(水) 17:14:40.97ID:llw+SUiw0
見つけたコードを読んで理解できてるなら良いんじゃない?
0251名称未設定 (ワッチョイ 394e-4+nB)垢版2019/08/16(金) 01:03:57.25ID:UhLWgaGA0
むしろリファレンスだけでコードを書くのはかなりの非効率
動いてる実績のあるコードをコピペしたほうが5倍ぐらい速い

どんなSDKでもサンプルコードがついてるのはそのため
ドキュメントにAPIのめちゃくちゃ細かい挙動まで記述するのは、書く側も読む側も負担が大きい
API一覧から初期化時に呼ぶべきメソッドを抽出するためには、極論全部のメソッドの解説を読まなくちゃいけなくなるし

ただ、>>250の言ってるように、コピペしてわからないところを放置しないというのは大事だと思う
0253名称未設定 (ワッチョイW 13e4-fuhf)垢版2019/08/16(金) 08:48:38.06ID:pw4Pwbb10
リファレンスもプロパティとメソッドの一覧とか引数となるクラスへのリンクくらいは整備してくれると有難いんだけどなぁ...
0254名称未設定 (ワッチョイW eb44-/VPS)垢版2019/08/30(金) 14:13:20.52ID:dTklQjGI0
Appleは英語圏以外のプログラマーを増やそうとは
思っていないのかな。
デベロッパー向けのリファレンスやメールなど
英文多いですよね。
例えば日本の子供達がSwiftを学ぼうと志しても
プログラミングよりも先に英語でつまずくと思う。
0256名称未設定 (ワッチョイW 13e4-MdH8)垢版2019/08/30(金) 18:07:41.54ID:aoANh/P30
プログラミング言語そのものからして、英語をある程度知らなきゃ、機能などが想像できなくてキツイよ。
若年層のコーディング教育は、まずは単純な動作のコード化から、手続き記述、組織化などを学ばせる方が良いと思う。そこではプログラミング言語なんて使わない。

日本人は大人でもこの辺りが弱い人が多い。
0257名称未設定 (ワッチョイW 13e4-MdH8)垢版2019/08/30(金) 18:20:29.76ID:aoANh/P30
プログラミング言語を使わないってのはちょっと語弊が有るか...
導入は自然言語で行って徐々に語彙と文字を制限した環境に移行してルーチン基準を学ぶ辺りから専用の言語環境を用いる様にしていくイメージ。
日本語ベースで。
オブジェクト指向の言語をベースに日本語に置き換えて行けば叩き台は出来ると思う。
0258名称未設定 (ワッチョイW 13e4-MdH8)垢版2019/08/30(金) 18:21:17.30ID:aoANh/P30
訂正
ルーチン基準→ルーチン記述
0260名称未設定 (ワッチョイW 13e4-MdH8)垢版2019/08/30(金) 18:58:30.75ID:aoANh/P30
PC上で走らすもんじゃないから、リアルの「辞書」みたいなものを想定してる。
国語、というか純粋に「言語」教育。
日本の言語教育プログラムには、書式の理解や作成とか事象の分析的・客観的記述とそのデコードといったカテゴリが抜け落ちてる。
小学校から高校くらいまでのスパンでしっかり教育すべきなんだけど。

その辺りが身についていればVBAマクロくらいはもっと多くの人が記述できるようになるよ。
0264名称未設定 (ワッチョイ f7bb-fDnH)垢版2019/10/16(水) 12:51:14.86ID:ypA6ChT70
Xcode10.3からXcode11.1へupdateした。
macOSはMojave10.14.6のままで。
SwiftUIを初めてさわってみた。
UIKitを置き換えるFrameworkだなんて知らんかった。

数年後にはimport UIKitすればdeprecatedって警告されるのか?
とりあえず、link compilation
https://github.com/Juanpe/About-SwiftUI
0266名称未設定 (ワッチョイ f7bb-fDnH)垢版2019/10/16(水) 18:25:45.14ID:ypA6ChT70
今更ながらWWDC2019の動画みてる。
WWDC 2019 _ Full - Platforms state of the union.

これ、超重要かも!
0268名称未設定 (ワッチョイ f7bb-fDnH)垢版2019/10/16(水) 18:36:56.79ID:ypA6ChT70
>>267
SwiftUIってUIKitと同時に使うもんだと思ってたけど、違った。
外付けのUSB-SSDへCatalinaをinstallしてXcode11をinstallしたほうが良さそうだ。
Xcode11@MojaveだとCanvasが動かん。
0271名称未設定 (ワッチョイ f7bb-fDnH)垢版2019/10/16(水) 19:24:45.01ID:ypA6ChT70
>>270
THX
USB-SSD接続してinstaller起動した。
今ココ
macOS Catalinaをインストールするには再起動…
0272名称未設定 (ワッチョイ f7bb-fDnH)垢版2019/10/16(水) 20:24:16.76ID:ypA6ChT70
Catalina install memo
1. reboot回数: 5
2. 残り時間を計算回数: 3, 16min, 1min, 15min
3. 最初の再起動直前から、ようこそ画面出現までのの時間: 22min

外付けSSD, 960GB, 3分割(2:1:1)した最後の区画(APFS)へinstall
久しぶりに新規installしたけど、設定が大変。
マウス感度とか、IMEの設定とか。
0275名称未設定 (ワッチョイ e3bb-Jl7d)垢版2019/10/17(木) 07:07:39.74ID:qfqB83MV0
❶@Stateを利用するには、Model側(Observable側)の下ごしらえが必要で
1. Observable準拠が必要
struct Order: Observable {
var includeSalt: Bool

}

2. プロパティー宣言時に@State属性付与
@State private var order: Order

❷ViewModel側(Observer側)で値の変更通知を受け取るには$マークの付与をインスタンス変数にする
$order.includeSalt

って事か?
0276名称未設定 (ワッチョイ e3bb-Jl7d)垢版2019/10/17(木) 07:13:39.12ID:qfqB83MV0
>>272
CatalinaをinstallしてXcode11が動き始めたが、逆に動かないアプリを発見。
El media Playerで再生しようとしたswfファイル(TOEIC問題集)が動かない。

どうしよう?
外付けUSB-HDDにSierraをinstallしておくかぁ。
超、面倒だ。
0277名称未設定 (ワッチョイ e3bb-Jl7d)垢版2019/10/17(木) 11:30:25.67ID:qfqB83MV0
>>276
Sierra install直後のDisk Usage: 20.31GB
createinstallmediaコマンドでUSB2 Pendriveにinstaller作成: 26min
reboot回数2回
install中残り時間15minと表示後、9.5minでrebootが掛かり、「ようこそ画面」が出現
0278名称未設定 (ワッチョイ e3bb-Jl7d)垢版2019/10/17(木) 13:06:37.18ID:qfqB83MV0
やべ!
今更ながらWWDC2019 Keynote Speech見たけど、冒頭で感動しちまった。
0279名称未設定 (ワッチョイ e389-XLgx)垢版2019/10/17(木) 15:42:52.17ID:S72nh9Bg0
なぜclassよりstructが速いのか?
なぜ、class UIButtonよりstruct Buttonが速いのか?

答え:
ある関数に値を渡す処理を記述する際、参照渡しは速いと教わる。値渡しはコピーに時間が掛かって時間を食うのだ。
しかし、関数内でその値に何度もアクセスする場合に、アクセスのたびに、参照先を見に行く処理が参照渡しには生じる。このため、参照渡しは遅くなる。

値渡しは、スタック内で処理が完了し、速い。
http://nex2t.blog.shinobi.jp/c言語/値渡しとポインタ渡しで実行速度比較-c言語-

だから、UIKitよりSwiftUIが速い。PlayGroundの用に、CanvasでLive Renderingできる。
0280名称未設定 (ワッチョイ e389-XLgx)垢版2019/10/17(木) 15:46:12.75ID:S72nh9Bg0
>>279
Introducing SwiftUI: Building Your First App, 17m10sec around
0281名称未設定 (ワッチョイ e3bb-Jl7d)垢版2019/10/17(木) 17:34:18.47ID:qfqB83MV0
>>280
やっと見終わった。
Introducing SwiftUI: Building Your First App
Safariで再生すると途中で止まる。
Chromeで再生すると解像度が低いのでソースがボヤける。

RoomsアプリのソースはGithubにあるのかな?
0282名称未設定 (ワッチョイ e3bb-Jl7d)垢版2019/10/17(木) 18:27:03.46ID:qfqB83MV0
順番からは次見るべきは
SwiftUI Essensials
けど、関心のある
Data Flow Through SwiftUI
を見ることにする。
Property Wrapperの@State, @ObjectBindingの使いかたとか、
Identicalプロトコルが知りたい。

Xcode起動して、Help, Developer Documentationとして検索してもヒットしないぞぉ?
0283名称未設定 (ワッチョイ e3bb-Jl7d)垢版2019/10/17(木) 18:30:51.67ID:qfqB83MV0
>>282
ObjectBinding、ってのは俺の勘違いで、
ObservedObjectってのが正解らしい。Developer Documentationでもヒットした。
しかし、Dash.appではヒットしない?
0284名称未設定 (ワッチョイ e3bb-Jl7d)垢版2019/10/17(木) 18:32:52.13ID:qfqB83MV0
>>283
と思ったら、ObservedObjectはDash.appでもヒット!
落ち着け、俺!
0285名称未設定 (ワッチョイW 12e4-LfQk)垢版2019/10/17(木) 18:43:26.55ID:EfOHH0rB0
なんなんこのひと
0286名称未設定 (ワッチョイ e3bb-Jl7d)垢版2019/10/17(木) 19:12:46.93ID:qfqB83MV0
>>282
Identicalではなく、Identifiable Protocolだった。
これは簡単。
struct User: Identifiable {
var id: UUID = UUID()
var firstName: String
var lastName: String
}
let a = User(firstName: "OK", lastName: "NG")
print(a.id)
おっと、これが、Terminal.AppだとStack dumpを吐くのに、XcodeのPlaygroundでは上手く動く。なんで?
0287名称未設定 (ワッチョイ e3bb-Jl7d)垢版2019/10/17(木) 20:49:54.92ID:qfqB83MV0
>>282
Data Flow Through SwiftUI
イタリア人の英語はワケワカメ
e.g.
Enviroment = エンバイロメンタ
0289名称未設定 (ワッチョイ e3bb-Jl7d)垢版2019/10/18(金) 10:20:18.19ID:fxqAwN0I0
>>287
Data Flow Through SwiftUI
これ見終わった。

Data Flow Through SwiftUI
これ、冒頭見てつまんなかったので、

Combine in Practice
Combineの実際、Combine Frameworkってimport Combineするのか?
これ見てみる。
0290名称未設定 (ワッチョイ e3bb-Jl7d)垢版2019/10/18(金) 16:01:27.51ID:fxqAwN0I0
>>289
Combine in Practice
これ、ムズかった。
Promiseは非同期処理の最終結果。
Futureってなんだ?

debounceってのはハードウェア・スイッチのチャタリング防止装置をソフトウェアで実現したものって感じか?

@Published を付与すれば一撃でPublisherへ変身させる事ができるっぽい。
Promiseは良いとして、Future, Justって何だ?
ここに、解説があるっぽい。
https://dev.classmethod.jp/smartphone/swift-combine-framework-for-beginners/
0291名称未設定 (ワッチョイ e3bb-Jl7d)垢版2019/10/18(金) 18:50:18.98ID:fxqAwN0I0
>>290
>Combine in Practice
こいつをみる前に
Introducing Combine
これを見るべきだったかも。

Reactiveプログラミング系のオブジェクト生成用の属性には、2種類あるみたい。
1. 非Combine系(import Combine不要)
2. Combine系
後者には、
Publisher, Subscriber, Operator
が含まれる。

前者には、State, Environment, Bindingとかあるっぽい。
0293名称未設定 (ワッチョイ 2f4e-hP6I)垢版2019/10/19(土) 20:58:59.81ID:0nGgsZQY0
>>279
参照渡しも値渡しも結局はメモリ上に構造体のようなものを置いているのなら、それの先頭アドレスから
何バイト先を見る、ってのが特定のメンバ変数を見るための実際の処理だろ。
それだけで考えたら、その領域がスタックだろうとヒープだろうとその速度に違いがあるとは思えないけどな。
違いがあるとすればキャッシュに載ってる可能性が高いかどうかぐらいじゃないの?
スタックのアクセスのほうが速いとする根拠は何?
0294名称未設定 (ワッチョイ e389-XLgx)垢版2019/10/20(日) 02:53:29.00ID:OcITMPGt0
>>293
1. 参照渡しの場合に構造体メンバ変数へアクセスする場合:
構造体へのアドレス - > メンバ変数へのアドレス - > その値

2. 値渡しの場合に構造体メンバ変数へアクセスする場合:
メンバ変数へのアドレス - > その値
0295名称未設定 (ワッチョイ 925a-Mdr6)垢版2019/11/30(土) 11:40:43.85ID:e56uHF5q0
ViewControllerどこ行った?

override func viewDidLoad() は?
0296名称未設定 (ワッチョイ 925a-Mdr6)垢版2019/11/30(土) 11:46:43.13ID:e56uHF5q0
自己解決
0297名称未設定 (ワッチョイ 03f3-MVf8)垢版2019/12/09(月) 22:37:47.57ID:p96E7fGL0
iPhoneアプリ開発の人たちは、swiftに移行してる
0301名称未設定 (ワッチョイ b3b1-8VN3)垢版2020/02/28(金) 05:45:24.59ID:oichTAg80
せんせい質問∩(´・ω・`)

初心者質問でごめんなさい。
本を2冊くらい読んで、基礎はなんとなくわかったのだけど。

もっとあれこれとサンプルコードを見たいんですが、検索してもいまいちわかりません。
どこか「ここだ、ここ」って場所はあるんでしょうか?
0306名称未設定 (JP 0H46-fDsF)垢版2020/02/28(金) 14:49:09.04ID:9/gZN5QQH
Xcode 10
だけど?
レスを投稿する


ニューススポーツなんでも実況