こんにちは、藤田です。
前回は「ヨーグルト賞味期限切れ事件」をきっかけに、「冷蔵庫に眠っている食材をどう管理するか?」を妄想しました。今回はその妄想をカタチにすべく奮闘した、開発環境構築編です。
🧩手元にあるのはWindowsだけ
私はMacを持っていません。開発端末はWindows 11 + Visual Studio 2022のみ。
とはいえ作りたいのは、iPadで使える冷蔵庫管理アプリ。
なぜiOSアプリなのかというと、冷蔵庫の前での操作はスマホより画面の大きいiPadのほうが圧倒的に便利かつ家にあるタブレットがiPadのみだからです。(第一回参照)
🧱選んだ技術スタック:.NET MAUI
そこで使うのが .NET MAUI(Multi-platform App UI)。
Microsoftが開発したクロスプラットフォーム対応のフレームワークで、以下のようなメリットがあります:
- **C#**で共通ロジックを書ける
- XAMLで直感的なUI設計が可能
- Android/iOS/Windows/macOSに対応
- Visual Studioで開発できる(ただしiOSは一部制限あり)
重要なのは:iOSアプリのビルド&デバッグにはMac環境が必須というApple側の仕様です。
🛠️Macを持たずにiOSビルドする方法
🌩️ 方法①:CIサービス(GitHub Actions)でiOSビルド
利用手順:
- GitHubでソースコードを管理
-
.ymlでCIパイプラインを定義 -
dotnet build -f:net8.0-iosをMacランナーで実行
Apple Silicon環境が選べるので実機なくてもiOS用のバイナリ生成が可能になります。
☁️ 方法②:クラウドMacを契約(例:MacStadium)
- 数日だけ契約して必要なApple Provisioning設定を済ませる
- Visual Studio EnterpriseならリモートMacに接続可能
本番申請やStore提出時などには、実機検証+Xcode操作が必要になるので、スポット利用がベター。
🔍 使い分け比較
| 方法 | 利用目的 | メリット | 注意点 |
|---|---|---|---|
| GitHub Actions | 開発/ビルド検証用 | 無料枠あり/構成自動化 | Macランナーの待ち時間あり |
| クラウドMac | 設定/申請/実機検証 | GUI操作可能/Xcode導入済み | 有料/最低1日契約から |
💡Visual Studio 2022 設定Tips
- プロジェクト作成:「.NET MAUI App」を選択
- ターゲットプラットフォームに「iOS」を含める
-
Platforms/iOSフォルダにInfo.plistなど設定ファイルを追加 - ビルド:GitHub Actionsで
dotnet build -f:net8.0-iosを実行
手元ではAndroidエミュレーターで見た目確認しつつ、CIでiOSのバイナリ生成という二段構えで進めました。
😅つまずいたポイントと対処法
| つまずき内容 | 対策/補足 |
|---|---|
| Provisioning設定が複雑 | Apple公式ドキュメント + Fastlaneを併用すると楽 |
| Macランナーの待機時間 | タイムゾーンに注意/一時的にローカルMacを使う案も |
| Visual StudioのiOS設定に情報が少ない | 英語が読めればGitHub Discussionsが助かる/MAUIコミュニティで質問可 |
英語ドキュメント中心なのは少し抵抗があるかと思いますが、MAUIは海外のコミュニティが活発なので、むしろ情報が手に入りやすいとも言えます。
また、英語の勉強にもなるので一石二鳥です。(私は英語はもともと読み書き会話できるので苦ではありませんでした。)
📱次回予告:設計&実装編 賞味期限通知とUI設計のこだわり
冷蔵庫管理アプリの「賞味期限通知」「使いやすいUI」「タッチ前提設計」について、実装上の工夫を語っていきます。
藤田でした。