Share
Embed
デザインから逆算して難易度を見積もるための観点
8/19に開催された『集まれKotlin好き!Kotlin愛好会 vol.59@株式会社ログラス』でのLT資料になります。
2/5に開催された『みんなのアジャイル』発売記念LT大会 in 虎ノ門でのLT資料になります。
Fumiya Sakai
February 05, 2025
Transcript
15 slides
-
デザインから逆算して難易度を見積もるための観点 Fumiya Sakai (第1版)2025/02/05:『みんなのアジャイル』発売記念LT大会 in 虎ノ門 @ 虎ノ門ヒルズビジネスタワー 書籍ダイジェスト版 &
補足事項 (第2版)2025/08/19: 集まれKotlin好きKotlin愛好会 @ 株式会社ログラス様 -
自己紹介 ・Fumiya Sakai ・Mobile Application Engineer アカウント: ・Twitter: https://twitter.com/fumiyasac ・Facebook:
https://www.facebook.com/fumiya.sakai.37 ・Github: https://github.com/fumiyasac ・Qiita: https://qiita.com/fumiyasac@github 発表者: ・Born on September 21, 1984 これまでの歩み: Web Designer 2008 ~ 2010 Web Engineer 2012 ~ 2016 App Engineer 2017 ~ Now iOS / Android / sometimes Flutter -
デザインを基に実装難易度を見積もる重要性に関して iOS/Androidはそれぞれ異なるデザインガイドラインや技術的要件を持つ 同じ様なデザインを実装する場合でも、異なるアプローチが必要になる。 1. モバイルアプリ開発において難易度を見積もる際に重要な観点を整理する: デザインから逆算して実装の難易度を正確に見積もることは、プロジェクトの円滑な進行に不可欠だと考えています。 2. iOS/AndroidそれぞれのUI実装観点からの重要性: デザイナーとの協業においても、これらの技術的な制約や可能性を共有することで、実装しやすく、かつユーザー体験の高いデ ザインの創出につながると考えています。
3. アジャイル開発の観点からiOS/Androidでの類似点・相違点を押さえる例: iOS/Android両方の違いを事前に把握することで、スプリント計画の制度向上によるリソースの最適配分やリスクの早期特定から 適切な対策を立てることができるので、スムーズな開発支援にもつながると考えています。 -
モバイルアプリ開発において難易度を見積もる際に重要な観点を整理する(1) 観点は様々ありますが、見積もりの際に特に重要なものをピックアップしました 😀 1. UIコンポーネントの複雑さ 2. プラットフォーム間の差異 3. データフローとステート管理 4.
パフォーマンスへの影響 5. API連携とデータ同期 標準のまま or カスタムの必要 / AnimationやLayoutの複雑さ / 複雑なInteraction / 階層構造 UIガイドライン / プラットフォーム固有機能 / デバイス毎の画面やアスペクト比 データフローと状態管理の複雑さ(※複数の依存関係がどの様に絡むか?) 大量データの取り扱い / 画像処理 / 動画再生(重い処理)、Background処理 / Push通知(応答性) 必要なAPI呼び出し数・データの同期方法(ネットワーク不安定時・オフライン時・データ競合防止) 特にUI実装に直結する ような項目を列挙 ※本書でフォーカスしている点 ※本書でフォーカスしている点 -
モバイルアプリ開発において難易度を見積もる際に重要な観点を整理する(2) 観点は様々ありますが、見積もりの際に特に重要なものをピックアップしました 🧐 6. セキュリティ要件 7. アクセシビリティ対応 8. ローカライゼーション 9.
テスト容易性 10. メンテナンス性と拡張性 ユーザー認証 / データ暗号化 / Secure Storage(実装の複雑さに影響を及ぼす可能性がある点) 色コントラスト比 / 音声読み上げ機能 / Touch Target Size(使いやすさの考慮に関する要件) 多言語対応 / RTL / 地域ごとの法的要件や文化的配慮(グローバル展開を視野に入れた場合) ユニットテスト / UIテスト(実装のしやすさ)・エッジケースや異常系(テストシナリオ設計) コードの再利用性 / 将来的な機能追加や変更のしやすさ(長期的なプロジェクト成功の想定) 機能要件や仕様次第で はUI実装に影響する可 能性がある項目を列挙 -
iOS/AndroidそれぞれのUI実装観点からの重要性 iOS/Android両方の難易度を見積もる上で重要な観点をピックアップしました 1. コンポーネント単位で見た時の方針選択 2. iOS/Android間における考え方の相違点 3. カスタムUIコンポーネントの実装 4. アニメーションとトランジション
5. システムUIとの統合 一見すると同じ様な見 た目や体験が同じ様に 見えても注意が必要。 ・UIコンポーネントの複雑さ ・プラットフォーム間の差異 6. アプリのライフサイクルの違い iOS/Androidの両方のUIガイドライン(iOS: Human Interface Guideline/Android: Material Design)、 レイアウトエンジン、ナビゲーションパターン等の違いを事前に把握することによって、各プラット フォームに応じた開発タスクの見積もりを正確に行う際の手助けになる。 -
アジャイル開発の観点からiOS/Androidでの類似点・相違点を押さえる この様な動きをするために普段から心がけておくと良いポイント 1. 定期的な公式ドキュメントの確認・新機能やデザインの変更点の共有 2. 両プラットフォームに共通する部分と独自に調整すべき部分の明確化 3. プロトタイプ段階でアニメーション・インタラクションの確認 4. iOS/AndroidのUI処理における相違点やアプリケーションとの調和の確認
5. 定期的なデザインレビューやユーザビリティテストの実施 チームで実際に発生し た問題や事例を共有す る機会を積極的に創出 ・スプリント計画の精度向上 ・リスク早期特定と問題対処 6. 各プラットフォームにおける実装の課題や成功事例の共有 - 各プラットフォームのガイドラインやベストプラクティスにできるだけ従う - 同じ機能でもプラットフォームによって実装アプローチが異なる場合がある点に注意する - ユーザー体験を損なわないよう、各プラットフォームの特性を理解した上で設計・実装する -
なぜこの観点がアジャイル開発において重要だと考えるか? アジャイル開発の特性や目指す成果と密接に関係すると考えています 1. 迅速なフィードバックサイクルの促進 2. 優先順位の明確化とスコープ管理 3. チームの共通理解と連携の強化 4. リスク管理と技術的負債の抑制
5. 持続可能なペースの確保 デザイナーとエンジニ アだけではなく関連す る職種の皆様と一緒に ・Communication ・Collaboration 6. ユーザー価値の最大化 デザインから逆算して難易度を見積もる観点は、スムーズなスプリント計画、リスクの早期発見、チー ム全体の連携、持続可能な開発ペースの維持、そしてユーザー価値の最大化に直結します。これらはア ジャイル開発の成功に欠かせない要素であり、結果として全体効率や品質向上にもつながります。 -
まとめ 難易度を見積もる際に大切なのは「目に見えない」部分への準備力のところ 時間やリソースが限られた状況で、技術的に難しい部分やリスクの高い部分を特定して対応する準備が大切。 1. チーム全体の連携: 各役割が1つのチームとして協力することが不可欠になります。特にUI実装と機能ロジックは切り離して考える事が難しい場合も 珍しくないため、役割や職種を越えて共通理解を持っている状態が望ましいと思います。 2. 技術的な実現可能性の評価: デザインが提案された時点で「実現が技術的にどれほど難しいか?」をという問いを常に持ち、評価する事も重要になってきま
す。複雑な実装を要する箇所を早期特定する事で、可能性の模索や難しい場合の代替案を検討がしやすくなると思います。 3. 時間とリソース制約の考慮: 時間やリソースには限りがあるため、実装の難易度が高い部分を早期に見極めることが求められます。これにより、開発プロセ スの初期段階でリスクを管理し、優先順位をつけて進めることが可能になると思います。