初めに Reactの実装ドキュメントやライブラリは充実している 要件通り動くだけのコードを作ることは誰でもできるが、保守運用改善は大変である 綺麗なコードほどコード修正は早くなり、デバックは効率的になり、開発者間の認識の共有は楽になる 前提 基本: 数行レベルで綺麗なコードが書けること 中級: コンポーネント単位で綺麗なコードが書けること 1. 無駄なアルゴリズムの適応はするな 問題提起されてない箇所に勝手に適応していないか? ベンチマークが数段高くても、ユーザ体験的には誤差でないか? // NG🤔 制御フローの理解,例外ケースの確認,一定時間要してしまう const sumArray = (numbers: number[]): number => { let sum = 0; for (let i = 0, j = numbers.length - 1; i < j; i++, j-
皆さんこんにちは。筆者は最近Recoilを推す記事を量産しています。その成果か、Recoilは非同期処理を交えたロジックを書くのが得意であるということは以前よりも知られるようになりました。その次のステップの話題としてよく見られるのが「Rxと似ている」「Rxとどこが違うの?」といったものです。Rx (Reactive Extensions)、とくにフロントエンドの文脈ではRxJSですが、これは非同期処理を交えたロジックを記述できるという点で確かにRecoilと類似しています。 そこで、今回はRecoilとRxJSの共通点や違いについて、具体例も交えつつ解説します。 コンセプトから見るRecoilとRxJSの共通点・相違点 RxJSの特徴については、RxJSのイントロダクションにわかりやすく書いてあります。 RxJS is a library for composing asynchronou
かれこれ 5 年くらい趣味開発で npm-scripts を書き続けている。長年書き続けているとノウハウが蓄積されてきて、「こう書くとスッキリする」「迷いがなくなる」「後から拡張したくなった時に、簡単に拡張できる」みたいな書き方が身についてきた。自分の型、あるいは手癖のようなものだと思う。 せっかくなので、id:mizdra の今の npm-scripts を書く時の手癖を書き連ねてみる。 基本形 { "scripts": { "build": "webpack --mode production", "dev": "webpack-dev-server --mode development", "lint": "eslint .", "test": "jest" } } 一番シンプルな npm-scripts を書く時のパターン。以下の 4 つの script を登録している。 buil
Twitterなどで、よく「UIコンポーネントにマージンをつけるな」という言及をよく目にします。 以下の記事など、とても分かりやすく参考になるかと思います。 しかし、私はそれらの言及・記事などを見た上で(おそらく)UIコンポーネントにマージンを持たせる実装を行なってしまっていました。 熟練者から見ると、「UIコンポーネントにマージンをつけるな」というのは、これらの記事を見ていない(つまり知識としてない)ということが原因として起きると思われているのではないでしょうか? そのようなケースも多々あると思いますが、今回は知識として持っているにも関わらず「UIコンポーネントにマージンをつけてしまっていた(現在進行形かもしれない)」私の話をしようかと思います。 なお、この記事を書くにあたって「Every Layout」という書籍から着想を得ました。 気になる方はチェックしてみてください。 なぜコンポー
はじめに フォームの実装のライブラリはFormik、React Hook Form、React Final Formのどれにしよう…と悩むことは多いと思うのですが、バリデーションを何で行おうというのは考える機会が少ないと思います。 というのも、React Hook FormもFormikもYupを推しているので、あまり調査せずにYupを使う方が多いのではないでしょうか。そもそもReact Hook FormはデフォルトではHTML標準のバリデーション機能を使用しているので、バリデーションライブラリを意識したことないという方もいるかもしれません。 実は非常に多くのバリデーションライブラリがあるので、今回は色々紹介して比較していきます! バリデーションライブラリの種類 ざっと挙げるだけでもこれくらいあります。 ・Joi ・Yup ・zod ・io-ts ・Superstruct ・Vest ま
良いアプリを作るために、良いコードを読む。 CTOの Shoken です。キッチハイクでは2年前にRailsへのReact導入、1年半前に0からReact Nativeでアプリ開発を始めました。この記事では、React Nativeアプリ開発のベストプラクティスを見つけるためのソースコード探索手法と、コードリーディングのポイントを紹介します。 良いアプリを作るために、良いコードを読む。 React Nativeアプリのソースコードの探し方 ReactNativeNewsのShowcase, React Native Appsから探す F8 2017 PxView React Docs ( React公式ドキュメント ) から探す react-nativeリポジトリのRNTesterを読む ライブラリのサンプルアプリのコードを読む コードリーディングのポイント ディレクトリ構成 使用している
昨日、Facebook製のReact用ステート管理ライブラリRecoilが発表されました。Facebook製といってもReact公式のステート管理ライブラリとかそういう位置付けではないようですが、それでも大きな注目を集めているのは間違いありません。 そこで、筆者がRecoilに対して思ったことや、筆者の視点から見たRecoilの特徴を記事にまとめました。 なお、この記事の執筆時点では副作用の扱いなどの点はいまいち情報が揃っていません。この記事では速報性を重視し、コアのステート管理部分に絞って考えています。また、まだexperimentalなライブラリなので、今後この記事の内容からRecoilのAPIが変化したとしても悪しからずご了承ください。 この記事を書くときに筆者が色々試していたCodeSandboxはこちらです。 https://codesandbox.io/s/recoil-san
この記事はPWA Advent Calendar 21日目の記事です。 create-react-appのService Workerサポートを使ってお手軽にオフラインキャッシュを組み込んでみたので、調べたことをメモします。とりあえずすぐにオフラインでPWAが動かせるようになって便利です。 使い方 create-react-app でアプリを生成していればindex.js|tsで import { register } from './serviceWorker'; register(); するだけ。 内部 create-react-app(2.0以上の場合、現在は2.1.4)のService Worker supportは内部でworkbox-webpack-pluginを使っている 使われているのはgenerateSW モード プロジェクト内のhtml/js/imageが一通りキャッシ
create-react-appコマンドを実行すると、React.jsプロジェクトの雛形を作れます。 その雛形のsrcディレクトリ以下にregisterServiceWorker.jsというファイルがあります。 また、ビルドするとservice-worker.jsというファイルが生成がされます。 雛形のコードがService Worker上でしている事と、上記ファイルについてまとめてみました。 Service Workerについて Service Workerとは、リッチなオフライン体験・定期的なバックグラウンド同期・プッシュ通知など、いわゆるPWAの機能を実現するために基盤となる技術です。 (詳しくはGoogleのドキュメントにて解説されています。Service Worker の紹介) Service Workerによって実現できる機能は様々ですが、create-react-appで作っ
Illustration by unDrawInkdropというMarkdownノートアプリを一人で作っているTAKUYAです。最近、React Nativeを使って、iOS版とAndroid版の新しいバージョンをリリースしました。React Nativeは、JavaScriptとReactを使ってクロスプラットフォームなモバイルアプリが開発できるフレームワークです。 どうすればReact Nativeでハイクオリティなアプリが作れるのか、今回の開発を通して多くのことを学びました。本稿では、よりよいアプリを作るために自分が工夫したことをシェアします。既にReact Nativeでアプリを作っている方も、これから作ろうと思っている方も参考になるかと思います。 概要OSSライブラリは慎重に選ぶネイティブ拡張モジュールは出来るだけ使わないUIテーマの対応タブレットの対応動作を軽く保つ違和感のない
Angular などの JavaScript フレームワークは大規模向けに設計されており、標準で多くのエコシステムが組み込まれています。 React は単なる View ライブラリです。そのため View ライブラリを補完するためのエコシステムの選択が必須となります。 エコシステムを自由に組み合わせて開発者とプロジェクトに応じた理想的なフレームワークを作成する必要があるわけです。 これは、小規模アプリケーションから大規模アプリケーションまでの様々な要件やニーズに対応できる柔軟性が高いことを意味していますが、エコシステムを選択するためのコストが必要となります。 下記では、筆者が最低限、導入を検討する余地があると考える主要な React のエコシステムとその簡単な概要を記載しています。 筆者の独断と偏見で選択したエコシステムであることを考慮してお読みいただきたいです。 既知のエコシステム (ほ
AWS Amplifyとは? 本記事はServerless Advent Calendar 2017の13日目の記事です。よろしくお願いします。 AWS Amplifyは、2017年11月に公開されたAWSを利用するWebアプリケーション向けのJavaScriptライブラリです。サインアップやサインイン、MFA、追跡またはメトリクスの分析、コンテンツ管理、またはサーバーレスAPI統合などの実装が容易にできるように設計されています。 AWS Amplify は、クラウドサービスをスケーラブルかつ保護された方法で使用して一般的なアクションを実行するクライアント開発者に、宣言型インターフェイスを提供するように設計されています。これらの新機能を使用して、開発者は JavaScript アプリケーションを作成して一般的な抽象化を使用したベストプラクティスをプログラムによって適用し、最終的に開発サイク
By Harsh Makadia Just like how people are excited about updating their mobile apps and OS, developers should also be excited to update their frameworks. The new version of the different frameworks come with new features and tricks out of the box. Below are some of the good features you should consider when migrating your existing app to React 16 from React 15. Time to say Goodbye React15 ? Error H
Webフロントエンド パフォーマンス改善ハンドブック このパフォーマンス改善ハンドブックでは、ウェブアプリケーションにおけるフロントエンドのパフォーマンス改善について扱っています。 ダウンロード版 埋め込み動画を再生できないなど一部制限がありますが、ダウンロード版を配布しています。 PDF版 EPUB版 MOBI版 目的 このハンドブックでは過去に行った改善の事例を中心に紹介しています。 そのため、現在の最適な解決方法を提案するものではありません。 また、アプリケーションによっても最適な解決方法は異なります。 今回の事例ではViewライブラリにReactを使い映像再生プレイヤーなどある程度複雑な機能を持ったウェブアプリケーションのフロントを扱います。 具体的にはニコニコ生放送(以下「生放送」)で行った事例を中心に書かれています。 開発と平行して行われていたため、React 15から16の間
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く