質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.76%

  • Swift

    6719questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • iOS

    3808questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift4で書いたプログラムが動くiOSのバージョン

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 649

tarofess

score 112

Swift4で書いたプログラムは、例えばiOS10では普通に動作するでしょうか?もしくはどのiOSのバージョンまで動かすことができるでしょうか?
もしiOS10でも動くとすると、Swift4からはCodableというプロトコルが追加されていますが、こちらもiOS10では動作するということになるでしょうか?
iOS10ではなかったプロトコルなので、動かないのではないかと懸念しています。
どなたか教えていただけると助かります。よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

Swiftバージョンと最低動作OSとの関係はちょっと複雑です。

iOS開発で最低OSバージョンを決めているのは、言語ではなく、SDKです。普通にXCodeの最新版を使っていると最新のSDKが付属しますが、その最新のSDKはだいたい数バージョン前のOSまでをサポートすることが多いです。現在、 XCode9付属のSDKでは最低iOS8までサポートしているようです。
加えて、手動で古いSDKをインストールすることができるので、頑張るともう少し前のOSまでサポート範囲を広げることができるようです(けっこう苦労するらしいですが)。

一方、コンパイラもどんどんバージョンアップしており、最新のコンパイラは最新のXCodeでしか使えません。Swift4をコンパイルできるコンパイラが使えるのはXCode9以降のみです。

したがって、こういう流れでアプリの最低バージョンが決まります

Swift4を選択

XCodeのバージョンがSwift4対応コンパイラを扱えるXcode9以降に縛られる

対象OSがXCode9でサポートされるSDKに縛られる

デフォルトでは iOS8以降が対象に。古いSDKを入れられればもっと広がるかも

これにプラスして、使う機能によってはAPIによる縛りがかかります。新しいOSでのみ利用可能な機能を使うアプリは、最低サポートOSがそこになります。例えばiOS9以降で搭載されたReplayKitを使用する場合、そのアプリの最低OSバージョンはiOS9です。

Codableですが、CodableプロトコルはSwift4の言語仕様を使っていますが、これ自体は言語の方の話なので本来はOSとは関係ありません。が、実際にエンコード/デコードを行うJSONDecoderがiOS11から利用可能なAPIなので、上記のAPIによる縛りがかかってiOS11以降専用となります。

(修正)
Codableですが、CodableプロトコルはSwift4の言語仕様を使っていますが、OSの新機能を使っているわけではないので、コンパイル時にデータや文字列の基本操作に還元されるようです。したがって、SDKの最低サポートバージョンまで利用可能です。JSONDecoderはiOS11以降かと思っていましたが、Deployment TargetをiOS8にしてもビルド可能でした。これも内部的には新機能は使っていないようです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/10 10:12

    ご回答ありがとうございます。
    とても分かりやすくて理解が深まりました。ありがとうございます。
    あと少し疑問があり、「CodableプロトコルはSwift4の言語仕様を使っていますが」とあるのですが、Swift4を扱うには最新のコンパイラが必要、つまり最新のSDKが必要ということですよね?
    ということは、「これ自体は言語の方の話なので本来はOSとは関係ありません」とありますが、Codableを使うには最新のSDKが必要であり、CodableはOSと関係があるということにはならないのでしょうか?

    キャンセル

  • 2018/01/10 11:16 編集

    「Swift4を扱うには最新のコンパイラが必要、つまり最新のSDKが必要ということですよね?」←ここは違っています。正しくは「Swift4を扱うには最新のコンパイラが必要、ゆえに最新のXCodeが必要、その最新のXCodeには最新のSDKが付いてくる」です。それはさておき、Codableについては間違ったことを言っているかもしれません。あらためて調べて分かり次第回答を修正します。

    キャンセル

  • 2018/01/10 11:22

    なるほど、最新のSDKが付いているXcodeが必要と言うことなのですね。
    了解しました、編集お待ちしております。

    キャンセル

  • 2018/01/10 11:55 編集

    >>JSONDecoderはiOS11以降かと思っていましたが、
    >>Deployment TargetをiOS8にしてもビルド可能でした

    JSONDecoderは、ドキュメントのSDKsに iOS 7.0+ と書いてますね。

    キャンセル

  • 2018/01/10 12:00

    Codableはコンパイル時にそのような動作になっているのですね。
    スッキリしました。
    詳しい解説誠にありがとうございました。

    JSONDecoderはiOS7以降で使えるものなのですね。ありがとうございます。

    キャンセル

0

プロトコルはSwiftの標準ライブラリの一部ですので、iOSのバージョンとは関係ありません。
バージョンが問題になるのは、iOSのAPIを呼び出す場合です。存在しないAPIを呼び出すとアプリがクラッシュします。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/07 14:17

    ご回答ありがとうございます。
    標準ライブラリとAPIは何が違うのでしょうか?例えばこちらの記事のSwiftのソースコードでCoreLocationをインポートしていますが、CoreLocationってAPIではなく標準ライブラリなのでしょうか?
    https://qiita.com/k-yamada-github/items/5ce29b3c30397104461e
    標準ライブラリとAPIの違いがイマイチ分からないです...。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Swift

    6719questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • iOS

    3808questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。