Laravel/Vue.js勉強会#4で話した資料です。 https://laravue.connpass.com/event/82296/
ElementのすすめLaravel/Vue.js勉強会#4株式会社FABRIC TOKYOCTO 中筋丈⼈
View Slide
⾃⼰紹介中筋 丈⼈株式会社FABRIC TOKYO CTO略歴:- 陸上⾃衛隊 重迫撃砲副砲⼿- SIer インフラ構築/業務システム開発など- MSP サービス企画/インフラエンジニア- Amazon Distribution Center エンジニア- 現職@takenakasuji
3 keywords to know FABRIC TOKYO%$ܕϏδωεϞσϧDirect to Consumer1εϚʔτΦʔμʔSmart Order2ϚεɾΧελϚΠθʔγϣϯMass Customization3 ͭ ͷ Ω ʔ ϫ ʔ υ
% $ ܕ Ϗ δ ω ε Ϟ σ ϧ1ࣗΒ͕ϝʔΧʔͰ͋ΓɺࣗࣾͰاըɺͨ͠Λࣗࣾͷ&$αΠτͰൢച͢ΔϞσϧDirect to Consumer
2 ε Ϛ ʔ τ Φ ʔ μ ʔSmart OrderମܕαΠζΛΫϥυอଘɺ͋ͱΦϯϥΠϯͰΦʔμʔ
3 Ϛ ε ɾ Χ ε λ Ϛ Π θ ʔ γ ϣ ϯMass Customizationେྔੜ࢈ͱਅٯͷΞϓϩʔνͰɺ༸Λੜ࢈͢Δख๏
EC⽣産管理システム織りメーカー縫製⼯場物流DBシステム概要サイズ登録注⽂ 製作依頼検品・出荷依頼配送レガシーが数多く残るオーダー業界だが、ワークフロー含めて全てシステム化を⾏い⾼いUXを提供発注
今⽇話すこと社内システムにElementを導⼊した話• Elementの概要• 採⽤した理由• 実装⾯の考慮
Elementとは?• Vue.js⽤のUI Framework• Github Star数: 25,619• npm trends: TOP (Vue.jsのUI Framework)
豊富なComponent• Input, Button, Selectなどフォームによく使われるComponentは⼀通り揃っている• Table Componentは配列でデータを渡すとloopを書かずに⼀覧を⽣成してくれるなど、実装が楽になるための機構が考慮されている• Componentのデザインもフラットデザインによりすぎず汎⽤的に使えそうな印象
整備されたドキュメント• 実際に動作するUIや使⽤例、パラメータの定義などしっかりと整備されている• 各使⽤例ごとにjsfiddleのリンクがあり、すぐにカスタムして動作を確認できる
検討のきっかけ• オーダースーツの不良品の原因を管理をする機能開発• どの部位が何cmくらいずれていた• ボタンの種類が間違っていた• 不良の原因を⼤分類、中分類、⼩分類に分けて、親分類の選択内容に応じて⼦分類の選択内容が切り替わる機能要件• それぞれセレクトボックスを設けて制御できるけど、操作順など考慮してしっかりと実装するのは⾯倒。。• 楽をできないものか。。
こういうのを求めていた
cascaderの使い⽅• stateにcascaderで表⽰する項⽬を定義• valueはロジックであつかうもの、labelは表⽰されるもの• そのstateを:optionsでバインディング• あとは勝⼿に表⽰してくれるのでとても楽• 実構成では、マスターデータの更新を考慮して、componentには直接定義せず、APIからの取得
データ取得構成BackendElementで扱いやすいデータ構造にAPIを設計Frontendget: /api/get_repair_cause_list“repairLargeCause”: [{...},”repairMiddleCause”: [....]]cascaderでそのまま扱える構造でjsonを返却state受け取ったjsonを構造そのままにstateに保持
できあがったもの
データ送信の構造も考えてみる• cascaderは選択した項⽬のvalueを配列で保持する• 以下の例だと、[1, 1, 1] の配列となる• どういったデータになるかはvalueの定義次第なのでstringでも可• valueにどういったデータを持たせるかはスキーマの設計と相談(後述)
データ送信構成Backend余計なmappingやparseを必要としない構成Frontendpost: /api/save_repair_cause...[1, 1, 1]state[1, 1, 1]status: 200DB配列を分解し各フィールドに格納
リレーション各マスターはデータ取得時のAPIのレスポンスにも使⽤し不整合が⽣じない構成不良品原因ID- repair_large_cause_id- repair_middle_cause_id- repair_small_cause_id不良品原因テーブル原因⼤分類ID- name- priority原因⼤分類マスター原因中分類ID- name- priority原因中分類マスター原因⼩分類ID- name- priority原因⼩分類マスター
本⽇のまとめ• Elementの各Componentの仕様がProgrammableな設計となっており開発がしやすい• 豊富なComponentをもつFrameworkはデザイン・実装の両⾯で統⼀感をもたせるのに寄与する
Weʼre Hiring!!• サーバサイドエンジニア• フロントエンドエンジニア• UIデザイナー少しでも興味ある⽅はこの後の懇親会でお声がけください!!