「モバイルエンジニアって実際何使ってるの?」という疑問に答えます。
React Native(Expo)でiOSアプリを開発している自分が、日々の仕事で実際に使っているツール・ライブラリを全部公開します。ただ紹介するだけでなく、「自分が実際にどう使ったか・どこで詰まったか」も一緒に書きます。
この記事でわかること現役モバイルエンジニアのリアルな開発環境・使用ツールと、それぞれの実体験がわかります。
- 開発環境・エディタ
- React Native関連ライブラリ
- バックエンド・インフラ
- 日々の作業で使うツール
- まとめ
開発環境・エディタ
VS Code
必須メインのコードエディタ。拡張機能が豊富で、React Nativeの開発に必要なものは全部揃います。無料で使えるのに高機能すぎる。ESLintやPrettierの拡張を入れてコードの品質を保っています。
実体験:ESLintとPrettierを保存時に自動実行する設定にしてから、コードレビューで「フォーマットが揃ってない」系の指摘がほぼゼロになった。最初に設定しておくと地味に効く。
Expo Go / EAS Build
必須React NativeアプリをiOSで動かすためのツール。Expo Goは開発中にスマートフォンで即確認できる。EAS Buildは本番用のビルドを作るときに使います。iOSの実機テストにはApple Developerアカウントが必要です。
詰まった話:EAS Buildで作ったiOSビルドには30日の有効期限がある。「先月ビルドしたのになぜか動かない」で30分溶かしたことがある。原因は期限切れだった。iOSビルドの詰まりは別記事で詳しく書いています。
GitHub
必須コードのバージョン管理。チーム開発でのPRレビューもGitHub上で行います。コードの変更履歴が残るので、「いつ・誰が・何を変えたか」が一目でわかります。
実体験:PRは小さく・1つの目的に絞ると、レビューが圧倒的にスムーズになる。複数の変更を1つのPRに詰め込んでレビュアーを困らせたことがあって、それ以来「1PR1目的」を徹底している。
React Native関連ライブラリ
React Native(Expo SDK)
必須iOSとAndroid両方のアプリをJavaScript/TypeScriptで作れるフレームワーク。Expoを使うと環境構築が楽になります。1つのコードベースで両OSに対応できるのが最大のメリット。
実体験:「Web系の知識(JS/TS)でそのままアプリが作れる」のが本当に大きい。ネイティブを一から学ばずにiOSアプリを出せたのはExpoのおかげ。
React Navigation
必須画面遷移を管理するライブラリ。スタックナビゲーション(前の画面に戻れる)やタブナビゲーション(下のタブで切り替える)を簡単に実装できます。ほぼ全てのアプリで使います。
詰まった話:画面を戻ったときにデータが更新されない問題で詰まった。原因はuseEffectが初回しか動かないこと。useFocusEffectに切り替えて解決した。route.paramsの扱いでも詰まったので、これは別記事で深掘りしています。
React Native Gesture Handler + Reanimated
おすすめスワイプやフリックなどのジェスチャー操作を実装するライブラリ。滑らかなアニメーションも作れます。「ネイティブアプリっぽい動き」を実現したいときに必須です。
実体験:「Instagramのストーリーみたいにスワイプで切り替えたい」と思って導入。思ったより奥が深かった。ReanimatedはアニメーションがアプリのUIスレッドで動くから、重い処理と競合してもカクつかない。この滑らかさは標準のAnimated APIでは出せなかった。
バックエンド・インフラ
AWS Amplify
おすすめAmazonのクラウドサービスをReact Nativeと簡単に連携できるツール。認証(ログイン機能)・データベース・ファイルストレージが全部Amplify経由で使えます。バックエンドをゼロから作らなくていいので開発スピードが上がります。
詰まった話:便利な反面、amplify pushは「現在の環境のAWSを上書きする」ので事故りやすい。間違った環境でpushして他の人の設定を消したことがある。チームで使うなら作業前の環境確認は必須。これも別記事で詳しく書いています。
DynamoDB(AWS)
参考AmazonのNoSQLデータベース。アクセスが多くても速度が落ちにくく、スケールしやすいのが特徴。ただし設計が難しく、最初は詰まることも多い。CloudWatch Logsでエラーを追跡することが多いです。
詰まった話:ConditionalCheckFailedExceptionというエラーで詰まったことがある。原因は更新時に古い_versionを使っていたこと(楽観的ロック)。「更新前に最新データを取得する」を習慣にしてから出なくなった。
AppSync(GraphQL)
参考AWSのGraphQL APIサービス。必要なデータだけを取得できるので、モバイルアプリとの相性がいい。Amplifyと組み合わせて使うのが定番です。
実体験:schema.graphqlにフィールドを書いてamplify pushするだけでAPIとDBが自動生成されるのが快適。フロントエンジニアでもバックエンドが作れる感覚になる。
日々の作業で使うツール
Claude / GPT / Gemini(AI)
必須コードのレビュー・バグの原因特定・実装方針の相談に使っています。「このエラーの原因は?」「この実装どう思う?」を聞くと的確に答えてくれる。エンジニアの作業効率が体感で1.5〜2倍になりました。
実体験:AIは基本的に肯定してくるので「本当に合ってるか」の判断が難しい。だからClaude・GPT・Geminiを併用して、答えが一致するかで信頼度を測っている。1つのAIを信じ切らないのが自分のルール。
Slack
必須チームのコミュニケーションツール。PRのレビュー依頼・質問・進捗報告など全部Slackで行います。エンジニアチームで使っていない会社はほぼないんじゃないかというレベルで普及しています。
実体験:エラー通知をSlackに飛ばす設定にしている。本番で異常が起きるとすぐ気づける反面、固定IPが消えたときは大量のエラー通知が流れてきて肝が冷えた。
Jira / Notion
おすすめタスク管理・ドキュメント管理ツール。Jiraでチケット(タスク)を管理して、Notionで仕様書や議事録を管理しています。どちらも使いやすくてエンジニアチームの定番です。
実体験:PRを出す前に「チケットの受入基準を全部満たしているか」をJiraで確認するクセをつけた。急いでいるとここを飛ばしがちだけど、後でやり直しになる方が時間がかかる。
- 開発環境:VS Code・Expo・GitHub が鉄板。EAS Buildは30日期限に注意
- React Native:React NavigationはuseFocusEffect、Gesture HandlerはReanimatedとセットで
- バックエンド:Amplifyは便利だがamplify pushの上書きに注意。DynamoDBは楽観的ロックで詰まりがち
- 日々のツール:AIは複数併用して鵜呑みにしない。作業効率は体感1.5〜2倍
ツールは目的ではなく手段です。大事なのは「何を作りたいか」であって、ツールはそのための道具。まず作りたいものを決めて、必要なツールを選ぶ順番が正解だと思っています。


コメント