Swift について


以下の記事は、swiftt.org からの記事を日本語訳したものです。


Swift は、安全性、パフォーマンス、およびソフトウェア設計パターンに対する最新のアプローチを使用して構築された汎用プログラミング言語です。


Swift プロジェクトの目標は、システムプログラミングから、モバイルアプリケーション、デスクトップアプリ、そしてクラウドサービスまでの幅広い用途に最適な言語を作成することです。最も重要なことに、Swift は、開発者にとって正しいプログラムを書いて維持しやすくするように設計されています。この目標を達成するためには、Swift コードを書くための最も明白な方法は、以下のようなものでなければならないと考えています。


安全。 コードを書くための最も明白な方法は、安全な方法で振る舞う事です。未定義の動作は安全性の敵であり、開発者の間違いは、ソフトウェアが生産される前に捕らえられるべきです。安全を選択すると、Swift では厳しい気持ちになることがありますが、明快さは長期的には時間を節約すると信じています。


速さ。Swift は、C ベースの言語 (C、C ++、および Objective-C) の後継者として意図されています。したがって、Swift は、ほとんどのタスクでパフォーマンスでそれらの言語に匹敵します。後でクリーンアップが必要な短時間のバーストだけではなく、パフォーマンスも予測可能で一貫性がなければなりません。斬新な機能を備えた言語がたくさんありますが、速いのはまれです。


表現に富む。コンピュータ科学の何十年もの進歩から、開発者が期待する最新の機能を、使用するのが喜びになる構文を提供する Swift のメリットが得られます。しかし、Swift はそれだけでは決して終わらない。私たちは、言語の進歩を監視し、何がうまくいくかを受け入れ、Swift をいつまでもより良くするために絶えず進化していきます。


ツールは、Swift エコシステムの重要な部分です。我々は、開発者のツールセット内でうまく統合し、素早くビルドし、優れた診断を行い、インタラクティブな開発体験を可能にするよう努めています。Xcode で Swift ベースのプレイグラウンドや Linux のサーバー側のコードを操作するときに Web ベースの REPL ができるように、ツールを使用すると、プログラミングを非常に強力にすることができます。


特徴


Swift には、コードを読み書きするのを容易にする機能が含まれていますが、開発者に真のシステムプログラミング言語で必要とされるコントロールを提供します。Swift は推論された型をサポートし、コードをよりクリーンにし、間違いを少なくし、またモジュールはヘッダーを削除し、名前空間 (namespaces) を提供します。メモリは自動的に管理され、セミコロンさえ入力する必要はありません。Swift はまた他の言語から以下の物を借りています。たとえば、Objective-C から、呼び出された名前付きのパラメータは、Swift の API を読みやすく、保守しやすいクリーンな構文で表現されています。


Swift の特徴は、強力でありながら使い易い言語を作成するために一緒に働くように設計されています。Swift には以下のような特徴が追加されています。


安全


Swift は初めから C を基礎にした言語よりも安全であるように設計されており、安全でないコードのクラス全体を排除しています。変数は常に使用前に初期化され、配列と整数はオーバーフローがチェックされ、メモリは自動的に管理されます。構文はあなたの意図を簡単に定義できるように調整されています。たとえば、単純な 3 文字のキーワードで変数 (var) または定数 (let) を定義します。


もう 1 つの安全機能は、デフォルトでは Swift オブジェクトを nil にすることは決してできない事です。また、nil オブジェクト を作成または使用しようとするとコンパイル時エラーが発生します。これによりコードの作成がよりクリーンでより安全になり、実行時クラッシュの一般的な原因を防ぐことができます。しかし、nil が適切な場合があり、これらの状況では、Swift には optional として知られる革新的な機能があります。optional には nil が含まれていても構いませんが、Swift の構文では安全に対処する必要があるため ? を使用してコンパイラにその動作を理解させ、それを安全に処理することを指示します。


Swift.org とオープンソース


2015 年 12 月 3 日、ライブラリ、デバッガ、およびパッケージマネージャをサポートする Swift 言語が、ランタイムライブラリ例外での Apache 2.0 ライセンスの下でで公開され、Swift.org がプロジェクトをホストするために作成されました。ソースコードは GitHub 上でホストされています。そこでは誰でも簡単にコードを取得して自分自身でビルドすることができ、コードをプロジェクトに戻すためのプルリクエストを作成することもできます。誰もが歓迎され、バグを報告する だけでもできます。このサイトには、優れた Swift 4.0 入門 ガイドも用意されています。


プロジェクトは、コミュニティと協力して戦略方向性を導くエンジニアのコアチームと、日々のプロジェクト管理を担当するコードオーナーの集まりによって管理されています。テクニカルリーダーは寄稿者のコミュニティから来ており、誰でも Swift の領域をリードする権利を得ることができます。コミュニティガイドライン には、Swift コミュニティの管理方法に関する詳細情報が含まれています。


プロジェクト


Swift 言語は、独自のリポジトリを各々持つ、プロジェクトのコレクションとして管理されます。現在のプロジェクトのリストは以下のとおりです。

プラットフォームサポート


公開で Swift を開発するための最もエキサイティングな側面の 1 つは、幅広いプラットフォーム、デバイス、および使用の用途に移植するのは自由であるのが今や分かっていることです。


私たちの目標は、実際の実装メカニズムがプラットフォームごとに異なる場合でも、すべてのプラットフォームで Swift のソース互換性を提供することです。主な例は、Apple プラットフォームには、UIKit や AppKit などの Apple プラットフォーム・フレームワークにアクセスするために必要な Objective-C 実行環境が含まれている事です。Linux などの他のプラットフォームでは、Objective-C 実行環境は必要ありませんので、存在しません。


Swift のコアライブラリプロジェクト は、Objective-C 実行環境に依存せずに基本的な Apple フレームワーク (Foundation など) の移植可能な実装を提供することにより、Swift のクロスプラットフォーム機能を拡張することを目指しています。コアライブラリは開発の初期段階にありますが、すべてのプラットフォームで Swift コードのソース互換性が向上します。


アップルのプラットフォーム


Mac 上でオープンソースの Swift を使用すると、iOS、macOS、watchOS、および tvOS のすべての Apple プラットフォームを対象とできます。さらに、オープンソース Swift のバイナリビルドは、Xcode ビルドシステムの完全サポート、エディタでのコード補完、統合されたデバッグなど、Xcode 開発ツールと統合されているため、誰でも最新の Swift 開発を、使い慣れた Cocoa と Cocoa Touch 開発環境で試すことができます。


Linux


オープンソースの Swift は、Linux 上で Swift ライブラリとアプリケーションをビルドするために使用できます。オープンソースのバイナリビルドは Swift コンパイラと標準ライブラリ、Swift REPL とデバッガ (LLDB)、及び コアライブラリ を提供しているので、Swift 開発に直接飛び込んでいくことができます。


新しいプラットフォーム


Swift を一緒に連れて行ける新しい場所を見るのが楽しみです。私たちが愛しているこの言語は、ソフトウェアをより安全にし、迅速にし、保守性を向上させることができると本当に確信しています。私たちは Swift をより多くのコンピューティングプラットフォームに連れて行くことをお手伝いします。





目次
Xcode 9 の新機能

SwiftLogo
  • Swift について
  • 特徴
    安全
    Swift.org とオープンソース
    プロジェクト
    プラットフォームサポート
    アップルのプラットフォーム
    Linux
  • ブログ:Swift 4.0 リリース!
  • 言語の更新
    文字列
    コレクション
    アーカイブとシリアル化
    その他の言語の更新
    新しい互換モード
    Package Manager の更新
    文書化
  • プラットフォーム
  • Linux
    Apple(Xcode)
    ソース
  • Swift のローカルリファクタリング
  • リファクタリングの種類
    カーソルベースのリファクタリング
    レンジベースのリファクタリング
    診断
    テスト
    文脈上のリファクタリングテスト
    コード変換テスト
    Xcode との統合
    潜在的なローカルリファクタリングの考え方
  • Swift のダウンロード
  • リリース
    Swift 4.0
    Swift 3.1.1
    Swift 3.1
    Swift 3.0.2
    Swift 3.0.1
    Swift 3.0
    Swift 2.2.1
    Swift 2.2
    スナップショット
    基幹となる開発(マスター)
    古いスナップショット
    Swift 4.0 の開発
    古いスナップショット
    Swift 3.1 の開発
    古いスナップショット
    古いリリースの分岐
    ダウンロードを使用して
    インストール
    MacOS でのコード署名
    Linux
    必要
    サポートしているターゲットプラットフォーム
    インストール
    アクティブな署名鍵
  • Swift 4.0 入門
  • Swift のインストール
    Linux の場合
    REPL の使用
    パッケージマネージャの使用
    パッケージの作成
    実行可能ファイルの作成
    複数のソースファイルの操作
    LLDB デバッガの使用
  • 文書化
  • Swift プログラミング言語
    翻訳
    API 設計ガイドライン
  • API 設計ガイドライン
  • 目次
    基礎
    ネーミング
    明確な使用の促進
    流暢な使用を目指す
    用語をよく使う
    規約
    一般的規約
    パラメータ
    引数ラベル
    特別な命令
  • Swift 4 への移行
  • 移行前の準備
    Swift 移行アシスタント
    Swift 4 移行の変更の概要
    SDK の変更点
    注目すべき特別なケース
    新しい String
    デフォルトのパラメータ値は public です
    移行の後
    移行に関する既知の問題
    Carthage/CocoaPods プロジェクトの使用
    その他
  • Swift 3 への移行
  • 移行前の準備
    Swift 移行アシスタント
    Swift 3 移行変更の概要
    API 設計ガイドライン
    SDK
    Swift 標準ライブラリ
    言語
    移行後
    Carthage/CocoaPods プロジェクトの使用 既知の移行の問題
    Swift 標準ライブラリ
    SDK
    Swift 3 言語
    その他
  • ソースコード
  • コンパイラと標準ライブラリ
    Core Library
    パッケージマネージャ
    Xcode の Playground サポート
    クローンされたリポジトリ
  • コミュニティガイドライン
  • コミュニケーション
    コミュニティの構造
    プロジェクトリーダー
    コアチーム
    コードオーナー
    ライセンス
    Runtime Library Exception (実行時ライブラリ例外)
    ソースコードの著作権とライセンス
    投稿
    入門
    コードの貢献 (投稿)
    新しい機能の提案
    行動規範
    投稿者行動規範 v1.3
    報告
    メーリングリスト
    General Interest
    Swift 開発
    Swift の発展
    通知
  • 投稿
  • 質問に答える
    バグを報告する
    バグのトリアージ
    コードの投稿
    段階的な開発
    メッセージをコミットする
    変更の帰属
    コードテンプレート
    コードのレビュー
    テスト
    品質
    コミットアクセス
    外部ライブラリ依存関係の追加
    Swift 発展プロセスへの参加
    LLVM と Swift
    LLVM の変更はどこで行われますか?
    Swift と LLVM 開発者ポリシー
  • Swift の継続的インテグレーション
  • 構成
    ジョブの組織
    ジョブの構成
    使用法
    リクエストのテスト
  • Swift ソースの互換性
  • プロジェクトの現在のリスト
    プロジェクトの追加
    合格基準
    プロジェクトの追加
    プロジェクトの維持
    リクエストのテスト
    プロジェクトをビルドする
    フォーカスエリア
  • ABI の安定性
  • データレイアウト
    メタデータ型
    切り分け
    呼び出し規約
    実行時
    標準ライブラリ
  • サーバーAPIプロジェクト
  • フォーカスエリア
    移植性
    外部ライブラリの使用
    ワークグループ
    舵取りチーム
    ステークホルダー
    開発プロセス
    API の提案
    プロトタイプ化と開発
    リリースプロセス
    メーリングリスト
  • コンパイラと標準ライブラリ
  • コンパイラのアーキテクチャ
    標準ライブラリの設計
  • パッケージマネージャ
  • 概念の概要
    モジュール
    パッケージ
    製品
    依存関係
    例の使用法
    ライブラリパッケージの作成
    ビルド構成文の使用
    依存関係のインポート
    副依存関係の解決
    コミュニティの提案
  • Swift コアライブラリ
  • プロジェクトの状態
    Foundation
    libdispatch
    XCTest
  • REPL とデバッガ、プレイグラウンド
  • なぜ REPL とデバッガを組み合わせるのか?
    Xcode プレイグラウンドサポート












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)












    トップへ(Swift 4.0)