初心者にも分かりやすくObjective-C(オブジェクティブ・シー)の特徴と書き方を解説!

この記事のランク
読む時間3分
重要度

Objective-C(オブジェクティブ・シー)は、1983年に「C言語」と「オブジェクト指向」を組み合わせて作られたiOSアプリケーションの開発に使われるプログラミング言語です。

Objective-CはNeXT Computer社のNeXTSTEPというOSの開発言語に採用されたことで注目されはじめ、1997年にApple社がNeXT社を買収したことで、MacOSの開発言語となりました。

2014年には、SwiftというObjective-Cの後継となるプログラミング言語がリリースされましたが、Objective-Cで開発されたシステムを全てSwift作り替えるのには多くの時間がかかるため、当面はObjective-Cの需要はなくならないでしょう。

ななころ

Twitter(@nana_korobi04)でも情報発信していますので、
フォローいただけると嬉しいです!

目次

Objective-Cの特徴

まずObjective-Cの特徴を下記の3点で解説していきます。

ノウハウや実例が多い

Objective-Cは歴史が長いため、後継のSwiftに比べてインターネットや書籍でも多くの情報が出回っており、技術者も多いため学びやすいプログラミング言語でもあります。

特にC言語を扱っている技術者であれば、C言語をベースに開発されているObjective-Cの学習はスムーズに進めることができるでしょう。

コーディングルールが独特

Objective-CはNeXTStepというOSで利用されていたため、変数名やクラス名が「NS」から始まります。

  • NSString … 文字列を扱うクラス
  • NSDate … 日付や時間を扱うクラス

また、下記のように文字列の前に@(アットマーク)を記述することで、@july9winter

@マークをつける場合
  • NSString *string = @”Hello”;
@マークをつけない場合
  • NSString *string = [NSString stringWithFormat: @”Hello”, 0];

さらにメソッドと呼ばれる処理を記述する機能をコーディングする際も、頭に−(マイナス)を付けるというルールがあります。

これはインスタンスメソッドと呼ばれクラスという設計図から実態を作るための記述方法です。

頭に+(プラス)がついた場合はクラスメソッドと呼ばれ、クラスを直接呼び出すための記述となります。

Swiftと併用して使える

Objective-Cは後継言語のSwiftのプログラムやソースコードを呼び出すことができます。

例) Swiftを呼び出す場合
  • #import “ProductName-Swift.h”

また、逆にSwiftからObjective-Cのソースコードを呼び出すこともできるため、Objective-Cで支えきれない部分をSwiftで開発するといった併用も可能です。

Objective-cのソースの書き方

Objective-Cの解説書はC言語の習得を前提としたものが多いですが、ここでは全くプログラミング言語をやったことがない初学者が理解できるように、ソースの書き方を解説します。

なお、Objective-Cの開発環境は「Xcode」というiOS限定で動く開発ツールが一般的ですが、Windowsユーザーの場合は下記のサイトより「GNUstep MSYS System」「GNUstep Core」をインストールしてください。

あわせて読みたい

インストール後に、スタートメニューからGNUstep(グニューステップ)→shellを実行すると対話方のコンソール画面が起動しますので、そこからObjective-Cのソースファイルを作ったり、コンパイルができます。

コンソールに文字を出力する

以下は、NSLogというクラスを使って、コンソールに「Hello」の文字を表示するサンプルコードです。

#import <Foundation/Foundation.h>

int main() {
    @autoreleasepool {
        NSLog(@"Hello");
    }
    return 0;
}

1行目の「Foundation/Foundation.h」は、ヘッダーファイルを「#import」という機能で取得しています。

ヘッダーファイルは末尾に「.h」がついており、サンプルコードでは「Foundation」というフレームワークの「Foundation.h」というヘッダーファイルを取得しています。

フレームワークとはプログラム開発に必要となる汎用的な機能を予め用意した機能群で、Foundationは基本的なフレームワークです。

2行目の「int main()」はmain関数と呼ばれ、Objective-Cのプログラムを実行するときに一番最初に実行される関数です。

関数とはデータを受け取って、予め定義された処理の結果を返すための機能で、受け取るデータをプログラミングの世界では引数(ひきすう)や、パラメータと呼ばれます。

4行目の「@autoreleasepool」は、オートリリースプールといって、処理が終わったら意図的にメモリをクリアすることで、メモリの消費を抑えることができます。

件数の多い繰り返し処理などメモリが溢れてしまう恐れのある場合に利用します。

5行目の「NSLog()」というクラスで、コンソールに「Hello」という文字列を出力しています。

前述した通り、文字列の前には@マークをつけてNSString型のデータとして判断できるようにしています。

7行目の「return 0;」では、戻り値を設定しており、この場合は無条件に0(正常終了)を戻していますが、エラーの場合は0以外(異常終了)にするなど、処理の目的に応じて使い分けます。

処理を分岐させる

他のプログラミング言語でもif文と呼ばれる処理はObjective-Cでも同様に利用できますが、三項演算子を使うとよりシンプルなソースになります。

一般的なif文の場合

if(式1){ 式2} else { 式3} …式1が真の時に式2を、偽の時に式3を返す

例)

if(errCheck){
    resultText = @"正常終了";
}else{
    resultText = @"異常終了";
}

三項演算子の場合

式1 ? 式2 : 式3 … 式1が真の時に式2を、偽の時に式3を返す

例)

resultText = errCheck ? @"正常終了" : @"異常終了";

いずれの処理も、errCheck変数が”0”以外の場合に、”真”と判断して「正常終了」の文字をresultText変数にセットし、errCheck変数が”0”の場合には、”偽”と判断して「異常終了」の文字をresultText変数にセットしています。

また、さらに可読性を重視する場合は、swich文という記述方法でも同じことが可能です。

swich (式1){
case 条件1: … 式1が条件1の時に式2を処理
式2;
break;
case 条件2: … 式1が条件2の時に式3を処理
式3;
break;
default: … 式1がどの条件にも該当しない時に式4を処理
式4;
break;
}

例)
switch (errCheck) {
    case 0:
        NSLog(@"異常終了");
        break;
    case 1:
        NSLog(@"正常終了");
        break;
    default:
        NSLog(@"それ以外");
        break;
}

swichの引数となっている「errCheck」変数の中身が”0”であれば「case 1」の条件に該当するため、コンソールに「異常終了」の文字を出力。

「errCheck」変数の中身が”1”であれば「case 2」の条件に該当するため、コンソールに「正常終了」の文字を出力。

「errCheck」変数の中身が”0”でも”1”でもなければ、「default」の条件に該当するため、コンソールに「それ以外」の文字を出力します。

このように、ソースコードをシンプルに見やすく意識することもプログラミングを行ううえでは大切です。

まとめ

Objective-CはApple創設者のスティーブ・ジョブスが立ち上げたNeXT社で開発され、その後、NeXT社がAppleに買収されたことで、NeXTSTEPを元にMacOSが誕生しました。

そして、Objective-Cが誕生してから約20年後にMacアプリの開発として開発者に使われることになり注目されるようになりました。

独特なコーディングルールが印象に残るプログラミング言語ですが、そんな歴史的な背景も思い出しながらObjective-Cを学んで頂ければ幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次