はじめに
個人開発でiOSアプリ『ソリティア - クラシックカード』をリリースしました。定番のクロンダイク・ソリティアをシンプルに遊べるアプリです。本記事では、Flutterでの実装ポイントや工夫した点をまとめます。
使用技術
- Flutter (Dart)
- iOS向けビルド
- AdMob(広告SDK)
- 状態管理: シンプルなStatefulWidgetベース
クロスプラットフォームで開発できるFlutterを採用し、UIの一貫性と開発スピードを両立しました。
実装のポイント
1. ドラッグ&ドロップ
カードの移動はDraggableとDragTargetを組み合わせて実装しています。タブロー、組札、山札それぞれをDragTargetとして定義し、ルールに沿った移動のみを受け付けるようにバリデーションを挟みました。
2. ダブルタップで自動移動
GestureDetectorのonDoubleTapで、カードを組札へ自動的に送る処理を実装。移動可能かどうかを判定してからアニメーションさせることで、誤操作のないUXにしています。
3. ヒント機能
ゲームの状態から次に有効な手を探索し、ハイライト表示します。盤面の状態をモデルクラスで管理し、純粋なロジックとして切り出すことでテストしやすくしました。
4. 状態管理とモデル設計
タブロー、組札、山札をそれぞれクラスとして表現し、ゲーム全体の状態を一元管理。カードの移動可否判定をメソッドとして集約することで、UIとロジックを分離できました。
5. 統計記録
勝率やプレイ回数はローカルに保存し、シンプルな統計画面で確認できるようにしています。
工夫した点
- 広告非表示のクリーンなUIを維持し、ゲームに集中できる設計
- 直感的な操作を最優先にし、チュートリアル不要のUI
- カードのアニメーションを軽量にし、古い端末でも快適に動作
おわりに
Flutterを使うことで、ロジックとUIを整理しながら短期間でリリースまでたどり着けました。定番ゲームだからこそ、操作性とシンプルさを大切にしています。
▼ App Storeはこちら
https://apps.apple.com/jp/app/id6803766147