SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Objective-CユーザーのためのSwift入門

にゃんこなサンプルコードで学ぶSwiftのクラスとメソッド

Objective-CユーザーのためのSwift入門 第3回

  • このエントリーをはてなブックマークに追加

 本連載では、Objective-Cの基本的なプログラムが出来る読者を対象に、Swiftを使ってアプリを開発する際の基本的な事柄を解説します。Objective-CもSwiftもC言語を母体としたプログラム言語なので両者に共通する概念は非常に多いです。Objective-CとSwiftとの最低限度の違いを踏まえつつ、Swiftでのアプリ開発にシフトして行けるような内容をサンプルを交えながら解説します。今回は、Swiftでのクラスやメソッドの作り方/使い方について説明します。

  • このエントリーをはてなブックマークに追加

はじめに

 前回までは、Swiftの文法や演算子について説明しました。連載第3回は、Swiftでのクラスやメソッドの作り方/使い方について説明します。

 対象読者をObjective-Cが分かる方としている関係上、Objective-C自体の言語仕様やXcodeの使い方については解説を割愛する場合があることをご了承ください。同様にSwift自体の説明も必ずしも十分でない場合があります。そのような場合は末尾の参考文献等を参照してください。

対象読者

 本記事は、次の方を対象にしています。

  • Objective-Cの基本的なプログラムが出来る方
  • Xcodeを使える方

クラス

 Swiftのプログラムは、Objective-Cと同様にクラスという単位で構成されます。クラスの中で、オブジェクトの属性を保持するインスタンス変数と処理を定義するメソッドを定義します。

クラスの扱い

 Objective-Cでは、クラスを定義する際に、ヘッダファイル/実装ファイルの2つのファイルが必要でした。Swiftでは、1ファイルでクラスを定義できるようになりました。2つのクラスを比較すると次のようになります。

リスト1 Objective-Cヘッダファイルの例(Cat.h抜粋)
@interface Cat : NSObject
{
    // インスタンス変数を定義
    NSString *catName;
    int catAge;
}
// プロパティを定義
@property(weak) NSString *name;
@property(assign) int age;

@end
リスト2 Objective-C実装ファイルの例(Cat.m抜粋)
#import "Cat.h"
@implementation Cat
@synthesize name=catName, age = catAge;

-(id)init {
	if ([super init]) {
  }
  return self;
}

@end

 同じ内容をSwiftで表したコードは、以下のとおりです。

リスト3 Swiftでのクラス定義の例(Cat.swift抜粋)
// Catクラスを定義
class Cat : NSObject
{
    // プロパティ
    var Name:String    // 名前
    var Age:Int        // 年齢

    // 初期化処理
    init(name:String, age:Int)
    {
        Name = name
        Age = age
    }
    ...中略...
}

 Objective-Cでは、ヘッダファイル内にインスタンス変数にアクセスするプロパティを記述していたのに対し、Swiftでは、ヘッダファイルという概念がないのでインスタンス変数をプロパティとして扱えます。メソッドに関しても同様に、ヘッダファイルで宣言のみを行うこともありません。Swiftでは、クラスの扱いが非常に簡略化されています。

クラスの定義

 クラスはclassで定義します。クラス名を「class」のあとに表し、中括弧内にプロパティやメソッドを定義します。クラスの書式は次の通りです。

書式1 クラスの定義
[修飾子] class クラス名 [:スーパークラスやプロトコル]
{
    [プロパティ変数の定義]

    // 初期化処理の定義
    init( [引数] )
    {
        // 初期化処理の内容
    }
}

 修飾子には次のものがあります。

Swiftクラスの修飾子
名前 概要
public どこからでもアクセス可能、既定
private クラスが定義されているソースコード内のみアクセス可能
internal フレームワーク/モジュール内でアクセス可能

 上記の通り、Swiftでのクラスの定義はJavaやPHPに似ています。Objective-Cのような独特の表現がないため、非常にすっきりとしています。

 初期化処理はinitメソッド内で行います。メソッドについては、次項で説明します。

 具体的なクラスの例を次に挙げます。名前(Name)と年齢(Age)をプロパティに持つCatクラスは、次のように定義できます。継承するクラスや実装するプロトコルはクラス名の後ろに「:」をつけて名前を記述します。

リスト4 クラスの定義の例(Cat.swift抜粋)
// Catクラスを定義
class Cat : NSObject
{
    // プロパティ
    var Name:String    // 名前
    var Age:Int            // 年齢
    var Territory:String // 縄張り
    var Favorite:String // 好物

    // 初期化処理
    // 名前と年齢を引数で渡してセット
    init(name:String, age:Int)
    {
        Name = name
        Age = age
    }
...中略...
}

 プロパティに関しては、利用する変数を記述するのみで定義できます。その際にvar/letで変数/定数としての定義が可能です。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
メソッド

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Objective-CユーザーのためのSwift入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 片渕 彼富(カタフチ カノトミ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8361 2015/01/15 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング