困りごと:めちゃ繊細なレイアウト
こんばんは🐇
今、納期前の対応で夜中まで働いていた余波で起きている時間帯なので、「こんばんは」と言わせていただきます、YASHIROです!ねむいです🐇
さて本日、
BIツールのTableauを使って、かなり細かいレイアウトのダッシュボードを組む要件と格闘しておりました。
要件がシビア、といったのは・・・
ひとつのダッシュボードに100個くらいの細かいアイテムが入るものを、「すべてをかっちり設計書通りのデザインで」
とのことでしたので・・・
まあ、ディスカッションのメモの一部だけ見せると、こんな感じ
![](https://i0.wp.com/kaidan-navi.com/wp-content/uploads/2023/04/61515780-8888-4C1C-A527-FE24445A5AF9.jpeg?resize=374%2C280&ssl=1)
これが縦にズラーと長くて、全アイテムがピクセル単位で決められているもの、とお考えください
tableauはデザイン用のツールではないので、こんなダッシュボードの実現は「本来は」困難です
本来は・・・
といったのは、
本来は「tableauはそういうものではないので」と断ってもいい要件
という意味です
でもクライアントの希望でこれを実現すべきとなったら?
いちおう、tipsを見つけました
そうです、やれなくもないのです
Tips:浮動で組んだほうがデザイン自由度が高い?!
tableauのダッシュボードを普通にコンテナで組んでいくと、
レイアウト画面に「タイル」というものが出てきて、水平オブジェクトも垂直オブジェクトも、すべてそのなかに収められますよね?
この「タイル」というやつが、どうやらクセモノで
タイルの中に「水平」や「垂直」を細かく組み合わせていっても、ちょっとした操作で、せっかく微調整しながら配置していた各オブジェクトのサイズが、勝手に伸縮させられてしまいます。
そうではなくて、
「このオブジェクトは、高さ80ピクセル、このオブジェクトは、幅200ピクセル・・・」というように、数値単位で入れ込みながら繊細なダッシュボードを作りたい時は?
これがベストプラクティスかはわかりませんが、私のやり方としては、こうです↓
![](https://i0.wp.com/kaidan-navi.com/wp-content/uploads/2023/04/14C552C2-D641-4FAC-808B-41308A26CCB9.jpeg?resize=640%2C480&ssl=1)
![](https://i0.wp.com/kaidan-navi.com/wp-content/uploads/2023/04/B6486755-16F7-4743-AAB2-10D53145BF89.jpeg?resize=640%2C480&ssl=1)
![](https://i0.wp.com/kaidan-navi.com/wp-content/uploads/2023/04/D24B26AF-9FB0-4D1F-98B4-FB9E07AEA16E.jpeg?resize=640%2C480&ssl=1)
![](https://i0.wp.com/kaidan-navi.com/wp-content/uploads/2023/04/9502C55D-BB1B-476B-9FBF-F7887936A734.jpeg?resize=640%2C480&ssl=1)
![](https://i0.wp.com/kaidan-navi.com/wp-content/uploads/2023/04/B3450899-C4AE-4CD3-92A9-7B1EE7C94A02.jpeg?resize=640%2C480&ssl=1)
![](https://i0.wp.com/kaidan-navi.com/wp-content/uploads/2023/04/5B0C8B1B-76DE-4E77-9B8B-259A54E70DD4.jpeg?resize=640%2C480&ssl=1)
注意点は、、、はじめに画面サイズと同じ大きさの浮動オブジェクトを作ったわけなので、その中の部品のピクセルの総和が、その浮動オブジェクトの高さ・幅を超えない事。簡単に言えば、高さ768ピクセルのオブジェクトに、高さ100ピクセルのオブジェクトを8個入れようとしても、最後に「ありゃ、足りない」となってしまいます。ま、当たり前ですが、、、。
最初に「高さ100ピクセルのオブジェクトを八個、縦に並べる設計なので、画面サイズの高さも800にしよう」と数値定義まで決まっているなら、おおいに使える技です(ただし、外部パディングを入れる場合は、パディング分のピクセルも計算に入れることを忘れずに!)
![](https://i0.wp.com/www14.a8.net/0.gif?resize=1%2C1&ssl=1)