Objective-C Foundation,GNUStepインストール 【初級編 第11回】
Objective-C Foundation,GNUStepインストール 【初級編 第11回】
ここまでLinuxで基本的なコードの練習をするための環境構築を行い、
コードを少しずつ増やしてObjective-Cにおけるクラスのつくりなどの基本的な部分を説明してきました。
現状でObjective-Cを使用するケースといえばIPhoneやMAC用のアプリケーションとなるのではないでしょうか。
そこで少しIPhoneのコードに目を通してみると継承しているオブジェクトが違っています。
以下はMacの開発ツールであるxcodeの画面です。
Object.hではなくNSObject.hを読み込んでいます。また#importで「Foundation.h」というのを読み込んでいますね。
MACやIPhoneの開発では言語としてObjective-Cを使いますが、それ以外にもIPhoneのアプリケーションを作成するのに
使われるクラスやライブラリを再利用できるようにあつめたフレームワークというものを使用します。
例えばIphoneの画面にウィンドウを出す場合、OSのウィンドウを出すということはそのOSにあった処理が必要なため、
それぞれのOS用の変数や関数などが必要となります。
WindowsならWindows用のAPIが必要ですし、MACならMAC用のAPIが必要です。
そのためAPIを集めたOS用のフレームワークというものが提供されており、
Windowsなら.NETFramework、Mac OS版はCocoa、Iphone版がCocoa Touchというものになっています。
Cocoa Touchではファイルの処理やネットワーク、文字列操作などの機能を含んでいるFoundationフレームワークと
Audioなどの機能を含んだCore Audioなどが提供されています。
MACがあればそのままxcodeを使用すればよいのですが、ひとまず学習用にLinuxでFoundationを使うための環境設定を
しようと思います。といっても完全にMACやIPhoneのコードが動くわけではありませんが。
まずFoundationを使用するためにGNUstepをインストールします。GNUstepというのはCocoaの機能を提供するもので、完全に網羅できているわけではありませんが、Objective-Cの基本を学習する上では問題ないと思われます。
STEP1
その1でgcc-objcはyumを利用してインストールしましたが、CentOSではないようなので下記のサイトからダウンロードしてきます。
GNUstep download
今回は「gnustep-startup-0.28.0.tar.gz」をダウンロードします。
STEP2
展開します。
#tar xzf gnustep-startup-0.28.0.tar.gz
STEP3
このままインストールしようとすると「make」の時点でライブラリがありませんというエラーが以下のようにでます。
GNUstepには「tiff」(グラフィック用ですね)などのライブラリが必要となります。
そこで必要なライブラリをインストールしておきます。
#yum install libpng libpng-devel libtiff libtiff-devel libobjc libxml2 libxml2-devel libX11-devel libXt-devel libjpeg libjpeg-devel
STEP4
必要ライブラリをインストール後、先ほど展開してできたディレクトリに移動し「configure」スクリプトを実行します。
#cd gnustep-startup-0.28.0.tar.gz
#./configure
STEP5
コンパイルします。何かキーを押してくださいと出るので指示に従います。
#make
STEP6
インストールします。
#make install
インストールが終了すると以下のような画面が表示されます。
STEP7
上記のスクリーンショットを見てもらうとわかるようにセットアップのために「GNUstep.sh」を実行します。
#. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
これで完了ですので、実際に確認してみましょう。
以前作成した「Person.h」のところで「Foundation.h」を読み込んでみます。2行目のところですね。
#import <objc/Object.h> #import <Foundation/Foundation.h> @interface Person:Object { //属性を表す // @public @private double height; double weight; } //アクセサ -(double)height; -(void)setHeight:(double)personHeight; -(double)weight; -(void)setWeight:(double)personWeight; -(id)initWithWeight:(double)personWeigth height:(double)personHeight; @end
はい、うまくいきませんでした。
新しくいれたヘッダーなどが見つからないということです。
コードをコンパイルする際にオプションをつけることで解決します。
#gcc `gnustep-config –objc-flags` -L/usr/GNUstep/System/Library/Libraries -lgnustep-base Person.m Bmi.m main.m -o test
「-L」でライブラリを見つけるためのディレクトリを指定します。「-l」でライブラリを指定します。
gnustep-configは環境にあったコンパイルフラグを表示してくれるものです。試しに使用すると以下のようになりました。
これでコンパイルできると思います。
今回のまとめとしては
- IPhoneやMACではCocoaというフレームワークを使用している
- ・文字列処理などの機能を提供しているのはFoundationフレームワークであり、Linuxで利用するにはGNUstepをインストールする
といったところでしょうか。
TechProjin 開発系基礎講座 連載リンク
基礎からPHPWEBアプリ解発を学ぶなら・・
PHP基礎 連載
AIなどで注目急上昇!これから学ぶならPython!!
独学で学ぶ-pythonプログラミング 連載
汎用性◎ 定番プログラミング言語JAVA
Java基礎講座 連載