Swift 単語


ニコニコ動画でSwiftの動画を見に行く

スウィフト

2.1千文字の記事
これはリビジョン 2297753 の記事です。
内容が古い・もしくは誤っている可能性があります。
最新版をみる

Swiftとは、

  1. 英語の名詞でアマツバメのこと
  2. 英語の固有人名(Jonathan Swiftなど)
  3. 英語の形容詞で 迅速な…… 即座の…… を意味する
  4. Appleが開発したプログラミング言語
  5. シカゴ大学とアルゴンヌ国立研究所により2007年に発表された並列スクリプト言語

以下では4について解説する。

概要

Appleが次世代のアプリケーション開発用言語として設計した。Objective-Cの後継を目指しており、最新トレンドの採用といかにもApple的な独自路線の融合が特徴。2014年6月2日に行われたWorldwide Developers Conference 2014で発表された。

Appleは Swift = Objective-C - C としており、ベース文法がC言語系列から離れたものとなっている。感覚的にはRustやGoogle GOといった2000年台後半設計言語の系統に属する。

主なフィーチャーは以下のとおり

  • Objective-Cクラスとのブリッジ
  • 原則として静的型。型推論あり
  • switchでのパターンマッチ
  • Generics
  • 演算子オーバーロード
  • Tupleによる多値関数
  • クロージャ
  • Automatic Reference Counting
  • 関数型に近い nil の扱い

Swiftで開発されたアプリケーションを動作させるにはiOS 7以降、またはOS X 10.9以降が必要となる。

Hello World

println(“Hello World”)

コンパイル型言語で伝統的なメイン関数はなく、トップレベルで書き下すとスクリプト言語のようにそのまま実行される。複数のモジュールでプログラムを書く場合は、main.swiftに書かれたものがエントリーとなる。

特徴的な機能

クラス

基本的にはD言語辺りに近い静的OOPクラスとして動作する。virtualなし、final, overrideありのイマドキ設計。ただし、

  • Objective-Cのクラスを継承している
  • @objc属性が付いている
  • @IBOutlet や @IBAction などの属性を使っている

等の条件を満たす場合はobjc互換となり、メッセージパッシングで動くようになる。objcとのメソッド名ブリッジ等はややこしいので省略。基本的にコンパチなクラスは相互呼び出しが可能である。

関数、メソッド

Swiftの非常に特徴的な要素の一つが関数の引数周りの設計である。C言語的な引数の値のみを渡す文法と、Objective-C的なメッセージ引数的な文法が混在し、状況によってデフォルトの扱いが違うという癖のある作りになっている。

基本ルール

(A) C言語スタイル

 func f(v1: Int, v2: Int) -> Int 
{
  return f1 + f2
}
// -> 外部パラメータ名なしで呼び出す f(1,2)

(B) Objective-Cスタイル

 func f(left v1: Int, right v2: Int) -> Int 
{
  return v1 + v2
}
// -> 外部パラメータ名付きで呼び出す f(left: 1, right: 2)

(B’) Bの略記形

 func f(#left: Int, #right: Int) -> Int
{
  return left + right
}

※混在も可能

 func f(v1: Int, #plus: Int) -> Int
{
  return v1 + plus
}
// f(1, plus: 2)

ややこしいのはデフォルトの扱い。

  • フリー関数は全てA (C言語風)
  • クラスに所属するメソッドは先頭のみAで2つ目以降はB
  • クラスのイニシャライザは全てB

なんでこんな事になるかというと、オブジェクトに属するメソッドはメソッド名自体が先頭引数の意味を説明することが多いのでわざわざ書かないようにしたい、しかしイニシャライザは名前がinit(呼び出す方はClass()のようにコンストラクタ呼び出し)で統一されているので先頭も必要・・・という理由による。ちなみにイニシャライザは外部パラメータ名によってオーバーロードされるので、同じ型シグネチャに対して複数の異なるイニシャライザを定義することも可能である。

なお場合によっては外部パラメータ名を付けたい場合と付けたくない場合があると思うが、そういう時は、(B)の記法を使って強制的に外部パラメータ名を付けたり、外部パラメータ名をアンダースコアにすることで省略扱いすることもできる。まさにApple。

その他

細かいことはApple様がiBooksで配布しているマニュアルを読もう。

また、iBooksだけではなくwebでもドキュメントは公開されている。

オープンソース

Apache 2.0ライセンスでソースコードやubuntu用コンパイラなどが公開されている。swift.org

外部リンク

関連項目

  • Apple
  • Objective-C
  • プログラミング言語
  • オープンソース
  • OS X / iOS
  • Linux

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
willow8713[単語]

提供: ラレンティア

もっと見る

急上昇ワード改

最終更新:2025/12/15(月) 19:00

ほめられた記事

最終更新:2025/12/15(月) 19:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP