Contenu connexe
Similaire à 2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話 (20)
Plus de Kazuki Murahama (10)
2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話
- 2. © Alp, Inc.
村濱 一樹(むらはま かずき) mura-
● NTT系列のネットワーク会社に新卒入社
● 地元沖縄にもどりWeb系プログラマとな
り、徐々にフロントエンド開発を中心に
していく。2015年にフリーランスとし
て独立。
● 2019年にアルプ株式会社に入社。主に
フロントエンドの開発を担当し、現在は
エンジニアリングマネージャーとして開
発マネジメントや採用活動にも従事
自己紹介
- 3. © Alp, Inc.
● 対象者、見ていただきたい方
● デザイナーやフロントエンドエンジニア
● toBのシステムにおけるデザインとフロントエンド開発のアプローチの一例を知りたい方
● POやPdMなどプロダクト戦略に興味がある方 など
● 話す内容
● サービス・会社紹介
● デザインの話
● 業務システムにおけるデザインへの考え方
● 今までのデザインの変遷やアルプにおけるデザインへのアプローチ など
● 開発の話
● どのように実装しているか
● デザイナとのコラボレーション など
● 今後の課題とまとめ
本日話すこと
- 9. © Alp, Inc.
デザインの話
AlpではScalebaseのデザインに明確に投資している
1. 操作感が軽快で、テンションが上がるデザイン
● 業務システムは、プライベートで使うWebサービス以上に長い時間使うことになる
ケースが多く、デザインによって生産性に違いがでる
● 逆に使うのが億劫になるようなシステムはたしかに存在し、海外の先行サービスの利
用者にインタビューをしても、出てくる不満は広義のデザインに関する内容が非常に
多かった
2. 複雑なドメインへの認知コストを下げる
● ただでさえ複雑なドメインの業務システムであり、会社によって使う使わないのパ
ターンも千差万別
3. 知覚品質を上げること(狭義のデザイン)が、全体の品質を高めるベースとなる
アルプにおける業務システムへのデザインの考え方
- 15. © Alp, Inc.
デザインの話
● 最初のデザインはオレンジ基調だったが、ブランディングの検討などにより色を見直し
● 青(紫寄り)になったのは、サービスカラーを考えようとなったときに、サービスの理
想のイメージを上げていったときに「冷静」や「堅実」のようなワードが挙がってそ
れを体現していった。
● ドメインが成熟していくにつれデモに利用していたβ版から構成などを大きく見直し
正式リリースまでの道のり
- 18. © Alp, Inc.
デザインの話
● V1の主な問題点
1. Component単位での細かい仕様が曖昧だった
● ボタンの大きさの種類があるが、どれを選択するべきか
● フォームの幅をどう設定すればいいか など
2. サービスが成長するにつれ、想定より表示したい情報密度が高くなってきた
● セクショニングのルールやパーツの大きさ・マージンが合わなくなるなどV1の設
計ではうまく情報を表現できなくなってきた
3. 情報密度が高いがゆえの視認性をあげなけれならなかった
● 参考: 視認性を意識したデザインシステムのアップデート
よりサービス・ドメインが進化することで、V1ではデザインとして不足がでてきた
- 22. © Alp, Inc.
Design Systemとデザイン原則
デザイン原則はDesign Systemの土台です。
Design SystemにあるUIコンポーネントやライティ
ングもデザイン原則のもとに成り立っています。
Design Systemとデザイン原則
22
デザインの話
- 25. © Alp, Inc.
デザインシステム「TORCH」の3原則
👀 見通しよく /☀明快に / 🙌 ポジティブに
ゴールを喚起させ、入り口からゴールまで不安なく進めるようにしよう。
Points
● 現状を一目で把握できるような俯瞰性
● 情報への簡易なアクセス性
● 補完やサジェストなどを使って入力を支援
FORESIGHT 🔭
デザインの話
- 26. © Alp, Inc.
デザインシステム「TORCH」の3原則
💖 心を折らない / 🚩共感し導こう / 🤝 親近感
突き放さず、否定せず、温かみを持って振る舞い、心を折らないようにしよう。
Points
● 文字だけに頼らず、アイコンや絵文字、画像などを用い効果的に簡潔に
● 否定しない。エラーでは解決策を提示
● 人間味ある柔らかい言い回しを。時には会話的に
TOGETHERNESS 👫
デザインの話
- 27. © Alp, Inc.
デザインシステム「TORCH」の3原則
🧘基本に忠実に / 🎮コントローラブルに / 🚄レスポンスは素早
く
基本を忠実にデザインし、かつ操作の実感を損なわないようにしよう。
Points
● デファクトスタンダードなUIを採用、奇抜なデザインを回避
● 安心感を与えるコントロール性の高いUIシステム
● アクションの結果をタイムリーに正しく提示
STABILITY 🏛
デザインの話
- 34. © Alp, Inc.
● React
● TypeScript
● CSS in JS(Emotion)
● AtomicDesign(ちょっと崩している)
● Storybook
● VRT
開発の話
現時点で採用しているフロントエンド技術スタック
- 35. © Alp, Inc.
開発の話
1. StorybookやVRTを駆使して、デザイナもある程度なら安心して修正などができるように
2. デザイン原則やデザインシステムによって、今後はそれにをもとに、デザイナーやエンジ
ニアがコミュニケーション取りやすくなるようになる
● 大事なところにフォーカスできる
3. デザイナーが確認しやすい状況を作っている
● PR単位でStorybookを確認できる、
PRに画像やBefore/Afterを貼るなど
4. デザイナー自身もコードに介入する文化がある
デザイナーとのコラボレーション
FE・デザイナでペアプロ中
- 40. © Alp, Inc.
開発の話
● フロントエンドの実装としては、なるべく多くの箇所をDependency Injectionできるよ
うにしている
● 小さいパーツだけでなく、Storybookにある程度の塊を表現できる
● 当初MSW+Storybookを使っていたが、通信をMockする必要もなくなる
● どの部分で通信を行うか、など設計には注意を払っている
テスタビリティや開発体験向上のために依存性注入(Dependency Injection)をする
- 42. © Alp, Inc.
開発の話
● 現状の構成
● Atoms(原子)
● Molecules(分子)
● Organisms(生体)
● Templete(テンプレート)(厳密には実体はないが、概念として似たようなものがある)
● Pages(ページ)
● PagesでDIしている=Pages単位でStorybookへ載せることも可能
● TemplatesもVRT対象
DIとStorybookの関係性
- 43. © Alp, Inc.
開発の話
model-domainとmodel-ui
● フロントエンドでもドメイン(model-domain / model-ui)を持つようにし、サーバーサ
イドにある情報やドメインとはあえて分けてかんがえている。
● FEはFEで必要なUX上の情報などが必要なため。
● サーバーから取得したデータは、フロントのドメインに加工し、保持する。
● APIスキーマ(Protobuf)で表現できないことを表現する
フロントエンドでもドメイン情報をもつ
- 45. © Alp, Inc.
開発の話
model-uiのコード例。ここでは、データの日付による検索のOptionにつかわれるラベルなどを定義している。
フロントエンドでもドメイン情報をもつ
export const dateFilterConditionOperators = [
'である', 'ではない', 'より前', 'より後', 'の範囲内'
] as const;
export type DateFilterConditionOperator =
typeof dateFilterConditionOperators[number];
export type DateRangeFilter = {
beginDate: Date | null;
endDate: Date | null;
operator: 'の範囲内';
};
export type DateMatchFilter = {
targetDate: Date | null;
operator: Exclude<DateFilterConditionOperator, 'の範囲内'>;
};
// 日付での絞り込み状態を表す型
export type DateFilter = DateRangeFilter | DateMatchFilter;
- 49. © Alp, Inc.
まとめ
1. デザインシステムや「TORCH」はまだまだこれから。やるべきことがたくさんある。
2. フロントエンドでモデルを作れてない、DIできてない箇所などがある。
3. エンジニアがコンポーネントの組み立てなど、デザインをできる範囲を増やし、開発のイ
テレーションを素早く回せるようにする
● デザイナー:デザイン原則やデザインシステムなどデザインの根幹を担当。
● エンジニア:それを使ってどうユーザーに価値を届けれるかを考え、実装。
4. デザイン原則・デザインシステムはComponent単位では定義をすすめているが、操作体
験をパターン化できていない。
今後の課題
- 50. © Alp, Inc.
● デザイン
1. 業務システムであっても、意志をもってデザインに投資している
2. デザインはドメインやサービスの進化に合わせてバージョンアップしている
3. デザイン原則・デザインシステムを策定しUI/UXをよりよくするための言語化を行っている
● 開発
1. デザイナーとコラボレーションをしやすい体制を作っている
2. VRT/Storybook等のツールを使いCIを回し、Componentの変化などを視認できるように
3. フロントにもモデルを定義し、バックエンドの都合によらないUXを実現しようとしている
4. DIでテスタビリティや開発体験を上げることで上記の下支えをしている
業務システム開発でデザインとフロントエンドも妥協しない話(まとめ)
一緒に、理想に向かってデザイン・フロントエンド開発を進めてくれるデザイナー・エンジニア大募集です!
単純に情報交換だけでもいいので、Twitterなどで別途連絡ください。よろしくおねがいします!