SwiftUIを中心に、個人開発したiOSアプリを企画・設計・実装・テストし、App Storeでリリースしています。
以下は実務経験ではなく、個人開発・学習における経験です。特に記載がない項目は、公開中の「Re:Mind ランダムリマインダー」で使用しています。
強み
- SwiftUIによるiOSアプリを、要件整理からApp Store公開まで一通り経験
- SwiftData・CloudKitを用いたデータ永続化とiCloud同期
- ローカル通知の仕様や上限を考慮した通知スケジューリング
- Protocolによる外部依存の抽象化と、Mockを用いたテスト
- Swift Testing・XCTest・Xcode Cloudによる品質確認と継続的なビルド
iOSアプリ開発
| ID | 分類 | 技術・スキル | 経験・実装内容 |
|---|
| IOS-01 | 言語 | Swift | 基本文法、値型、Optional、Error、Protocol、Extension、非同期処理を用いたアプリ実装 |
| IOS-02 | UI | SwiftUI | 画面構築、Navigation、フォーム、List、状態管理、再利用View、ViewModifierを用いたアプリ実装 |
| IOS-03 | 状態管理 | Observation | @Observableを用いたStoreの状態管理 |
| IOS-04 | データ永続化 | SwiftData | @Model、ModelContext、@Queryを用いた保存・取得・削除・並び替え |
| IOS-05 | クラウド同期 | CloudKit | SwiftDataのデータをiCloud経由で同期し、CloudKitの本番スキーマをデプロイ |
| IOS-06 | 設定保存 | UserDefaults / AppStorage | 通知ON/OFF、通知間隔、基準時刻などの設定値を保存 |
| IOS-07 | 通知 | UserNotifications | 通知権限、予約・削除、最大64件を考慮した再予約、通知内容・時刻のランダム化 |
| IOS-08 | Appleフレームワーク | StoreKit / MessageUI / UIKit | レビュー依頼、メール画面、設定画面への遷移で利用 |
| IOS-09 | 文字列管理 | String Catalog | Localizable.xcstringsによる表示文字列の管理 |
設計・品質
| ID | 分類 | 技術・スキル | 経験・実装内容 |
|---|
| ARC-01 | アーキテクチャ | Storeパターン | View、Model、ReminderStore、NotificationStoreへ責務を分離 |
| ARC-02 | 設計 | Protocol指向・依存性注入 | 通知、UserDefaults、現在時刻への依存をProtocolで抽象化 |
| ARC-03 | エラーハンドリング | Validation / Custom Error | 空文字・文字数の入力検証、通知予約失敗の件数と原因を画面表示 |
| TST-01 | 単体テスト | Swift Testing | Store、日時計算、入力検証、通知予約などを@Testと#expectで検証 |
| TST-02 | 統合テスト | Swift Testing / SwiftData | インメモリのModelContainerを使用し、保存から通知設定までのフローを検証 |
| TST-03 | テストダブル | Mock | 通知スケジューラー、UserDefaults、現在時刻を差し替えて再現性を確保 |
| TST-04 | UI・性能テスト | XCTest | UIテストターゲット、起動テスト、起動パフォーマンステストを作成 |
リリース・開発環境
| ID | 分類 | 技術・スキル | 経験・実装内容 |
|---|
| REL-01 | リリース | App Store Connect | 署名、アーカイブ、審査対応を経てiOSアプリをApp Storeへ公開 |
| REL-02 | CI/CD | Xcode Cloud | ビルド・テストを行うワークフローとして使用 |
| DEV-01 | IDE | Xcode | 実装、デバッグ、テスト、アーカイブで使用 |
| DEV-02 | バージョン管理 | Git / GitHub | ブランチ・コミットによる履歴管理とリモートリポジトリ運用 |
| DEV-03 | パッケージ管理 | Swift Package Manager | Swift向けパッケージ管理の基本操作と導入経験 |
| DEV-04 | エディタ | Visual Studio Code | Markdown、設定ファイル、Webサイト関連ファイルの編集 |
| DEV-05 | AI支援開発 | Codex / Claude / Cursor / Antigravity | 調査、設計案の比較、実装補助、レビュー、ドキュメント整備に活用。生成結果は実装とテストで確認 |
デザイン・ドキュメント
| ID | 分類 | 技術・スキル | 経験・実装内容 |
|---|
| DSG-01 | ユーザーフロー | FigJam | 画面遷移とユーザーフローの整理 |
| DSG-02 | ワイヤーフレーム | Goodnotes / Marvel | 手書きの画面案作成とプロトタイプ確認 |
| DSG-03 | UIデザイン | Figma | UI案・デザイン作成の学習、利用経験 |
| DOC-01 | ドキュメント | Markdown / Obsidian | 設計判断、学習記録、README、ポートフォリオコンテンツの管理 |
| WEB-01 | ポートフォリオ | Quartz / Cloudflare Pages | Markdownベースのポートフォリオサイト構築・公開 |
学習・利用経験
次の技術は学習または小規模な検証・利用経験がありますが、現在のポートフォリオアプリの主要構成には採用していません。
| ID | 分類 | 技術 | 補足 |
|---|
| EXP-01 | データ永続化 | Core Data | SwiftDataとの違いや採用条件を学習 |
| EXP-02 | BaaS | Firebase | 基本的な機能・利用方法を学習 |
| EXP-03 | データベース | RealmSwift | 基本的な永続化方法を学習 |
| EXP-04 | パッケージ管理 | CocoaPods | 導入・管理方法の学習、利用経験 |
制作物