このリポジトリは、Objective-C を段階的に学び、実践的なスキルを身につけるためのハンズオンガイドです。usecase-000
から usecase-020
までの 21 のサンプルを通じて、基本構文からオブジェクト指向、ファイル操作までをカバーします。
handson-objective-c/
├── scripts/
│ └── gen-000-020.sh # usecase-000 から usecase-020 を生成するスクリプト
├── showroom/
│ ├── usecase-000/ # Hello World
│ ├── usecase-001/ # 変数と演算
│ └── ... (usecase-002 から usecase-020 まで)
├── .gitignore # 不要なファイルを除外
└── README.md # このファイル
Mac 上で動作します。以下の手順で環境を準備してください。
- macOS: Objective-C の実行に必要(Foundation フレームワークを使用)。
- clang: コンパイラ(Xcode または Command Line Tools で提供)。
- Git: リポジトリのクローン用。
- Command Line Tools のインストール
xcode-select --install
- リポジトリのクローン
git clone <リポジトリURL> cd handson-objective-c
- usecase の生成
chmod +x scripts/gen-000-020.sh ./scripts/gen-000-020.sh
各 usecase
は独立して動作し、以下の手順で実行できます。
- ディレクトリに移動
cd showroom/usecase-XXX # XXX は 000 から 020
- コンパイル
clang -fobjc-arc -framework Foundation Main.m -o main
- 実行
./main
例: usecase-000
の場合
cd showroom/usecase-000
clang -fobjc-arc -framework Foundation Main.m -o main
./main
# 出力: Hello, World! - Starting the Objective-C journey
以下に、各 usecase
の内容と学習ポイントを説明します。
- usecase-000: 基本 - Hello World
- 内容: シンプルな "Hello, World!" 表示。
- 学習ポイント: Objective-C の基本構造と
printf
の使用。
- usecase-001: 変数と基本演算
- 内容: 整数変数の定義と加算。
- 学習ポイント: 変数の宣言と基本的な算術演算。
- usecase-002: 条件分岐
- 内容: 偶数/奇数の判定。
- 学習ポイント:
if-else
文の使用。
- usecase-003: ループ
- 内容: 1 から 5 までのカウント。
- 学習ポイント:
for
ループの基本。
- usecase-004: NSString の基本
- 内容: Objective-C の文字列操作。
- 学習ポイント:
NSString
とNSLog
の導入。
- usecase-005: 関数定義
- 内容: 加算関数の作成。
- 学習ポイント: 関数の定義と呼び出し。
- usecase-006: 配列 (NSArray)
- 内容: 数値の配列表示。
- 学習ポイント:
NSArray
の基本操作。
- usecase-007: 配列のループ
- 内容: 配列要素のイテレーション。
- 学習ポイント:
for-in
ループの使用。
- usecase-008: クラスの基本
- 内容:
Person
クラスの作成と利用。 - 学習ポイント: オブジェクト指向の基礎(
@interface
,@implementation
)。
- 内容:
- usecase-009: 初期化メソッド
- 内容: カスタム初期化付きクラス。
- 学習ポイント:
init
メソッドの実装。
- usecase-010: カテゴリ
- 内容:
NSString
の逆順メソッド追加。 - 学習ポイント: カテゴリによる既存クラスの拡張。
- 内容:
- usecase-011: プロトコル
- 内容:
Greetable
プロトコルの実装。 - 学習ポイント: プロトコルの定義と準拠。
- 内容:
- usecase-012: NSMutableArray
- 内容: 可変配列への要素追加。
- 学習ポイント:
NSMutableArray
の操作。
- usecase-013: NSDictionary
- 内容: 辞書型のデータ操作。
- 学習ポイント:
NSDictionary
のキー・バリュー管理。
- usecase-014: ブロック
- 内容: シンプルなブロックの実行。
- 学習ポイント: ブロック構文と匿名関数の利用。
- usecase-015: 例外処理
- 内容: 配列の範囲外アクセスと例外補足。
- 学習ポイント:
@try
,@catch
,@finally
の使用。
- usecase-016: メモリ管理 (MRC vs ARC)
- 内容: ARC での動作と MRC の説明。
- 学習ポイント: メモリ管理の歴史と現代的アプローチ。
- usecase-017: ファイル書き込み
- 内容: テキストファイルへの書き込み。
- 学習ポイント: ファイル出力の基本。
- usecase-018: ファイル読み込み
- 内容: 自前で作成したファイルの読み込み。
- 学習ポイント: ファイル入力とエラー処理。
- usecase-019: シンプルなデータ処理
- 内容: 学生のスコア平均計算。
- 学習ポイント: オブジェクトのリスト操作。
- usecase-020: 実用例 - FizzBuzz
- 内容: FizzBuzz アルゴリズムの実装。
- 学習ポイント: 実践的なロジック構築。
- ファイルの残留:
usecase-017
,usecase-018
ではoutput.txt
が生成されます。.gitignore
で除外されていますが、必要に応じて削除してください。 - 依存関係: 各
usecase
は独立して動作するよう設計されています。
改善案や追加の usecase
提案があれば、プルリクエストをお待ちしています!
MIT ライセンスの下で提供されます。詳細は LICENSE
ファイルをご覧ください(必要に応じて追加)。