【2/17】今年は「濃厚」技術トーク!@ITメールセミナー スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
Cocoaの素、Objective-Cを知ろう

一番初めのObjective-Cプログラム

竹下 肯己
株式会社 qnote

2008/10/8

iPhone用アプリケーション開発で注目を集める言語「Objective-C」。C++とは異なるC言語の拡張を目指したこの言語の基本を理解しよう(編集部)
- PR -

 第1回「Objective-Cは特殊な言語?」では、Objective-Cのコードの「見た目」の第一印象に基づいて、この言語の特徴的な部分と、その成り立ちについて解説しました。

 今回は、ごく簡単なプログラムを実際に作って動かしてみることで、より具体的な領域に踏み込んでみたいと思います。

 

 

 

 

少しだけ複雑なHello World

 こういった場面で最初に作られるのは、たいてい「Hello World」という文字列を表示するプログラムです。ここでも、最終的には文字列を表示することを目的とするシンプルなプログラムを作成しますが、そこに至る過程をほんの少しだけ複雑にして、Objective-Cの基本的なプログラム構築手順を体験できるように工夫してみましょう。

 なお、この連載ではソースファイルの作成に特別なツールを使わず、すべて通常のテキストエディタを使用しています。また、ファイル形式は必ずプレーンテキストとし、文字エンコーディングにはUTF-8を指定してください。

クラスの宣言と実装でファイルを2つ作る

 この時点で実用的なプログラムの作成は望むべくもありません。むしろ、クラス構造の作成をシンプルに体験できるように、現実世界の事象をプログラムでシミュレートするというオブジェクト指向学習の常とう手段を採用してみましょう。

 作成するプログラムは、「歌い手さんに歌を歌わせるだけ」という、音楽プロデューサの仕事を極端に単純化したものです。このプログラムは、歌を表すクラス「Song」、歌い手を表すクラス「Singer」、そして歌い手に歌を渡して歌わせるための実行プログラムの3つの要素から成り立っています。

 ソースファイルレベルでの構造は、次の図のようになります(作成するファイルは5つです)。

 前回に少し触れたとおり、Objective-Cのクラス定義は宣言と実装の2つのブロックから成り立つのですが、通常これらはそれぞれ独立したファイルとして作成します。つまり、クラスを1つ定義するたびにファイルを2つ作成することになるわけです。

 クラスの宣言部分はヘッダファイルと呼ばれ、拡張子「.h」で作成します。一方、クラスの実装部分は拡張子「.m」で作成します。なお実行プログラムの部分は通常はクラス定義を含まずmain関数が中心となるため、単一のファイル(これも拡張子は「.m」)で作成します(上記の図ではmain.mがこれに該当します)。

 クラスの実装部分を記述するファイルでは、対応するクラスの宣言部分(ヘッダファイル)を読み込む必要があります。また、あるクラスの中で別のクラスを利用する場合にも、必要なだけクラスのヘッダファイルを読み込まなければなりません。Foundationなどフレームワーク内のクラスを利用する場合も同様です。

 ヘッダファイルの読み込みを指示するには、各ファイルの先頭に「#import」で始まる文を記述します。これにより、そのファイルのコンパイルが実行される前に、必要なファイルの読み込みが行われます。このような、「#」で始まるコンパイルの前処理の指示を「プリプロセッサ命令」と呼びます。

 なお、上記の図では、Singer.hでSong.hの読み込みが指示され、さらにmain.mではSong.hとSinger.hの両方の読み込みが指示されているので、main.mにおいてSong.hが2度読み込まれているように見えますが、#importでは同一のヘッダファイルが2重に読み込まれることはありません。

 では、上記の構造を意識しながら、実際のプログラムを作成していきましょう。

 
1/3

Index
一番初めのObjective-Cプログラム
Page1
少しだけ複雑なHello World
クラスの宣言と実装でファイルを2つ作る
  Page2
クラスを宣言するヘッダファイル
クラスを実装するファイル
正しくメッセージを伝えよう
  Page3
プログラムのコンパイルと実行

Cocoaの素、Objective-Cを知ろう

 Mac OS X関連記事
プログラマーを引き付けるMac OS Xの魅力
続々移行するそのワケとは
 Mac一筋という熱狂的なユーザーだけでなく、「面白いことをしたい」と考えるエンジニアもMac OS Xを利用し始めている。いったいなぜだろう
Mac OS XでAMP構築
3通りの方法で整備できる開発環境
 Mac OS Xの上にWebアプリケーションの定番、AMP(Apache+MySQL+PHP)環境を3通りの方法で導入してみましょう
Mac OS Xで動かす軽量プログラミング言語
導入からPHP拡張モジュール組み込みまで
 Leopardでは、インストール直後からいくつかの軽量プログラミング言語が利用できます。早速試してみませんか?
Objective-Cは特殊な言語?
Cocoaの素、Objective-Cを知ろう(1)
 iPhone用アプリケーション開発で注目を集める言語「Objective-C」。C++とは異なるC言語の拡張を目指したこの言語の基本を理解しよう
Mac内にPHP4、5、6を同居させるコツ
Mac OS X+PHPでオールインワン環境(インストール編)
 PHP4の開発は終了したが、移行の問題は残されている。異なるバージョンのPHPをスムーズに切り替えるには?
  Coding Edgeフォーラムフィード  2.01.00.91

Coding Edge フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  企業の仮想化に足りない“発想”とは?
仮想化運用管理のキモは意外なところに!

New!
  操作もマニュアルも分かりやすい!
ユーザー視点で開発されたPC管理ツール

New!
  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  セキュリティを知り尽くす上野氏が登壇!
@ITメールソリューションLive! in Tokyo

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  世界に通用するストレージの作り方とは?
製品に込めた思いを富士通の開発者に聞く

  OSSで手間も時間も、障害も減った――
「マピオンの事例」オープンソース活用法

  「ノートPCの持ち出し禁止」で大丈夫?
情報漏えいを防ぐ管理手法とインフラは?

  1日の処理を1秒に――MySQLの達人が語る
「コスト削減」できるチューニング

  ドキュメント作成を自動化して、SEの作業
効率を大幅アップ! Visio 2007の魅力

  急速に広がるHyper-Vでのサーバ仮想化
そのベストプラクティスをデルが解説

  @IT主催セミナーで語られた、「担当者に
求められるセキュリティ対策」をレポート

  @IT「Windows 7」 特設サイトオープン!
最新情報・移行ノウハウを公開しています