2019年12月8日
プログラミング
Material-UI でインタフェースを作る【Reactで作るマラソンペースメーカー】
はじめに
新しい技術にチャレンジし続けるpalanのアドベントカレンダーDay8です!
昨日は『【Figma】待望のAuto Layoutが登場!』についての記事でした。
このシリーズではReactでマラソンのペースを教えてくれるサービスを開発していきます。
実際に作っているコードもオープンソースで公開していきます。
本記事では、まずサービスを作る際のかんたんな要件定義から始め、create-react-appからプロジェクトを作成し、Material-UIというライブラリで外見を作っていきます。
要件定義をする
困ったことに着目する
まずはじめに、どんなサービスを作っていくかを考えます。
こちらの記事でも書きましたが、サービス開発の基本は 「何か困っていることに注目する」 ことです。
今回は、私の趣味であるマラソンにおいて 「目標タイムを達成する為に何キロまでどれくらいのペースで走って、その後はどのくらいのペースで走れば良いか知りたい」 という困ってることがあります。
既存のアプリやサービスは、マラソンにおいて常に一定のペースで走る前提でタイムを出してくれるのですが、実際はそんな一定ペースで走れることはありません。
途中からスパートをかけるとき、どれくらいのペースで走ればよいのか、教えてくれるサービスがほしいと考え、このサービスを開発することにしました。
また、毎回計算していくのも面倒なので、過去に計算したものも保存できたら良いのに、とも感じています。
かんたんな要件定義をする
以下のように、「最低限必要な機能」「できればほしい機能」「あったらいいかもという機能」に分けてみます
最低限必要な機能
- 任意のレースでどれくらいのペースで走れば良いのかわかる
- レース全体としてはもちろん、途中からペースを変えたときでも目標までのペースがわかる
できればほしい機能
- 過去に設定したペースをたどることができる
あったらいいかもという機能
- オフラインでも計算をすることができる
POINT!!
どうしてもサービスを作るとき、機能がてんこ盛りになりがちです。
本当に最低限必要な機能は何なのか、何を一番解決したいのか、を考えてまず作るとシンプルに作れますし、スピードも早くなります。
Material-UIとは
では、最低限必要な機能として、レースでどれくらいのペースで走ればよいのかわかる、機能を作っていきます。
デザインについて、今回はマテリアルデザインを採用していきます。
マテリアルデザインについては、こちらのbageleeの記事をご覧ください。
マテリアルデザインとは、Google社が2014年に考案したデザインに対する考え方とガイドラインです。
具体的にはコンポーネントやレイヤーなどUIで表現することができるものの特徴を定めたドキュメントになります。
マテリアルデザインの環境やレイアウト、インタラクション、カラー、形などを定義しているものです。
Material-UIはReactで簡単にコンポーネントベースでマテリアルデザインを実現できるライブラリです。
Create React App で作る
こちらの記事でも解説していますが、Create React AppというReact環境を簡単に構築できる npm パッケージを使用していきます。
まずcreate-react-appをインストールします。
npm install -g create-react-app
次にプロジェクトを作ります。
npx create-react-app marathon-pace-maker
そしてMaterial-UIをインストールします。
npm install @material-ui/core
yarnを使う場合はこちらです。
yarn add @material-ui/core
これだけでReactにMaterial-UIがインストールできました!
フォームを作ってみる
それでは、Material-UIを使用し、入力フォームを作っていきましょう。
リファレンスから、使いたいパーツのソースコードを見ていきましょう。
こちらの選択フォームを今回は使っていきましょう。
選択肢はこのように表示されます。
では、このフォームはどのようなコードかというと、これくらいシンプルなものです。
<FormControl className={classes.formControl}>
<InputLabel id="demo-simple-select-label">Age</InputLabel>
<Select
labelId="demo-simple-select-label"
id="demo-simple-select"
value={age}
onChange={handleChange}
>
<MenuItem value={10}>Ten</MenuItem>
<MenuItem value={20}>Twenty</MenuItem>
<MenuItem value={30}>Thirty</MenuItem>
</Select>
</FormControl>
FormControl
、InputLabel
、Select
、MenuItem
といったコンポーネントが使われています。
当然、これを使うためにはコンポーネントをインポートする必要があります。
それがこちらです。
import React from 'react';
import InputLabel from '@material-ui/core/InputLabel';
import MenuItem from '@material-ui/core/MenuItem';
import FormControl from '@material-ui/core/FormControl';
import Select from '@material-ui/core/Select';
これくらいシンプルに、コンポーネントをインポートしていくだけで、マテリアルデザインのフォームが出来上がっていきます。
とても便利ですね!
コンポーネントベースですし、スコープを汚すこともありません。
まとめ
今回はサービスを作るための要件を決め、Create React Appでアプリを作り、Material-UIのインストールとかんたんな使い方を解説しました。
次回以降、このUIに動きをつけたり、またReactの新機能であるReact Hooksを解説していきます。
Reactのお仕事に関するご相談
Bageleeの運営会社、palanではReactに関するお仕事のご相談を無料で承っております。
zoomなどのオンラインミーティング、お電話、貴社への訪問、いずれも可能です。
ぜひお気軽にご相談ください。
この記事は
参考になりましたか?
0
0
関連記事
2022年5月13日
Reactでオセロゲームを作る
2021年4月9日
Slack OAuth x React で Slack ユーザー認証を作ってみた!
2021年3月1日
Reactで使えるバリデーションライブラリを紹介!
2021年2月22日
Hasura Cloud × Auth0 × React でお手軽にTodoアプリを作ってみた!
2020年12月12日
Blitz.jsとTailwind CSSでメモ帳アプリの作成【第2弾】
2020年12月8日
コンポーネントを実装するときに意識すること
簡単に自分で作れるWebAR
「palanAR」はオンラインで簡単に作れるWebAR作成ツールです。WebARとはアプリを使用せずに、Webサイト上でARを体験できる新しい技術です。
palanARへpalanでは一緒に働く仲間を募集しています
正社員や業務委託、アルバイトやインターンなど雇用形態にこだわらず、
ベテランの方から業界未経験の方まで様々なかたのお力をお借りしたいと考えております。
運営メンバー
Eishi Saito 総務
SIerやスタートアップ、フリーランスを経て2016年11月にpalan(旧eishis)を設立。 マーケター・ディレクター・エンジニアなど何でも屋。 COBOLからReactまで色んなことやります。
sasakki デザイナー
アメリカの大学を卒業後、日本、シンガポールでデザイナーとして活動。
やまかわたかし デザイナー
フロントエンドデザイナー。デザインからHTML / CSS、JSの実装を担当しています。最近はReactやReact Nativeをよく触っています。
Sayaka Osanai デザイナー
Sketchだいすきプロダクトデザイナー。シンプルだけどちょっとかわいいデザインが得意。 好きな食べものは生ハムとお寿司とカレーです。
はらた エンジニア
サーバーサイドエンジニア Ruby on Railsを使った開発を行なっています
こぼり ともろう エンジニア
サーバーサイドエンジニア。SIerを経て2019年7月に入社。日々学習しながらRuby on Railsを使った開発を行っています。
ささい エンジニア
フロントエンドエンジニア WebGLとReactが強みと言えるように頑張ってます。
Damien
WebAR/VRの企画・開発をやっています。森に住んでいます。
ゲスト bagelee
かっきー
まりな
suzuki
miyagi
ogawa
雑食デザイナー。UI/UXデザインやコーディング、時々フロントエンドやってます。最近はARも。
いわもと
デザイナーをしています。 好きな食べ物はラーメンです。
taishi kobari
フロントエンドの開発を主に担当してます。Blitz.js好きです。
kubota shogo
サーバーサイドエンジニア。Ruby on Railsを使った開発を行いつつ月500kmほど走っています!
nishi tomoya
aihara
グラフィックデザイナーから、フロントエンドエンジニアになりました。最近はWebAR/VRの開発や、Blender、Unityを触っています。モノづくりとワンコが好きです。
nagao
SIerを経てアプリのエンジニアに。xR業界に興味があり、unityを使って開発をしたりしています。
Kainuma
サーバーサイドエンジニア Ruby on Railsを使った開発を行なっています
sugimoto
asama
ando
iwasawa ayane
oshimo
異業界からやってきたデザイナー。 palanARのUIをメインに担当してます。 これからたくさん吸収していきます!