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
0155名称未設定 (ワッチョイ 2587-j+7R)
垢版 |
2018/01/24(水) 13:19:08.05ID:wE3p1EOU0
Swiftの型推論は初動から風呂敷を広げ過ぎた
双方向推論は含めるべきではなかった
右辺値からの推論のみにしておけば型推論に関するビルド時間はここまで掛からなかったはず
0156名称未設定 (ワッチョイ 2587-j+7R)
垢版 |
2018/01/24(水) 14:17:14.93ID:wE3p1EOU0
let a = b( c() ) { d in e(d) }.f().g()

単方向(右辺値から)だと
・c()の戻り値型c_typeを導出
・b(c_type, func_type)の候補が一つになることをチェック
・func_typeからdを導出
・e(d)戻り値型を導出してfunc_typeと型チェック
・b(..)の戻り値型からb_type.f()を導出
・同様にfの戻り値型からg, gからaが決定

双方向だと e(*)の候補一覧からb(c_type, e_type*).f()が成立するものまで探し始める
bの引数の型が決まってない段階で
その絞り込みのためにf、さらにはgまで先読みして推論し始める
時間が掛かるだけでなくオーバーロードやエクステンションが絡んで
Ambiguousエラー出したり
LazySequence.map(..) -> LazyMapSequence<..> でなく
Sequence.map(..) -> [T] の方に間違って確定したりする
0157名称未設定 (ワッチョイ 2587-j+7R)
垢版 |
2018/01/24(水) 14:18:00.81ID:wE3p1EOU0
Swift3で推論に問題あったケースが、知っている範囲ではSwift4で正常になったので
かなり改善されているようだけどビルド時間はさらに犠牲になってそう

コーディングの利便性のために双方向の推論に対応した結果
ビルド時間が掛かり過ぎて型を明示するようになる本末転倒
0158名称未設定 (ワッチョイ 83d5-iVQh)
垢版 |
2018/01/24(水) 16:08:47.94ID:EvvwHl3Y0
コンパイル時間が長くなっても、それを補えるぐらいコーディング時間が短縮されるなら、結果オーライだろ
0159名称未設定 (ドコグロ MM13-ffdp)
垢版 |
2018/01/24(水) 17:16:22.21ID:7/sgEGqMM
>>154
基本昔からほぼ全てにきちんと型定義しているが
ビルドに20〜30分も掛かる。。。
ちょっとコーディングしてビルドすると、
またそのぐらい。。。
ビルド中に編集するとカラーボールがクルクルし出すし。
コーディングする暇がなくてめちゃ困る。

筐体が死にかけていてそうなら、喜んで買い換えるが。
これもAppleの罠ではないかとかと疑心暗鬼

ちなみにMBA2013 4GBね
0160名称未設定 (ワッチョイ 2587-j+7R)
垢版 |
2018/01/24(水) 17:52:02.29ID:wE3p1EOU0
全ての変数定義に型を明示しても
メソッドチェーンや引数に直接ラムダを記述しているなら型推論は発生している

1ステートメント内に暗黙の型有り
let a:Int = b( c() ) { d:Int in e(d) }.f().g()

極端だけどここまでしないと型推論は多少なりとも発生する
let lm:(Int)->Int = { (d:Int) in e(d) }
let retC:Int = c()
let retB:B = b(retC, lm)
let retF:F = retB.f()
let a:Int = retF.g()

実際にはそのビルドの20分とやらの大半は
一部のボトルネックになってるコードのせいという可能性も高いし
闇雲にステートメントを細分化する必要は無いけど
0164名称未設定 (ワッチョイW 3aef-aM+/)
垢版 |
2018/01/25(木) 00:00:04.29ID:TElUKl9b0
>>148
ダートマスBASIC自体が学生にFORTRANでプログラム教えてたら
INT,DOUBLE,LONGとかの変数の種類の定義と概念で引っかかって
プログラミングの中心概念にサクッと進めないので
わざわざ数値型と文字型の二種類に変数型を固定した言語を作ったんやで。
「FOR-NEXT-STEPでSTEP0.5でも正しい回数回るようにとか苦労しましたw」と
作者がインタビューで答えててびっくりした。本当に高級言語だったんだと。
小学校のリコーダーが超高級木管楽器のプラスチックコピーだと知った時ぐらいの衝撃だったw
0165名称未設定 (ワッチョイ 173e-qxTs)
垢版 |
2018/01/25(木) 02:50:48.88ID:YC2I+R1V0
ビルド時間はSwift 2/Xcode 8に比べりゃだいぶ早くなったと思うけどね
まあそれでもObjCだけのプロジェクトに比べりゃはるかに長いけど
0168名称未設定 (PH 0Hbf-Qclr)
垢版 |
2018/01/25(木) 15:42:31.84ID:1BO/OOZKH
「型」って言うほど重要なのか?
そもそもその出発点がおかしいんだろうな
0169名称未設定 (ワッチョイ ead5-4xH4)
垢版 |
2018/01/25(木) 15:54:46.78ID:qgJud4om0
重要だろ
整数は大きさで処理速度に影響するし、浮動小数点数はまた専用のプロセッサがある
型のちょっとした違いでアラインメントの影響とかでメモリを占める領域も違ってくるし、ひいては実行ファィルの大きさにも影響してくる
型を意識しないプログラマは半人前ですらない
0171名称未設定 (ワッチョイW cac8-YK+C)
垢版 |
2018/01/26(金) 01:06:18.96ID:Qb9z6dfC0
>>167
個人開発だから購入する勇気が出ない。。。

>>169
同意!
swiftは型推論が売りだろうけど、後々のメンテナンス性だとか、デバッグを考えると型付しておかないと後々の収拾付かなくなるね。

早くこの問題はAppleさんに解決してもらいたい。
0172名称未設定 (ワッチョイ 7e2c-Qclr)
垢版 |
2018/01/26(金) 01:22:31.74ID:VCAcFJbo0
>>169
多分それ30年前の知識のまま固執してなぁい?
mem. 1MB とか 1MHz 動作とかw

Int型に文字列突っ込んだら例外飛ばしてくるとか旧石器時代の話でしょ?
0174名称未設定 (スッップ Sdda-UEho)
垢版 |
2018/01/26(金) 18:41:54.53ID:BO2m7KnDd
>>171
型を明示することでかえって可読性や保守性が悪くなる場合に省略できるようにするのが、型推論のメリットなんじゃないの?
一番読みやすく保守しやすいコードが、型推論のビルド時間の短縮の為に、読みにくく保守しにくいコードに変えなければならないなら、失敗しているということだろう
0175名称未設定 (スッップ Sdda-UEho)
垢版 |
2018/01/26(金) 18:42:48.69ID:BO2m7KnDd
>>173
c言語?
0179名称未設定 (ワッチョイW 1384-p3ow)
垢版 |
2018/01/26(金) 23:45:36.96ID:zWdYehWS0
>>174
型推論によってBuildが遅くなるのは確かに思想と逆行していることは理解できる。
ただ型を明示することで可読性や保守性を損なっているという感覚が理解できない。
プログラミング入門者だったらまあ納得できるが
0181名称未設定 (ワッチョイW b3e0-UEho)
垢版 |
2018/01/28(日) 10:13:22.57ID:KHlmF17Y0
>>176
int a = (int)"abcdefg";
printf((char *)a);

ってのはどう?
似たようなことして「問題なく」動いている古いプログラムもありそうだけど。
0182名称未設定 (ワッチョイW b3e0-UEho)
垢版 |
2018/01/28(日) 10:28:48.38ID:KHlmF17Y0
>>179
>>160の極端な例って可読性や保守性が悪くなってない?
型推論が、人間であれば文脈から自明である型を省略可能にすることで可読性や保守性を上げようとすることならば、
理想的ならば省略可能な型の記載をコンパイラの制限で記載しなければならないなら可読性や保守性を下げてることにならないか?
0184名称未設定 (ワッチョイ 7ea7-Qclr)
垢版 |
2018/01/28(日) 11:21:35.61ID:f+MMvkKZ0
$test = 'abc';
$test++;
print $test; -> abd

perlくそワロタ
0189名称未設定 (ワッチョイWW 967f-9ggK)
垢版 |
2018/01/28(日) 18:17:00.06ID:wgrAfPT20
バージョンコードだけ書き直してアーカイブし直したら全ファイル再コンパイルの憂き目に遭うの何とかならないの
Swift/Objective-C問わず、というかxibとかも再コンパイルされるんでスレチかもしれんが…
0191名称未設定 (ワッチョイ e59e-jA6l)
垢版 |
2018/02/09(金) 01:04:25.01ID:DJQSVNnB0
☆ 私たち日本人の、日本国憲法を改正しましょう。現在、
衆議員と参議院の両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
0192名称未設定 (ワッチョイW 62cf-7Au1)
垢版 |
2018/02/09(金) 02:01:27.03ID:ajBJpNxT0
改悪
0193名称未設定 (ワッチョイWW 19d1-Ys2M)
垢版 |
2018/03/31(土) 14:50:11.53ID:SttHU6qh0
プログラミングはじめたばかりの初心者ですけど質問してもいいですか?
0201名称未設定 (ワッチョイ 232b-k6iP)
垢版 |
2018/09/02(日) 14:46:43.03ID:VSM3ome90
swiftってDouble→Dicimalはキャストできるけど、Dicimal→Doubleはキャストできないの?
Dicimalでfmodみたいなのを使いたいけど見つからないから、Doubleに変換して計算しようと思ったんだけど…

>せっかく精度よく計算できるのに、Mathライブラリを利用するためにDouble型に変換しては意味がない。
て書いてあるサイトはあるから変換できるんだろうけど、変換のしかたがわかりません(T T)
0204名称未設定 (ワッチョイW 296c-Bfm6)
垢版 |
2018/10/06(土) 21:47:38.72ID:BrLoz+AY0
>>721
Swift playground 始めたばかりの素人ですが全クリする頃にはiOSアプリ作れるようになれますか?
自分にあった家計簿アプリがなくて作りたいと思ってます
0206名称未設定 (ワッチョイ d4d2-IyWy)
垢版 |
2018/10/06(土) 22:21:12.07ID:wOPD3Y/s0
「無いものは作る」って言うのはとてもいいことです
0208名称未設定 (ブーイモ MM0b-DKnb)
垢版 |
2018/10/16(火) 21:01:02.64ID:+xNWcM/rM
macOSのAppをXcodeで作ったんだけどMac App Storeを経由せずに配布したいのよ
デベロッパープログラムにお金払わないと無理?
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の言ってるように、コピペしてわからないところを放置しないというのは大事だと思う
レスを投稿する


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