From 2d4816b945504b46dc0daa1a0e3231b81597b32d Mon Sep 17 00:00:00 2001 From: umekita Date: Fri, 14 Aug 2026 22:50:05 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20UI=E3=83=87=E3=82=B6=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=82=B9=E3=83=A9=E3=82=A4=E3=83=89=E3=82=92=E5=82=99?= =?UTF-8?q?=E5=93=81=E8=B2=B8=E5=87=BA=E3=82=A2=E3=83=97=E3=83=AA=E3=81=AE?= =?UTF-8?q?=E9=A1=8C=E6=9D=90=E3=81=A7=E7=B5=84=E3=81=BF=E7=9B=B4=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit スライドだけ見て復習できるように、章の結論を図の中に入れた。 - ハンズオンの題材を備品貸出アプリにする ToDoアプリは完成形を知っている学生が多く、教える前に描かせても 正解を描いてしまうため - 図をすべて手書きSVGに差し替える(元資料のPNGへの参照をなくす) - 章タイトルを日常語にして、実務の呼び方を併記する 3.1 モノを決める(オブジェクト抽出)など - スケッチブックを使うハンズオンを3回にする - 発表台本を design/SCRIPT.md に分離する Co-Authored-By: Claude Opus 5 (1M context) --- design/SCRIPT.md | 1014 ++++++++++++++++++++++++++ design/imgs/fig-action-place.svg | 66 ++ design/imgs/fig-answer.svg | 64 ++ design/imgs/fig-bridge.svg | 24 + design/imgs/fig-collection.svg | 40 + design/imgs/fig-compare.svg | 99 +++ design/imgs/fig-extract-demo.svg | 41 ++ design/imgs/fig-flow-step1.svg | 32 + design/imgs/fig-flow-step2.svg | 32 + design/imgs/fig-flow-step3.svg | 32 + design/imgs/fig-flow.svg | 45 ++ design/imgs/fig-interface.svg | 32 + design/imgs/fig-item-navigation.svg | 19 + design/imgs/fig-item-object.svg | 24 + design/imgs/fig-layout-list.svg | 32 + design/imgs/fig-layout-single.svg | 40 + design/imgs/fig-object-to-screen.svg | 62 ++ design/imgs/fig-single.svg | 24 + design/imgs/fig-summary.svg | 78 ++ design/imgs/fig-tap-a.svg | 86 +++ design/imgs/fig-tap-b.svg | 88 +++ design/imgs/fig-ui-vs-visual.svg | 40 + design/imgs/fig-ui.svg | 42 ++ design/imgs/fig-way-a.svg | 29 + design/slide.md | 574 ++++++++++----- 25 files changed, 2488 insertions(+), 171 deletions(-) create mode 100644 design/SCRIPT.md create mode 100644 design/imgs/fig-action-place.svg create mode 100644 design/imgs/fig-answer.svg create mode 100644 design/imgs/fig-bridge.svg create mode 100644 design/imgs/fig-collection.svg create mode 100644 design/imgs/fig-compare.svg create mode 100644 design/imgs/fig-extract-demo.svg create mode 100644 design/imgs/fig-flow-step1.svg create mode 100644 design/imgs/fig-flow-step2.svg create mode 100644 design/imgs/fig-flow-step3.svg create mode 100644 design/imgs/fig-flow.svg create mode 100644 design/imgs/fig-interface.svg create mode 100644 design/imgs/fig-item-navigation.svg create mode 100644 design/imgs/fig-item-object.svg create mode 100644 design/imgs/fig-layout-list.svg create mode 100644 design/imgs/fig-layout-single.svg create mode 100644 design/imgs/fig-object-to-screen.svg create mode 100644 design/imgs/fig-single.svg create mode 100644 design/imgs/fig-summary.svg create mode 100644 design/imgs/fig-tap-a.svg create mode 100644 design/imgs/fig-tap-b.svg create mode 100644 design/imgs/fig-ui-vs-visual.svg create mode 100644 design/imgs/fig-ui.svg create mode 100644 design/imgs/fig-way-a.svg diff --git a/design/SCRIPT.md b/design/SCRIPT.md new file mode 100644 index 00000000..018cf258 --- /dev/null +++ b/design/SCRIPT.md @@ -0,0 +1,1014 @@ +# 使いやすいUIデザイン|発表台本 + +`design/slide.md` から発表メモを外して、こちらにまとめたもの。 +スライドを送りながらこのファイルを見て話す。 + +各節の見出しは、対応するスライドの見出し。 +【X分】は目安の時間、`・` から始まる行は進め方の注意。 + +--- + +## 1. 使いやすいUIデザイン + +【0.5分】 + +<台本> +改めまして、こんにちは。うめです。 +これから1時間、使いやすいUIデザインの話をします。 + +・自己紹介は短く。ここは巻いてよい。 + +--- + +## 2. この時間の目標 + +【2分】この1時間の結論。まずこれを言ってから中身に入る。 + +<台本> +このあとみなさんは、チームで自分たちのアプリを作ります。 +そのとき「どんな画面にする?」を必ず決めることになります。 +今日はその考え方を持って帰ってもらう時間です。 + +今日は2回、スケッチブックに絵を描いてもらいます。 +と言っても、絵が描けなくても大丈夫です。四角と線だけで足ります。 +色や形をきれいにする話は、最後の3分しかやりません。 + +・【重要】「絵が描けなくても大丈夫」を言う唯一の場所。省略しない。 + デザインは「センスの有無」に見えるので、身構える学生が必ず出る。 +・スケッチブックを使うことを、ここで予告しておく。 + 急に「描いてください」と言われると身構えるので、先に言って慣らす。 +・「色と形の話は最後の3分だけ」と先に言っておく。 + 第1章でビジュアルデザインを切り離すので、ここで予告しないと + 第4章に入ったとき「やらないって言ったのに」になる。 +・コードは1行も書かない、当てません、もここで口にする。 + +--- + +## 3. 今日は4本立て + +【1.5分】 + +<台本> +今日はこの4本立てで進めます。 +2番でいきなり手を動かしてもらいます。まだ何も教えていない状態で描きます。 +それから3番で、ちゃんとした作り方を学んで、もう一度描きます。 + +・【重要】「教える前に描かせる」という進め方を、ここで宣言しておく。 + 言っておかないと、2番のハンズオンで「まだ習ってないのに」と不安になる。 + できなくていい、それが狙いだ、と先に伝える。 +・章が変わるたびに、この4つのどこにいるかを言うと迷子が出ない。 + +--- + +## 4. 1. UIとは + +【0.3分】ここから8分。 + +<台本> +まず、UIとは何かを揃えておきます。 + +・章扉は速く抜ける。遅れているならここで巻く。 +・第2章・第3章と同じ形の扉にしてある。 + 章の切れ目を同じ見た目で示すと、いま何章にいるかが分かる。 + +--- + +## 5. 「UI = 見た目」
**ではない** + +【1分】第1章の入口。まず思い込みを名指しで外す。 + +<台本> +はじめに、ひとつだけ外しておきたいことがあります。 + +UIと聞くと、たぶん色とか形とか、 +きれいな見た目のことを思い浮かべますよね。 + +でも、UIは見た目のことではありません。 +じゃあ何なのか。次のページで見てみます。 + +・【重要】否定から入る1枚。「デザイン=センスのある人がやる見た目の話」 + という思い込みを持ったまま聞くと、このあとの話が全部 + 「自分には関係ない話」に聞こえてしまう。 +・ここでは答えを言わない。次の1枚への引きにする。 +・図は置いていない。文字だけの1枚を挟むと、逆に強く残る。 +・挙手を取ってもよい:「色や形だと思っていた人?」 + ただし当てないと約束しているので、手を挙げさせるだけにする。 + +--- + +## 6. UIデザインと
ビジュアルデザインは別 + +【1.5分】「見た目ではない」の理由。見た目の話には別の名前があると示す。 + +<台本> +では、さっきの色や形の話はどこへ行ったのか。 +右のほうです。色や形、フォントを整える話をビジュアルデザインといいます。 +見た目はビジュアルデザインの仕事で、UIデザインとは別なんです。 + +今日のメインは左です。何を、どこに置くか。骨組みのほうです。 +だから絵が描けなくても大丈夫。四角と線だけで足ります。 + +右のビジュアルデザインは、最後に3分だけやります。 +やらないわけではなくて、順番があとなだけです。 + +・【重要】前ページの否定(見た目ではない)の受け皿がこの1枚。 + 「じゃあ見た目の話は何なのか」に名前を与えてから、UIの定義に進む。 +・【重要】ここで第4章を予告する。予告しないと第4章で矛盾する。 +・左の図は色も飾りもない。これがこのあと描いてもらうもの。 + ここでは名前を出さない(3.3でワイヤーフレームとして定義する)。 + +--- + +## 7. **UI** = **User Interface** + +【1.5分】ここでようやくUIの定義。前2枚で外堀を埋めてある。 + +<台本> +では、UIとは何か。言葉から確認します。 +UIは User Interface の略です。 +インターフェースというのは、つなぎ目という意味の言葉です。 + +図を見てください。左がみなさん、右がサービス。 +アプリでも、Webサイトでも、駅の券売機でも同じです。 +そのあいだにあるのがUIです。 + +ボタンを押す、文字を読む。 +やりとりは、ぜんぶここを通ります。 + +だからUIで大事なのは、きれいかどうかではありません。 +迷わず押せるか、入力しやすいか。ちゃんと使えるかどうかです。 + +今日はこのうち、アプリの画面を扱います。 + +・「接点」「境界面」という訳語のまま止まらない。 + 図で「あいだにある」と見せてから、やりとりが通る場所だと言う。 +・【重要】「アプリのあいだ」とは言わない。UIはアプリに限らず、 + 券売機・ATM・リモコン・蛇口もUI。定義を狭めない。 + 図の右にPCとスマホを並べてあるのも、1つに限らないと示すため。 +・【重要】そのうえで「今日はアプリの画面を扱う」と範囲を絞る。 + 定義は広く、扱う範囲は狭い。この2段を混ぜない。 +・ここで「きれいさではなく、使えるかどうか」を1回言っておく。 + 第4章で見た目の話をするときに、これが効いてくる。 +・聞かれたら:券売機も蛇口もUIです。押すところ、ひねるところが + ユーザーとの接点だから。今日はアプリに絞って話します。 + +--- + +## 8. その**あいだ**にあるのは、
この**2種類** + +【2分】第1章の結論。今日ずっと使う2つの言葉をここで決める。 + +<台本> +では、そのあいだには何があるのか。ここが今日の答えです。 +2種類しかありません。 + +1つめ、見せるもの。文字、リスト、画像。 +アプリから情報を受け取るためのものです。読むだけで、さわれません。 + +2つめ、操作するもの。ボタン、チェックボックス、入力欄。 +アプリに指示を出すためのものです。さわると、中身が変わります。 + +みなさんが知っているUIの部品は、ぜんぶこのどちらかです。 +新しい部品を見たときも、「これはどっちだ」と考えれば読めます。 + +だから、UIデザインでやることはこうなります。 +この2種類を、どこに置くか決める。それだけです。 + +・【重要】章タイトル「1. UIとは」の答えがこの1枚。ここまで + 「見た目ではない」「見た目の話はビジュアルデザイン」 + 「UIはユーザーとサービスのあいだにあるもの」と積んできた。 +・【重要】見出しの「その あいだ」は、前ページの + 「ユーザーとサービスのあいだにあるもの」を受けている。 + 前は「UIの部品は2種類に分けられる」にしていたが、 + 前ページが"位置"の話で終わり、ここが急に"構成"の話になるので + 繋がらなかった。「あいだ」で受け直すと1本になる。 + ここは口でも「さっきのあいだですね」と言ってつなぐ。 +・台本の最後で「2種類をどこに置くか決めるのがUIデザイン」と言い切る。 + 第1章を「結局なんだったの」で終わらせないため。 + ここが6枚目の「何を、どこに置くか」の"何を"の答えにもなっている。 +・【重要】「もの」を付けて名詞で呼ぶ。動詞のまま(見せるか操作するか)だと、 + "置くもの"の分類だと分かりにくい。 +・【検討済み】この2語は厳密には主語が混ざっている。 + 見せる=アプリが主語、操作する=ユーザーが主語。 + 主語を揃える案(見るもの/さわるもの)も検討したが、この呼び方を採った。 + そのぶん、台本で必ず役割を添えて言う: + 見せるもの → アプリから情報を受け取るためのもの + 操作するもの → アプリに指示を出すためのもの + 世の中の解説もUIの役割を「情報を伝える/指示を受け取る」の2つで説明し、 + 部品の分類も「情報表示系/操作系・入力系」で分けている。 + ここを口で補えば、呼び方のズレは問題にならない。 +・【重要】「操作する」を選んだ理由は2つ。 + ①「変える」だと誰が変えるのか曖昧。「操作する」ならユーザーがやることだと分かる。 + ② 第3章の「アクション」に直結する(アクション=そのモノにできる操作)。 +・「動かす」は使わない。Webアプリケーション概論が「処理=動かす」を + 使っているので、同じインターン内でボタン操作とサーバー処理が混ざる。 +・「表示」も言わない。「見せる」で通す。 +・「境界」「情報のやり取り」のような抽象語は出さない。 + 知っている部品の名前で説明するほうが速い。 +・図の色分けがそのまま意味になっている。グレー=さわれない、 + 水色=さわれる。以降ずっとこの色の使い方で通す。 +・この2つが、第3章の「ビュー」と「アクション」になる。 + ここでは言わず、第3章の入口で回収する。 + +--- + +## 9. 2. UIを作ってみる + +【0.3分】ここから15分。 + +<台本> +では、さっそく作ってみましょう。 + +・速く抜ける。次の仕様スライドとセットで読む。 + +--- + +## 10. 備品貸出アプリを考えてみよう! + +【5.5分】今日の山場のひとつ。教える前に描かせる。 +仕様の提示(1.5分)とハンズオン(4分)を1枚にまとめてある。 + +<台本> +では、さっそく作ってみましょう。 +作るのは、備品貸出アプリの、お店が使う画面です。 +みなさんが図書委員になったと思ってください。 + +仕様はこの4つ。 +備品の一覧を見る、備品の名前と数を見る、借りる、返す。 + +この仕様で、アプリの画面を描いてみてください。 +スケッチブックに、四角と線だけで大丈夫です。 +何画面になってもいいです。4分とります。 + +まだ何も教えていないので、正解は分かりません。それでいいです。 +今日はこのあと、みなさんが描いたものを見ながら進めます。 + +(4分待つ。手が止まっている人がいたら「仕様の言葉を + そのままボタンにしてもいいですよ」と1回だけ声をかける) + +・【重要】題材を備品貸出アプリにしてある理由。 + ToDoアプリだと、ほとんどの学生が完成形(ToDoが並ぶ画面)を + すでに知っているので、教える前に描かせても正解を描いてしまい、 + このあとの比較が他人事になる。 + 備品貸出アプリは、名前は知っていても自分で注文したことが + ある学生は少ない。だから仕様の言葉をそのままボタンにする人が多くなる。 +・【重要】この題材にした決め手は「一覧に収まる」こと。 + 備品は10〜20個なので、一覧から選んでタップするのが自然。 + 図書室の本で考えたこともあったが、蔵書は数千冊あるので + 一覧から選べず、実運用もバーコードを読む方式だった。 + それだと「一覧のチェックを1タップ」が成立しない。 +・【重要】この仕様にはCreateとDeleteがない。料理を増やしたり + 消したりするのは先生の仕事で、借りる側にはできないから。 + 3.1の最後(属性とアクションの答え)でここを回収する。 + 「仕様にないものは作らない」を教える材料になっている。 +・聞かれたら(注文したことがないので分からない): + それでいい。今日は正解を知らない状態で描いてもらう時間。 +・【重要】仕様とハンズオンを1枚にしてある。描いているあいだ、 + このスライドを出したままにできる。仕様を見ながら描けるので、 + 「なんだっけ」で手が止まらない。 +・【重要】ここは「教える前に解かせる」設計。教育研究では + productive failure / pretesting effect と呼ばれていて、 + 先に自分でやってから教わるほうが、教わってからやるより + 概念の理解が深くなる。初学者ほど効果が大きい。 +・【重要】そのかわり、直後に必ず答え合わせをする(次の3枚)。 + やりっぱなしにすると効果が消える。フィードバックは即時が条件。 +・失敗させるのが目的なので、うまく描けなくても絶対に責めない。 + 「できなくて大丈夫」「当てません」は口で言う。 +・4行を読み上げるだけにする。ここで抽出の話はまだしない。 +・この仕様カード(左に線が入った形)は今日何度も出てくる。 + 同じ形で出すことで「またここに戻ってきた」が伝わる。 +・聞かれたら:消す機能は今回入れていません。仕様にないものは作りません。 +・机を回って何人かの絵を見ておく。次のスライドで + 「たぶんこうなりましたよね」と言うための材料にする。 + ボタンを並べた人が多いはず。そこを拾う。 +・時間がないときは3分でもよい。ただし0分にはしない。 + ここを削ると、このあとの比較が全部他人事になる。 + +--- + +## 11. 機能から**直接**UIを作ると
使いにくい + +【2分】ハンズオン①の受け止め。結論だけ言って、 +理由はこのあとの3枚で1つずつ確かめる。 + +<台本> +みなさんの絵を見せてもらいました。だいたいこうなっていましたよね。 +一覧を見る、名前と数を見る、借りる、返す。仕様の4つがそのままボタンになる。 + +素直な作り方です。間違いではありません。私も最初はこう描きました。 +ただ、この画面で実際に使ってみると、困ることが出てきます。 +このあと、ひとつずつ確かめます。 + +・【重要】ここで学生の絵を否定しない。責めるのは「機能から直接作る + という作り方」であって、描いた人ではない。「間違いではありません」 + 「私も最初はこう描きました」を必ず口で言う。 + ここで否定すると、次から手が動かなくなる。 +・【重要】理由はここでは言わない。スライドにも書いていない。 + 次の3枚が答え合わせになっている: + 次のスライド → 完了までタップが2回かかる + 3枚あと → ほぼ同じ画面を5枚も作ることになる + 先に結論だけ置いて、根拠は自分で数えてもらう順にしてある。 +・実際に何人かの絵を指して「これもそうですね」と拾えるとなおよい。 +・仕様の4行とボタンが1対1になっていることを指で示す。 + 自分の絵と見比べてもらう。 + +--- + +## 12. ボタンを並べると**2タップ必要** + +【1.5分】自分の絵の問題点に気づいてもらう。 + +<台本> +では、この画面で「タブレット」を借りてみます。 + +まず「借りる」を押す。これが1回目。 +すると備品の一覧が出てきます。ここからタブレットを選ぶ。これが2回目。 +押したのは2回。あいだに画面が1つ挟まりました。 + +自分の絵でも同じことをやってみてください。何回押しますか。 + +・【重要】黒い丸の数がタップの数。1と2を指でさして数える。 + 「1、2。2回ですね」と声に出すと伝わる。 +・【重要】右の画面が「一覧が出る」。ここが次の「画面5枚」に効く。 + 借りるときも一覧、返すときも一覧、と同じ画面が増えていく。 +・自分の絵で数えてもらうのが効く。手を動かした人だけの体験になる。 +・ここでもまだ「悪い」とは言わない。「2回押す」と数だけ言う。 +・図は2画面だが、押した結果チェックが付く画面はあえて描いていない。 + 次のスライドと画面数を揃えて、バッジの数だけを見比べてもらう。 + +--- + +## 13. 備品を並べると**1タップ** + +【2分】もう1つの作り方を見せる。画面が1枚で済むことも見せる。 + +<台本> +別の作り方を見てください。 +ボタンではなく、備品そのものを並べました。 + +同じことをやってみます。タブレットの行のチェックを押す。以上です。 +黒い丸は1つだけ。さっきは2回押していたものが、1回で終わりました。 + +しかも画面はこの1枚だけです。さっきは押したあとに一覧が出てきました。 + +もうひとつ見てください。チェックは貸出中の印です。 +だからもう一度押せば、それが返却になります。 +仕様では別々だった「借りる」と「返す」が、 +同じ場所を押すだけで済んでいます。 + +・【重要】前のスライドは画面が2枚、こちらは1枚。 + 行き来しながら「丸が2つ」「丸が1つ」と見比べてもらうとよい。 + 画面の枚数もちがうことに、ここで気づく人がいる。 +・【重要】仕様の4つが、この1枚に全部入っている。 + 備品の一覧を見る → 一覧そのもの + 借りる → チェックを付ける(黒丸1のところ) + 返す → 同じチェックを外す + 名前と数を見る → 行の右の「>」を押すと詳細 + やり方Aは仕様4つのためにボタンが4つ必要だったのに、 + こちらは借りると返すが1か所で済んでいる。ここを必ず指摘する。 +・行の右の「>」を押すと備品の詳細が開く。詳細ビューは3.2で出てくるので、 + 聞かれたら「次の章で出てきます」と答える。 +・ここでは押す回数の話だけにする。画面数は次のスライドで数える。 +・「こっちを描いた人いますか」と聞いてもよい。いたら必ず拾う。 + +--- + +## 14. 同じ画面を**何枚も作らずに済む** + +【2.5分】主眼のいちばん大事な1枚。数えられる形で差を見せる。 + +<台本> +2つを並べます。ちがいは手数だけではありません。 + +左を見てください。ボタンが4つあると、押した先の画面も4つ必要です。 +そして、そのうち3つは「ほぼ同じ備品の一覧」です。 +借りるときも一覧、返すときも一覧、見るときも一覧。同じ画面が3枚。 +全部で5枚の画面を作ることになります。 + +右は2枚です。一覧と詳細だけ。 + +ここで減っているのは、同じ画面の重複です。 +一覧が3枚あっても、中身はほとんど同じでした。 +その3枚が1枚になった、というだけの話です。 + +画面が少なければいい、という話ではありません。 +1枚に全部詰め込んだら、逆に使いにくくなります。 +同じものを何枚も作らなくて済む、というのがここでの得です。 +直す場所も1か所になります。 + +なぜこうなるのか。 +右は備品という「モノ」を先に置きました。モノは1種類しかないので、 +それを見せる画面も1枚で足ります。 +左はやることを先に置いたので、やることの数だけ画面が増えました。 + +・【重要】この「同じ画面がたくさんある」が主眼の説得力の中心。 + タップ数だけでは「1回か2回かの差ならそんなに大事?」で止まる。 +・【重要】「画面は少ないほどよい」と誤解させないこと。 + 1枚に詰め込めば画面数は減るが、使いにくくなる。 + ここで減っているのは重複であって、画面数そのものが目的ではない。 + 見出しを「使いやすいほど画面が減る」にしていたことがあるが、 + 一般化しすぎで、詰め込みを肯定して聞こえるので変えた。 +・【重要】「なぜモノ起点だと画面が減るのか」は、上の4行で口頭だけ言う。 + 以前はここに日常のたとえを1枚はさんでいた(コンビニのレジ、 + お店のメニュー表)。どちらも「たとえのほうが分かりにくい」となったので + 図はやめた。数の差を見せたこの1枚で足りている。 + たとえを足したくなったら、まずこの4行を言ってみて、 + それで足りないかを確かめてから。 +・自分の絵が何画面になったか数えてもらう。 +・左の3枚をあえて同じ形で描いてある。無駄が形で見えるようにするため。 + +--- + +## 15. 主役にした**備品**を
**オブジェクト**と呼ぶ + +【1.5分】今日の1語目。比べて納得したあとに名前を付ける。 + +<台本> +さっき、備品を主役にしたら画面が2枚で足りました。 +この備品のように、アプリの主役になるものに名前があります。 +オブジェクトといいます。 + +LINEならトーク。Amazonなら商品。備品貸出なら備品です。 +そのアプリで、ユーザーが扱う主役のことです。 + +第2章のまとめです。オブジェクトを決めてから、画面を作る。 +と言われても、まだピンと来ないと思います。次で確かめます。 + +・【重要】プログラミングのオブジェクト指向とは別の話、と必ず言う。 + クラスや継承の話は出さない。名前が似ているだけ。 +・今日覚えて帰る語は4つ。これが1語目。 + オブジェクト/属性/アクション/ビュー。 +・LINE・Amazonの例は口頭で足す。スライドには置かない(1枚1メッセージ)。 +・ここで手順の話に入らない。抽象的なままなので、 + 次の1枚でさっきの2画面に結びつけてから3ステップに進む。 + +--- + +## 16. **備品**を主役にしたから、
画面はこの2つになった + +【1.5分】抽象と具体をつなぐ1枚。3ステップに入る前の足場。 + +<台本> +「オブジェクトを決めてから画面を作る」。 +これ、実はさっきもうやっています。 + +主役を備品に決めましたよね。だから画面はこうなりました。 +備品が並ぶ一覧と、備品が1つだけ見える詳細。この2つです。 + +ボタンから考えると5画面になりました。 +でも備品から考えると、備品の見え方が2通りあるだけなので、2画面で済みます。 + +画面を先に考えるのではなく、主役を先に決める。 +そうすると、画面のほうが決まってくる。これが今日いちばん大事なところです。 + +・【重要】ここがないと「オブジェクトを決めてから画面を作る」が + 言葉のままで終わる。やり方Bの2画面と結びつけて、初めて意味が通る。 +・「もうやっている」と言うのが効く。新しいことではなく、 + さっき自分が見たものの言い換えだと分かる。 +・次の3ステップは、この流れを手順に分けただけだと予告する。 + +--- + +## 17. 3. UIデザインの流れ + +【1.5分】ここから26分。この図が今日の地図になる。 + +<台本> +オブジェクトから画面を作るには、この3ステップで進めます。 + +仕様から始めて、まず1番、オブジェクト抽出。 +仕様に出てくるモノを拾い出します。 +次に2番、ビューとナビゲーション。画面と、画面の行き来を決めます。 +最後に3番、レイアウト。どこに何を置くかを決めます。 + +大事なのは下の矢印です。1回で決まることはありません。 +行き来しながら決めていくものだと思ってください。 + +・この図はこのあと3回、小節の扉で出てくる。今どこにいるかを毎回示す。 +・「1回で完成させなくていい」と言うと、完璧を目指して固まる学生がほどける。 +・この章の最後にもう一度スケッチブックを使う、と予告しておく。 + +--- + +## 18. **ビュー**はモノが見える場所、
**アクション**はモノにできること + +【2分】第1章と第3章をつなぐ1枚。ここが今日の骨格。 + +<台本> +ステップの中身に入る前に、言葉を2つ出しておきます。 +今日いちばん大事な2語です。 + +ビューは、モノが見える場所です。備品が並んでいるところがビュー。 +アクションは、モノにできることです。借りる、返す、がアクション。 + +図を見てください。第1章で、画面の部品は2種類だと言いました。 +見せるものと、操作するもの。 +見せるものが集まったところが、ビューです。 +操作するものを押したときに起きることが、アクションです。 + +つまりこれからやるのは、こういうことです。 +まずオブジェクトを決めて、そのオブジェクトが見えるビューを作り、 +そこにアクションを置く。今日の話は全部これです。 + +・【重要】見出しを定義そのものにしてある。 + 「部品が集まるとビュー」だと部品と領域でレベルが1段ちがうので、 + 2語が何なのかが伝わらなかった。 + 「モノが見える場所」「モノにできること」なら1行で像が結ぶ。 +・【重要】この1枚がないと、第1章が「前置き」で終わる。 + 「見せる/操作する」がそのまま「ビュー/アクション」になると示すことで、 + 第1章から第3章までが1本の線になる。 +・ここで用語を3つ並べておく(オブジェクト/ビュー/アクション)。 + 属性はこのあと出す。 +・話が迷子になったら、この1枚に戻ってくればよい。 + 黒板やホワイトボードがあれば、この2語だけ書いて残しておくとよい。 + +--- + +## 19. 3.1 モノを決める + +【1分】1つめのステップ。 + +<台本> +1番、モノを決めます。 +仕様の中からオブジェクトを拾い出して、書き出す作業です。 + +実務ではこれを「オブジェクト抽出」と呼びます。 +抽出という言葉は硬いですが、やることは拾い出すだけです。 + +・【重要】ステップ名は日常語(モノを決める)にしてある。 + 実務の呼び方(オブジェクト抽出)は図の下と口頭で添えるだけ。 + 専門語を見出しにすると、何をするステップなのかが伝わらない。 +・【重要】「抽出」は初学者に急に出すと止まる語。必ず「拾い出す」と言い直す。 +・聞かれたら:UMLのクラス図を知っている人は、あのイメージで合っています。 + ただ知らなくても困りません。スライドには書かない。 + +--- + +## 20. モノには**情報**があり、
**できること**がある + +【2分】今日の2語目と3語目。次の手順の3つめで使うので、先に出す。 + +<台本> +モノを1つ思い浮かべてください。たとえば備品です。 +備品には2つのものがあります。 + +1つは情報です。タイトルとか、終わったかどうか。 +これを属性といいます。 + +もう1つはできることです。作る、書きかえる。 +これがアクションです。さっき出した言葉と同じものです。 + +この2つを覚えておいてください。次のスライドで使います。 + +・【重要】この2語を先に出しておかないと、次の「手順は3つ」の + 3つめ(属性とアクションに分ける)が言葉だけになって伝わらない。 + もとは手順のあとに置いていたが、それでは手順が読めなかった。 +・「アクション」は少し前のスライド(ビューとアクション)で出した語。 + 同じものだと分かるように「さっきの」と言う。 +・属性は、世の中の記事や本では「プロパティ」と呼ばれることが多い。 + Figmaでもこの呼び方をする。聞かれたら同じものだと答える。 +・Deno KV との橋:属性は、KVに入れる値そのもの。 + set するときに何を入れるかを決める作業が、属性を決める作業。 + +--- + +## 21. モノを拾い出す手順は3つ + +【1.5分】演習の足場。この3つがこのあとの実演の骨。 + +<台本> +拾い出す手順は3つです。 + +1つめ、仕様の名詞に線を引きます。名詞はモノの候補です。 +2つめ、同じ名詞をまとめます。備品が4回出てきたら、それは1つの備品です。 +3つめ、まとめたモノの中を、さっきの属性とアクションに振り分けます。 + +・実務ではもっと細かい工程(粒度を揃える)があるが、今日は3段に圧縮している。 +・図にせず文字だけにしてある。属性とアクションは前のスライドで + 説明したばかりなので、ここは3行を読み上げるだけでよい。 +・このあと次の1枚で①②を実演し、③は2枚あとで実演する。 + +--- + +## 22. 名詞に線を引くと、
**備品**だけが残る + +【1.5分】手順①②の実演。講師が実際にやってみせる。 + +<台本> +では実際にやってみます。仕様の4行に線を引いていきます。 + +1行目「備品の一覧を見る」。名詞は備品。線を引きます。 +動詞は「見る」。丸で囲みます。 +2行目、名詞は備品、それと名前と数。動詞は「見る」。 +3行目、名詞は備品。動詞は「借りる」。 +4行目も名詞は備品。動詞は「返す」。 + +線を引いたところを見てください。備品が4回出てきます。 +でも全部同じ備品です。だからまとめると1つ。 +仕様が4行あるのに、モノは1つしかありませんでした。これが手順の2つめです。 + +丸をつけた動詞は、このあとアクションになります。 +線を引いた「名前」「数」は、属性になります。 + +・【重要】口だけで済ませず、画面を指しながら1行ずつなぞる。 +・オブジェクトが1つしかないことに驚く学生がいる。それが正しい反応。 +・ここではまだ「見るはアクションにしない」を言わない。 + アクションの説明が2枚あとなので、先に言うと浮く。 + +--- + +## 23. 仕様に出てくる**名詞**を
書き出してみよう + +【1.5分】手を動かして覚える。実演を見た直後にやる。 + +<台本> +いま私がやったことを、自分でもやってみてください。 +さっきの仕様に出てくる名詞を、スケッチブックに書き出します。 +仕様は書き写さなくていいです。名詞だけ書いてください。1分とります。 + +(1分待つ。手が止まっている人には「モノの名前です」と1回だけ言う) + +何が出ましたか。備品、名前、数。このあたりですね。 +「一覧」を書いた人、いますか。それは正しい反応です。 +ただ、一覧はモノではなくて、モノが並んでいる場所です。 +それはこのあと3.2で出てきます。 + +・【重要】実演を見た直後にやる。見ているだけでは手が動かない。 + ここで1分使うと、このあとのハンズオン③で詰まる人が減る。 +・【重要】「一覧」を書く学生が必ず出る。絶対に否定しない。 + 一覧はこのあとビューになるので、「次で出てきます」と受けて伏線にする。 + ここで正解/不正解にすると、次から手が止まる。 +・書くのは名詞だけ。仕様の書き写しはさせない。時間がもったいない。 +・仕様はスライドに出したままにできないので(このスライドを出すため)、 + 口頭でもう一度読み上げる。一覧を見る、名前と数を見る、借りる、返す。 +・答え合わせは口頭で30秒。次のスライドのアクションの話に自然につながる。 + +--- + +## 24. アクションは
**つくる・かえる・けす** + +【2分】アクションの中身。「見る」を外す理由をここで回収する。 + +<台本> +アクションは、基本的にこの3つです。つくる、かえる、けす。 +英語だとCreate、Update、Delete。まとめてCRUDと呼ばれます。 +この英語は覚えなくていいです。名前があることだけ知っておいてください。 + +ここでひとつ。「見る」はアクションに入れません。 +仕様には「備品の一覧を見る」とあるのに、なぜでしょうか。 + +さっきみなさんが描いた「見る」ボタンを押したら、何が起きますか。 +一覧が出るだけです。何も変わりません。 +押した先にあるのは画面、つまりビューです。 +だからこれはアクションではなく、ビューのほうなんです。 + +・【重要】ここで右の図の「見る」ボタンを実際に指す。 + 自分が描いた絵にも「見る」ボタンがあるはずなので、そこを指してもらう。 +・「見る=ビュー」と言えるのは、2枚前で橋を架けたから。 + 橋がないとこの説明は「なんとなく」で終わる。 +・Deno KV との橋:set が つくる・かえる、delete が けす にほぼ対応する。 + get と list は画面を出すためのもの。 + +--- + +## 25. 備品は、属性3つと
アクション2つを持つ + +【1.5分】手順3。3ステップ全部の入力になる図。 + +<台本> +最後に振り分けます。 + +属性。備品が持っている情報は、名前、数、 +それと借りているかどうか。この3つです。 + +アクション。借りると、返す。この2つです。 +どちらも既にある備品の状態を書きかえているので、Updateですね。 + +ここで気づいた人はいますか。 +今回、つくる(Create)とけす(Delete)がありません。 + +備品を増やしたり消したりするのは、先生の仕事です。 +借りる側にはできません。だから仕様に書いていない。 +仕様にないものは、作らない。ここは徹底してください。 + +これで右の図ができました。備品というオブジェクトが、 +属性3つとアクション2つを持っている。1番のステップは、これで終わりです。 + +・この図はこのあと2回出てくる(ハンズオン③の入力と、最後のまとめ)。 +・【重要】CreateとDeleteがないことを、必ず口に出す。 + 「3つ習ったのに2つしかない」と不安になる学生がいるので、 + 仕様にないから作らないのだと言い切る。 + ここは今日いちばん実務に効く話。作らなくていいものを作らない。 +・「借りる」と「返す」が同じUpdateになるところで手が止まる人がいる。 + どちらも既にある備品の状態を変えている、と言えば通る。 +・聞かれたら:先生が使う管理アプリなら、そこにはCreateとDeleteがある。 + 誰が使うアプリなのかで、アクションは変わる。 + +--- + +## 26. 3.2 画面を決める + +【1分】2つめのステップ。 + +<台本> +2番です。画面を決めます。 + +さっき出した言葉を使います。 +モノが見える場所がビュー。その行き来がナビゲーションです。 + +ビューは画面まるごとのこともありますし、画面の一部のこともあります。 + +・【重要】ステップ名は日常語(画面を決める)にしてある。 + ビューとナビゲーションは、その中身を指す言葉として括弧で添える。 +・【重要】ビューは「画面」と言い切らない。「見える場所」にしておく。 + 画面と言い切ると、あとの「複数のビューを1つにまとめる」が + 「複数の画面を1つにする?」になって意味が通らなくなる。 + ステップ名だけは分かりやすさを取って「画面を決める」にしてある。 +・「画面には2種類ある」という断定もしない。 + ログイン画面や設定画面を思い浮かべた学生がその場で反例を見つけてしまう。 +・HTML/CSS との橋:ビューはHTMLで作る領域そのもの。 + +--- + +## 27. ビューは「**一覧**」と
「**詳細**」の2種類 + +【1.5分】ビューの型。2つを並べて対比で見せる。 + +<台本> +ビューには型があります。大きく2つです。 + +左がコレクションビュー。同じオブジェクトを複数ならべたものです。 +LINEのトーク一覧、Amazonの商品一覧。備品貸出なら備品が並んだ一覧です。 +大事なのは「同じオブジェクトが」という部分です。 +なんでも並べれば一覧、ではありません。並んでいるのは全部備品です。 + +右がシングルビュー。1つのオブジェクトの中身を見せるものです。 +LINEでトークを1つ開いた画面、Amazonで商品を1つ開いたページ。 +さっき決めた属性が、ここに出てきます。名前、数。 +属性が見える場所がシングルビューです。 + +・「同じオブジェクトを複数」を落とさない。ここを落とすと + 抽出したオブジェクトとビューの対応が切れる。 +・属性とシングルビューが繋がることを言う。抽出が無駄ではなかったと分かる。 +・この2つで全部の画面を説明しようとしない。型が2つある、で止める。 + +--- + +## 28. アクションは、そのモノが
見えている**ビュー**に置く + +【1.5分】アクションをどこに置くかの原則。理由を与える唯一の場所。 + +<台本> +ビューが決まったら、アクションをどこに置くかです。 +原則は1つ。そのモノが見えている画面に置く。 + +一覧を見てください。備品が並んでいます。 +どの行も、どの備品なのかが見えています。 +だから、借りるボタンを一覧に置けます。返すも同じです。 + +詳細を見てください。こちらも備品が1つ見えています。 +だから、同じ借りるボタンをここにも置けます。 + +逆に、備品が見えていない画面に借りるボタンがあったらどうなるか。 +何を借りるのか分からないので、押したあとに一覧を出すしかありません。 +それが、さっきの2タップでした。 + +左の一覧のチェックボックス。あれが「押すだけで終わる」やり方の正体です。 +一覧に備品が見えているから、そこにアクションを置けたわけです。 + +・【重要】ここで やり方B の1タップを回収する。主眼が原則に繋がる瞬間。 +・【重要】この図には つくる・けす を描いていない。仕様にないから。 + 24枚目で3つ習ったのに2つしか出てこないことと揃えてある。 + 以前の図には「+」とゴミ箱があったが、仕様と矛盾するので外した。 +・暗記させない。「見えているか」だけ考えれば毎回導ける、と伝える。 +・「見えていないとどうなるか」を必ず言う。原則の裏返しを示すと、 + なぜその原則なのかが腑に落ちる。 + +--- + +## 29. ナビゲーションは
ビュー同士の行き来 + +【1.5分】ビュー同士のつなぎ。備品の具体で見せる。 + +<台本> +ビューが決まったら、次は行き来です。 +どのビューからどのビューに行けるか。これをナビゲーションといいます。 + +備品貸出アプリで見てみます。ビューは2つ、一覧と詳細。 +一覧から備品を1つ選ぶと詳細に行く。詳細から戻ると一覧に戻る。 +これが備品貸出アプリのナビゲーションです。 + +チームで作るアプリはオブジェクトがもっと増えます。 +そのときは、まず行き来を全部書き出してから、要らないものを削ります。 +足りないものを思いつくより、目の前にあるものを消すほうが簡単だからです。 + +これで2番のステップも終わりです。ビューが2つ、行き来が1本。 + +・抽象の定義だけの1枚を作らない。必ず備品の図と同時に出す。 +・「呼び出し関係」という硬い言い方はしない。行き来で通す。 +・「全部書き出してから削る」は理由とセットで1行だけ言う。 + この備品貸出アプリでは実演しない(オブジェクトが1つしかないため)。 + +--- + +## 30. 3.3 ならべ方を決める + +【1分】3つめのステップ。 + +<台本> +最後、3番です。ならべ方を決めます。実務ではレイアウトと呼びます。 +ビューの中に、何をどこに置くかを決めます。 + +描くものをワイヤーフレームといいます。 +色も、影も、フォントもつけません。四角と線だけで、置き場所だけを描く図です。 +まさに、さっきスケッチブックに描いてもらったものです。 + +ビューの数だけ描きます。備品貸出アプリならビューは2つなので、2枚です。 + +・【重要】未経験者がいちばん分からない語。定義を1文で置くだけなので削らない。 +・「みなさんがもう描いているものです」と言うと、 + ハンズオン①がここで意味を持つ。難しいものではないと伝わる。 + +--- + +## 31. 画面のならべ方には、
決まった型がある + +【1分】レイアウトの型。ハンズオン②の直前に見せておく。 + +<台本> +置き方には型があります。ゼロから考えなくていいです。 + +一覧のならべ方は、だいたいこの3つ。上から下に並べるリスト、 +格子状のグリッド、地図の上に置くマッピング。備品ならリストが素直です。 + +詳細のほうも3つ。属性とアクションだけ置くもの、 +関連する別のオブジェクトを少し見せるもの、それを一覧で見せるもの。 +今日の備品貸出は1つめです。 + +もう1つ大事なルール。アクションは、そのオブジェクトの近くに置いてください。 +一覧の下に「削除」ボタンが1つだけあったら、どれが消えるか分かりません。 + +・この2枚は Material Design が元ネタ。第4章のデザインシステムで繋げる。 +・「アクションは近くに」はここで1文だけ言う。前の原則の続き。 +・既存アプリを真似ていい、と言っておく。ここで発明しなくていい。 + +--- + +## 32. 3ステップで、
描き直してみよう + +【6分】今日の山場。学んだ手順を通しで使う。 + +<台本> +では、もう一度描いてもらいます。同じ備品貸出アプリです。 +さっきのページは消さずに、新しいページに描いてください。あとで比べます。 + +手順は3つでしたね。 +1番、オブジェクトを拾い出す。備品でしたね。属性とアクションも出ています。 +2番、ビューを決める。一覧と詳細の2つでしたね。行き来は1本。 +3番、その2つのレイアウトを描く。アクションを、モノの近くに置く。 + +6分とります。詰まったら手を挙げてください。 + +・【重要】ここで初めて、3ステップを通しで使う。 + 部分ごとの演習より、通しでやるほうが実際の場面に持っていける。 +・答えは既に全部スライドに出ている(オブジェクト図・ビュー・型)。 + 思い出せない学生のために、前のスライドに戻れるようにしておく。 +・机を回る。手が止まっている人には「一覧と詳細の2枚です」と言えばよい。 +・【重要】最初の絵を消させない。次のスライドで自分のビフォーアフターを + 見比べてもらうのが、この講義でいちばん記憶に残る瞬間になる。 +・時間がないときは4分でもよい。ここを削ると講義の出口がなくなる。 + +--- + +## 33. 答え: 備品貸出アプリの
レイアウト + +【1.5分】ハンズオン②の答え合わせ。今日の出口。 + +<台本> +答えです。左が一覧、右が詳細。2画面できました。 + +一覧には備品が並んでいて、ボタンを押せば借りられます。 +詳細には名前と数が出ていて、ここからも借りられます。 + +最初に描いた絵と見比べてみてください。 +画面の数が減っていませんか。ボタンが減っていませんか。 +1時間前の自分より、確実に使いやすいものが描けています。 + +みなさんの図と形が違っても大丈夫です。 +置き場所の理由が言えれば正解です。 + +・【重要】ビフォーアフターを必ず見比べさせる。ここが今日の成果。 + 「自分で描いたものが変わった」という体験が、知識を使うものに変える。 +・「形が違っても、理由が言えれば正解」を必ず言う。 + 1つの正解を当てる練習ではない。 +・何人かに見せてもらえると場が締まる。ただし指名はしない。 + +--- + +## 34. 見た目は、この**4つ**で
だいぶよくなる + +【1.5分】ここから3分。第1章で予告したところ。 + +<台本> +最後の章です。冒頭で言ったとおり、ここは3分だけやります。 + +見た目を整えるのはビジュアルデザインの仕事です。 +難しそうに見えますが、センスの話ではありません。 +知られている原則が4つあって、それを守るだけでだいぶよくなります。 + +近接。関係のあるものを近づけて、関係ないものは離す。 +さっきの「アクションはモノの近くに」も、実はこれです。 + +整列。端をそろえる。左端がそろっているだけで整って見えます。 + +反復。同じ意味のものは、同じ見た目にする。 +ボタンの形が場所ごとに違うと、それだけで読みにくくなります。 + +コントラスト。大事なものとそうでないものの差を、はっきりつける。 +見出しと本文が同じ大きさだと、どこが大事か分かりません。 + +この4つは『ノンデザイナーズ・デザインブック』という本のものです。 + +・第1章で「あとでやります」と予告したことを回収する。 +・「センスの話ではない」と言い切る。「ただ、難しい」で終わらせない。 +・【重要】近接は「アクションはオブジェクトの近くに」と同じだと繋げる。 + 今日話したことが、実は原則の1つだったと分かる。 +・章扉は作っていない。第4章は3分しかないので、扉に1枚使わない。 + +--- + +## 35. 見た目は、発明しない。真似る + +【1.5分】第4章の締め。許可を渡して閉じる。 + +<台本> +見た目は発明しなくていいです。 +作ろうとしているものに似たアプリを開いて、同じように置いてください。 + +最初から完璧なものを作ろうとすると、たいてい完成しません。 +真似て、動かして、あとから直す。それで十分です。 + +・「真似ていい」を許可として渡す。ここで安心させて終わる。 +・デザインシステム(デジタル庁 / Material Design / HIG)はスライドから外した。 + 定義していない語を出したうえに固有名詞が3つ並ぶだけになり、 + 3分の章では回収できないため。3つとも出典スライドに載せてある。 +・興味がある人には、最後の出典ページを指して + 「レイアウトの型の図は Material Design のものです」と一言添えればよい。 + +--- + +## 36. まとめ + +【1.5分】この1枚で今日の全部が読めるようにしてある。 + +<台本> +今日やったことを1枚にまとめました。 + +仕様から始めて、1番でオブジェクトを拾い出す。備品が1つ出てきました。 +2番でビューと行き来を決める。一覧と詳細の2つになりました。 +3番でレイアウトを描く。2画面の骨組みができました。 + +ぜんぶ通して、やっていたことは1つです。オブジェクトから考える。 +機能を並べるのではなく、モノを主役にする。それだけです。 + +・あとで見返す学生の入口になる1枚。ここは急がない。 +・第2章の結論に戻って閉じる。今日の主眼はこれ1つだった、と示す。 + +--- + +## 37. 明日から、自分のチームの
アプリでやる + +【1分】この講義を「知識」から「使うもの」に変える1枚。 + +<台本> +このあと、チームでアプリを作り始めます。 +そこで必ず「どんな画面にする?」という話になります。 + +そのとき、いきなり画面を描き始めないでください。 +まず、作りたいものを文にして、その名詞に線を引いてください。 +出てきたモノが、画面の主役になります。 + +それだけで、必要な画面がだいたい決まります。 +今日と同じことを、自分たちのアプリでやるだけです。 + +・直後がチーム開発の講義。ここで橋を渡す。 +・持ち帰る問いを1つ渡す:自分のチームのアプリの主役は何になりそうか。 +・スケッチブックは持ち帰ってもらう。チームで描くときに使える。 + +--- + +## 38. 出典・もっと知りたくなったら + +【0.5分】 + +<台本> +出典です。今日の話の中核は1つめの『オブジェクト指向UIデザイン』です。 +オブジェクトから考える、という話はこの本のものです。 + +もっと知りたくなったら、まずこれを読んでください。 + +・どこで使ったかを添えてある。5件を並べるだけにしない。 +・「もっと知りたくなったら」の導線として1冊だけ名指しする。 + +--- + diff --git a/design/imgs/fig-action-place.svg b/design/imgs/fig-action-place.svg new file mode 100644 index 00000000..51adcc4c --- /dev/null +++ b/design/imgs/fig-action-place.svg @@ -0,0 +1,66 @@ + + + + + コレクションビュー + + + 備品の一覧 + + + + + + + + + 返す + + + + + + + + 借りる + + + + + + + + + 借りる + + + + 借りる + 返す + + + シングルビュー + + + 備品の詳細 + + + + + + + + + + 借りる + + + 借りる + + + どちらも備品が見えているから、どちらにも置ける + diff --git a/design/imgs/fig-answer.svg b/design/imgs/fig-answer.svg new file mode 100644 index 00000000..f3e8351e --- /dev/null +++ b/design/imgs/fig-answer.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + 備品の一覧 + + + + + + + + + + 返す + + + + + + + + + 借りる + + + + + + + + + + 借りる + + + + + + + + 備品の詳細 + + + + + + + 名前 + + + + + + 借りる + diff --git a/design/imgs/fig-bridge.svg b/design/imgs/fig-bridge.svg new file mode 100644 index 00000000..c85e08ff --- /dev/null +++ b/design/imgs/fig-bridge.svg @@ -0,0 +1,24 @@ + + + + + + + + 画面の部品 + 今日つかう言葉 + + + 見せるもの + が集まると + + ビュー + モノが見えているところ + + + 操作するもの + がすることが + + アクション + モノにできること + diff --git a/design/imgs/fig-collection.svg b/design/imgs/fig-collection.svg new file mode 100644 index 00000000..2b4f8976 --- /dev/null +++ b/design/imgs/fig-collection.svg @@ -0,0 +1,40 @@ + + + + + 備品の一覧 + + + + + + + + + + 返す + + + + + + + + + + 借りる + + + + + + + + + + + 借りる + + 同じ備品が、並んでいる + diff --git a/design/imgs/fig-compare.svg b/design/imgs/fig-compare.svg new file mode 100644 index 00000000..f3be7c46 --- /dev/null +++ b/design/imgs/fig-compare.svg @@ -0,0 +1,99 @@ + + + + + + + + + + + やり方A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 一覧 + 詳細 + 一覧 + 一覧 + 同じ一覧が3枚も要る + + タップ + 2回 + 画面 + 5枚 + + + やり方B + + + + + + + + + + + + + + + + + + + + + + + + + 一覧 + 詳細 + 画面はこの2枚だけ + + タップ + 1回 + 画面 + 2枚 + diff --git a/design/imgs/fig-extract-demo.svg b/design/imgs/fig-extract-demo.svg new file mode 100644 index 00000000..bd359289 --- /dev/null +++ b/design/imgs/fig-extract-demo.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + 備品 + の一覧を + 見る + + + + 備品 + + 名前 + + + + 見る + + + + + + 備品 + + 借りる + + + + 借りた + 備品 + + 返す + + diff --git a/design/imgs/fig-flow-step1.svg b/design/imgs/fig-flow-step1.svg new file mode 100644 index 00000000..20300ac9 --- /dev/null +++ b/design/imgs/fig-flow-step1.svg @@ -0,0 +1,32 @@ + + + + + + + + + + 仕様 + + + + + 1 + モノを決める + オブジェクト抽出 + + + + + 2 + 画面を決める + ビュー・ナビゲーション + + + + + 3 + ならべ方を決める + レイアウト + diff --git a/design/imgs/fig-flow-step2.svg b/design/imgs/fig-flow-step2.svg new file mode 100644 index 00000000..234ed230 --- /dev/null +++ b/design/imgs/fig-flow-step2.svg @@ -0,0 +1,32 @@ + + + + + + + + + + 仕様 + + + + + 1 + モノを決める + オブジェクト抽出 + + + + + 2 + 画面を決める + ビュー・ナビゲーション + + + + + 3 + ならべ方を決める + レイアウト + diff --git a/design/imgs/fig-flow-step3.svg b/design/imgs/fig-flow-step3.svg new file mode 100644 index 00000000..d4e0a1a3 --- /dev/null +++ b/design/imgs/fig-flow-step3.svg @@ -0,0 +1,32 @@ + + + + + + + + + + 仕様 + + + + + 1 + モノを決める + オブジェクト抽出 + + + + + 2 + 画面を決める + ビュー・ナビゲーション + + + + + 3 + ならべ方を決める + レイアウト + diff --git a/design/imgs/fig-flow.svg b/design/imgs/fig-flow.svg new file mode 100644 index 00000000..3c088375 --- /dev/null +++ b/design/imgs/fig-flow.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + 仕様 + + + + + + 1 + モノを決める + オブジェクト抽出 + + + + + + 2 + 画面を決める + ビュー・ナビゲーション + + + + + + 3 + ならべ方を決める + レイアウト + + + + 行き来しながら決めていく + diff --git a/design/imgs/fig-interface.svg b/design/imgs/fig-interface.svg new file mode 100644 index 00000000..98ad32c1 --- /dev/null +++ b/design/imgs/fig-interface.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + ユーザー + + + + + + UI + + + + + + + + + + + + + + サービス + diff --git a/design/imgs/fig-item-navigation.svg b/design/imgs/fig-item-navigation.svg new file mode 100644 index 00000000..7b2abc19 --- /dev/null +++ b/design/imgs/fig-item-navigation.svg @@ -0,0 +1,19 @@ + + + + + + + + + + 備品のコレクション + 備品が並ぶ一覧 + + + 行き来する + + + 備品のシングル + 名前と数を見る + diff --git a/design/imgs/fig-item-object.svg b/design/imgs/fig-item-object.svg new file mode 100644 index 00000000..6a923812 --- /dev/null +++ b/design/imgs/fig-item-object.svg @@ -0,0 +1,24 @@ + + + + + + + 備品 + + + 属性 + 名前 + + 借りているか + + + + + アクション + 借りる + 返す + + + diff --git a/design/imgs/fig-layout-list.svg b/design/imgs/fig-layout-list.svg new file mode 100644 index 00000000..9d2d1441 --- /dev/null +++ b/design/imgs/fig-layout-list.svg @@ -0,0 +1,32 @@ + + + + + + + + + + リスト + 上から下に並べる + + + + + + + + グリッド + 格子状に並べる + + + + + + + + + マッピング + 地図の上に置く + diff --git a/design/imgs/fig-layout-single.svg b/design/imgs/fig-layout-single.svg new file mode 100644 index 00000000..3056c650 --- /dev/null +++ b/design/imgs/fig-layout-single.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + 属性だけ + 中身とアクション + + + + + + + + + + + + 関連を少し + 別のモノを添える + + + + + + + + + + + 関連を一覧で + 別のモノを並べる + diff --git a/design/imgs/fig-object-to-screen.svg b/design/imgs/fig-object-to-screen.svg new file mode 100644 index 00000000..242b6b83 --- /dev/null +++ b/design/imgs/fig-object-to-screen.svg @@ -0,0 +1,62 @@ + + + + + + + + + + 主役に決めたモノ + + 備品 + + + + + できあがる画面 + + + + + + + + + + + + + + + + + + + + + + + + + + 備品の一覧 + + + + + + + + + + + + + + + 借りる + + 備品の詳細 + diff --git a/design/imgs/fig-single.svg b/design/imgs/fig-single.svg new file mode 100644 index 00000000..ff9c6c56 --- /dev/null +++ b/design/imgs/fig-single.svg @@ -0,0 +1,24 @@ + + + + + 備品の詳細 + + + + + + + + 名前 + ノートPC + + + 3台 + + + + 借りる + + 備品が、1つだけ見える + diff --git a/design/imgs/fig-summary.svg b/design/imgs/fig-summary.svg new file mode 100644 index 00000000..e0b0a761 --- /dev/null +++ b/design/imgs/fig-summary.svg @@ -0,0 +1,78 @@ + + + + + + + + + 仕様 + + + 1 + モノを決める + + + 2 + 画面を決める + + + 3 + ならべ方を決める + + + + + + + + + + + + + + 備品 + + + + + + + + + + + + + + + + + 一覧 + + + + + + + + 詳細 + + + + + + + + + + + + + + + + + オブジェクトから考える + diff --git a/design/imgs/fig-tap-a.svg b/design/imgs/fig-tap-a.svg new file mode 100644 index 00000000..c36c8fa8 --- /dev/null +++ b/design/imgs/fig-tap-a.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + 備品貸出システム + + + 一覧 + + + 備品情報 + + + + 貸出 + + + 返却 + + + + + 1 + + + 押すと + + + + + + 貸出 + + 貸し出す備品を選んでください + + + + + + + + + + + + ノートPC + 3台 + + + + タブレット + 5台 + + + + + スピーカー + 1台 + + + + + 延長コード + 4本 + + + + + 2 + + + まだ借りられない + ここでやっと借りられる + diff --git a/design/imgs/fig-tap-b.svg b/design/imgs/fig-tap-b.svg new file mode 100644 index 00000000..c83fddff --- /dev/null +++ b/design/imgs/fig-tap-b.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + 備品貸出システム + + + + + + + ノートPC + 3台あり + + + 1 + + + + + + + + + + タブレット + 5台あり + + + 0 + + + + + + + + + + + スピーカー + 1台あり + + + 0 + + + + + + + + + + 延長コード + 4本あり + + + 0 + + + + + + + + 借りる + + + + + 1 + diff --git a/design/imgs/fig-ui-vs-visual.svg b/design/imgs/fig-ui-vs-visual.svg new file mode 100644 index 00000000..deab34b3 --- /dev/null +++ b/design/imgs/fig-ui-vs-visual.svg @@ -0,0 +1,40 @@ + + + + + + + + + UIデザイン + 何を、どこに置くか + + + + + + + + + 今日のメインはこっち + + + 見た目をつける + + + + ビジュアルデザイン + どんな見た目にするか + + + + + + + + + + + + 最後に少し触れます + diff --git a/design/imgs/fig-ui.svg b/design/imgs/fig-ui.svg new file mode 100644 index 00000000..c40b65cc --- /dev/null +++ b/design/imgs/fig-ui.svg @@ -0,0 +1,42 @@ + + + + + 見せるもの + + + + + 文字 + + + + + リスト + + + + + 画像 + + + 操作するもの + + + + ボタン + + + + チェック + + + + + 入力欄 + + + この2つを、どこに置くか決める + diff --git a/design/imgs/fig-way-a.svg b/design/imgs/fig-way-a.svg new file mode 100644 index 00000000..76665ab4 --- /dev/null +++ b/design/imgs/fig-way-a.svg @@ -0,0 +1,29 @@ + + + + + + + 備品貸出システム + + メニューを選んでください + + + + 一覧 + + + + 備品情報 + + + + 貸出 + + + + 返却 + diff --git a/design/slide.md b/design/slide.md index cdf9e029..721cce26 100644 --- a/design/slide.md +++ b/design/slide.md @@ -2,15 +2,252 @@ marp: true theme: uncover paginate: true +style: | + /* 見出しは2行になっても、行の長さが揃うようにする */ + section h1, + section h2 { + letter-spacing: 1px; + line-height: 1.25; + text-wrap: balance; + } + + section li { + line-height: 1.5; + } + + /* 見出しと本文、図のまわりの余白をそろえる */ + section h2 { + margin: 0 0 0.5em; + } + + section p:has(img) { + margin: 0.5em 0 0; + } + + /* 箇条書きは内容の幅で中央に置き、見出しと中心をそろえる */ + section ul, + section ol { + display: table; + margin: 0 auto 0.3em; + } + + /* ヘッダーがあるスライドは、上に余白を足して見出しとぶつからないようにする */ + section[data-header] { + padding-top: 76px; + } + + /* 箇条書きの点を、見出しと同じアクセントカラーの四角にする */ + section ul { + list-style: none; + padding-left: 0; + } + + section ul > li { + padding-left: 1.1em; + position: relative; + } + + section ul > li::before { + background: var(--color-highlight-heading); + border-radius: 3px; + content: ""; + height: 0.36em; + left: 0; + position: absolute; + top: 0.6em; + width: 0.36em; + } + + /* 番号は、丸バッジにして順序を目立たせる */ + section ol { + counter-reset: item; + list-style: none; + padding-left: 0; + } + + section ol > li { + counter-increment: item; + padding-left: 1.9em; + position: relative; + } + + section ol > li::before { + background: var(--color-highlight-heading); + border-radius: 50%; + color: var(--color-background); + content: counter(item); + font-size: 0.6em; + font-weight: 700; + height: 1.65em; + left: 0; + letter-spacing: 0; + line-height: 1.65em; + position: absolute; + text-align: center; + top: 0.45em; + width: 1.65em; + } + + /* 目次は行間を広げる */ + section.agenda li { + margin-bottom: 0.4em; + } + + /* 章の扉は、見出しを大きくしてアクセントカラーの下線を引く */ + section.chapter h2 { + font-size: 2.1em; + } + + section.chapter h2::after { + background: var(--color-highlight-heading); + border-radius: 3px; + content: ""; + display: block; + height: 6px; + margin: 0.45em auto 0; + width: 2.2em; + } + + /* 小節の扉は、章の扉より1段小さくして親子関係がわかるようにする */ + section.chapter.sub h2 { + font-size: 1.5em; + } + + /* 章の結論は、囲み枠にして「あとで戻ってくる場所」にする */ + section.point h2 { + color: var(--color-header); + font-size: 1.1em; + } + + section.point h2 + p { + background: var(--color-background-code); + border: 3px solid var(--color-highlight-heading); + border-radius: 12px; + display: table; + font-size: 1.35em; + font-weight: 700; + /* 見出しと同じ字間にしないと、中心がわずかにずれて見える */ + letter-spacing: 1px; + line-height: 1.4; + margin: 0 auto; + padding: 0.7em 1em; + text-wrap: balance; + } + + /* 手を動かすスライドは、見出しの上にラベルを置いて説明と見分けられるようにする */ + section.exercise h3 { + background: var(--color-highlight-heading); + border-radius: 999px; + color: var(--color-background); + display: table; + font-size: 0.6em; + letter-spacing: 2px; + margin: 0 auto 0.5em; + padding: 0.2em 1.1em; + } + + /* つくるアプリの仕様は、カードに入れて何度でも同じ形で見せる */ + section.spec ul { + background: var(--color-background-code); + border-left: 6px solid var(--color-highlight-heading); + border-radius: 6px; + display: table; + font-size: 1.15em; + padding: 0.6em 1.3em; + } + + /* 仕様のどこに注目しているかを、色でも示す */ + section.spec li strong { + color: var(--color-highlight-heading); + } + + /* 仕様カードの上に置くラベル */ + section.spec h2 + p { + font-size: 0.8em; + } + + /* 見出しのなかで、いちばん言いたい一語だけを大きくする */ + section h2 .big { + color: var(--color-highlight-heading); + display: block; + font-size: 1.5em; + margin-top: 0.15em; + } + + /* 図を並べる表は、罫線を消してラベルを控えめにする */ + section table > thead > tr > th { + border-bottom: none; + color: var(--color-header); + font-size: 0.7em; + font-weight: 400; + } + + /* テキストと図を1行に並べ、余った幅をスライドの左右に均等に配る。 + bg right は図をパネル中央に固定するので、テキストとのあいだだけが空く */ + section.split { + text-align: left; + } + + section.split header { + text-align: center; + } + + section.split .cols { + align-items: center; + display: flex; + gap: 56px; + justify-content: center; + width: 100%; + } + + /* 行頭を揃えるため、左のテキストは1つの塊にする。 + 幅を固定しないと、テキスト量の差で図の位置がスライドごとに動き、 + 送ったときにガタつく。入りきらないときは flex が縮めてくれる */ + section.split .txt { + width: 640px; + } + + section.split .cols p:has(img) { + margin: 0; + } + + section.split h2 { + font-size: 1.3em; + } + + section.split ul, + section.split ol { + font-size: 0.95em; + margin-left: 0; + } + + section.split p { + font-size: 0.95em; + } + + /* リンクが多いスライドは、文字を小さくして1行に収める */ + section.small ul { + font-size: 0.7em; + } --- # 使いやすいUIデザイン - + --- -## 目次 + + +## この時間の目標 + +**チームで作るアプリの画面**を
自分で考えられるようになる + +--- + + + +## 今日は4本立て 1. UIとは 2. UIを作ってみる @@ -20,347 +257,342 @@ paginate: true --- + ## 1. UIとは --- -## User Interface (UI) +## 「UI = 見た目」
**ではない** -UIは、ユーザーと情報の境界。情報をやり取りする +**UI**と聞くと、
色や形を思い浮かべがち -![ui-sample](./imgs/design-ui-sample.png) +--- + +## UIデザインと
ビジュアルデザインは別 + +![height:330px](./imgs/fig-ui-vs-visual.svg) --- -## UIは、情報の**表示**と**操作**を提供する +## **UI** = **User Interface** -- ユーザーに**情報を表示**する -- **情報の操作**をユーザーに提供する +ユーザーと**サービス**の
**あいだ**にあるもの -![height:150px](./imgs/design-ui.svg) +![height:280px](./imgs/fig-interface.svg) --- -## UIデザインとビジュアルデザインは別 - -- ビジュアルデザインは、表現や装飾を重視 - - 色や形、フォントなどを考える -- UIデザインは、UserInterfaceの設計を重視 - - 情報の表示と操作を考える +## その**あいだ**にあるのは、
この**2種類** -今回は**UIデザイン**の話 +![height:420px](./imgs/fig-ui.svg) --- + -## 早速UIを作ってみよう +## 2. UIを作ってみる --- -## ToDoアプリを考えてみる + ---- +### ハンズオン ① -## やってみよう: ToDoアプリのUI +## 備品貸出アプリを考えてみよう! -- ToDo一覧を**見る** -- 新しいToDoを**追加する** -- 追加したToDoを**完了にする** -- ToDoのタイトルと詳細を**書く** +学校の備品を借りるアプリ -これらの機能が実現できるアプリ +- 備品の一覧を**見る** +- 備品の**名前と数を見る** +- 備品を**借りる** +- 借りた備品を**返す** --- -## 機能から**直接**UIを作ると、使いにくい -- 同じ画面がたくさんある -- ToDoがすぐ表示されない -- 機能を選択してToDoが表示 + -![bg contain right:40%](./imgs/design01.png) +
+
---- +## 機能から**直接**UIを作ると
使いにくい -## 機能を**抽象化**してUIを作ると、使いやすい +
+![h:330](./imgs/fig-way-a.svg) -![bg contain right:40%](./imgs/design02.png) +
--- -## 機能からオブジェクトを抽出する +## ボタンを並べると**2タップ必要** -- オブジェクトを基準にUIを考える -- 機能から直接UIを作らない +![height:410px](./imgs/fig-tap-a.svg) --- -## **オブジェクトを抽出**してから、UIを作ろう +## 備品を並べると**1タップ** + +![height:480px](./imgs/fig-tap-b.svg) --- - +## 同じ画面を**何枚も作らずに済む** -## 3. UIデザインの流れ +![height:470px](./imgs/fig-compare.svg) --- -## UIデザインの流れの図 + -![height:460px](./imgs/design-flow.svg) +## 主役にした**備品**を
**オブジェクト**と呼ぶ ---- +**オブジェクト**を決めてから、
画面を作る - +LINEならトーク、Amazonなら商品 -## 3.1 オブジェクト抽出 +--- -- 機能から**オブジェクト**を抽出 -- オブジェクトは、**属性**と**アクション**を持つ -- わかる人向け: UMLのクラス図のようなイメージ +## **備品**を主役にしたから、
画面はこの2つになった + +![height:360px](./imgs/fig-object-to-screen.svg) --- -## オブジェクトとは、ユーザーが操作する対象物 + + -- オブジェクトの詳細やプロパティとして、属性を持つ +## 3. UIデザインの流れ ---- +![height:340px](./imgs/fig-flow.svg) -## アクションは**C(R)UD**で考える +--- -CRUDは、Create Read Update Delete +## **ビュー**はモノが見える場所、
**アクション**はモノにできること -- Readはビューで実現する。アクションにしない +![height:340px](./imgs/fig-bridge.svg) --- -## ToDoアプリで、オブジェクト抽出 + + + +## 3.1 モノを決める -- ToDo一覧を見る -- 新しいToDoを追加する -- 追加したToDoを完了にする -- ToDoのタイトルと詳細を書く +仕様から**オブジェクト**を拾い出す + +![height:180px](./imgs/fig-flow-step1.svg) --- -## ToDoアプリで、オブジェクトは**ToDo**だけ +## モノには**情報**があり、
**できること**がある -- **ToDo**一覧を見る -- 新しい**ToDo**を追加する -- 追加した**ToDo**を完了にする -- **ToDo**のタイトルと詳細を書く +- 持っている情報を**属性**という +- できることが**アクション** --- -## ToDoアプリで、ToDoの属性は**タイトル・詳細・完了したか** +## モノを拾い出す手順は3つ -- ToDo一覧を見る -- 新しいToDoを追加する -- 追加したToDoを**完了**にする -- ToDoの**タイトル**と**詳細**を書く +1. 名詞に**線**を引く +2. 同じものを**まとめる** +3. **属性**と**アクション**に分ける --- -## ToDoアプリで、ToDoのアクションは**Create・Update** +## 名詞に線を引くと、
**備品**だけが残る -- ToDo一覧を**見る** (Read) -- 新しいToDoを**追加する** (Create) -- 追加したToDoを**完了にする** (Update) -- ToDoのタイトルと詳細を**書く** (Update) +![height:340px](./imgs/fig-extract-demo.svg) --- -## ToDoアプリのオブジェクトを抽出した結果 + + +### ハンズオン ② -- オブジェクトは、**ToDo** -- ToDoの属性は、**タイトル・詳細・完了したか** -- ToDoのアクションは、**Create・Update** +## 仕様に出てくる**名詞**を
書き出してみよう -![bg height:460px right:30%](./imgs/design-todo01.svg) +スケッチブックに、思いつくものを全部(**1分**) --- -## オブジェクト抽出ができました + -![height:460px](./imgs/design-todo01.svg) +
+
---- +## アクションは
**つくる・かえる・けす** - +英語でCreate・Update・Delete -## 3.2. ビュー・ナビゲーション +**見る**はアクションにしない。
押した先にあるのは画面だけ ---- +
-## ビューとは、ユーザーに情報を表示する領域 +![h:300](./imgs/fig-way-a.svg) -例えば、リストやフォームやページなど -ビューには、**コレクションビュー**と**シングルビュー**がある +
--- -## コレクションビューは**同じオブジェクトを複数**表示する - -**Create**・**Delete**アクションを配置する + -オブジェクトによっては、Updateアクションも配置 +
+
---- +## 備品は、属性3つと
アクション2つを持つ -## シングルビューは**1つのオブジェクト**を表示する +- 属性は
**名前・数・借りているか** +- アクションは
**借りる・返す** -**Update**・**Delete**アクションを配置する +**つくる・けす**は、先生の仕事。
だから仕様になく、作らない ---- +
-## ナビゲーションとは、ビュー同士の呼び出し関係 +![h:440](./imgs/fig-item-object.svg) -どのビューからどのビューに遷移できるか +
--- -## まず、遷移できるナビゲーションを全て書き出す + + -1. **コレクション**から**シングル**へナビゲーション -2. 別オブジェクトからのナビゲーション +## 3.2 画面を決める -![bg contain right:40%](./imgs/design-view.svg) +モノが見える場所(**ビュー**)と、
その行き来(**ナビゲーション**) ---- +![height:180px](./imgs/fig-flow-step2.svg) -## その後、ビュー・ナビゲーションを削る +--- -- 複数のビューを1つのビューにまとめる -- 必要のないナビゲーションをなくす +## ビューは「**一覧**」と
「**詳細**」の2種類 -![bg contain right:40%](./imgs/design-navigation.svg) +| コレクションビュー(一覧) | シングルビュー(詳細) | +| --- | --- | +| ![height:380px](./imgs/fig-collection.svg) | ![height:380px](./imgs/fig-single.svg) | --- -## ToDoアプリで、ビュー +## アクションは、そのモノが
見えている**ビュー**に置く -- ToDoリストが並ぶコレクションビュー -- ToDoのタイトルと詳細があるシングルビュー +![height:380px](./imgs/fig-action-place.svg) --- -## ToDoアプリで、ナビゲーション + -![height:300px](./imgs/design-todo02.svg) +
+
---- +## ナビゲーションは
ビュー同士の行き来 - +一覧から備品を選ぶと詳細へ。
詳細から戻ると一覧へ -## 3.3 レイアウト +オブジェクトが増えたら、
まず全部書き出してから削る ---- +
-## ビュー・ナビゲーションから、レイアウトを考える +![h:380](./imgs/fig-item-navigation.svg) -- いわゆるワイヤーフレーム -- ビューの数だけレイアウトを考える -- 既存アプリを参考にしよう +
--- -## コレクションビューのレイアウト3種 + + -- リスト :scroll: -- グリッド :hash: -- マッピング :globe_with_meridians: +## 3.3 ならべ方を決める -![bg contain right:50%](./imgs/design05.png) +**レイアウト**。色や飾りはつけず、
置き場所だけを描く(**ワイヤーフレーム**) ---- +![height:180px](./imgs/fig-flow-step3.svg) -## シングルビューのレイアウト3種 +--- -- 属性とアクションだけ -- 関連オブジェクトをプレビュー -- 関連オブジェクトのコレクションビューを含む +## 画面のならべ方には、
決まった型がある -![bg contain right:40%](./imgs/design04.png) +| 一覧のならべ方 | 詳細のならべ方 | +| --- | --- | +| ![height:250px](./imgs/fig-layout-list.svg) | ![height:250px](./imgs/fig-layout-single.svg) | --- -## アクションは**オブジェクトの近く**にレイアウトする + ---- +### ハンズオン ③ -## やってみよう: ToDoアプリで、レイアウト +## 3ステップで、
描き直してみよう -| オブジェクト | ナビゲーション | -| --- | --- | -| ![height:300px](./imgs/design-todo01.svg) | ![height:300px](./imgs/design-todo02.svg) | +1. **モノ**を決める +2. **画面**を決める +3. **ならべ方**を決める + +新しいページに。
最初の絵は消さないでください --- -## ToDoアプリで、レイアウト + -- ToDoリストが並ぶコレクションビュー -- ToDoのタイトルと詳細があるシングルビュー +
+
-![bg contain right](./imgs/design03.png) +## 答え: 備品貸出アプリの
レイアウト ---- +- 備品が並ぶ
**コレクションビュー** +- 備品1つが見える
**シングルビュー** + +最初の絵と、
見比べてみてください -## UIデザインの流れのまとめ +
-1. オブジェクト抽出 -2. ビュー・ナビゲーション -3. レイアウト +![h:420](./imgs/fig-answer.svg) + +
--- -## 4. ビジュアルデザイン - ---- +## 見た目は、この**4つ**で
だいぶよくなる -## ビジュアルデザインは、UIの**見た目**をデザインする +- **近接**: 関係あるものを近づける +- **整列**: 端をそろえる +- **反復**: 同じものは同じ見た目にする +- **コントラスト**: 差をはっきりつける --- -## ビジュアルデザインのポイント +## 見た目は、発明しない。真似る -- 既存のビジュアルデザインを真似て作る -- ビジュアルデザインを学ぶと個性が出せる -- ただ、難しい +似たようなアプリを見て、
同じように置けばいい --- -## ビジュアルデザインの例 + -- **デザイン4つの基本原則** - - コントラスト 反復 整列 近接 -- **デザインシステム** - - ビューやナビゲーション、ビジュアルデザインを体系立ててまとめたもの - - アプリ全体で一貫したデザインにできる +## まとめ -例えば、デジタル庁のデザインシステムやMaterialDesign +![height:440px](./imgs/fig-summary.svg) --- - +## 明日から、自分のチームの
アプリでやる -## まとめ +仕様を書いたら、**名詞に線を引く** -- UIとは、情報の表示と操作を提供する -- UIデザインは、オブジェクトから考える -- UIデザインの流れは、オブジェクト抽出、ビュー・ナビゲーション、レイアウト -- ビジュアルデザインは、UIの見た目をデザインする +それだけで、つくる画面が見えてくる --- -## 出典 + + +## 出典・もっと知りたくなったら -- デジタル庁デザインシステムウェブサイト -- オブジェクト指向UIデザイン -- ノンデザイナーズ・デザインブック -- MaterialDesignGuidelines +- オブジェクト指向UIデザイン(今日の中核) +- ノンデザイナーズ・デザインブック(4つの原則) +- デジタル庁デザインシステム +- MaterialDesignGuidelines(レイアウトの型) - HumanInterfaceGuidelines + From 9d8659bd550d63f52cb1c5a3761e2df5ccc93fba Mon Sep 17 00:00:00 2001 From: Niina Umekita Date: Sat, 15 Aug 2026 21:38:57 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AA=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- design/SCRIPT.md | 1014 ---------------------------------------------- 1 file changed, 1014 deletions(-) delete mode 100644 design/SCRIPT.md diff --git a/design/SCRIPT.md b/design/SCRIPT.md deleted file mode 100644 index 018cf258..00000000 --- a/design/SCRIPT.md +++ /dev/null @@ -1,1014 +0,0 @@ -# 使いやすいUIデザイン|発表台本 - -`design/slide.md` から発表メモを外して、こちらにまとめたもの。 -スライドを送りながらこのファイルを見て話す。 - -各節の見出しは、対応するスライドの見出し。 -【X分】は目安の時間、`・` から始まる行は進め方の注意。 - ---- - -## 1. 使いやすいUIデザイン - -【0.5分】 - -<台本> -改めまして、こんにちは。うめです。 -これから1時間、使いやすいUIデザインの話をします。 - -・自己紹介は短く。ここは巻いてよい。 - ---- - -## 2. この時間の目標 - -【2分】この1時間の結論。まずこれを言ってから中身に入る。 - -<台本> -このあとみなさんは、チームで自分たちのアプリを作ります。 -そのとき「どんな画面にする?」を必ず決めることになります。 -今日はその考え方を持って帰ってもらう時間です。 - -今日は2回、スケッチブックに絵を描いてもらいます。 -と言っても、絵が描けなくても大丈夫です。四角と線だけで足ります。 -色や形をきれいにする話は、最後の3分しかやりません。 - -・【重要】「絵が描けなくても大丈夫」を言う唯一の場所。省略しない。 - デザインは「センスの有無」に見えるので、身構える学生が必ず出る。 -・スケッチブックを使うことを、ここで予告しておく。 - 急に「描いてください」と言われると身構えるので、先に言って慣らす。 -・「色と形の話は最後の3分だけ」と先に言っておく。 - 第1章でビジュアルデザインを切り離すので、ここで予告しないと - 第4章に入ったとき「やらないって言ったのに」になる。 -・コードは1行も書かない、当てません、もここで口にする。 - ---- - -## 3. 今日は4本立て - -【1.5分】 - -<台本> -今日はこの4本立てで進めます。 -2番でいきなり手を動かしてもらいます。まだ何も教えていない状態で描きます。 -それから3番で、ちゃんとした作り方を学んで、もう一度描きます。 - -・【重要】「教える前に描かせる」という進め方を、ここで宣言しておく。 - 言っておかないと、2番のハンズオンで「まだ習ってないのに」と不安になる。 - できなくていい、それが狙いだ、と先に伝える。 -・章が変わるたびに、この4つのどこにいるかを言うと迷子が出ない。 - ---- - -## 4. 1. UIとは - -【0.3分】ここから8分。 - -<台本> -まず、UIとは何かを揃えておきます。 - -・章扉は速く抜ける。遅れているならここで巻く。 -・第2章・第3章と同じ形の扉にしてある。 - 章の切れ目を同じ見た目で示すと、いま何章にいるかが分かる。 - ---- - -## 5. 「UI = 見た目」
**ではない** - -【1分】第1章の入口。まず思い込みを名指しで外す。 - -<台本> -はじめに、ひとつだけ外しておきたいことがあります。 - -UIと聞くと、たぶん色とか形とか、 -きれいな見た目のことを思い浮かべますよね。 - -でも、UIは見た目のことではありません。 -じゃあ何なのか。次のページで見てみます。 - -・【重要】否定から入る1枚。「デザイン=センスのある人がやる見た目の話」 - という思い込みを持ったまま聞くと、このあとの話が全部 - 「自分には関係ない話」に聞こえてしまう。 -・ここでは答えを言わない。次の1枚への引きにする。 -・図は置いていない。文字だけの1枚を挟むと、逆に強く残る。 -・挙手を取ってもよい:「色や形だと思っていた人?」 - ただし当てないと約束しているので、手を挙げさせるだけにする。 - ---- - -## 6. UIデザインと
ビジュアルデザインは別 - -【1.5分】「見た目ではない」の理由。見た目の話には別の名前があると示す。 - -<台本> -では、さっきの色や形の話はどこへ行ったのか。 -右のほうです。色や形、フォントを整える話をビジュアルデザインといいます。 -見た目はビジュアルデザインの仕事で、UIデザインとは別なんです。 - -今日のメインは左です。何を、どこに置くか。骨組みのほうです。 -だから絵が描けなくても大丈夫。四角と線だけで足ります。 - -右のビジュアルデザインは、最後に3分だけやります。 -やらないわけではなくて、順番があとなだけです。 - -・【重要】前ページの否定(見た目ではない)の受け皿がこの1枚。 - 「じゃあ見た目の話は何なのか」に名前を与えてから、UIの定義に進む。 -・【重要】ここで第4章を予告する。予告しないと第4章で矛盾する。 -・左の図は色も飾りもない。これがこのあと描いてもらうもの。 - ここでは名前を出さない(3.3でワイヤーフレームとして定義する)。 - ---- - -## 7. **UI** = **User Interface** - -【1.5分】ここでようやくUIの定義。前2枚で外堀を埋めてある。 - -<台本> -では、UIとは何か。言葉から確認します。 -UIは User Interface の略です。 -インターフェースというのは、つなぎ目という意味の言葉です。 - -図を見てください。左がみなさん、右がサービス。 -アプリでも、Webサイトでも、駅の券売機でも同じです。 -そのあいだにあるのがUIです。 - -ボタンを押す、文字を読む。 -やりとりは、ぜんぶここを通ります。 - -だからUIで大事なのは、きれいかどうかではありません。 -迷わず押せるか、入力しやすいか。ちゃんと使えるかどうかです。 - -今日はこのうち、アプリの画面を扱います。 - -・「接点」「境界面」という訳語のまま止まらない。 - 図で「あいだにある」と見せてから、やりとりが通る場所だと言う。 -・【重要】「アプリのあいだ」とは言わない。UIはアプリに限らず、 - 券売機・ATM・リモコン・蛇口もUI。定義を狭めない。 - 図の右にPCとスマホを並べてあるのも、1つに限らないと示すため。 -・【重要】そのうえで「今日はアプリの画面を扱う」と範囲を絞る。 - 定義は広く、扱う範囲は狭い。この2段を混ぜない。 -・ここで「きれいさではなく、使えるかどうか」を1回言っておく。 - 第4章で見た目の話をするときに、これが効いてくる。 -・聞かれたら:券売機も蛇口もUIです。押すところ、ひねるところが - ユーザーとの接点だから。今日はアプリに絞って話します。 - ---- - -## 8. その**あいだ**にあるのは、
この**2種類** - -【2分】第1章の結論。今日ずっと使う2つの言葉をここで決める。 - -<台本> -では、そのあいだには何があるのか。ここが今日の答えです。 -2種類しかありません。 - -1つめ、見せるもの。文字、リスト、画像。 -アプリから情報を受け取るためのものです。読むだけで、さわれません。 - -2つめ、操作するもの。ボタン、チェックボックス、入力欄。 -アプリに指示を出すためのものです。さわると、中身が変わります。 - -みなさんが知っているUIの部品は、ぜんぶこのどちらかです。 -新しい部品を見たときも、「これはどっちだ」と考えれば読めます。 - -だから、UIデザインでやることはこうなります。 -この2種類を、どこに置くか決める。それだけです。 - -・【重要】章タイトル「1. UIとは」の答えがこの1枚。ここまで - 「見た目ではない」「見た目の話はビジュアルデザイン」 - 「UIはユーザーとサービスのあいだにあるもの」と積んできた。 -・【重要】見出しの「その あいだ」は、前ページの - 「ユーザーとサービスのあいだにあるもの」を受けている。 - 前は「UIの部品は2種類に分けられる」にしていたが、 - 前ページが"位置"の話で終わり、ここが急に"構成"の話になるので - 繋がらなかった。「あいだ」で受け直すと1本になる。 - ここは口でも「さっきのあいだですね」と言ってつなぐ。 -・台本の最後で「2種類をどこに置くか決めるのがUIデザイン」と言い切る。 - 第1章を「結局なんだったの」で終わらせないため。 - ここが6枚目の「何を、どこに置くか」の"何を"の答えにもなっている。 -・【重要】「もの」を付けて名詞で呼ぶ。動詞のまま(見せるか操作するか)だと、 - "置くもの"の分類だと分かりにくい。 -・【検討済み】この2語は厳密には主語が混ざっている。 - 見せる=アプリが主語、操作する=ユーザーが主語。 - 主語を揃える案(見るもの/さわるもの)も検討したが、この呼び方を採った。 - そのぶん、台本で必ず役割を添えて言う: - 見せるもの → アプリから情報を受け取るためのもの - 操作するもの → アプリに指示を出すためのもの - 世の中の解説もUIの役割を「情報を伝える/指示を受け取る」の2つで説明し、 - 部品の分類も「情報表示系/操作系・入力系」で分けている。 - ここを口で補えば、呼び方のズレは問題にならない。 -・【重要】「操作する」を選んだ理由は2つ。 - ①「変える」だと誰が変えるのか曖昧。「操作する」ならユーザーがやることだと分かる。 - ② 第3章の「アクション」に直結する(アクション=そのモノにできる操作)。 -・「動かす」は使わない。Webアプリケーション概論が「処理=動かす」を - 使っているので、同じインターン内でボタン操作とサーバー処理が混ざる。 -・「表示」も言わない。「見せる」で通す。 -・「境界」「情報のやり取り」のような抽象語は出さない。 - 知っている部品の名前で説明するほうが速い。 -・図の色分けがそのまま意味になっている。グレー=さわれない、 - 水色=さわれる。以降ずっとこの色の使い方で通す。 -・この2つが、第3章の「ビュー」と「アクション」になる。 - ここでは言わず、第3章の入口で回収する。 - ---- - -## 9. 2. UIを作ってみる - -【0.3分】ここから15分。 - -<台本> -では、さっそく作ってみましょう。 - -・速く抜ける。次の仕様スライドとセットで読む。 - ---- - -## 10. 備品貸出アプリを考えてみよう! - -【5.5分】今日の山場のひとつ。教える前に描かせる。 -仕様の提示(1.5分)とハンズオン(4分)を1枚にまとめてある。 - -<台本> -では、さっそく作ってみましょう。 -作るのは、備品貸出アプリの、お店が使う画面です。 -みなさんが図書委員になったと思ってください。 - -仕様はこの4つ。 -備品の一覧を見る、備品の名前と数を見る、借りる、返す。 - -この仕様で、アプリの画面を描いてみてください。 -スケッチブックに、四角と線だけで大丈夫です。 -何画面になってもいいです。4分とります。 - -まだ何も教えていないので、正解は分かりません。それでいいです。 -今日はこのあと、みなさんが描いたものを見ながら進めます。 - -(4分待つ。手が止まっている人がいたら「仕様の言葉を - そのままボタンにしてもいいですよ」と1回だけ声をかける) - -・【重要】題材を備品貸出アプリにしてある理由。 - ToDoアプリだと、ほとんどの学生が完成形(ToDoが並ぶ画面)を - すでに知っているので、教える前に描かせても正解を描いてしまい、 - このあとの比較が他人事になる。 - 備品貸出アプリは、名前は知っていても自分で注文したことが - ある学生は少ない。だから仕様の言葉をそのままボタンにする人が多くなる。 -・【重要】この題材にした決め手は「一覧に収まる」こと。 - 備品は10〜20個なので、一覧から選んでタップするのが自然。 - 図書室の本で考えたこともあったが、蔵書は数千冊あるので - 一覧から選べず、実運用もバーコードを読む方式だった。 - それだと「一覧のチェックを1タップ」が成立しない。 -・【重要】この仕様にはCreateとDeleteがない。料理を増やしたり - 消したりするのは先生の仕事で、借りる側にはできないから。 - 3.1の最後(属性とアクションの答え)でここを回収する。 - 「仕様にないものは作らない」を教える材料になっている。 -・聞かれたら(注文したことがないので分からない): - それでいい。今日は正解を知らない状態で描いてもらう時間。 -・【重要】仕様とハンズオンを1枚にしてある。描いているあいだ、 - このスライドを出したままにできる。仕様を見ながら描けるので、 - 「なんだっけ」で手が止まらない。 -・【重要】ここは「教える前に解かせる」設計。教育研究では - productive failure / pretesting effect と呼ばれていて、 - 先に自分でやってから教わるほうが、教わってからやるより - 概念の理解が深くなる。初学者ほど効果が大きい。 -・【重要】そのかわり、直後に必ず答え合わせをする(次の3枚)。 - やりっぱなしにすると効果が消える。フィードバックは即時が条件。 -・失敗させるのが目的なので、うまく描けなくても絶対に責めない。 - 「できなくて大丈夫」「当てません」は口で言う。 -・4行を読み上げるだけにする。ここで抽出の話はまだしない。 -・この仕様カード(左に線が入った形)は今日何度も出てくる。 - 同じ形で出すことで「またここに戻ってきた」が伝わる。 -・聞かれたら:消す機能は今回入れていません。仕様にないものは作りません。 -・机を回って何人かの絵を見ておく。次のスライドで - 「たぶんこうなりましたよね」と言うための材料にする。 - ボタンを並べた人が多いはず。そこを拾う。 -・時間がないときは3分でもよい。ただし0分にはしない。 - ここを削ると、このあとの比較が全部他人事になる。 - ---- - -## 11. 機能から**直接**UIを作ると
使いにくい - -【2分】ハンズオン①の受け止め。結論だけ言って、 -理由はこのあとの3枚で1つずつ確かめる。 - -<台本> -みなさんの絵を見せてもらいました。だいたいこうなっていましたよね。 -一覧を見る、名前と数を見る、借りる、返す。仕様の4つがそのままボタンになる。 - -素直な作り方です。間違いではありません。私も最初はこう描きました。 -ただ、この画面で実際に使ってみると、困ることが出てきます。 -このあと、ひとつずつ確かめます。 - -・【重要】ここで学生の絵を否定しない。責めるのは「機能から直接作る - という作り方」であって、描いた人ではない。「間違いではありません」 - 「私も最初はこう描きました」を必ず口で言う。 - ここで否定すると、次から手が動かなくなる。 -・【重要】理由はここでは言わない。スライドにも書いていない。 - 次の3枚が答え合わせになっている: - 次のスライド → 完了までタップが2回かかる - 3枚あと → ほぼ同じ画面を5枚も作ることになる - 先に結論だけ置いて、根拠は自分で数えてもらう順にしてある。 -・実際に何人かの絵を指して「これもそうですね」と拾えるとなおよい。 -・仕様の4行とボタンが1対1になっていることを指で示す。 - 自分の絵と見比べてもらう。 - ---- - -## 12. ボタンを並べると**2タップ必要** - -【1.5分】自分の絵の問題点に気づいてもらう。 - -<台本> -では、この画面で「タブレット」を借りてみます。 - -まず「借りる」を押す。これが1回目。 -すると備品の一覧が出てきます。ここからタブレットを選ぶ。これが2回目。 -押したのは2回。あいだに画面が1つ挟まりました。 - -自分の絵でも同じことをやってみてください。何回押しますか。 - -・【重要】黒い丸の数がタップの数。1と2を指でさして数える。 - 「1、2。2回ですね」と声に出すと伝わる。 -・【重要】右の画面が「一覧が出る」。ここが次の「画面5枚」に効く。 - 借りるときも一覧、返すときも一覧、と同じ画面が増えていく。 -・自分の絵で数えてもらうのが効く。手を動かした人だけの体験になる。 -・ここでもまだ「悪い」とは言わない。「2回押す」と数だけ言う。 -・図は2画面だが、押した結果チェックが付く画面はあえて描いていない。 - 次のスライドと画面数を揃えて、バッジの数だけを見比べてもらう。 - ---- - -## 13. 備品を並べると**1タップ** - -【2分】もう1つの作り方を見せる。画面が1枚で済むことも見せる。 - -<台本> -別の作り方を見てください。 -ボタンではなく、備品そのものを並べました。 - -同じことをやってみます。タブレットの行のチェックを押す。以上です。 -黒い丸は1つだけ。さっきは2回押していたものが、1回で終わりました。 - -しかも画面はこの1枚だけです。さっきは押したあとに一覧が出てきました。 - -もうひとつ見てください。チェックは貸出中の印です。 -だからもう一度押せば、それが返却になります。 -仕様では別々だった「借りる」と「返す」が、 -同じ場所を押すだけで済んでいます。 - -・【重要】前のスライドは画面が2枚、こちらは1枚。 - 行き来しながら「丸が2つ」「丸が1つ」と見比べてもらうとよい。 - 画面の枚数もちがうことに、ここで気づく人がいる。 -・【重要】仕様の4つが、この1枚に全部入っている。 - 備品の一覧を見る → 一覧そのもの - 借りる → チェックを付ける(黒丸1のところ) - 返す → 同じチェックを外す - 名前と数を見る → 行の右の「>」を押すと詳細 - やり方Aは仕様4つのためにボタンが4つ必要だったのに、 - こちらは借りると返すが1か所で済んでいる。ここを必ず指摘する。 -・行の右の「>」を押すと備品の詳細が開く。詳細ビューは3.2で出てくるので、 - 聞かれたら「次の章で出てきます」と答える。 -・ここでは押す回数の話だけにする。画面数は次のスライドで数える。 -・「こっちを描いた人いますか」と聞いてもよい。いたら必ず拾う。 - ---- - -## 14. 同じ画面を**何枚も作らずに済む** - -【2.5分】主眼のいちばん大事な1枚。数えられる形で差を見せる。 - -<台本> -2つを並べます。ちがいは手数だけではありません。 - -左を見てください。ボタンが4つあると、押した先の画面も4つ必要です。 -そして、そのうち3つは「ほぼ同じ備品の一覧」です。 -借りるときも一覧、返すときも一覧、見るときも一覧。同じ画面が3枚。 -全部で5枚の画面を作ることになります。 - -右は2枚です。一覧と詳細だけ。 - -ここで減っているのは、同じ画面の重複です。 -一覧が3枚あっても、中身はほとんど同じでした。 -その3枚が1枚になった、というだけの話です。 - -画面が少なければいい、という話ではありません。 -1枚に全部詰め込んだら、逆に使いにくくなります。 -同じものを何枚も作らなくて済む、というのがここでの得です。 -直す場所も1か所になります。 - -なぜこうなるのか。 -右は備品という「モノ」を先に置きました。モノは1種類しかないので、 -それを見せる画面も1枚で足ります。 -左はやることを先に置いたので、やることの数だけ画面が増えました。 - -・【重要】この「同じ画面がたくさんある」が主眼の説得力の中心。 - タップ数だけでは「1回か2回かの差ならそんなに大事?」で止まる。 -・【重要】「画面は少ないほどよい」と誤解させないこと。 - 1枚に詰め込めば画面数は減るが、使いにくくなる。 - ここで減っているのは重複であって、画面数そのものが目的ではない。 - 見出しを「使いやすいほど画面が減る」にしていたことがあるが、 - 一般化しすぎで、詰め込みを肯定して聞こえるので変えた。 -・【重要】「なぜモノ起点だと画面が減るのか」は、上の4行で口頭だけ言う。 - 以前はここに日常のたとえを1枚はさんでいた(コンビニのレジ、 - お店のメニュー表)。どちらも「たとえのほうが分かりにくい」となったので - 図はやめた。数の差を見せたこの1枚で足りている。 - たとえを足したくなったら、まずこの4行を言ってみて、 - それで足りないかを確かめてから。 -・自分の絵が何画面になったか数えてもらう。 -・左の3枚をあえて同じ形で描いてある。無駄が形で見えるようにするため。 - ---- - -## 15. 主役にした**備品**を
**オブジェクト**と呼ぶ - -【1.5分】今日の1語目。比べて納得したあとに名前を付ける。 - -<台本> -さっき、備品を主役にしたら画面が2枚で足りました。 -この備品のように、アプリの主役になるものに名前があります。 -オブジェクトといいます。 - -LINEならトーク。Amazonなら商品。備品貸出なら備品です。 -そのアプリで、ユーザーが扱う主役のことです。 - -第2章のまとめです。オブジェクトを決めてから、画面を作る。 -と言われても、まだピンと来ないと思います。次で確かめます。 - -・【重要】プログラミングのオブジェクト指向とは別の話、と必ず言う。 - クラスや継承の話は出さない。名前が似ているだけ。 -・今日覚えて帰る語は4つ。これが1語目。 - オブジェクト/属性/アクション/ビュー。 -・LINE・Amazonの例は口頭で足す。スライドには置かない(1枚1メッセージ)。 -・ここで手順の話に入らない。抽象的なままなので、 - 次の1枚でさっきの2画面に結びつけてから3ステップに進む。 - ---- - -## 16. **備品**を主役にしたから、
画面はこの2つになった - -【1.5分】抽象と具体をつなぐ1枚。3ステップに入る前の足場。 - -<台本> -「オブジェクトを決めてから画面を作る」。 -これ、実はさっきもうやっています。 - -主役を備品に決めましたよね。だから画面はこうなりました。 -備品が並ぶ一覧と、備品が1つだけ見える詳細。この2つです。 - -ボタンから考えると5画面になりました。 -でも備品から考えると、備品の見え方が2通りあるだけなので、2画面で済みます。 - -画面を先に考えるのではなく、主役を先に決める。 -そうすると、画面のほうが決まってくる。これが今日いちばん大事なところです。 - -・【重要】ここがないと「オブジェクトを決めてから画面を作る」が - 言葉のままで終わる。やり方Bの2画面と結びつけて、初めて意味が通る。 -・「もうやっている」と言うのが効く。新しいことではなく、 - さっき自分が見たものの言い換えだと分かる。 -・次の3ステップは、この流れを手順に分けただけだと予告する。 - ---- - -## 17. 3. UIデザインの流れ - -【1.5分】ここから26分。この図が今日の地図になる。 - -<台本> -オブジェクトから画面を作るには、この3ステップで進めます。 - -仕様から始めて、まず1番、オブジェクト抽出。 -仕様に出てくるモノを拾い出します。 -次に2番、ビューとナビゲーション。画面と、画面の行き来を決めます。 -最後に3番、レイアウト。どこに何を置くかを決めます。 - -大事なのは下の矢印です。1回で決まることはありません。 -行き来しながら決めていくものだと思ってください。 - -・この図はこのあと3回、小節の扉で出てくる。今どこにいるかを毎回示す。 -・「1回で完成させなくていい」と言うと、完璧を目指して固まる学生がほどける。 -・この章の最後にもう一度スケッチブックを使う、と予告しておく。 - ---- - -## 18. **ビュー**はモノが見える場所、
**アクション**はモノにできること - -【2分】第1章と第3章をつなぐ1枚。ここが今日の骨格。 - -<台本> -ステップの中身に入る前に、言葉を2つ出しておきます。 -今日いちばん大事な2語です。 - -ビューは、モノが見える場所です。備品が並んでいるところがビュー。 -アクションは、モノにできることです。借りる、返す、がアクション。 - -図を見てください。第1章で、画面の部品は2種類だと言いました。 -見せるものと、操作するもの。 -見せるものが集まったところが、ビューです。 -操作するものを押したときに起きることが、アクションです。 - -つまりこれからやるのは、こういうことです。 -まずオブジェクトを決めて、そのオブジェクトが見えるビューを作り、 -そこにアクションを置く。今日の話は全部これです。 - -・【重要】見出しを定義そのものにしてある。 - 「部品が集まるとビュー」だと部品と領域でレベルが1段ちがうので、 - 2語が何なのかが伝わらなかった。 - 「モノが見える場所」「モノにできること」なら1行で像が結ぶ。 -・【重要】この1枚がないと、第1章が「前置き」で終わる。 - 「見せる/操作する」がそのまま「ビュー/アクション」になると示すことで、 - 第1章から第3章までが1本の線になる。 -・ここで用語を3つ並べておく(オブジェクト/ビュー/アクション)。 - 属性はこのあと出す。 -・話が迷子になったら、この1枚に戻ってくればよい。 - 黒板やホワイトボードがあれば、この2語だけ書いて残しておくとよい。 - ---- - -## 19. 3.1 モノを決める - -【1分】1つめのステップ。 - -<台本> -1番、モノを決めます。 -仕様の中からオブジェクトを拾い出して、書き出す作業です。 - -実務ではこれを「オブジェクト抽出」と呼びます。 -抽出という言葉は硬いですが、やることは拾い出すだけです。 - -・【重要】ステップ名は日常語(モノを決める)にしてある。 - 実務の呼び方(オブジェクト抽出)は図の下と口頭で添えるだけ。 - 専門語を見出しにすると、何をするステップなのかが伝わらない。 -・【重要】「抽出」は初学者に急に出すと止まる語。必ず「拾い出す」と言い直す。 -・聞かれたら:UMLのクラス図を知っている人は、あのイメージで合っています。 - ただ知らなくても困りません。スライドには書かない。 - ---- - -## 20. モノには**情報**があり、
**できること**がある - -【2分】今日の2語目と3語目。次の手順の3つめで使うので、先に出す。 - -<台本> -モノを1つ思い浮かべてください。たとえば備品です。 -備品には2つのものがあります。 - -1つは情報です。タイトルとか、終わったかどうか。 -これを属性といいます。 - -もう1つはできることです。作る、書きかえる。 -これがアクションです。さっき出した言葉と同じものです。 - -この2つを覚えておいてください。次のスライドで使います。 - -・【重要】この2語を先に出しておかないと、次の「手順は3つ」の - 3つめ(属性とアクションに分ける)が言葉だけになって伝わらない。 - もとは手順のあとに置いていたが、それでは手順が読めなかった。 -・「アクション」は少し前のスライド(ビューとアクション)で出した語。 - 同じものだと分かるように「さっきの」と言う。 -・属性は、世の中の記事や本では「プロパティ」と呼ばれることが多い。 - Figmaでもこの呼び方をする。聞かれたら同じものだと答える。 -・Deno KV との橋:属性は、KVに入れる値そのもの。 - set するときに何を入れるかを決める作業が、属性を決める作業。 - ---- - -## 21. モノを拾い出す手順は3つ - -【1.5分】演習の足場。この3つがこのあとの実演の骨。 - -<台本> -拾い出す手順は3つです。 - -1つめ、仕様の名詞に線を引きます。名詞はモノの候補です。 -2つめ、同じ名詞をまとめます。備品が4回出てきたら、それは1つの備品です。 -3つめ、まとめたモノの中を、さっきの属性とアクションに振り分けます。 - -・実務ではもっと細かい工程(粒度を揃える)があるが、今日は3段に圧縮している。 -・図にせず文字だけにしてある。属性とアクションは前のスライドで - 説明したばかりなので、ここは3行を読み上げるだけでよい。 -・このあと次の1枚で①②を実演し、③は2枚あとで実演する。 - ---- - -## 22. 名詞に線を引くと、
**備品**だけが残る - -【1.5分】手順①②の実演。講師が実際にやってみせる。 - -<台本> -では実際にやってみます。仕様の4行に線を引いていきます。 - -1行目「備品の一覧を見る」。名詞は備品。線を引きます。 -動詞は「見る」。丸で囲みます。 -2行目、名詞は備品、それと名前と数。動詞は「見る」。 -3行目、名詞は備品。動詞は「借りる」。 -4行目も名詞は備品。動詞は「返す」。 - -線を引いたところを見てください。備品が4回出てきます。 -でも全部同じ備品です。だからまとめると1つ。 -仕様が4行あるのに、モノは1つしかありませんでした。これが手順の2つめです。 - -丸をつけた動詞は、このあとアクションになります。 -線を引いた「名前」「数」は、属性になります。 - -・【重要】口だけで済ませず、画面を指しながら1行ずつなぞる。 -・オブジェクトが1つしかないことに驚く学生がいる。それが正しい反応。 -・ここではまだ「見るはアクションにしない」を言わない。 - アクションの説明が2枚あとなので、先に言うと浮く。 - ---- - -## 23. 仕様に出てくる**名詞**を
書き出してみよう - -【1.5分】手を動かして覚える。実演を見た直後にやる。 - -<台本> -いま私がやったことを、自分でもやってみてください。 -さっきの仕様に出てくる名詞を、スケッチブックに書き出します。 -仕様は書き写さなくていいです。名詞だけ書いてください。1分とります。 - -(1分待つ。手が止まっている人には「モノの名前です」と1回だけ言う) - -何が出ましたか。備品、名前、数。このあたりですね。 -「一覧」を書いた人、いますか。それは正しい反応です。 -ただ、一覧はモノではなくて、モノが並んでいる場所です。 -それはこのあと3.2で出てきます。 - -・【重要】実演を見た直後にやる。見ているだけでは手が動かない。 - ここで1分使うと、このあとのハンズオン③で詰まる人が減る。 -・【重要】「一覧」を書く学生が必ず出る。絶対に否定しない。 - 一覧はこのあとビューになるので、「次で出てきます」と受けて伏線にする。 - ここで正解/不正解にすると、次から手が止まる。 -・書くのは名詞だけ。仕様の書き写しはさせない。時間がもったいない。 -・仕様はスライドに出したままにできないので(このスライドを出すため)、 - 口頭でもう一度読み上げる。一覧を見る、名前と数を見る、借りる、返す。 -・答え合わせは口頭で30秒。次のスライドのアクションの話に自然につながる。 - ---- - -## 24. アクションは
**つくる・かえる・けす** - -【2分】アクションの中身。「見る」を外す理由をここで回収する。 - -<台本> -アクションは、基本的にこの3つです。つくる、かえる、けす。 -英語だとCreate、Update、Delete。まとめてCRUDと呼ばれます。 -この英語は覚えなくていいです。名前があることだけ知っておいてください。 - -ここでひとつ。「見る」はアクションに入れません。 -仕様には「備品の一覧を見る」とあるのに、なぜでしょうか。 - -さっきみなさんが描いた「見る」ボタンを押したら、何が起きますか。 -一覧が出るだけです。何も変わりません。 -押した先にあるのは画面、つまりビューです。 -だからこれはアクションではなく、ビューのほうなんです。 - -・【重要】ここで右の図の「見る」ボタンを実際に指す。 - 自分が描いた絵にも「見る」ボタンがあるはずなので、そこを指してもらう。 -・「見る=ビュー」と言えるのは、2枚前で橋を架けたから。 - 橋がないとこの説明は「なんとなく」で終わる。 -・Deno KV との橋:set が つくる・かえる、delete が けす にほぼ対応する。 - get と list は画面を出すためのもの。 - ---- - -## 25. 備品は、属性3つと
アクション2つを持つ - -【1.5分】手順3。3ステップ全部の入力になる図。 - -<台本> -最後に振り分けます。 - -属性。備品が持っている情報は、名前、数、 -それと借りているかどうか。この3つです。 - -アクション。借りると、返す。この2つです。 -どちらも既にある備品の状態を書きかえているので、Updateですね。 - -ここで気づいた人はいますか。 -今回、つくる(Create)とけす(Delete)がありません。 - -備品を増やしたり消したりするのは、先生の仕事です。 -借りる側にはできません。だから仕様に書いていない。 -仕様にないものは、作らない。ここは徹底してください。 - -これで右の図ができました。備品というオブジェクトが、 -属性3つとアクション2つを持っている。1番のステップは、これで終わりです。 - -・この図はこのあと2回出てくる(ハンズオン③の入力と、最後のまとめ)。 -・【重要】CreateとDeleteがないことを、必ず口に出す。 - 「3つ習ったのに2つしかない」と不安になる学生がいるので、 - 仕様にないから作らないのだと言い切る。 - ここは今日いちばん実務に効く話。作らなくていいものを作らない。 -・「借りる」と「返す」が同じUpdateになるところで手が止まる人がいる。 - どちらも既にある備品の状態を変えている、と言えば通る。 -・聞かれたら:先生が使う管理アプリなら、そこにはCreateとDeleteがある。 - 誰が使うアプリなのかで、アクションは変わる。 - ---- - -## 26. 3.2 画面を決める - -【1分】2つめのステップ。 - -<台本> -2番です。画面を決めます。 - -さっき出した言葉を使います。 -モノが見える場所がビュー。その行き来がナビゲーションです。 - -ビューは画面まるごとのこともありますし、画面の一部のこともあります。 - -・【重要】ステップ名は日常語(画面を決める)にしてある。 - ビューとナビゲーションは、その中身を指す言葉として括弧で添える。 -・【重要】ビューは「画面」と言い切らない。「見える場所」にしておく。 - 画面と言い切ると、あとの「複数のビューを1つにまとめる」が - 「複数の画面を1つにする?」になって意味が通らなくなる。 - ステップ名だけは分かりやすさを取って「画面を決める」にしてある。 -・「画面には2種類ある」という断定もしない。 - ログイン画面や設定画面を思い浮かべた学生がその場で反例を見つけてしまう。 -・HTML/CSS との橋:ビューはHTMLで作る領域そのもの。 - ---- - -## 27. ビューは「**一覧**」と
「**詳細**」の2種類 - -【1.5分】ビューの型。2つを並べて対比で見せる。 - -<台本> -ビューには型があります。大きく2つです。 - -左がコレクションビュー。同じオブジェクトを複数ならべたものです。 -LINEのトーク一覧、Amazonの商品一覧。備品貸出なら備品が並んだ一覧です。 -大事なのは「同じオブジェクトが」という部分です。 -なんでも並べれば一覧、ではありません。並んでいるのは全部備品です。 - -右がシングルビュー。1つのオブジェクトの中身を見せるものです。 -LINEでトークを1つ開いた画面、Amazonで商品を1つ開いたページ。 -さっき決めた属性が、ここに出てきます。名前、数。 -属性が見える場所がシングルビューです。 - -・「同じオブジェクトを複数」を落とさない。ここを落とすと - 抽出したオブジェクトとビューの対応が切れる。 -・属性とシングルビューが繋がることを言う。抽出が無駄ではなかったと分かる。 -・この2つで全部の画面を説明しようとしない。型が2つある、で止める。 - ---- - -## 28. アクションは、そのモノが
見えている**ビュー**に置く - -【1.5分】アクションをどこに置くかの原則。理由を与える唯一の場所。 - -<台本> -ビューが決まったら、アクションをどこに置くかです。 -原則は1つ。そのモノが見えている画面に置く。 - -一覧を見てください。備品が並んでいます。 -どの行も、どの備品なのかが見えています。 -だから、借りるボタンを一覧に置けます。返すも同じです。 - -詳細を見てください。こちらも備品が1つ見えています。 -だから、同じ借りるボタンをここにも置けます。 - -逆に、備品が見えていない画面に借りるボタンがあったらどうなるか。 -何を借りるのか分からないので、押したあとに一覧を出すしかありません。 -それが、さっきの2タップでした。 - -左の一覧のチェックボックス。あれが「押すだけで終わる」やり方の正体です。 -一覧に備品が見えているから、そこにアクションを置けたわけです。 - -・【重要】ここで やり方B の1タップを回収する。主眼が原則に繋がる瞬間。 -・【重要】この図には つくる・けす を描いていない。仕様にないから。 - 24枚目で3つ習ったのに2つしか出てこないことと揃えてある。 - 以前の図には「+」とゴミ箱があったが、仕様と矛盾するので外した。 -・暗記させない。「見えているか」だけ考えれば毎回導ける、と伝える。 -・「見えていないとどうなるか」を必ず言う。原則の裏返しを示すと、 - なぜその原則なのかが腑に落ちる。 - ---- - -## 29. ナビゲーションは
ビュー同士の行き来 - -【1.5分】ビュー同士のつなぎ。備品の具体で見せる。 - -<台本> -ビューが決まったら、次は行き来です。 -どのビューからどのビューに行けるか。これをナビゲーションといいます。 - -備品貸出アプリで見てみます。ビューは2つ、一覧と詳細。 -一覧から備品を1つ選ぶと詳細に行く。詳細から戻ると一覧に戻る。 -これが備品貸出アプリのナビゲーションです。 - -チームで作るアプリはオブジェクトがもっと増えます。 -そのときは、まず行き来を全部書き出してから、要らないものを削ります。 -足りないものを思いつくより、目の前にあるものを消すほうが簡単だからです。 - -これで2番のステップも終わりです。ビューが2つ、行き来が1本。 - -・抽象の定義だけの1枚を作らない。必ず備品の図と同時に出す。 -・「呼び出し関係」という硬い言い方はしない。行き来で通す。 -・「全部書き出してから削る」は理由とセットで1行だけ言う。 - この備品貸出アプリでは実演しない(オブジェクトが1つしかないため)。 - ---- - -## 30. 3.3 ならべ方を決める - -【1分】3つめのステップ。 - -<台本> -最後、3番です。ならべ方を決めます。実務ではレイアウトと呼びます。 -ビューの中に、何をどこに置くかを決めます。 - -描くものをワイヤーフレームといいます。 -色も、影も、フォントもつけません。四角と線だけで、置き場所だけを描く図です。 -まさに、さっきスケッチブックに描いてもらったものです。 - -ビューの数だけ描きます。備品貸出アプリならビューは2つなので、2枚です。 - -・【重要】未経験者がいちばん分からない語。定義を1文で置くだけなので削らない。 -・「みなさんがもう描いているものです」と言うと、 - ハンズオン①がここで意味を持つ。難しいものではないと伝わる。 - ---- - -## 31. 画面のならべ方には、
決まった型がある - -【1分】レイアウトの型。ハンズオン②の直前に見せておく。 - -<台本> -置き方には型があります。ゼロから考えなくていいです。 - -一覧のならべ方は、だいたいこの3つ。上から下に並べるリスト、 -格子状のグリッド、地図の上に置くマッピング。備品ならリストが素直です。 - -詳細のほうも3つ。属性とアクションだけ置くもの、 -関連する別のオブジェクトを少し見せるもの、それを一覧で見せるもの。 -今日の備品貸出は1つめです。 - -もう1つ大事なルール。アクションは、そのオブジェクトの近くに置いてください。 -一覧の下に「削除」ボタンが1つだけあったら、どれが消えるか分かりません。 - -・この2枚は Material Design が元ネタ。第4章のデザインシステムで繋げる。 -・「アクションは近くに」はここで1文だけ言う。前の原則の続き。 -・既存アプリを真似ていい、と言っておく。ここで発明しなくていい。 - ---- - -## 32. 3ステップで、
描き直してみよう - -【6分】今日の山場。学んだ手順を通しで使う。 - -<台本> -では、もう一度描いてもらいます。同じ備品貸出アプリです。 -さっきのページは消さずに、新しいページに描いてください。あとで比べます。 - -手順は3つでしたね。 -1番、オブジェクトを拾い出す。備品でしたね。属性とアクションも出ています。 -2番、ビューを決める。一覧と詳細の2つでしたね。行き来は1本。 -3番、その2つのレイアウトを描く。アクションを、モノの近くに置く。 - -6分とります。詰まったら手を挙げてください。 - -・【重要】ここで初めて、3ステップを通しで使う。 - 部分ごとの演習より、通しでやるほうが実際の場面に持っていける。 -・答えは既に全部スライドに出ている(オブジェクト図・ビュー・型)。 - 思い出せない学生のために、前のスライドに戻れるようにしておく。 -・机を回る。手が止まっている人には「一覧と詳細の2枚です」と言えばよい。 -・【重要】最初の絵を消させない。次のスライドで自分のビフォーアフターを - 見比べてもらうのが、この講義でいちばん記憶に残る瞬間になる。 -・時間がないときは4分でもよい。ここを削ると講義の出口がなくなる。 - ---- - -## 33. 答え: 備品貸出アプリの
レイアウト - -【1.5分】ハンズオン②の答え合わせ。今日の出口。 - -<台本> -答えです。左が一覧、右が詳細。2画面できました。 - -一覧には備品が並んでいて、ボタンを押せば借りられます。 -詳細には名前と数が出ていて、ここからも借りられます。 - -最初に描いた絵と見比べてみてください。 -画面の数が減っていませんか。ボタンが減っていませんか。 -1時間前の自分より、確実に使いやすいものが描けています。 - -みなさんの図と形が違っても大丈夫です。 -置き場所の理由が言えれば正解です。 - -・【重要】ビフォーアフターを必ず見比べさせる。ここが今日の成果。 - 「自分で描いたものが変わった」という体験が、知識を使うものに変える。 -・「形が違っても、理由が言えれば正解」を必ず言う。 - 1つの正解を当てる練習ではない。 -・何人かに見せてもらえると場が締まる。ただし指名はしない。 - ---- - -## 34. 見た目は、この**4つ**で
だいぶよくなる - -【1.5分】ここから3分。第1章で予告したところ。 - -<台本> -最後の章です。冒頭で言ったとおり、ここは3分だけやります。 - -見た目を整えるのはビジュアルデザインの仕事です。 -難しそうに見えますが、センスの話ではありません。 -知られている原則が4つあって、それを守るだけでだいぶよくなります。 - -近接。関係のあるものを近づけて、関係ないものは離す。 -さっきの「アクションはモノの近くに」も、実はこれです。 - -整列。端をそろえる。左端がそろっているだけで整って見えます。 - -反復。同じ意味のものは、同じ見た目にする。 -ボタンの形が場所ごとに違うと、それだけで読みにくくなります。 - -コントラスト。大事なものとそうでないものの差を、はっきりつける。 -見出しと本文が同じ大きさだと、どこが大事か分かりません。 - -この4つは『ノンデザイナーズ・デザインブック』という本のものです。 - -・第1章で「あとでやります」と予告したことを回収する。 -・「センスの話ではない」と言い切る。「ただ、難しい」で終わらせない。 -・【重要】近接は「アクションはオブジェクトの近くに」と同じだと繋げる。 - 今日話したことが、実は原則の1つだったと分かる。 -・章扉は作っていない。第4章は3分しかないので、扉に1枚使わない。 - ---- - -## 35. 見た目は、発明しない。真似る - -【1.5分】第4章の締め。許可を渡して閉じる。 - -<台本> -見た目は発明しなくていいです。 -作ろうとしているものに似たアプリを開いて、同じように置いてください。 - -最初から完璧なものを作ろうとすると、たいてい完成しません。 -真似て、動かして、あとから直す。それで十分です。 - -・「真似ていい」を許可として渡す。ここで安心させて終わる。 -・デザインシステム(デジタル庁 / Material Design / HIG)はスライドから外した。 - 定義していない語を出したうえに固有名詞が3つ並ぶだけになり、 - 3分の章では回収できないため。3つとも出典スライドに載せてある。 -・興味がある人には、最後の出典ページを指して - 「レイアウトの型の図は Material Design のものです」と一言添えればよい。 - ---- - -## 36. まとめ - -【1.5分】この1枚で今日の全部が読めるようにしてある。 - -<台本> -今日やったことを1枚にまとめました。 - -仕様から始めて、1番でオブジェクトを拾い出す。備品が1つ出てきました。 -2番でビューと行き来を決める。一覧と詳細の2つになりました。 -3番でレイアウトを描く。2画面の骨組みができました。 - -ぜんぶ通して、やっていたことは1つです。オブジェクトから考える。 -機能を並べるのではなく、モノを主役にする。それだけです。 - -・あとで見返す学生の入口になる1枚。ここは急がない。 -・第2章の結論に戻って閉じる。今日の主眼はこれ1つだった、と示す。 - ---- - -## 37. 明日から、自分のチームの
アプリでやる - -【1分】この講義を「知識」から「使うもの」に変える1枚。 - -<台本> -このあと、チームでアプリを作り始めます。 -そこで必ず「どんな画面にする?」という話になります。 - -そのとき、いきなり画面を描き始めないでください。 -まず、作りたいものを文にして、その名詞に線を引いてください。 -出てきたモノが、画面の主役になります。 - -それだけで、必要な画面がだいたい決まります。 -今日と同じことを、自分たちのアプリでやるだけです。 - -・直後がチーム開発の講義。ここで橋を渡す。 -・持ち帰る問いを1つ渡す:自分のチームのアプリの主役は何になりそうか。 -・スケッチブックは持ち帰ってもらう。チームで描くときに使える。 - ---- - -## 38. 出典・もっと知りたくなったら - -【0.5分】 - -<台本> -出典です。今日の話の中核は1つめの『オブジェクト指向UIデザイン』です。 -オブジェクトから考える、という話はこの本のものです。 - -もっと知りたくなったら、まずこれを読んでください。 - -・どこで使ったかを添えてある。5件を並べるだけにしない。 -・「もっと知りたくなったら」の導線として1冊だけ名指しする。 - ---- -