Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Swift
入門編

  1. Swiftとは
  2. Swift実行環境の構築について
  3. print()を使って出力してみよう
  4. コメントとコメントアウトについて
  5. 文字列とエスケープシーケンスについて
  6. 数値について
  7. 基本的な演算子の使い方とオペランドについて
  8. 真偽値と比較演算子について
  9. データ型とは
  10. 変数と定数について
  11. 変数と定数の使い方
  12. 配列とは
  13. 配列の要素の追加や削除について
  14. 配列の使い方
  15. 辞書(Dictionary)とは
  16. 辞書のプロパティの追加や削除について
  1. nilとオプショナルについて
  2. 関数とは
  3. 引数と仮引数について
  4. 内部引数名と外部引数名について
  5. 返り値(戻り値)とreturnについて
  6. タプル(tuple)について
  7. 関数のオーバーロードについて
  8. もし〜ならばというif文について
  9. 論理演算子について
  10. 処理を分岐させるswitch文について
  11. 繰り返しのfor-in文と範囲演算子について
  12. ループ処理のwhile文とrepeat-while文について
  13. 処理を抜けるbreak文とcontinue文について
  14. クラスとインスタンスについて
  15. イニシャライザ(コンストラクタ)について
  16. 関数とクラスの使い分けについて
  1. トップページ
  2. Swift入門編 - 関数とは

関数とは

みなさまどうも。

さて、続きまして『関数』(かんすう)についてやっていきましょう。まず『関数』とはなにか、というところからやっていきます。

これまで変数とか定数とかを紹介してきました。

変数とか定数とかって「データに名前をつけて呼び出したり操作したりできるようにしたもの」って感じでしたよね。配列とか辞書とかも同じような概念だったかと思います。

let love = "好きだー!!"

print(love) // いつでも呼び出せます。

print(love) // いつでも何度でも呼び出せます。

print(love) // いつでも何度でも愛を伝えることができます。自分の想いは言わなきゃ伝わりません。

『関数』の場合は「処理(演算)に名前をつけていつでも操作したり呼び出せるようにしたもの」ってイメージになります。

なんのこっちゃってお話なんですが、例えば、数値『1』を保存するとなると変数とか定数とかが使われますよね。

let n = 1 // 数値『1』を定数『n』で保存します。

じゃあ演算式『1 + 1』があったとして「この演算そのものをいつでも呼び出せるようにしたいぜぇ」というときに登場するのが『関数』です。

というわけで『関数』を定義してみます。こんな感じになりますね。

func test() {
    print(1 + 1)
}

上記のサンプルは『print(1 + 1)』という処理に『test』という名前を付けていつでも呼び出せるようにした形です。

まず文法から確認していきます。何やら文頭に『func』って記述してありますね。

これが「関数を定義するよ!」ってコンピューターに教えてあげる宣言のような感じになり、『関数』を定義する際には必ず記述する必要があります。変数とか定数を定義するときに使った『var』とか『let』とかと同じような感じですね。

『func』を記述したら半角スペースとかを置いて、その後に『関数名』を記述します。上記のサンプルの場合は『test』が該当しますね。

ちょっと注意点ですが、Swiftでの関数名のネーミングルールとして『ローワーキャメルケース』が推薦されていますので特別な理由がない限りは『ローワーキャメルケース』を使用するようにして下さい。

『ローワーキャメルケース』とは「最初が小文字で複合語の単語の最初を大文字で表記した名前」のような意味になります。

例えば「this is a pen」を『ローワーキャメルケース』で表記すると『thisIsAPen』になります。

そして『アッパーキャメルケース』というのもあって、これは「最初が大文字で複合語の単語の最初を大文字で表記した名前」って感じになります。「this is a pen」の『アッパーキャメルケース』は『ThisIsAPen』って感じです。

そんでもって『スネークケース』や『チェインケース』というものもあります。『スネークケース』は「単語の区切りを『_』で表記したもの」なので「this_is_a_pen』、『チェインケース』は「単語の区切りを『-』で表記したもの」なので「this-is-a-pen』となりますね。

ちょっと色々あって覚えづらいかもしれませんが、これらの単語はプログラム言語のコーディングルールなどでよく使用されるので覚えておいたほうが良いかもです。

Swiftで関数名として使用できる識別子は変数名とかと大体同じです。

ただ、Swiftはバージョンによって識別子のネーミングルールが変わることが多いため、あまり使われない文字や記号を識別子として使用するのは避けたほうが無難な気がします。

こちらでネーミングルールの解説をしておりますので忘れちゃった方は確認してみてください。

そして『関数名』の隣に『()』と『{}』を置きます。この『()』と『{}』の周りについては半角スペースとかを置いても置かなくてもOKです。これは好みでOKなのでお好きにどうぞ。

// これはどちらもOKです。
func test () {}

func test1(){}

そして『{}』の中に処理(演算)を書きます。今回は『print(1 + 1)』という演算を記述していますね。『print(1 + 1)』と『print("初音ミク")』を同時に実行したい、といった場合は以下のようにします。

func test() {
    print(1 + 1)
    print("初音ミク")
}

まあそのまま書くだけでOKなので特に難しくはないかと思います。

そしてちょっと注意点ですが「『{}』の中は『インデント』してあげる」というのが基本的なマナーになります。これは他のプログラム言語でも基本的なマナーになってることが多いので覚えておいて下さい。

func test() { // こういうのはあまり好まれません。
print(1 + 1)
print("初音ミク")
}

※インデントについてはこちらへどうぞ

というわけで『関数』の定義についてはこんな感じになりますね。

さて、では定義した『関数』を呼び出しして実行してみましょう。こんな感じになります。

func test() {
    print(1 + 1)
}

test() // 数値『2』が出力されます。

上記の『test()』ってところに注目です。こんな感じで『関数名()』とすることで定義した関数を呼び出して実行させることができます。『()』を付けるのを忘れないようにしてください、これが『関数』を実行させる際のトリガーのようなものになります。

さて、『関数』の定義と呼び出しについてはこんな感じになります。

ただ、今のところ『print(1 + 1)』という風に「処理が固定されている」ためあまり汎用的とは言えません。というわけで次の記事では『引数』についてやっていきましょう。ではではこの辺で。失礼致します。

この記事は桜舞が執筆致しました。

著者が愛する小型哺乳類

桜舞 春人 Sakurama Haruto

ISDN時代から様々なコンテンツを制作しているちょっと髪の毛が心配な東京在住のプログラマー。生粋のロングスリーパーで、10時間以上睡眠を取らないと基本的に体調が悪い。好きなだけ寝れる生活を送るのが夢。ゲームとスポーツと音楽が大好き。誰か髪の毛を分けて下さい。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。