React Native開発者のスキルをスクリーニングする方法

公開されました。 最終更新日
React Native開発者のスキルをスクリーニングする方法

Reactが大々的に報道される中、React Nativeは着実にJavaScriptの世界に欠かせない存在となっています。これにより、モバイル開発者はiOSとAndroidの両方に移植できるモバイルアプリケーションを書くことができます。この利点は、iOSのスキル(Objective-CとSwift)とAndroidのスキル(JavaとKotlin)を別々に開発する必要がない代わりに、モバイルアプリの開発者は、現在最も一般的に使用されている言語であるJavaScriptを使用することができることです。しかし、他の技術スタックと同様に、JavaScriptを知っているだけでは十分ではありません。React Nativeを深く理解している必要があります。では、React Native開発者が必要なスキルを持っているかどうか、雇用主はどうやって見分けることができるのでしょうか?

React Nativeの開発者スキルをスクリーニングするためのガイド

このガイドは、技術系の採用担当者がReact Native開発者候補者をスクリーニングするために必要な情報をすべて提供します。内容は以下の通りです。

React Native開発者とは

1.React Nativeとは何ですか?

React Nativeは、主にユーザーインターフェースに関連するクロスプラットフォームのモバイルアプリケーションの開発プロセスを簡素化することを目的として、Facebook社によって設計・維持されているフレームワークです。このフレームワークは、Reactという別のJavaScriptライブラリの上に構築されています。Reactは、フロントエンドの開発者の間で最も人気があり、認知度の高いツールとして急速に普及しています。しかし、このReactの台頭は、いくつかの議論を呼んでいます。

2015年にオープンソースプロジェクトとして公開されたReact Nativeは、モバイル開発者のコミュニティを瞬く間に分裂させました。React Nativeが登場する前には、HTML、CSS、JavaScriptで書かれたウェブページを、ネイティブアプリを模した自己完結型のブラウザの中に表示するツールがいくつかありました。それが不便に思えるなら、その通りです。これらのツールは使い勝手が悪く、あまり人気がありませんでした。

一方、React Nativeは、先人たちのようなショートカットを避けています。アプリケーションによってレンダリングされるビュー階層は、それが実行されているシステムに対して完全にネイティブです。別の言い方をすれば、アプリはウェブページではなく、ネイティブアプリのように見えます。これにより、React Nativeアプリは、Swift、Objective-C、Kotlin、またはJavaで書かれた通常のアプリケーションと区別がつきません。実際に動作を確認するには、Facebook、Messenger、Instagram、Discordなどの人気アプリをチェックしてみましょう。専門家であっても、これらのアプリのどの部分がReact Nativeで書かれていて、どの部分が他の技術スタックで書かれているかを見分けるのは難しいでしょう。

1.1 以下のような違いがあります。 React vs React Native

ReactとReact Nativeは、どちらもFacebookが作成したオープンソースプロジェクトですが、同じものではありません。 リアクト は、Webアプリケーションのフロントエンドを構築するためのJavaScriptライブラリであるのに対し、React Nativeは、iOSとAndroidの両方でモバイルアプリケーションを構築するための統一されたツール群を提供するフレームワークです。そのため、ReactはHTMLでレンダリングされるのに対し、React Nativeはそうではないというような根本的な違いがあります。また、React Nativeの開発者は、SwiftやKotlinなどのプラットフォーム固有の言語で書かれたネイティブビューを、React Nativeで使えるものに変換したり、ブリッジしたりすることができます。

しかし、その違いにもかかわらず、ReactとReact Nativeは驚くほど似ており、React NativeはReactの基礎の多くを使用しています。React Nativeで作業するには、Reactのコンポーネントとプラクティスの70-80%を使用する必要があります。このため、Reactの開発者がReact Nativeを学ぶための学習曲線はそれほど急ではありません。それでも、この2つは互いに混同してはいけない別の技術です。

2.React Nativeは何に使われるのか?

React Nativeの最大の利点は、React Nativeの開発者が複数の技術スタックを学んで使用することなく、異なるプラットフォーム向けのアプリケーションを作成できることです。Facebookはこのアプローチを "learn once, write anywhere "と呼んでいます。彼らがReact Nativeを開発した目的は、モバイルアプリケーションを構築するために必要な知識を統一することです。

React Nativeは、ユーザーインターフェースを宣言的に構築する方法を開発者に提供します。平たく言えば、iOSやAndroid SDKのネイティブUIKitに比べて、学習曲線が非常に緩やかなのです。そのため、多くのアプリケーション開発者が、モバイルアプリケーション開発に参入するための手段としてNativeを利用しています。また、Google社のFlutterやApple社が最近発表したSwiftUIなど、同様の原理で開発された競合ツールも数多く存在しています。

しかし、React Nativeは、アプリ開発に参入するための簡単な方法を表しているにもかかわらず、いくつかの強力なアプリの基礎となっています。Bloomberg、Airbnb、UberEatsなどは、React Nativeで作られたアプリの素晴らしい例です。

IT業界の採用担当者がReact Native開発者について知っておくべきこと

3.IT業界の採用担当者がReact Nativeについて知っておくべきこととは?

まだまだ若いフレームワークであるReact Nativeは、開発者の作業に小さな、または大きな影響を与える変更が何度も行われています。ほとんどの場合、これらの変更はオプトインであり、React Native開発者がコードベースの移行を余儀なくされるようなハードな非推奨事項はほとんどありません。

オープンソースであるため、予定されているすべての変更や改良のロードマップがコミュニティに公開されています。最近追加されたフックや、近い将来に予定されているさらなる使いやすさの向上により、モバイルアプリケーションの作成プロセスは、これまで以上に迅速かつ便利になるでしょう。

React Nativeの紛れもない利点の1つは、その広範で有益なコミュニティです。あらゆるレベルの質問の多くは、ブログ記事、Stack Overflowのエントリー、またはNPMパッケージとして投稿されたマイクロライブラリのいずれかですでに回答されています。初心者が学ぶためのリソースも、上級開発者が知識を深めるためのリソースもたくさんあります。

しかし重要なことは、Facebookの「一度学べばどこでも書ける」というアプローチと、「一度書けばどこでも書ける」というアプローチを混同しないことだと思います。React Nativeでは、iOSやAndroidで動作するアプリを書くのはまだ難しいです。システムに依存する機能がまだ多く、コードの一部をiOS版とAndroid版に分けて書く必要があるからです。それでも、React Nativeの目的はアプリを作るためのスキルを統一することであり、両方のプラットフォームで動作する1つのアプリを作ることではありません。

3.1 React Native開発者が持つべき経験とは

React Native開発者の履歴書を評価する際には、候補者がどのようなポジションで募集されているかが重要になります。商用プロジェクトに携わっていることは、シニアレベルやリードレベルのポジションでは、ビジネス関連のノウハウが求められるため、必須です。それ以外のレベルでは、それほど重要ではありません。オープンソースへの貢献の利点は、コードスタイルや候補者がコミュニティと交流する方法について、採用担当者に追加の洞察を与えることができることです。要約すると、選考プロセスを始める前に、チームのニーズと役割の責任を理解することが本当に重要です。

審査の段階でReact Nativeのスキルを確認するには?

4.履歴書をもとにしたReact Native開発者のスキルの技術審査

React Nativeは、その導入方法や背景が非常にユニークです。JavaScriptに精通し、おそらくReact自体にも精通しているウェブ開発者の中には、自分のスキルセットをモバイル開発にまで広げたいと考えている人もいるでしょう。逆に、ネイティブのモバイル開発者の中には、React Nativeのアプローチやツールの強みを認識し、日々の業務で活用したいと考えている人もいるでしょう。前者はJSやReact特有のパターンやベストプラクティスをもたらし、後者はモバイル特有の環境でのいくつかの機能や制限に関する知識を提供することで、どちらもチームに大きく貢献することができます。採用担当者は、候補者が具体的にどのような役割を果たし、どのようなスキルセットがチームで求められているのかを把握しておくとよいでしょう。

React Native開発者向け用語集

5.技術系採用担当者のためのReact Native用語集

現在のJavaScriptの規格 ECMAScript2015(通称:ES6)、ECMAScript2019(通称:ES10)。
強力な打ち込みを加えたJavaScriptのスーパーセット タイプスクリプト
React Nativeライブラリ React-Router、Redux、Redux-Thunk、Redux-Saga、GraphQL

パッケージマネージャー

NMP、ヤーン
JavaScriptの拡張機能 JSX
コードスタイルの維持に役立つツール ESLint, TSLint, Prettier
テストランナー ジェスト、モカ

5.1 React Native開発者の履歴書で見るべき技術とは

重要なことは、候補者が慣れ親しんでいるJavaScriptの規格です。2015年のECMAScript2015(通称:ES6)を皮切りに、毎年新しいJavaScript規格が発表されています。2019年現在のイテレーションはECMAScript2019(ES10)と呼ばれています。こうした規格の違いは、候補者がこれまで使ってきたReact NativeのAPIにも影響を与えます。

最も大きな変化は、規格ES5(2009年)とES6(2015年)の間に起こりました。しかし、新しい規格で書かれたコードは、Babelのようなツールを使って、いつでも古い規格に移行することができます。

5.2 React Native開発者の履歴書で気をつけるべきその他の点

React Native開発者にとっても有用なスキルは、TypeScriptです。これは、静的型付けを使用するJavaScriptのスーパーセットです。一般的に静的型付けは、コードのエラーをより早く発見するのに役立ちます(ただし、ユニットテストに取って代わるものではありません)。また、開発者は、公開するパブリックAPIについての意図を、より明確でより良い構造で表現することができます。

また、ナビゲーションや状態管理などの特定の問題を解決することに焦点を当てた、アドホックなReact Nativeライブラリも数多く存在しています。それらに精通しているかどうかは、候補者が取り組んできたプロジェクトの種類と強い相関関係があります。候補者がReact-Router、Redux、Redux-Thunk、Redux-Saga、GraphQLなどのライブラリを挙げている場合、候補者のこれまでの経験に関する議論の興味深い入口になるかもしれません。

React Native開発者インタビューの質問

6.React Nativeのインタビュー記事

履歴書は、候補者が自分の知識をどのように表現しているかを知るためのものです。しかし、それだけではあなたが必要とするスキルを持っているかどうかはわかりません。結局のところ、履歴書には誰でも何でも書けるのです。候補者は、電話審査でスキルについて質問されたり、コーディングスキルの評価段階を経て面接を受けたりする必要があります。

6.1 React Native開発者の体験談に関する質問

質問1. 過去に手がけたアプリケーションについて説明してください。それらのアプリケーションでReact Nativeをどのように使用しましたか?

理由は何ですか? この質問は、候補者が心を開いて自分の一般的な経験について率先して話すためのウォーミングアップとしての役割がほとんどです。フォローアップとして、React Nativeがチームでどのように使用されたかを尋ねることが重要です。これにより、採用担当者は候補者がReact Nativeのどのような分野に精通しているかを評価することができます。例えば、RNがアプリ全体で使用されたのか、それとも一部の画面だけで使用されたのか、Objective-C/Javaで書かれたネイティブな部分とブリッジされていたのか、などです。

Q2: あなたとあなたのチームは、なぜReact Nativeを採用したのですか?最大のセールスポイントは何だったのでしょうか?あなたが手がけたアプリケーションで、React Nativeはどのように役立ちましたか?

R: この質問に対する答えは、採用担当者にいくつかのことを教えてくれます。候補者がチーム内でどのような立場や責任を負っていたのか、意思決定プロセスに参加していたのか。また、そうでないとしても、仲間にアイデアを売り込むことができたかもしれないReact Nativeの重要な目的を認識しているかどうか?また、その候補者が、一緒に仕事をしたアプリケーションのビジネス要件に基づいて技術的な決定を下すことができるのか、それともただトレンドに従っているだけなのかがわかります。

Q3: これらのアプリケーションでは、ステートをどのように扱っていましたか?どのように解決したのでしょうか?

R: これは少し技術的な質問です。React Nativeのコアはユーザーインターフェイスのレイヤーに過ぎないので、残りの空白を埋めるために候補者が何を使っていたのかを知ることは重要ですが、その1つが状態管理です。これは、一方向性のデータフロー(redux、flux)や、外部サービスからの状態処理(REST、GraphQL)についての議論を開く可能性があります。また、自己啓発において重要なスキルである、アプローチの長所と短所を評価する候補者の能力を知ることができます。

6.2 React Native開発者の知識や意見についての質問

Q1: React Nativeではどのようなコンポーネントが使えますか?それらはどのように違うのですか?どのような場合に使用しますか?

R: この問題は、受験生が様々な方法で解釈することができます。コンポーネントは、コンテナ/プレゼンテーション、またはステートフル/ピュア/ファンクショナルのいずれかに分けることができます。受験者がどのような考え方をするかは問題ではなく、この問題は、受験者が自分の経験に照らし合わせて、それぞれの目的や境界線について話すことができるかどうかが重要です。

Q2: アプリケーションのコードをどのように再利用していますか?共通のロジックを共有するためにどのようなテクニックを知っていますか、またそれについてどのような意見をお持ちですか?

R: コードの再利用にはいくつかの方法がありますが、その中でも最もポピュラーなものは、高次コンポーネント、レンダープロップ、フック、コンテキストです。これらの使用方法は通常、チームの好みに基づいているため、ここでの主なポイントは、候補者がなぜ他のものではなく1つを使用するのかを説明することです。候補者の知識の深さ、React Nativeの内部構造の理解、クリーンで保守性の高いコードをどれだけ気にしているかを採用担当者に感じてもらえるはずです。

Q3: アプリケーションのデバッグはどのように行っていますか?どのようなツールを使用していますか、またそれらはどのように役立つのですか?

R: React Native開発者の時間の大半は、既存のコードベースの読み込み、分析、デバッグに費やされます。そのため、適切かつ効率的な方法でアプリをデバッグするために必要なスキルと知識が重要になります。候補者は、単純なログの使用、デバッガの装着、ブレークポイントの使用、React Dev Toolsによるビュー階層の検査など、さまざまなアプローチを挙げることができます。これらのアプローチにはそれぞれ最適なケースがあるので、候補者はそれが使用された状況の例についても言及する必要があります。バグが修正され、今後も修正されたままであることを判断する方法として、バグを再現するユニットテストに言及し、それをパスさせるとボーナスポイントが入ります。

Q4: アプリのパフォーマンスに問題が発生したことはありますか?その診断には何を使いましたか?どのように解決しましたか?

R: React Nativeのパフォーマンスは、その有用性に関して懐疑的な人からよく取り上げられます。確かにいくつかの罠に陥りやすく、その過程でフレームレートが低下することがありますが、ReactとReact Nativeの内部を理解することは、それらの問題を軽減するのに十分です。受験者は、暗記のようなテクニック、純粋なコンポーネントのような改善点、インライン関数のような落とし穴を挙げることができます。これらは、インターフェイスの応答性を低下させる原因のかなりの部分をカバーしています。プロファイラのようなツールや、ブレンディングやオフスクリーンレンダリングのようなコンセプトについて語るとき、候補者は本当に複雑な問題に直面していることがわかります(おそらくアニメーションについて)。理想的な回答は、パフォーマンスを向上させるためには、最小化または最大化するための一連の指標(FPS、メモリまたはCPU消費量など)が必要であることにも言及する必要があります。

Q5: テストはどうですか?それらを使用しましたか?テストはチームにどのように貢献しましたか?どのようなテストを使用しましたか?

R: テストは、いまだに驚くほど議論の多いテーマです。好むと好まざるとにかかわらず、アプリケーションは、新機能が仕様通りに動作しているか、さらに重要なことに、古いものが壊れていないかを確認するために、本番環境に送る前に、少なくとも何らかの方法でテストする必要があります。強力で献身的なQAチームを持つことは間違いなくこのことに役立ちますが、ユニットテストやスナップショットテストを持つことで、React Native開発者はコードを修正するために使用できる即時のフィードバックを得ることができます。テストは開発者にとって、コードベースに導入される変更に対する自信を大幅に高めるツールです。テストは、アプリケーションが正しく動作している瞬間を捉え、その時点からその正しさを維持します。複数のJavaScriptテストランナーがありますが、React Nativeの文脈では、特にReact Nativeの作者が提供するJestが最も推奨されます。さらに、react-test-rendererを使って、特定のコンポーネントの動作をテストしたり、予想外の変更から保護するためにビュー階層全体をスナップショットしたりすることができます。

Q6: チーム内のコードスタイルをどのように維持していますか?どうやってコードベースを一緒に管理するのですか?

R: この問題は、開発プロセスで使用されるさまざまなツールに関する受験者の知識を明らかにするための軽い問題です。ここでの回答は非常に幅広いものになります。コードのフォーマットを自動化したり、書かれたコードがチームの設定したルールに合っているかどうかをチェックしたりするPrettierやESLintから、継続的インテグレーションやGitのようなバージョン管理システムのような概念まで、さまざまなものがあります。候補者は、コードレビューなどのプラクティスについても言及するかもしれません。この質問の主な目的は、候補者がどのようにして、どのような方法でチームと協力したのか、また、反復可能な作業のうちどの程度を自動化できたのかを示すことです。

6.3 React Native開発者に聞くべき行動的な質問

Q1: あなたのキャリアの中で最大の功績は何ですか?最大の失敗は何でしたか?成功を繰り返すために、あるいは失敗を繰り返さないために、あなたはどのようなステップを踏みますか?

R: かなり一般的な質問ですが、候補者の自己認識力と自己批判力を示しています。この2つは、優れたソフトウェア開発者になるために常に必要な学習プロセスである。

Q2: プロジェクトの締め切りが明日に設定されているが、まだ実装しなければならない機能が残っているという状況に、どのように対処しますか?

R: 候補者は過去にこのような状況に直面したことがある可能性がありますが、想像に難くありません。候補者は、交渉して仕事を終わらせるための時間を稼ごうとしたかもしれません。プロダクトオーナーやマネージャーと相談して、機能の優先順位を決め、ある種のMVPにこだわったのかもしれません。もしかしたら、時間を稼ぐために、速くても保守性の低い方法でいくつかの機能を実装し、後で後始末をするためのリマインダーを設定したのかもしれません。さまざまなアプローチがありますが、この質問の目的は、候補者がビジネス目標の重要性を理解しているかどうか、また、目標を達成するために技術レベルでいくつかのトレードオフを行うことができるかどうかを採用担当者に示すことにあります。

Q3: ジュニア/レギュラー開発者がスキルアップするために、どのようなリソースをお勧めしますか?また、そのような開発者を指導したいと思いますか?過去にそのようなことをしたことがありますか?

R: この質問に対する答えは、候補者が以前に使用したリソースのどれを、なぜ使用したのかを確認する間接的な方法です。これにより、採用担当者は候補者の経歴に関する追加情報を得ることができます。メンタリングの部分は、React Native開発者が知識を共有するのが好きかどうかを示すことができ、それはチームにポジティブな影響を与えることもできます。

Q4: モバイル開発やソフトウェア開発の中で、あなたが探求したい、あるいはもっと詳しく知りたいと思う分野は何ですか?なぜですか?

R: この質問は、採用担当者に、候補者が興味を持ちそうなテーマや、候補者がどのような方向にキャリアを発展させていきたいかについてのヒントを与えてくれます。採用担当者は、候補者が募集しているプロジェクトに適しているかどうかを評価することができます。

React Native デベロッパー コーディングテスト

7.オンラインコーディングテストによるReact Native開発者のスキル審査

React Native開発者の履歴書には、候補者が持っているというスキルが記載されており、電話スクリーニングでは、候補者がReact Native開発に関連する概念の理論的な知識を持っているかどうかをチェックする機会となります。しかし、候補者が理論的な知識を持っているからといって、それをソフトウェア開発の実務に応用できるかどうかは定かではありません。オンラインコーディングテストでは、候補者がReact Nativeを使ったアプリケーションをどれだけ開発できるかを垣間見ることができます。

7.1 React Nativeのプログラミングテストはどれを選べばいいの?

いくつかの選択肢がありますが、JavaScriptやReactではなく、特にReact Nativeを使用したテストを選ぶことが重要です。いくつかのガイドラインをご紹介します。

  • テストは自社の仕事を反映している
  • 1~2時間(あるいはそれ以下)の適度な長さであること
  • 送信は自動化されています。
  • テストは受験者の自宅で受けることができる
  • コードの品質やエッジケースだけでなく、ソリューションもチェックします。
  • 候補者は、ソフトウェアの開発に使用する通常のリソースのすべてにアクセスできます。
  • このプロジェクトは、React Nativeフレームワークだけでなく、React Nativeで使用される様々なライブラリにアクセスできるインスタックプロジェクトです。
  • ポジションのレベルに合わせて調整されています。

7.2 DevSkillerすぐに使えるオンラインReact Native開発者コーディング評価テスト

Devskillerのreact Nativeテストは、RealLifeTesting™の手法に基づいて構築されており、受験者のスキルを完全に正確に把握することができます。テストは受験者が最も快適で準備ができている場所と時間で受けることができます。受験者はGitHub、Stack Overflow、Google、その他のReact Nativeライブラリなど、必要なリソースにアクセスできます。これはバグではなく機能です。候補者が自然なプログラミング環境で行う意思決定を示しています。候補者がどれだけタスクを完成させたかだけでなく、候補者が下した決断、適用したビジネスロジック、コードの効率性とクリーンさ、そして技術スタックをどれだけ知っているかを見ることができます。

独自のテストを作成することもできますし、React Nativeのシニアエキスパートによって作成されたDevSkillerのテストを利用することもできます。

リアクトネイティブ
シニア
テストされたスキル
持続時間
108 分以内
評価
自動
テストの概要

選択問題

知識評価 イーエスエルシックス, JavaScript

プログラミングタスク - レベル: ハード

React Native | Movie Store - ユーザーが想像できる映画をすべて購入できるアプリケーションを実装します。

リアクトネイティブ
ミドル
テストされたスキル
持続時間
101 分以内
評価
自動
テストの概要

選択問題

知識評価 イーエスエルシックス, JavaScript

プログラミングタスク - レベル。中程度

React Native | HR Companion App - 人事部門が評価対象の求職者のリストを管理するのに役立つアプリケーションを実装します。

リアクトネイティブ
ジュニア
テストされたスキル
持続時間
70 分以内
評価
自動
テストの概要

選択問題

知識評価 イーエスエルシックス, JavaScript

プログラミングタスク - レベル。簡単

React Native | Ultimate BugTracker - ソフトウェアハウスの社内バグトラッカーとして使用されているアプリケーションに不足している機能を実装し、バグを修正します。

シェアポスト

技術者の採用についてはこちら

ラーニングハブに登録すると、有益な情報をメールで受け取ることができます。

シームレスにコーディングスキルを検証&開発

DevSkillerの製品をご覧ください。

セキュリティ認証とコンプライアンス。お客様のデータの安全性を確認します。

DevSkillerのロゴ タレントブーストのロゴ タレントスコアのロゴ