Swiftで値の集まりを使いこなそう――配列(Array)、辞書(Dictionary)の作り方、使い方:初心者のためのSwiftで始めるプログラミング入門(5)(2/2 ページ)
本連載では、これからプログラミングやiPhoneアプリ開発を始めてみたい方を対象に、開発に必要な知識を基礎から解説していきます。今回は、配列と辞書の作り方や、それぞれの値の参照、更新、追加、削除など、使い方について。
辞書とは
辞書は、複数の値に名前を付けて管理する集まりです。プログラム上では「Dictionary(ディクショナリ)」と呼びます。
値の出し入れは、その名の通り辞書を引くように行います。キーワードを元に値を取り出したり、入れたりすることができます。
なお、このようなキーワードのことを、プログラミングの世界では「キー」と呼びます。
辞書を作る
辞書を作成してみましょう。次のプログラムを書いてみてください。
let 価格表 = ["帽子":1000, "ベルト":500, "指輪":2000]
このプログラムでは「価格表」という定数を宣言し、その定数に辞書を代入しています。辞書を作るには、「[」と「]」の間にキーと値のペアを「,」で区切って書いていきます。キーと値のペアは「キー:値」といったように「:」でつなげます。よって、このプログラムでは「帽子」が「1000」、「ベルト」が「500」、「指輪」が「2000」という3つのペアを1つの辞書にまとめています。
キーの型、値の型は全てのペアで同じでなければいけません。上記のプログラムでは、キーがString型、値がInt型にしています。よって、この辞書は「キーがString型で値がInt型の辞書」となっています。ここでも配列と同様に型推論が働いているため、型の指定が不要になっています。
辞書に入っている値を取り出す
次に、辞書に入っている値を取り出してみましょう。次のプログラムを書いてみてください。
let 価格 = 価格表["帽子"] println("こちらの商品は\(価格)円です")
配列に入っている値を取り出す方法では番号を指定していましたが、辞書ではキーを指定します。「["帽子"]」としているので「価格表」に入っている「"帽子:1000"」のペアが該当します。よって「1000」が取り出されます。
結果を確認してみると、「価格」が「Optional(1000)」となっています。さて、これはどういうことでしょう?
辞書から値を取り出すとき、指定したキーに該当するペアが辞書の中に入っておらず、値が取り出せない可能性があります。そのような「値がないかもしれない」場合を配慮して、辞書から値を取り出すときは「オプショナル(Optional)」という機能が働きます。そのため「価格」の結果は「Optional(1000)」となっています。
オプショナルが一体どういうものなのか、もう少し後の回で解説する予定です。ここでは「値がない可能性が配慮されているんだな」と思ってもらう程度で十分です。
辞書に入っている値を1つずつ取り出す
辞書でも、for文を使った値の取り出しが行えます。しかし、配列とは違い順番通りにきれいに並んではいません。
次のプログラムを書いてみましょう。
for (商品, 価格) in 価格表 { println("\(商品)は\(価格)円です") }
for文に辞書を使うには、「for」の後に取り出したキーと値に付ける変数名、「in」の後に配列の定数名(または変数名)を書きます。キーと値の変数名は「(キー, 値)」といったように「(」と「)」で囲い、間に「,」を入れます。
このプログラムでは「価格表」に入っているペアを1組ずつ取り出しつつ、「{」と「}」の間に書かれている処理を繰り返し実行します。繰り返すごとにペアが1組ずつ取り出され、キーワードが「商品」に、値が「価格」に入ってきます。
for文で繰り返し処理した結果を確認してみましょう。辞書に入っている値は3つなので3回繰り返され、毎回「商品」と「価格」の値が変わっていることが確認できます。
辞書に入っている値を入れ替える、追加する
配列と同様、辞書を変数として宣言している場合に限り、辞書に入っている値を入れ替えたり、追加したり、削除したりすることができます。
それぞれ、順番にプログラムを書いてみましょう。まずは辞書に入っている値を入れ替えてみましょう。
var 売上表 = ["スニーカー":10, "サンダル":4, "ブーツ":1] 売上表["スニーカー"] = 11 println("今日の売り上げは\(売上表)")
辞書に入っている値を取り出すときと同じように、辞書の変数名の後に続けて、入れ替える対象を「["スニーカー"]」といったように書きます。その後に続けて新しく入れる値を「=」でつなげます。
上記のプログラムでは、一行目で「売上表」に3つのペアを入れています。次の二行目で「スニーカー」を指定しているので、「スニーカー」とペアの値が「11」に入れ替えられています。よって、「買い物カゴ」の中身は「"スニーカー:11"」と「"サンダル:4"」と「"ブーツ:1"」になります。
なお、キーの型や値の型が異なる場合はエラーになるので注意するようにしましょう。
配列とは異なり、辞書では新しいキーを指定することでペアを追加できます。次のプログラムを書いてみましょう。
売上表["長ぐつ"] = 1 println("今日の売り上げは\(売上表)")
このプログラムでは「"長ぐつ"」の値を変更しようとしています。「"長ぐつ"」はもともと「売上表」には入っていないので、新しいペアとして「"長ぐつ":1」が追加されます。
なお、辞書を定数で宣言している場合は値を入れ替えることができない点に注意してください。辞書に入っている値を後から入れ替えたい場合は必ず変数で宣言するようにしましょう。
辞書に入っている値を削除するremoveValueForKey
辞書に入っている値を削除するには、「removeValueForKey」という機能を使います。この機能を使うと、指定したキーに該当するペアを削除できます。
先ほど、「売上表」の中身を4つに増やしました。今度はその中からペアを1つだけ減らしてみましょう。次のプログラムを書いてみてください。
売上表.removeValueForKey("ブーツ") println("今日の売り上げは\(売上表)")
「removeValueForKey」には「"ブーツ"」を指定しているので、該当するペア「"ブーツ:1"」が削除されます。結果、「売上表」の中身は3つになりました。
空の辞書を作る
辞書でも配列と同様に、中身が空の状態で作成することもできます。空の辞書を作成するには次のように書きます。
var ノート: [Int: String] = [:]
このプログラムでは、「Int型のキー、String型の値を入れるための辞書」として「[Int: String]」を指定しています。このように、辞書に型を指定する場合は「[キーの型名: 値の型名]」と書きます。空の辞書は「[:]」と書きます。つまり、このプログラムでは「中身が空のInt型のキー、String型の値を入れるための辞書」を作っています。
こうして作成した空の辞書には、後からペアを追加できます。
次回は「関数」について
今回は配列や辞書といった「集まり」の作り方、使い方について解説しました。
アプリ開発では数え切れないほど多くの値を取り扱います。そのような値がそのままバラバラに散らばっていたとしたら、必要な値を見つけることが困難になってしまったり、一括で処理させるのが大変になってしまったりしてしまいます。
そういったときに配列や辞書が活躍します。複数の値をまとめて「集まり」とすることで、簡単に、分かりやすく、効率的に管理できます。部屋の掃除と同じように、プログラムにも整理が必要ということですね。
次回は「関数」について解説する予定です。お楽しみに!
- 動く絵本の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.
関連記事
- アップル、新プログラミング言語「Swift」「iOS 8 SDK」「Xcode 6」のベータ版を発表
米アップルが新しいプログラミング言語「Swift」と開発ツール「iOS 8 SDK」「Xcode 6」のベータ版を発表。その特徴と注目ポイントを紹介。 - iOS 8 SDK、Xcode 6、Swift 1.0がGMに。Apple Pay機能の組み込み、TestFlight Beta Testingも利用可能
米アップルが2014年9月9日に発表した内容の中から、iOS 8 SDK、Xcode 6、Apple Watch、Swift 1.0などに関する開発者向けの情報をまとめてみる。 - Swiftでの変数の定義、Xcodeでのアウトレット接続、iOSシミュレーターへの画像素材追加
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。今回は、Xcodeでアウトレットを接続する方法、Swiftでの変数定義の仕方、iOSシミュレーターへ画像素材を追加する方法などを解説します。 - OptionalなどSwiftとObjective-Cの違いを意識してPhotos Frameworkを使う
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。今回は、前回の記事で追加した写真の情報を「Photos Framework」の機能を使用して取り出し、写真の情報にひも付いた座標にピンを表示します。また、その過程でOptionalなどSwiftとObjective-Cの違いについて解説します。 - Swiftのカスタムクラスの作り方――プロトコル、サブクラス、イニシャライザー、タイププロパティメソッドのオーバーライド、デリゲートについて注釈の作成で学ぶ
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。今回は、前回の記事で追加した地図上の「注釈」を写真のサムネイルに差し替える課程でSwiftのカスタムクラスの作成手順について解説します。 - iOS 8アプリ開発のこれまで&Swift 1.2への対応、プロパティオブザーバーとwillSetの基本的な使い方、セグエを使った画面遷移
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。最終回は、これまでの連載を振り返り、これまで作成したPhotoKitを使ったサンプルアプリの仕上げとしてセグエを使った画面遷移を実装の仕方や、プロパティオブザーバーとwillSetの基本的な使い方を解説する。 - 外から見るWWDC 2014キーノート――Swiftに感じるAppleの本気
WWDC常連のドリキンが今年もキーノートを斬ります! 今回はメディアとエンジニアとで、反応が真っ二つに分かれる内容となりました。その理由をエンジニア視点で解き明かしていきたいと思います。 - Excelでプログラム作成を始めるメリットとマクロの基本
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。初回は、そもそもプログラミングとは何か、Visual BasicとVBAとマクロの違い、マクロの作り方、保存/削除、セキュリティ設定などについて【Windows 10、Excel 2016に対応】。