Upgrade to Pro — share decks privately, control downloads, hide ads and more …

デザイナーが Androidエンジニアに 挑戦してみた

Avatar for Kanon Fujita Kanon Fujita
September 10, 2025

デザイナーが Androidエンジニアに 挑戦してみた

Avatar for Kanon Fujita

Kanon Fujita

September 10, 2025
Tweet

More Decks by Kanon Fujita

Other Decks in Programming

Transcript

  1. どうやって学習したのか 使った教材 : Android Developersの「Compose を用いた Android アプリ開発の基礎」 https://developer.android.com/courses/android-basics-compose/course?hl=ja 学習ステップ

    教材をベースに2ヶ月間(週2時間)Androidエンジニアに先生をしてもらう その後、AIを駆使しつつ簡単なアプリを制作 学習ステップ 教材をベースに2ヶ月間(週2時間)Androidエンジニアに先生をしてもらう その後、AIを駆使しつつ簡単なアプリを制作 学習ステップ 教材をベースに2ヶ月間(週2時間)Androidエンジニアに先生をしてもらう その後、AIを駆使しつつ簡単なアプリを制作
  2. Figmaの設定値をそのまま入れるだけでいいじゃん!!スタイル編 作りたいレイアウト Figmaのサイドバー 1 2 3 4 5 6 1

    2 3 4 5 6 実際のコード Figmaと一緒じゃん!!! Figmaと一緒じゃん!!! Figmaと一緒じゃん!!!
  3. 実際のコード 1 2 3 Figmaの設定値をそのまま入れるだけでいいじゃん!!コンポーネント設計編 タップすると、楽曲が再生されるようなカードコンポーネントを作りたい場合 Title Artist 通常時 Title

    Artist 再生中 作りたいカード Figmaで設定したプロパティ 1 2 3 Figmaと一緒じゃん!!! Figmaと一緒じゃん!!! Figmaと一緒じゃん!!!
  4. 実装とOOUIにおけるモデリング ユーザー行動視点にオブジェクトをモデリングするのがOOUIにおけるモデリング システムのデータ視点にオブジェクトをモデリングするのが実装におけるモデリング Android開発だと、サーバーからやってくるさまざまなデータを、ViewModelで指示しやすいように加工(下ごしらえ) する必要がある。そこで出てくるのがデータクラス。 このKotlinのデータクラス。かなりデザイナー視点で書ける気がする!!! Kotlinのdata classがデザイナー視点で書きやすい理由: 簡潔な記法:プロパティを並べるだけでデータ構造を定義 型安全:コンパイル時にデータの形をチェック

    自動生成:equals()、hashCode()、toString()が自動で作られる 分割代入:val (name, age) = userのように値を取り出せる デザイナーがイメージしているオブジェクトの動きをコード上でほぼそのまま表現できるイメージ Kotlinのdata classがデザイナー視点で書きやすい理由: 簡潔な記法:プロパティを並べるだけでデータ構造を定義 型安全:コンパイル時にデータの形をチェック 自動生成:equals()、hashCode()、toString()が自動で作られる 分割代入:val (name, age) = userのように値を取り出せる デザイナーがイメージしているオブジェクトの動きをコード上でほぼそのまま表現できるイメージ Kotlinのdata classがデザイナー視点で書きやすい理由: 簡潔な記法:プロパティを並べるだけでデータ構造を定義 型安全:コンパイル時にデータの形をチェック 自動生成:equals()、hashCode()、toString()が自動で作られる 分割代入:val (name, age) = userのように値を取り出せる デザイナーがイメージしているオブジェクトの動きをコード上でほぼそのまま表現できるイメージ
  5. OOUIを例に見るデータクラス: 楽曲はこんな情報を持ってる 9:30 楽曲リスト画面 Horizon Line The Velvet Keys Golden

    Hour Skyline Drive Midnight Dreams Luna Hayes Electric Pulse The Neon Collective Digital Hearts Echo Chamber Stellar Drift Nova Rain Paper Moon Silver Coast Waves of Tomorr Marcus Reed City Lights Aria Stone Horizon Line The Velvet Keys Golden Hour Skyline Drive Midnight Dreams Luna Hayes 楽曲のシングルビュー = 再生プレーヤーに入ってる楽曲 楽曲のコレクションが、楽曲のシングルを呼び出している コレクション 楽曲 シングル 楽曲 楽曲データ I D 楽曲タイトル アーティスト名 カバー画像 楽曲の長さ その他、投稿日や歌詞等も考えられるが省略 デザイナーが整理するもの 実際のコード
  6. OOUIを例に見るデータクラス: 一覧にするにはどうすればいいの? 9:30 楽曲リスト画面 Horizon Line The Velvet Keys Golden

    Hour Skyline Drive Midnight Dreams Luna Hayes Electric Pulse The Neon Collective Digital Hearts Echo Chamber Stellar Drift Nova Rain Paper Moon Silver Coast Waves of Tomorr Marcus Reed City Lights Aria Stone Horizon Line The Velvet Keys Golden Hour Skyline Drive Midnight Dreams Luna Hayes その楽曲データのリスト(コレクション) 楽曲のシングルビュー = 再生プレーヤーに入ってる楽曲 楽曲のコレクションが、楽曲のシングルを呼び出している コレクション 楽曲 シングル 楽曲 コード上でも楽曲のコレクションが、楽曲のシングルを呼び出している
  7. Googleが推奨していると噂のMVVM 何かしら操作 入力 入力された情報を 送る 情報を処理、編集する 指示を出す 必要な情報を返す 情報を反映させる 指示を出す

    反映される ユーザー View 見た目担当 ユーザーが操作できるUI要素 必要な情報を受け取って表示 ViewModel 表示しやすいデータに変換 ViewとModelに指示するやつ Model 生のデータを受け取る モデリング データに関するルールなど アプリケーションの構造 役割を分けて、それぞれの役割で分離させて書く(特にUI部分)おかげで、UI実装だけできるデザイナーでもできること が多くなる気がする
  8. プロジェクトに入る場合、デザインとView部分の実装担当。みたいな役割ができる ユーザー View 見た目担当 ユーザーが操作できるUI要素 必要な情報を受け取って表示 ViewModel 表示しやすいデータに変換 指示するやつ Model

    生のデータを受け取る モデリング データに関するルールなど Figmaで作ったコンポーネントや画面 と同じものを作るところ Figmaで作ったコンポーネントや画面 と同じものを作るところ Figmaで作ったコンポーネントや画面 と同じものを作るところ ※iOSはどうすんの?みたいな課題はある
  9. Viewだけできれば超簡単なインタラクションのプロトタイプくらいなら作れる ユーザー View 見た目担当 ユーザーが操作できるUI要素 必要な情報を受け取って表示 ViewModel 表示しやすいデータに変換 指示するやつ Model

    生のデータを受け取る モデリング データに関するルールなど 作れるもの インタラクションスタディ 遷移アニメーション 作れるもの インタラクションスタディ 遷移アニメーション 作れるもの インタラクションスタディ 遷移アニメーション
  10. OOUIと同じ要領でモデリングもできれば、けっこうなんでも作れる ユーザー View 見た目担当 ユーザーが操作できるUI要素 必要な情報を受け取って表示 ViewModel 表示しやすいデータに変換 指示するやつ Model

    生のデータを受け取る モデリング データに関するルールなど 作れるもの ローカルのモックデータを使ったプロトタイプ サーバー接続のないアプリなど 作れるもの ローカルのモックデータを使ったプロトタイプ サーバー接続のないアプリなど 作れるもの ローカルのモックデータを使ったプロトタイプ サーバー接続のないアプリなど 新機能や営業同行の提案用のプロトタイプ制作として、これくらいできれば問題なく作れそう
  11. 具体例 : とある画面のデザインを出した時 こんなプロフィール画面を 作りたい!! こんなプロフィール画面を 作りたい!! こんなプロフィール画面を 作りたい!! とあるデザイナー

    これだけじゃ完成できない...! これだけじゃ完成できない...! これだけじゃ完成できない...! とあるエンジニア 9:30 Kanon Fujita Hi! I'm a Designer • Developer • Dreamer! マイミュージック Horizon Line The Velvet Keys Golden Hour Skyline Drive Midnight Dreams Luna Hayes Electric Pulse The Neon Collective Digital Hearts Echo Chamber Stellar Drift Nova Rain Paper Moon Silver Coast Waves of Tomorr Marcus Reed City Lights A ria Stone Edit Profi le
  12. 実装を経験すると、本当はもっと表示パターンがあることに気付ける 9:30 Kanon Fujita Hi! I'm a Designer • Developer

    • Dreamer! マイミュージック Horizon Line The Velvet Keys Golden Hour Skyline Drive Midnight Dreams Luna Hayes Electric Pulse The Neon Collective Digital Hearts Echo Chamber Stellar Drift Nova Rain Paper Moon Silver Coast Waves of Tomorr Marcus Reed City Lights Aria Stone Edit Profile 9:30 Kanon Fujita Hi! I'm a Designer • Developer • Dreamer! マイミュージック Edit Profile 9:30 Kanon Fujita マイミュージック あなたが作った楽曲はまだありません 投稿してみる! Edit Profile 全ての情報が集まった状態 アカウント作成後の初期時 アプリ起動時の読み込み時
  13. 技術的にはできるけど... (どのタイミングで、追加で 何件取得? 一番下までスクロールしてか ら取得?スクロール途中?) 技術的にはできるけど... (どのタイミングで、追加で 何件取得? 一番下までスクロールしてか ら取得?スクロール途中?)

    技術的にはできるけど... (どのタイミングで、追加で 何件取得? 一番下までスクロールしてか ら取得?スクロール途中?) とあるエンジニア 下にスクロールするとど んどん新しいコンテンツ が表示したい! こんなやつできますか? 下にスクロールするとど んどん新しいコンテンツ が表示したい! こんなやつできますか? 下にスクロールするとど んどん新しいコンテンツ が表示したい! こんなやつできますか? とあるデザイナー 具体例 : コンテンツの追加取得の処理タイミング Electric Pulse The Neon Collective Digital Hearts Echo Chamber Stellar Drift Nova Rain Paper Moon Silver Coast Waves of Tomorr Marcus Reed City Lights Aria Stone Horizon Line The Velvet Keys Golden Hour Skyline Drive Midnight Dreams Luna Hayes Electric Pulse The Neon Collective Digital Hearts Echo Chamber Stellar Drift Nova Rain Horizon Line The Velvet Keys Golden Hour Skyline Drive Midnight Dreams Luna Hayes 9:30 Home Favorite Profile
  14. 実装を知ることで仕様を詰められる。UIの引き出しが増える メインコンテンツだから、たくさんの 数を見てほしい!だからA案! スクロール途中で追加取得して、間に 合わなければスピナーを表示して... タイミングと件数は、スムーズにコン テンツが出れば実装にお任せしたい メインコンテンツだから、たくさんの 数を見てほしい!だからA案! スクロール途中で追加取得して、間に

    合わなければスピナーを表示して... タイミングと件数は、スムーズにコン テンツが出れば実装にお任せしたい メインコンテンツだから、たくさんの 数を見てほしい!だからA案! スクロール途中で追加取得して、間に 合わなければスピナーを表示して... タイミングと件数は、スムーズにコン テンツが出れば実装にお任せしたい A案 B案 サブコンテンツだから、たくさん表示 されるとノイズかも。だからB案! 必要な時だけ追加で取得で切れば OK(通信量も減るし) サブコンテンツだから、たくさん表示 されるとノイズかも。だからB案! 必要な時だけ追加で取得で切れば OK(通信量も減るし) サブコンテンツだから、たくさん表示 されるとノイズかも。だからB案! 必要な時だけ追加で取得で切れば OK(通信量も減るし)
  15. デザイナーの人向け 実装を経験してみたかったらAndroidはとてもおすすめ! Jetpack Compose / Kotlin がデザイナー視点で書きやすい 無料でできる! Mac Book

    でも Windows でも開発できる! 作ったものをその場でプレビューできる! 公式の教材や資料がかなり豊富! 実案件に入れるだけのスキルをつけなくても、活きる場面は結構ある!