トップページ⇒tech
1001コメント296KB

Swiftスレ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2014/06/03(火) 04:12:21.08ID:rEEU5ykv
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう
https://developer.apple.com/swift/
0102デフォルトの名無しさん2014/06/03(火) 13:41:30.08ID:Nh2RM5Lo
>>101
さっきから、SwiftでC言語ライブラリをそのまま呼べるか
(もちろんObjective-Cコード無しで)
という話をしているから。
0103デフォルトの名無しさん2014/06/03(火) 13:42:54.08ID:XlUvQuDj
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html#//apple_ref/doc/uid/TP40014216-CH8-XID_13
これ見ると制限付きではあるがCの関数も呼べそうな雰囲気があるが
Cの引数型がSwiftで定義されてて、それを与えた関数はCの関数を呼んでるとみなし
Cのcalling conventionで静的リンクされるんじゃないの?
0104デフォルトの名無しさん2014/06/03(火) 13:44:33.07ID:XlUvQuDj
>>102
いやいや、誰もCでObjCのクラスが書けるなんて言ってないが
0105デフォルトの名無しさん2014/06/03(火) 13:45:27.17ID:Nh2RM5Lo
知ってるかい? VB6では
C言語の関数をそのまま呼べるんだよ。

Public Declare Function GetUserNameA Lib "advapi32" (ByVal buf as string, size as long) As Long
Public Declare Function GetUserName Lib "advapi32" Alias "GetUserNameA" (ByVal buf as string, size as long) As Long
0106デフォルトの名無しさん2014/06/03(火) 13:46:29.73ID:Nh2RM5Lo
>>104
俺もそんな話してないが?

SwiftからC言語の関数をラッパー無しで
そのまま呼ぶことは出来ないって話しかしてない。
0107デフォルトの名無しさん2014/06/03(火) 13:48:57.11ID:9AiAEfmm
とりあえず>>98の「できない」は間違ってるってことでいいじゃない
0108デフォルトの名無しさん2014/06/03(火) 13:49:36.62ID:XlUvQuDj
>>106
んじゃ98は何なんだよ...
特定のクラスをObjCで実装すれば、そのクラスでCの関数を呼べる
そのクラスはSwiftで使える
という話じゃないの?
0109デフォルトの名無しさん2014/06/03(火) 14:12:29.29ID:9Ltabfc6
>>81 LLVMでコンパイルしてるから中間コードは必要な情報は持ってるはずだろ。 中間コードではC、OBJC、C++全て同じ形式になってるはず。
C系のコンパイラにはClangを使ってると思った。

LLVM Compiler Overview
https://developer.apple.com/library/prerelease/ios/documentation/CompilerTools/Conceptual/LLVMCompilerOverview/
In Xcode, the LLVM compiler uses the Clang front end (a C-based languages project on LLVM.org) to parse source code and turn it into an interim format.
0110デフォルトの名無しさん2014/06/03(火) 14:31:47.48ID:6yhmnutt
結局、>>67の"そのまま"が、ラッパーないしインタプリタの有無をその対象に含んでいるか不明なのが問題かしら?
0111デフォルトの名無しさん2014/06/03(火) 14:49:23.83ID:M9d0+DYH
どういう運用を想定しているんだろう
実行環境側に適切なバージョンのライブラリを配置する必要がある
0112デフォルトの名無しさん2014/06/03(火) 14:53:58.14ID:XlUvQuDj
ObjCのクラスを継承したSwiftクラスは自動的にObjC互換
そうでないものは@objcを付けるとObjC互換

単にマングリングの問題なのか、ブリッジが入ってオーバーヘッドが生じるのか...
0113デフォルトの名無しさん2014/06/03(火) 14:55:22.49ID:/aqJorFA
またApple専用言語かよ
信者がTwitterで絶賛してて気持ち悪い
LinuxとWIndowsで開発できない言語なんてロクでもない
ただの信者向け言語
0114デフォルトの名無しさん2014/06/03(火) 15:11:23.41ID:9Ltabfc6
>>113 MSのTypeScriptみたいなものだよ。 あっちはJavascriptを生成し、こっちはマシン語を生成すると言う違いだけ。
中身は同じLVMMだからVSもEclipseプラグインも似たような物。
Swiftはインタラクティブなデバッグ環境を用意しているためにプリプロセッサを使っていないため多少敷居が高いだろうがプリプロセッサを通したコンパイラなら簡単に出来るだろ。

近いうちにオープンソース化されるよ。
0115デフォルトの名無しさん2014/06/03(火) 15:34:29.27ID:AkPA7OdE
box2dみたいなCライブラリを使うには、C-FFIのAPIが必要になるのかな?
0116デフォルトの名無しさん2014/06/03(火) 16:32:51.94ID:xS1agrJx
>>30
ダサいっつうか、普通って感じだな。
obj-cから解放されるだけで大歓迎だが。
0117デフォルトの名無しさん2014/06/03(火) 16:35:20.87ID:/aqJorFA
俺は常に最新の情報を仕入れているんだと言わんばかりのツイートで語ってる奴って知名度上げたくて必死だね
0118デフォルトの名無しさん2014/06/03(火) 16:38:05.79ID:xS1agrJx
>>44
でもobj-cの難点はあの文法だから、そういう側面ではJavaScriptに似てると思われても仕方がないと思う。
0119デフォルトの名無しさん2014/06/03(火) 16:38:06.66ID:sk2oOubr
誰も聞いてないのに Twitter、Twitter って
コレだから Twitter 民は
0120デフォルトの名無しさん2014/06/03(火) 17:52:53.68ID:d3S2ffsw
んでオープンな処理系はまだかね?
触りたいけどMacが修理中だお…
0121デフォルトの名無しさん2014/06/03(火) 17:55:34.76ID:7VCuqd/G
http://stackoverflow.com/questions/24004732/how-to-call-c-from-swift
Cの関数は直接呼べるようだ

というかそもそもSwiftの(クラスメソッドじゃない)funcは
引数に名前付けない限りはCの関数と同じ名前空間、呼び出し規則でバイナリに落とされるのかな?
0122デフォルトの名無しさん2014/06/03(火) 18:08:07.36ID:2BJr+HwU
LLVMってすごいんだね
0123デフォルトの名無しさん2014/06/03(火) 19:08:14.72ID:+L5eE3yS
未だにCの拡張版みたいな言語でアプリケーション作るのしんどいだろうから新しく言語作ってやったぜって事でいいのかな
0124デフォルトの名無しさん2014/06/03(火) 19:12:17.00ID:7VCuqd/G
昔Cocoa Javaというのがあってだな
0125デフォルトの名無しさん2014/06/03(火) 19:15:09.53ID:t1I4ETzW
いやでもSwiftわかいりやすいわ
.NET案件の多いWindowsの業務アプリ系の開発者はかなり嬉しいんじゃないの
TypeScriptをM$の技術者が作っただけあってそれをパクってるSwiftは.NETやってれば手癖で書けるから楽だわwww
0126デフォルトの名無しさん2014/06/03(火) 19:20:17.45ID:xS1agrJx
>>123
大体あってると思う。
Cの拡張版だからというか、拡張部分のツギハギ文法が嫌われてる理由だと思うけど。
0127デフォルトの名無しさん2014/06/03(火) 19:23:28.64ID:xS1agrJx
自分がそうなだけど、MacやiOSアプリ作りたいけどobj-cは嫌だって層がけっこうな人数いるだろうから、開発者激増しそうだな。
0128デフォルトの名無しさん2014/06/03(火) 19:27:43.38ID:lYocvdBa
ざっと見たところ、いろんな意味でRustとかぶってるなぁ
0129デフォルトの名無しさん2014/06/03(火) 19:29:50.57ID:E7KMzTZf
JavaScriptやってきた俺でも出来るのかな?
正直、Titanium Mobileは食指が伸びなかったので期待してるんだが
0130デフォルトの名無しさん2014/06/03(火) 19:35:55.05ID:sk2oOubr
元々あるのか、ヘッダを読んで自動生成してるのか分からんけど、
普通にC標準ライブラリも呼び出せるな。fopen とか

俺module はどうやって作るんだこれ
0131デフォルトの名無しさん2014/06/03(火) 19:40:30.12ID:GrNLWq+f
ひさびさにGoスレ並に伸びそうなスレ
0132デフォルトの名無しさん2014/06/03(火) 19:42:03.11ID:qHlXCI8o
twitterでswiftディスってる人のツイートに粘着してるカス信者うぜえな
0133デフォルトの名無しさん2014/06/03(火) 19:49:00.11ID:E7KMzTZf
>>71
on error goto や on error resume nextが使えるようになったらいいな
0134デフォルトの名無しさん2014/06/03(火) 19:54:35.79ID:SsmCsZ51
早速さわってみたいけれども、どうすればいいの?
Windows か FreeBSD ならなんとか
0135デフォルトの名無しさん2014/06/03(火) 19:58:36.38ID:thu5Bo8U
c = 標準語
obj-c = 沖縄方言
javascript = 関西弁(大阪)
swift = 関西弁(京都)
0136デフォルトの名無しさん2014/06/03(火) 20:07:08.58ID:9Ltabfc6
>>134 取りあえず OSXが無いとどうにもならない。 WindowsにVMware入れて動かす手も有る。 お試しなら十分だろ。
今俺がこうしてる。
その上でデベロッパ登録すれば直ぐにダウンロードして使える。
0137デフォルトの名無しさん2014/06/03(火) 20:19:05.04ID:t1I4ETzW
なに犯罪をドヤ顏で自慢してんだよ
Appleの開発環境はMac持ってないやつには公開・提供されないんだよ
クソ犬やクソドザは負けを認めてMac買え
0138デフォルトの名無しさん2014/06/03(火) 20:43:00.95ID:W3xt/cSk
なんでjavascriptなんだろう
C++とかJavaライクなものなら嬉しかったのに
0139デフォルトの名無しさん2014/06/03(火) 20:52:20.93ID:Y/pEIVnr
ま、どうってことない言語に思えるけど、Obj-Cから解放されるっていうのが最大のメリットだろうね
0140デフォルトの名無しさん2014/06/03(火) 20:56:57.99ID:9AiAEfmm
>>138
どのへんがC++やJavaと違ってJavaScriptに見えた?
0141デフォルトの名無しさん2014/06/03(火) 21:02:30.24ID:kzI/DT6H
変数宣言の構文とかセミコロンの扱いとかじゃねえの?
0142デフォルトの名無しさん2014/06/03(火) 21:03:23.90ID:LbUp5C5M
>>134
取り敢えずMac miniでも買え。
飽きたらMac miniにWindowsやFreeBSDを突っ込めばO.K.
0143デフォルトの名無しさん2014/06/03(火) 21:10:51.16ID:5DO4L7dm
中古のMacって相場いくらぐらいなんだろ
0144デフォルトの名無しさん2014/06/03(火) 21:13:14.39ID:F1SxNhy2
apple版go言語だな
0145デフォルトの名無しさん2014/06/03(火) 21:13:49.53ID:9AiAEfmm
>>141
Swiftは基本セミコロンいらないよ?いま上がってるサンプルとかにもほとんどセミコロンは無い
(一行に複数の文書きたいときだけ使うらしい)
JavaScriptはセミコロン省略できるとこもあるけど、文末にセミコロン欲しいしなるべく省略しないように書く

変数宣言構文はJavaScriptの拡張とかで使われてる形式で、
現在のJavaScriptでよく使う形式とはちょっと違うと思うんだが
0146デフォルトの名無しさん2014/06/03(火) 21:20:57.57ID:LbUp5C5M
>>143
Macの中古相場は旧OSを欲しがる需要が高く、値崩れし難いのでかなり高い。
新品を買って、要らなくなったら売っても、買値からあまり落ちずに高く売れるので新品買った方が良い。
場合によっては型落ち中古が現行機よりも高い事もあったりするので、投機目的ついでに買っちゃえ。
0147デフォルトの名無しさん2014/06/03(火) 21:22:13.68ID:Y/pEIVnr
ヤフオクとかでインストールdvd買ってvmwareに入れればいいよ
0148デフォルトの名無しさん2014/06/03(火) 21:27:55.61ID:qHlXCI8o
>>137
MacにはWindowsいれられるのに
WindowsにはMac入れちゃいけないキチガイな企業のOSとか言語なんて滅びちゃえよ!
0149デフォルトの名無しさん2014/06/03(火) 21:28:06.80ID:kzI/DT6H
>>145
んなことは知ってるから国語の教科書でも読んでろ
0150デフォルトの名無しさん2014/06/03(火) 21:29:33.63ID:M9d0+DYH
セミコロンなんてCが遺した最大級の悪弊の一つ
0151デフォルトの名無しさん2014/06/03(火) 21:34:06.35ID:9AiAEfmm
>>149
>>141はSwiftの変数宣言の構文とかセミコロンの扱いがJavaScriptと似てるって言いたいんじゃないの?
それに対してかなり違うよっていう俺の意見なんだが?
0152デフォルトの名無しさん2014/06/03(火) 21:37:46.29ID:lI9Ae8oA
型があるし、クラスがあるし、
どっちかって言うとTypeScriptに似てるよね。
0153デフォルトの名無しさん2014/06/03(火) 21:46:19.90ID:D/9V5d8o
これってWindowsでビルドできるの?
0154デフォルトの名無しさん2014/06/03(火) 21:47:13.03ID:kzI/DT6H
>>151
「C++やJavaと違って」
0155,,・´∀`・,,)っ-○○○2014/06/03(火) 21:48:55.94ID:h45MFUqG
Rubyっぽい構文に惹かれた
0156デフォルトの名無しさん2014/06/03(火) 21:51:54.07ID:pg5ki0wv
scalaっぽさに惚れた
0157デフォルトの名無しさん2014/06/03(火) 21:52:13.73ID:9Ltabfc6
>>153 出来ない。 今の処
0158デフォルトの名無しさん2014/06/03(火) 21:55:37.09ID:hO8OPW7Z
言語仕様が公開されてるならWindowsのコンパイラもそのうち出来るんじゃないの?
0159デフォルトの名無しさん2014/06/03(火) 21:58:16.37ID:9AiAEfmm
>>158
コンパイラだけきても、WindowsでCocoa API呼べてもしょうがないし、
WindowsのAPIが呼べるようにするのは簡単ではないだろう
0160デフォルトの名無しさん2014/06/03(火) 21:58:53.82ID:9AiAEfmm
>>154
セミコロンの扱いに関しては、C++やJavaは、ほぼJavaScriptと同じ。SwiftはC++やJavaやJavaScriptとは異なる。
だから、Swiftのセミコロンの扱いが、C++やJavaと違って、JavaScriptに見えるのはおかしい。

変数宣言構文に関しては、C++やJavaとは違うし、JavaScriptとも違う。
だから、Swiftの変数構文がC++やJavaとは違うのはいいとして、JavaScriptに見えるのはおかしい。
0161デフォルトの名無しさん2014/06/03(火) 22:01:17.28ID:rRxa4+Jq
Swift!
http://www.goo-net.com/carphoto/10551014_200910.jpg
0162デフォルトの名無しさん2014/06/03(火) 22:08:09.98ID:pg5ki0wv
CPUの歓声が聞こえる
0163デフォルトの名無しさん2014/06/03(火) 22:10:02.93ID:0x6aWx6R
C#から見たApple Swift
ttp://d.hatena.ne.jp/matarillo/20140603/p1
0164,,・´∀`・,,)っ-○○○2014/06/03(火) 22:15:03.10ID:h45MFUqG
セミコロンは文の区切りだね。
改行が文の区切りとみなされるようだ。
ということはバックスラッシュで行連結とかもあるのかな。
ifやfor文で括弧使わないところとかprintlnの文字列組み立てとかもRubyっぽくて素敵
0165デフォルトの名無しさん2014/06/03(火) 22:15:38.30ID:Q95pPloD
>>163
自作自演の売名乙
0166デフォルトの名無しさん2014/06/03(火) 22:17:49.49ID:9Ltabfc6
swift = アマツバメ
http://upload.wikimedia.org/wikipedia/commons/d/dd/Apus_apus_01.jpg
0167デフォルトの名無しさん2014/06/03(火) 22:20:13.02ID:WDX0jN2+
これからiOSの仕事始めるのだが、Swiftで書くべき?著名人は何て言ってる?
0168デフォルトの名無しさん2014/06/03(火) 22:25:51.60ID:pg5ki0wv
>>167
納期はいつなのか?
0169デフォルトの名無しさん2014/06/03(火) 22:26:13.34ID:9Ltabfc6
Swiftだろ。 今更OBJCでやる意味が無い。
急ぎでやるなら別だが。 完成が秋以降の予定ならSwift
0170,,・´∀`・,,)っ-○○○2014/06/03(火) 22:26:21.75ID:h45MFUqG
Objective-C/C++のコード資産は当分残るだろうから食わず嫌いはしないほうがいいんでない?
0171デフォルトの名無しさん2014/06/03(火) 22:27:10.18ID:WDX0jN2+
納期は3ヶ月後
0172デフォルトの名無しさん2014/06/03(火) 22:27:53.60ID:d9BmVsD9
Obj-Cしかないじゃん
0173デフォルトの名無しさん2014/06/03(火) 22:29:06.38ID:pg5ki0wv
>>171
残念だったな
0174デフォルトの名無しさん2014/06/03(火) 22:31:06.89ID:kzI/DT6H
>>160
へー
0175デフォルトの名無しさん2014/06/03(火) 22:38:05.27ID:WDX0jN2+
Getting "Am I wasting my time reading your iOS book?" No, the book is really about the frameworks. The transition to Swift will be painless.(@AaronHillegass)
だそうだから、Swiftで書こうかな。
0176デフォルトの名無しさん2014/06/03(火) 22:38:35.11ID:9Ltabfc6
>>170 ObjC からSwift のコンバータで変換する方向みたいだよ。

>>171 微妙なところだが、納期が決まってたら冒険出来ないね。
0177デフォルトの名無しさん2014/06/03(火) 22:44:42.15ID:WDX0jN2+
SwiftでiTunes Connectにアプリ申請できるのはいつ頃?
0178デフォルトの名無しさん2014/06/03(火) 22:47:41.12ID:Fqc6zuT2
Scala, TypeScriptなど、型名を後ろに書く言語が増えてるのは、その方が文法解析しやすいから?

昔、Cのパーサーについて書かれた文章に、何となくそんな感じのことが書いてあったような気がするんだが。
0179デフォルトの名無しさん2014/06/03(火) 22:48:31.36ID:h+Sf66BK
why(matters(Swift) > matters(Yosemite + iOS[8]))
http://blog.livedoor.jp/dankogai/archives/51922323.html
0180デフォルトの名無しさん2014/06/03(火) 22:58:24.37ID:lI9Ae8oA
>>178
省略可能だから。

int i ・・・ intを省略できない。
var i: int・・・intを省略したらvar i

型ありでありながら、型の記述を省略できるようにすると
必然的にこうなってしまう。

まあ、var<int> i みたいな書き方も考えられるけどね。
そこはJavaScriptみたいな言語でのvar iという書き方を
ふまえたからそうなったのだろう。
0181デフォルトの名無しさん2014/06/03(火) 23:16:05.25ID:JVBQ3X9G
>>162
マシン語が透けて見える
0182デフォルトの名無しさん2014/06/03(火) 23:16:48.39ID:5GNqzpIY
Pascal
var 変数名 : データ型名;
var 変数名1, 変数名2, ・・・ ,変数名n : データ型名;
0183デフォルトの名無しさん2014/06/03(火) 23:23:22.22ID:OIzVF/VN
androidもjava捨ててgoにしてほしい。
0184デフォルトの名無しさん2014/06/03(火) 23:30:09.34ID:OsTKsrgO
まともに商売しようとする所はiOSもAndroidもフロントエンド以外は共通化や高速化の為に
結局C言語で書くわけだから、特に何も変わらないだろう
0185デフォルトの名無しさん2014/06/03(火) 23:31:00.44ID:9AiAEfmm
関数型の変数宣言するのにも「型 変数」よりも「変数:型」の方がわかりやすく書ける気がするな
0186デフォルトの名無しさん2014/06/03(火) 23:39:29.36ID:LbUp5C5M
>>171
出たばっかでまだ不明な事が多いのに、イキナリ本番ぶつけるなんてチャレンジャーだな。
0187デフォルトの名無しさん2014/06/03(火) 23:42:28.57ID:nZtxpwF+
tipsサイトはよ
0188デフォルトの名無しさん2014/06/03(火) 23:54:24.32ID:lYocvdBa
>>185
静的型付けの関数型言語って、ほぼ全て後者だと思うけど
前者の例って何かあるかな?
0189,,・´∀`・,,)っ-○○○2014/06/04(水) 00:14:41.71ID:IxbVXe6H
C++にも型名の代わりにautoキーワードで変数作れる機能あるしねー
リテラルから型が推定できるからこそできる業であって。

とはいえもともとObj-Cが動的バインディングを売りにしてたし
ある程度は実行時評価の部分は残るのかなという気がしている。
0190デフォルトの名無しさん2014/06/04(水) 00:18:30.10ID:F6AvD4LE
動的バインディングってようするに
C++でも採用されてる多態性のことだよね?
動的に実行するクラスが決まる。
0191デフォルトの名無しさん2014/06/04(水) 00:20:20.77ID:lzmGUwMb
だってこれ動的型付け言語じゃん
俺は静的な方が好きなんだけどObjective-Cじゃないならなんでもいいや
あと>>163でジェネリクスと変性って同じだろw
0192デフォルトの名無しさん2014/06/04(水) 00:22:57.35ID:lzmGUwMb
>>189
なんで団子がここにいんだよ、自作板専住じゃないんかよw
セレクターを指定したメッセージだろ、売りっつーかリフレクションなんてC#でもあるじゃん
0193デフォルトの名無しさん2014/06/04(水) 00:26:25.62ID:HmwUcklb
>>191
型推論付きの静的型付け言語じゃないの?
0194デフォルトの名無しさん2014/06/04(水) 00:32:12.69ID:3yUc27H8
そうだよ
0195デフォルトの名無しさん2014/06/04(水) 00:46:21.56ID:Kny2oUjp
AS3使ってきた人にはSwiftは楽勝だな
0196デフォルトの名無しさん2014/06/04(水) 00:56:00.63ID:aeQAlcnR
STAP細胞はSwiftで作れますか?
0197デフォルトの名無しさん2014/06/04(水) 00:58:18.18ID:5LoqN5d1
いきなりswiftスレ乱立したな。
でも俺もけっこう心揺れてる。

ちょうどノートPC壊れてるとこだし、次はMac Book Pro の英語キーボードモデル買ってしまうかもしれんw
0198デフォルトの名無しさん2014/06/04(水) 01:00:06.63ID:HmwUcklb
>>195
その手の言語を使ってた人には
ARCの関係でオブジェクト間の参照が循環しないように強参照とか弱参照とか使い分ける必要があるのが
ちょっと解り難かったりするんじゃないのかね?
0199デフォルトの名無しさん2014/06/04(水) 01:05:15.86ID:5LoqN5d1
>>198
c++erにはshared_ptrとweak_ptrでとっつきやすかも。
0200デフォルトの名無しさん2014/06/04(水) 01:05:16.40ID:zW2IOeMv
C++の設計と進化にも、i: intの記法検討したとあったね。
0201デフォルトの名無しさん2014/06/04(水) 01:19:28.21ID:HmwUcklb
C++はCとのしがらみを優先したんだな
■ このスレッドは過去ログ倉庫に格納されています