iOSアプリを作るなら最低限覚えておきたい「オブジェクト指向」の基礎知識:初心者のためのSwiftで始めるプログラミング入門(7)(4/4 ページ)
本連載では、これからプログラミングやiPhoneアプリ開発を始めてみたい方を対象に、開発に必要な知識を基礎から解説していきます。今回は、オブジェクト指向、クラス、プロパティ、メソッド、イニシャライザーの概要と、使い方などについて解説する。
イニシャライザーの引数
イニシャライザーには引数を付けることができます。イニシャライザーに引数を付けることで、インスタンスの生成時に値を渡し、その値を元にインスタンスを組み立てることができます。
イニシャライザーの引数をよく使うケースがプロパティの初期値の設定です。プロパティの説明で、プロパティを定義するときに値を入れなければいけないと解説しました。しかし、イニシャライザーの中でプロパティに値を代入している場合は、プロパティの定義時に値を代入している必要はありません。つまり、イニシャライザーをプロパティの初期設定に使えるというわけです。
「ボタン」のイニシャライザーに、引数を追加してみましょう。次のプログラムを書いてみてください。
class ボタン { let ラベル: String init(ラベルの文字: String) { ラベル = ラベルの文字 } }
このクラスでは「ラベル」というプロパティ、それから「ラベルの文字」という引数付きのイニシャライザーを定義しています。「ラベル」には値が代入されていませんが、イニシャライザーの中で代入されているため、インスタンス生成後には必ず値が入るようになっています。そのため、プロパティの定義時には値の代入が不要になっています。なお、この場合はプロパティが何の型であるか分かるように、型を指定する必要があります。
このクラスのインスタンスを生成してみましょう。次のプログラムを書いてみてください。
let キャンセルボタン = ボタン(ラベルの文字: "キャンセル") print(キャンセルボタン.ラベル)
インスタンスを生成するときにはクラス名の後に「()」を書きますが、この中にはイニシャライザーの引数が入ります。「()」の中には「引数名: 値」の形式で、引数に入れる値を書きます。「ボタン」クラスのイニシャライザーの引数の型はString型にしているので、「キャンセル」というString型の値を入れています。
こうして生成されたインスタンスは、イニシャライザーの引数として渡した「キャンセル」という値が「ラベル」プロパティに代入されます。
複数のイニシャライザー
引数の数や型が異なっていれば、複数のイニシャライザーを定義できます。「複数のイニシャライザーを定義する」とは、つまり「インスタンスを生成する方法を複数パターン用意する」ということです。
複数のイニシャライザーを定義するには、1つのクラスの中で同じ引数の指定になっているイニシャライザーが存在していないか注意しながら定義します。次のような形式で定義します。
class クラスの名前 { // 引数なしのイニシャライザー init() { } // 引数ありのイニシャライザー(1つの場合) init(引数: 引数の型) { } // 引数ありのイニシャライザー(2つの場合) init(引数A: 引数Aの型, 引数B: 引数Bの型) { } }
先ほどイニシャライザーを追加した「ボタン」クラスは、インスタンス化するときに必ず「ラベル」の値を指定しなければなりませんでした。このクラスに引数なしのイニシャライザーを加えて、使いやすくしてみましょう。次のプログラムを書いてみてください。
class ボタン { let ラベル: String init() { ラベル = "OK" } init(ラベルの文字: String) { ラベル = ラベルの文字 } }
引数なしのイニシャライザーを新たに追加しました。引数なしのイニシャライザーの中では、「ラベル」に「OK」という文字を代入する処理が書かれています。つまり、引数なしのイニシャライザーが呼ばれる場合は「ラベル」に「OK」という値が代入されるようになります。
複数のイニシャライザーが定義されているクラスからインスタンスを生成する場合は、どのイニシャライザーを使ってインスタンスを生成するか指定する必要があります。インスタンスを生成するときのプログラム「クラス名()」の「()」に入れる引数によって、該当する引数を定義しているイニシャライザーが使われます。
それでは、先ほど定義した2つのイニシャライザーを使い分けてみましょう。次のプログラムを書いてみてください。
// 引数なしのイニシャライザーを使用 let OKボタン = ボタン() print(OKボタン.ラベル) // 引数ありのイニシャライザーを使用 let キャンセルボタン = ボタン(ラベルの文字: "キャンセル") print(キャンセルボタン.ラベル)
このプログラムでは、2つのイニシャライザーが定義された「ボタン」クラスのインスタンスを、各イニシャライザーを使って生成しています。
コラム「プログラムをサクサク書ける『コード補完』機能」
Playgroundを使ってプログラミングを実践している方はすでにお気付きかと思いますが、プログラムをある程度書いているとプログラムの候補が表示されます。このプログラムの候補のことを「コード補完」と言います。もしくは「自動補完」「オートコンプリート」などとも言います。
コード補完は、iPhoneでメールやメッセージを入力するときに表示される「予測変換」によく似た機能です。実際に入力されている内容を元に、入力しようとしているプログラムを推測し、候補として表示してくれます。プログラムの候補は、標準搭載されている機能や、そこまでに記述されてきたプログラムから導き出されます。
プログラムを入力中に、コード補完の中に自分が入力しようとしている文字を見つけたら、「カーソル」キー(矢印)で選び、「エンター」キーを押しましょう。すると、そのプログラムが一気に入力されます。プログラムを一文字一文字書く手間が省けるので、効率的にプログラミングを進めることができます。
次回からは、実際にiPhoneアプリを作る
今回は、実際のiOSアプリ開発により近いレベルの機能を解説しました。
クラスの機能は今回紹介したもの以外にもたくさん備わっていますが、本連載ではiOSアプリ開発のスタートラインに立てることを目標としていることもあり、より深い機能については紹介しきれていません。ご興味のある方は、下記など他の記事も参考にしながら、理解を深めていただきたいと思います。
- OptionalなどSwiftとObjective-Cの違いを意識してPhotos Frameworkを使う
- Swiftのカスタムクラスの作り方――プロトコル、サブクラス、イニシャライザー、タイププロパティメソッドのオーバーライド、デリゲートについて注釈の作成で学ぶ
- iOS 8アプリ開発のこれまで&Swift 1.2への対応、プロパティオブザーバーとwillSetの基本的な使い方、セグエを使った画面遷移
これまで学習した内容を基に、次回からは、実際にiPhoneアプリを作り始めます。次回をお楽しみに!
- 動く絵本のiPhoneアプリ作成で学ぶSwift文法総まとめ
- 初めてiPhoneアプリをデザインするには、どうすればいい?――すぐ分かるInterface Builder、Storyboard、Auto Layoutの使い方
- 初心者でも絶対に始められるiPhoneアプリの作り方&Xcode・シミュレーターの使い方
- iOSアプリを作るなら最低限覚えておきたい「オブジェクト指向」の基礎知識
- プログラマーの腕の見せどころ――Swiftの関数、引数、戻り値の基本的な書き方と使い方
- Swiftで値の集まりを使いこなそう――配列(Array)、辞書(Dictionary)の作り方、使い方
- Swift 2.0とオープンソース化が発表されたSwiftの制御構文――比較演算子、条件分岐(if、else、switch)、繰り返し(for、while)&Playgroundのグラフで確認
- Apple WatchやiPhoneのアプリを作ろう! Playgroundで学ぶSwiftの基礎―変数、定数、型、演算
- スマホ世代でも分かるMacの基本的な使い方&Xcodeをインストールする手順
- アプリは、どうやって動くの? プログラムって何?――初めてiPhoneアプリを作る人向け基礎知識まとめ
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 初心者でもiOS 9/tvOS向け2Dゲームが作れる標準フレームワークSpriteKitの基礎知識とチュートリアル
iPhoneゲームをSwift言語で作成してみたいという初心者向けにiOSのゲームフレームワークを使った作り方を一から解説する入門連載。初回は、SpriteKitの概要とサンプルゲームの動かし方、主要なクラスやメソッドなどを紹介する。GameplayKitなど他のゲームフレームワークの概要も。 - iOS 8のPhotoKitの概要&Xcode 6.1/Storyboard/Auto Layout/iOSシミュレーターの基本的な使い方
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。今回は、iOS 8のPhotoKitの概要とXcode 6.1の画面構成、新規プロジェクトの作り方、StoryboardとAuto Layoutによる画面作成方法、iOSシミュレーターの使い方などを解説する。 - 開発者向けiOS 9、WatchOS 2、Swift 2、Xcode 7の新機能と新しいApple Developer Programの参考情報まとめ
iOS 9、WatchOS 2、Swift 2、Xcode 7の新機能や、Apple Developer Programについて、その概要とアップルが公開している参考情報をまとめて紹介します。 - iOSアプリ開発でObjective-CからSwiftに移行するための手順、注意点まとめ〜言語仕様の違いは? 連携時の呼び出し方は?
開発生産性や品質を向上させたいiOSアプリ開発者のためにObjective-CからSwiftへ移行するメリットや手順、注意点など勘所をまとめて紹介します。 - アップル、新プログラミング言語「Swift」「iOS 8 SDK」「Xcode 6」のベータ版を発表
米アップルが新しいプログラミング言語「Swift」と開発ツール「iOS 8 SDK」「Xcode 6」のベータ版を発表。その特徴と注目ポイントを紹介。 - 外から見るWWDC 2014キーノート――Swiftに感じるAppleの本気
WWDC常連のドリキンが今年もキーノートを斬ります! 今回はメディアとエンジニアとで、反応が真っ二つに分かれる内容となりました。その理由をエンジニア視点で解き明かしていきたいと思います。 - Excelでプログラム作成を始めるメリットとマクロの基本
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。初回は、そもそもプログラミングとは何か、Visual BasicとVBAとマクロの違い、マクロの作り方、保存/削除、セキュリティ設定などについて【Windows 10、Excel 2016に対応】。