検索
ホームページウェブフロントエンドjsチュートリアルWeb 開発の考え方が React Native でどのように私を迷わせたのか

How my web development mindset led me astray in React Native

最初の React Native アプリを構築したとき、私には Web 開発の経験がありました。 iOS と Android で React を使用することは、私のスキルの自然な延長のように思えました。

しかし、Web 開発者の考え方がネイティブ アプリ開発に必ずしもうまく反映されるわけではないことが、困難な方法ですぐにわかりました。

ナビゲーションを例に考えてみましょう。 Web では通常、各サイトが独自のページ レイアウトを作成します。ヘッダー、サイドバー、フッターはすべてカスタム構築されています。単純な要素から始めることもできますが、それは単なる空白のキャンバスです。機能的かつ視覚的に魅力的なものにするには、JavaScript と CSS を使用する必要があります。

このカスタマイズはあなたのブランド アイデンティティの一部になります。ヘッダーが別のサイトのものと似ていると、一般的であると感じられます。

私がネイティブ アプリ開発に移行したときも、同じ考え方を持ち歩きました。

すべてのカスタム コンポーネントを細心の注意を払って設計しました。戻るボタンとタイトルを備えた独自のヘッダーを作成しました。カスタムの画面遷移とアニメーションを作成しました。安全領域を自分で管理し、画面の向きを追跡してトランジションをアニメーション化することもしました。私はカスタムの下部タブを作成しました。これは、私のアプリが他の人のアプリと似ていないことを確認するためのものです。

これが間違いであると気づくのに、時間はかかりませんでした。

ネイティブ アプリのユーザーは、アプリ間で一貫したパターンを期待しています。また、ナビゲーションなどの基本的な UI 要素の品質にも大きな期待を寄せています。たとえば、iOS では、ユーザーは戻るボタンを長押しして、複数の画面を戻ることを期待します。それが欠けていると、その体験は不完全に感じられます。

では、なぜ車輪を再発明するのでしょうか?ネイティブ コンポーネントはすでにプラットフォーム用に最適化されています。カスタム ヘッダーを最初から作成する代わりに、単純にネイティブ ヘッダーを使用して色を微調整することもできました。さらに良いことに、カスタマイズを完全にスキップして、UIKit コンポーネントを直接使用することもできました。ユーザーは、「基本的」と感じるどころか、このアプリが iOS エコシステムにいかに自然に適合するかを評価したでしょう。

Apollo for Reddit のようなアプリの成功を例に挙げましょう。 iOS のネイティブなデザイン言語を採用し、プラットフォームの自然な拡張のように感じられるため、人々に気に入られました。

これは Web 開発とは大きく対照的です。ウェブでは、空白のキャンバスから始めて、すべてを自分で構築します。すぐに使えるプリミティブは、多くの場合、不格好で魅力的ではありません。ボタンはグレーです。入力には粗い輪郭があります。一貫したベースラインを得るために CSS をリセットすることも必要です。

Web UI ライブラリはこれらの不満を軽減するために存在しますが、パッチワークのソリューションです。比較すると、iOS のようなネイティブ プラットフォームには、一貫性のある美しく作られたデザインのプリミティブが付属しています。ナビゲーション、アニメーション、メニュー、タイポグラフィ、色、アイコンはすべて、シームレスなユーザー エクスペリエンスを生み出すために専門家によって慎重にデザインされています。これらは単なるツールではなく、数十年にわたる改良によって形成されたデザイン システムです。

これを理解するまでにあまりにも長い時間がかかりました。私も最初は Apple のヒューマン インターフェイス ガイドラインを読む気もありませんでした。

2019 年当時、React Native アプリはネイティブ アプリの高品質な模造品のように感じられることがよくありました。彼らはその役を見たが、それを完全には感じなかった。 React Native の哲学は、常に基盤となるプラットフォームに一致することですが、実際には、多くのライブラリは、本物を使用するのではなく、ネイティブのコンポーネントを模倣した JavaScript ベースのコンポーネントに依存していました。

たとえば、Android 上の React Native アプリではマテリアル デザイン ヘッダーがよく使用されますが、実際のネイティブ ヘッダー コンポーネントを利用するのではなく、JavaScript で実装されていました。

Web 開発者として、私はこの抽象化に魅力を感じました。これにより、カスタマイズを完全に制御できるようになりました。しかし、このアプローチでは、ユーザー エクスペリエンスを低下させる微妙な矛盾が生じることがよくありました。

React Native 開発者に全面的な責任があるわけではありません。当時、特に Expo を使用している場合、ネイティブ コードで作業するのは面倒でした。ネイティブ機能を追加するには、多くの場合、Expo を放棄してスタック全体を再構成する必要がありました。ネイティブ コードを含むライブラリは React Native の更新と頻繁に同期しなくなり、開発者は完全に理解していない Objective-C または Java ファイルに取り組むことになります。

「JS ベース」はライブラリのセールスポイントにもなり、開発者にネイティブの依存関係に対処する必要がないことを約束しました。

JavaScript とネイティブ コードの間のこの隔たりにより、私の Web ファーストの考え方が強化されました。すべてにおいて JavaScript を使用してみませんか?

ありがたいことに、React Native エコシステムは進化してきました。現在では、Swift と Kotlin を使用して、はるかに少ない構成でネイティブ モジュールを作成できます。さらに良いことに、Expo はネイティブ コードをサポートするようになりました。これらの改善により、ネイティブ ファースト開発がよりアクセスしやすくなり、ライブラリがネイティブ プリミティブを受け入れることが奨励されています。

たとえば、React Navigation はネイティブ コンポーネントの使用に移行し、開発者の広範なカスタマイズよりもシームレスなユーザー エクスペリエンスを優先しています。

この変化は、React Native の明るい未来を示しています。ネイティブ ツールが使いやすくなったことで、プラットフォームに属するかのような見た目と操作感のアプリを構築できるようになりました。

だから、私の間違いから学んでください。プラットフォームのツールを使用し、その設計哲学を受け入れてください。そして何よりも、ルールを破る前にルールをマスターしてください。

以上がWeb 開発の考え方が React Native でどのように私を迷わせたのかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptのデータ型:ブラウザとNodejsに違いはありますか?JavaScriptのデータ型:ブラウザとNodejsに違いはありますか?May 14, 2025 am 12:15 AM

JavaScriptコアデータ型は、ブラウザとnode.jsで一貫していますが、余分なタイプとは異なる方法で処理されます。 1)グローバルオブジェクトはブラウザのウィンドウであり、node.jsのグローバルです2)バイナリデータの処理に使用されるNode.jsの一意のバッファオブジェクト。 3)パフォーマンスと時間の処理にも違いがあり、環境に従ってコードを調整する必要があります。

JavaScriptコメント://および / * *を使用するためのガイドJavaScriptコメント://および / * *を使用するためのガイドMay 13, 2025 pm 03:49 PM

javascriptusestwotypesofcomments:シングルライン(//)およびマルチライン(//)

Python vs. JavaScript:開発者の比較分析Python vs. JavaScript:開発者の比較分析May 09, 2025 am 12:22 AM

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

Python vs. JavaScript:ジョブに適したツールを選択するPython vs. JavaScript:ジョブに適したツールを選択するMay 08, 2025 am 12:10 AM

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScript:それぞれの強みを理解するPythonとJavaScript:それぞれの強みを理解するMay 06, 2025 am 12:15 AM

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

JavaScriptのコア:CまたはCの上に構築されていますか?JavaScriptのコア:CまたはCの上に構築されていますか?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptアプリケーション:フロントエンドからバックエンドまでJavaScriptアプリケーション:フロントエンドからバックエンドまでMay 04, 2025 am 12:12 AM

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

Python vs. Javascript:どの言語を学ぶべきですか?Python vs. Javascript:どの言語を学ぶべきですか?May 03, 2025 am 12:10 AM

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい