massa142's blog

くり返す このポリリズム

「Atomic Design ~堅牢で使いやすいUIを効率良く設計する」を読んだ

Atomic Design ~堅牢で使いやすいUIを効率良く設計する

Atomic Design ~堅牢で使いやすいUIを効率良く設計する

動機

  • デザイン・UIについての知識を広げたい
  • SQUEEZEのフロントエンド開発にAtomic Designを取り入れたい
  • @iktakahiro がこの本を持っていたので借してもらった

感想

UIを、化学の原子に見立てて設計する、Atomic Designの考え方・具体的な手順からReactを使った実装まで、UI設計の本質とともに1冊で解説。インターネットテレビ「AbemaTV」のUI設計を担当した著者が、現場実践をふまえて伝授する。

Atomic Designの概念とStorybookを使った開発フローについて、内容がよくまとまっていてざっと学ぶことができた。

おそらく筆者は「現場で使える」ということにこだわっており、具体的なコードをもとにした解説や色々なテストの書き方が紹介されている。それが本書籍の魅力の1つでもあるが、一方Reactに関する説明の比重が高くなってるなーという印象も受けた。

この書籍のなかでは紹介されていないが、TemplatesとPagesという概念がSPAにはそぐわないという意見も多く、Atomic Design から派生しSPAのために設計された Atomic Components というものもある。

Atomic Designはあくまでデザインにおける設計粒度であり、Reduxのような状態管理を考慮する必要があるコンポーネント指向開発では、このAtomic Componentsの考えを参考にするとよさそう。

Ref: A brief look at Atomic Components – Joey Di Nardo – Medium

読書メモ

第3章 Atomic DesignによるUIコンポーネント設計

化学用語のAtoms、Molecules、Organismsというコンポーネントの概念は開発者だけが認識していればよいものであり、一般的な用語のTemplatesとPagesについては、開発者以外の経営者やクライアントと話す際にも説明する必要がある概念だという意味が込められています。


Brad Frost氏によるAtomic Designの説明では、残念ながら、詳細なUIコンポーネントの分割基準は示されていません。かんたんな分類方針が示されているだけです。そのため、5つの層のうちどのUIコンポーネントをどの層に分類すればよいか、具体的な基準は自分たちで決める必要があります。

Atoms(原子)

  • 「それ以上UIとしての機能性を破壊しない最小要素」
  • 適用箇所
    • プラットフォームのデフォルトUI
    • プラットフォームのデファクト・スタンダードなUI
    • レイアウト・パターン
    • セマンティックなデザイン要素

Molecules(分子)

Molecules層のコンポーネントでは、何のために「ボタンをクリックする」のか、何のために「テキストを入力する」のか、機能を組み合わせてユーザーの具体的な動機に応える機能の単位でUIをコンポーネント化します。

Organisms(有機体)

Moleculesはユーザーの関心事に対して機能を提供しましたが、Organisms層はコンポーネントで完結するコンテンツを提供します。

* Molecules: 独立して存在できるコンポーネントではなく、ほかのコンポーネントの機能を助けるヘルパーとしての存在意義が強いコンポーネント
* Organisms: 独立して独立できるスタンドアローンなコンポーネント

Ref: Atomic Design の理解 : molecules と organisms をどのように分割するか - Frasco

我々が学んだことのひとつは、モジュールがどのグループに属するかを決めるに当たっては、より柔軟であるべきということです。討論でチーム全体を巻き込むよりは、新しいモジュールを導入するデザイナーや開発者が、molecules もしくは organisms のどちらになるのか最終的に決めるべきです。残りのメンバーは、強くそして事実に基づいた異議がなければ、その決定を受け入れるべきです。

Templates(テンプレート)

Templates層の目的は、コンポーネントがページ上で正しくレイアウトされるかを確認することです。

  • コンテンツとプロダクトのUI機能を分離するためのレイヤー

Pages(ページ)

Templates層のコンポーネントに実際のコンテンツを流し込んだものがPageです。

  • 実際のコンテンツに影響されるため、カプセル化も再利用もされない
  • Templatesを介してコンテンツやルーティングをコンポーネントに接続させる

第4章 UIコンポーネント設計の実践

第5章 UIコンポーネントのテスト

あわせて読みたい

2018年8月の振り返り

仕事

アウトプット

ブログ

イベント

音楽

映画・ドラマ・アニメ・漫画

ラクロス

  • vs FALCONS 7-15 lose
  • vs STEALERS 6-10 lose
  • vs FALCONS 8-11 lose

目標と成果

  1. Django本執筆
    • 再リスケとなったので仕切り直してがんばろう
  2. △ Web連載第4回執筆
  3. △ PyCon JP 2018 スタッフ業務
  4. △ PyCon JP 2018 発表準備
  5. ○ リーグ戦に向けて体を絞る
    • 絞れてきているので継続する
  6. 積読本消化
    • JavaScriptで学ぶ関数型プログラミング
    • 「エンジニアの知的生産術」
    • 「Atomic Design ~堅牢で使いやすいUIを効率良く設計する」
    • 読んだので感想ブログ書こう
  7. ○ 日報を書く習慣を戻す

9月に向けて

  • builderscon tokyo 2018
    • スポンサーとしての参加なので単純に楽しむ
  • PyCon JP 2018
    • スポンサー・スピーカー・スタッフとして参加
    • すべてのポジションを全うして楽しもう
  • Perfume 7th Tour 2018 「FUTURE POP」 参戦!
  • PyCamp講師練習会
  • 9/27 西武 vs ソフトバンク
    • 10年ぶりの優勝をなんとか!
  • フロントエンドのモダン化

2018年6月7月の振り返り

前置き

7月は忙しすぎて振り返りを書く余裕なかったので、今回は2ヶ月分まとめて。

仕事

  • TypeScriptアップグレード
  • Airbnb Official連携機能リリース
  • 不動産オーナー向け機能リリース
  • システム移行実施

アウトプット

ブログ

寄稿

イベント

音楽

初恋

初恋

映画・ドラマ・アニメ・漫画

バチェラー・ジャパン シーズン2

ラクロス

  • vs VALENTIA 12-4 win

age++

29歳になりました。

目標と成果

  1. × Django本執筆
    • 遅れてしまっていて申し訳ない 🙇
    • 今週MTGでスケジュールの再確認をする予定
  2. ○ Web連載第3回執筆
  3. ◯ 副業案件
  4. x PyCon JP 2018 webサイト構築
  5. x PyCamp講師練習会
    • 9/26に改めて企画
  6. △ RxJSの勉強
  7. ◎ PyCon JP 2018 CfP提出
    • Pythonで解く大学入試数学」が採択された 🎉
  8. ○ リーグ戦に向けて体を絞る
    • 引き続き皇居ランがんばろう
  9. × 積読本消化

8月に向けて

  • Django本執筆
  • Web連載第4回執筆
  • PyCon JP 2018 スタッフ業務
  • PyCon JP 2018 発表準備
  • リーグ戦に向けて体を絞る
  • 積読本消化
  • 日報を書く習慣を戻す

2018年5月の振り返り

仕事

  • 手間いらずとの繋ぎこみ
  • 在庫管理機能
  • Listingに関する新規UI作成
  • pre-commit導入
  • django-rest-framework-jwt導入
  • Djangoテスト高速化
  • TypeScriptのコンパイル・オプション厳格化
    • "strict": true
    • "noImplicitReturns": true
    • "noUnusedLocals": true
    • "noUnusedParameters": true
  • TypeScriptアップグレード

アウトプット

ブログ

スライド

書籍

イベント

音楽

目標と成果

  1. × Django本執筆
  2. x Web連載第3回執筆
  3. x 副業案件
  4. x PyCon JP 2018 webサイト構築
  5. = PyCon Kyushu CfP提出
    • PyCon Kyushuは都合がつかずに不参加
  6. x PyCamp講師練習会
  7. ◎ DjangoCongress JP
  8. ◎ PyCon APAC 2018
    • 参加ブログ書こう
  9. x RxJSの勉強
  10. ◎ “Perfumeとあなた”ホールトゥワー in 大阪 楽しむ

全般的に業務とDjangoCongressの準備で忙しくて、他をやる余裕が全然なかった。
諸々に迷惑をかけてしまっているので、反省して今月は挽回したい。

6月に向けて

  • Django本執筆
  • Web連載第3回執筆
  • 副業案件
  • PyCon JP 2018 webサイト構築
  • PyCamp講師練習会
  • RxJSの勉強
  • PyCon JP 2018 CfP提出
  • リーグ戦に向けて体を絞る
  • 積読本消化

DjangoCongress JP 2018 にスタッフ・スピーカーとして参加してきた #djangocongress

はじめに

2018/5/19 に開催された DjangoCongress JP 2018 Day1 にスタッフ兼スピーカーとして参加してきました。

DjangoCongress JP 2018って?

djangocongress.jp

DjangoCongress JPは日本で開催されるDjango Webフレームワークのカンファレンスです。 DjangoCongress JPは、Djangoでアプリケーションを開発している人、Djangoを学んでいる人などDjangoに関わる全ての人が参加できます。 参加する全ての人がDjangoについて交流し、出会い、学び、楽しみ、深い理解を得ることを目的にしています。

すでにあるまとめとか

スタッフとしての感想

代表の @hirokiky がブログでも書いてあるけど、

  • 「最小でイベントを作ること」「5年続く1年目になること」というビジョンを共有して、やらないことを明確にした

のがとてもよかったと思う。

DjangoCongress JP 2018ってイベントを開催した話 - Make組ブログ

  • スタッフが燃え尽きなかった
  • 当日の仕事も少ないから、スタッフが発表を聞くことができた
  • 動画配信がないので、みんなが会場でのその瞬間に集中していた
  • 規模を抑えたので知り合いにはすぐ気づけるし、みんなの顔が見えるあたたかいイベントにできた

自分は会場・受付を主に担当してたけど、会場提供してくださったサイボウズさんの施設・運営・おもてなしが素晴らしくてとても助かりました。本当にありがとうございます!

あと個人的には @jbking が作った「Djangoの使用状況 アンケート結果」が美しくてとても好き。

このアンケート結果はwebからでも見れるよ 。

スピーカーとしての感想

slideship.com

Django REST frameworkの機能をいくつか取り上げて、

  • 基本的な解説
  • 実際に使ううえでのつらみ
  • 解決策

という流れで発表しました。

当日の質疑応答で多くの質問をもらえたり、Twitterやブログにも反応を書いてくださってみなさんありがとうございました。

そういった反応を見ると

  • Django REST frameworkは幅広く使われている
  • けど話す場がなくて、各々悩みながら使っている

ということを感じました。

スライドでは「つらみ => サードパーティで解決」という流れが多くなってしまったのが若干心残りでした。質疑応答ではみんながどういったところで悩んでいるか色々聞けたので、次回DRFについて話す機会があれば普段心がけている設計についてなどももっと話したいなあと思ってます。

全体を通しての感想

f:id:massa142:20180526170452j:plain

  • めちゃくちゃ楽しかった!!!
  • Day2のスプリントは力尽きてた
  • Djangoコミュニティの結束が強まったと思う
  • チケットが1日で売り切れてすごかった(小並感)
  • Twitterハッシュタグが盛り上がってて面白かった
  • GeoDjangoとかパスワードハッシュなどDjangoCongressならではのニッチな発表があってよかった
  • 今年の雰囲気を大事にして来年もぜひ開催したい

「はじめてのフロントエンド開発」という本を書きました

共著者として参加していた書籍『React,Angular,Vue.js,React Nativeを使って学ぶ はじめてのフロントエンド開発』が、2018/5/9に技術評論社さまより発売となりました。

React、Angular、Vue.js、React Nativeを使って学ぶ はじめてのフロントエンド開発

React、Angular、Vue.js、React Nativeを使って学ぶ はじめてのフロントエンド開発

どんな本か

React、Angular、Vue.js、React Nativeそれぞれが、同じサーバのAPIを参照し、同様の機能を持ったアプリケーションとして作成します。React Nativeは、ネイティブアプリを開発するためのフレームワークなため、SPA(Single-page application)だけでなく、スマートフォンアプリ開発についても学習ができます。

つまり、同一のアプリケーションを、それぞれのフロントエンドフレームワークで作ると、作り方にどのような違いがあるのかということもわかる書籍となっているのです。

ちょっと言い過ぎかもしれませんが、JavaScriptフロントエンドフレームワークロゼッタストーンと言えるかもしれません。(はじめに より)

本書ではReact、Angular、Vue.js、React Nativeそれぞれで、Slackライクなサンプルアプリケーションを作っていく流れを紹介しています。特定のフレームワークを深く掘り下げるのではなく、JavaScirpitフレームワークを用いた開発の流れや各フレームワークの特徴・違いなどをつかむことを目的としています。このなかのAngularの章を自分は担当しました。

またサンプルアプリケーションの実装に入る前準備として、JavaScriptの歴史背景・SPAに関する用語解説・環境構築・ECMAScript 2015・TypeScriptの解説もあります。最近のJavaScriptはよく知らないという方でも安心して進められる構成となっています。

React、Angular、Vue.jsという日本で人気のあるフレームワークをまとめて1つの書籍で取り上げるだけでなく、APIサーバとしてFirebaseを採用し、まだまだ進化がはやいReact Nativeも扱うというとても意欲的な1冊となっています!

こんな方におすすめ

本書は以下の方に向けて書かれています。

本書は、React、Vue.js、Angularなどのフロントエンド系JavaScriptフレームワークを使用したいと考えているWeb制作者に向けて書きました。

もし、あなたが「今までjQueryなどで実装をしてきたけど、そろそろSPAでも」と考えているWebエンジニアもしくはWebデザイナーであれば、本書にピッタリな読者といえるでしょう。 (はじめに より)

SPAの勉強をはじめたい人や、どのフレームワークを選べばいいか悩んでいるという人がいれば、「これ読んでおいて」と言って渡す本としておすすめです。

書いたきっかけ

今回の企画には、ベースがありました。御徒町にて月1回、クローズド形式でひっそりと開催されているOkachi.jsという勉強会があります。以前、この勉強会でJavaScriptフレームワークの比較検討会が行われました。参加者がそれぞれ1つずつフレームワークを持ち寄り、プレゼンするという内容です。その企画が、紆余曲折を経て、この書籍へと結びついたという経緯があります。執筆陣もOkachi.jsへ参加している面々だったりします。(はじめに より)

「はじめに」にあるように2017年6月に開催されたOkachi.jsの内容がこの書籍のもとになっています。

また、JavaScriptの勉強をしたいけど「なにから始めればいいかわからない」「おすすめの書籍教えてください」という声を周りからよく聞いていたので、そういった方々のための本があればいいなと考えていたのも執筆に参加する動機となりました。

パンダの由来

JavaScriptの本でなんでパンダ?」と思った方も多いと思うので、ここで由来を紹介しておきます。

というのが、パンダの由来となっています。

デザイナーの方にも手にとってもらいやすいイラストになったのではないかと思います。このパンダは本書のなかで色々なポーズをしているので、読み進めながらかわいい姿にぜひ癒されてください。

サポートリポジトリ

本書に登場するコードは、以下のリポジトリで公開しています。

github.com

レビュー記事(随時追記)

2018年4月の振り返り

仕事

  • Listing掲載情報文の管理機能
  • 手間いらずとの繋ぎこみ
  • django-js-reverse導入
  • Prettier・TSLint・HTMLHint導入
  • pre-commit導入
  • webpackアップグレード

アウトプット

ブログ

イベント

音楽

『魚図鑑』

  • 「なんてったって春」は中毒性があって好きな曲

映画

ちはやふる 結び

#ちはやふる結び

A post shared by Masataka Arai (@massa142) on

  • 原作の世界感を大事にしているとても良い映画だと思う
  • ヤスタカが『無限未来』という曲名にした理由がよくわかる
  • 黒髪めがねの真剣佑はまじイケメン
  • 髭を生やした賀来賢人もまじイケメン
  • 松岡茉優の演技は本当に素晴らしい
  • 広瀬すずも演技だんだんうまくなってる
  • 野村周平は高校生の役は限界だったけど頑張ってる
  • 上白石萌音ちはやふるの世界観にすごくはまってる
  • 清水尋也の冷たい目が印象に残る

目標と成果

  1. × Django本第5章執筆
  2. x Web連載第3回執筆
  3. ◯ 副業案件
  4. △ DjangoCongress JPの準備
    • 発表資料準備しないと
  5. △ PyCon JP 2018 webサイト構築
    • PaperCall.ioの調査をする必要あり
  6. ◎ ミラクルカップに向けて頑張る

5月に向けて

  • Django本執筆
  • Web連載第3回執筆
  • 副業案件
  • PyCon JP 2018 webサイト構築
  • PyCon Kyushu CfP提出
  • PyCamp講師練習会
  • DjangoCongress JP
  • PyCon APAC 2018
  • RxJSの勉強
  • Perfumeとあなた”ホールトゥワー in 大阪 楽しむ