木曜日, 9月 4, 2025
木曜日, 9月 4, 2025
- Advertisment -
ホームニューステックニュースReact Nativeでアプリを作るときは、bluesky-social/social-appを参考にしよう!

React Nativeでアプリを作るときは、bluesky-social/social-appを参考にしよう!



こんにちは!テラーノベルとテラードラマでiOS/Android/Webとフロントエンド周りを担当している @kazutoyoです!

タイトルの通りなのですが、これからReact Nativeでアプリを作ろう!という人はblueskyの公式クライアントアプリを参考にしましょう!

https://github.com/bluesky-social/social-app

多くのユーザーがいるサービスで、継続的に開発されている

実際に多くのユーザーがWebやアプリで利用しているサービスであり、それがOSSで公開されているのは凄いですよね。
ストアやWebで公開されているアプリケーションなので、実際にアプリをインストールして触りながら、この部分のコードはどうなっているんだろう?と確認することもできるのもキャッチアップしやすい点かと思います。

技術スタックがモダンな作りになっている

Expoを利用しており、Webに関してもReact Native for Webを利用するような作りになっています。
Expo Modulesの利用や、ExpoのCNGにも対応していたりと、Expoの機能をフルに使って開発されています。

また、Tanstack QueryやZod、ZeegoなどのUIライブラリなど、人気の高いライブラリが利用されています。

より詳細な技術スタックはこちら

Expo ModulesやConfig Pluginの対応、パッチなどが参考になる

少し発展的な内容になりますが、ExpoでNativeのAPIを呼び出したり、iOS/Androidのプロジェクトに対して変更を加える際にはExpo ModulesやConfig Pluginを作成する必要があります。

https://zenn.dev/tellernovel_inc/articles/151fbb8fe6cdbe

BlueskyのアプリでもこちらのようにいくつものExpo ModulesやConfig Pluginが書かれており、どのように作成するかの見本となります。

https://github.com/bluesky-social/social-app/tree/main/modules

https://github.com/bluesky-social/social-app/tree/main/plugins

また、一部のライブラリに対して、不具合などによりパッチを当てたいときがあります。
そういったものも、リポジトリ内のこちらのように、パッチファイルとそれを当てる理由のMarkdownファイルがセットになって設置されています。

https://github.com/bluesky-social/social-app/tree/main/patches

こういった運用上必要なものもあるんだなーというのも知ることができました。

その他参考になったこと

Application Layout Framework (ALF)

こちらのように、React NativeでのスタイリングをALFと読んでいるレイアウトの定数を定義して利用しているようです。

https://github.com/bluesky-social/social-app/tree/main/src/alf

次のような感じで、スタイルのUtilityを提供しています。

import { atoms, useTheme } from '#/alf'

const t = useTheme()


シンプルな感じですが、TailwindのようにUtility Firstな感じをReact NativeのStylesheet APIを使って実現しています。

多言語対応

React Nativeで多言語対応のアプリケーションを作ったことがなかったので知りませんでしたが、BlueskyではLinguiを使っているようでした。
Lingui自体はReact Nativeようではなく、WebのReactでも利用できるもののようなので、Webに対応するためにこちらを利用したのかもしれませんね。

またCrowdinという翻訳の管理ツールも利用しているようでした。

https://github.com/bluesky-social/social-app/blob/main/docs/localization.md

Native感を出す

こちらのBlueskyを開発している方のブログで、React Nativeアプリでより “ネイティブ感” を出すための方法が紹介されています。

https://whtwnd.com/samuel.bsky.team/3l777nhz4h32w

  • 境界線は 1px のような指定ではなく StyleSheet.hairlineWidth を使う
  • React Navigationの presentation="pageSheet" を指定してNativeのシートを使う
  • BottomSheetを置き換え
  • レイアウトアニメーションや、タップしたときのフィードバックなど

このように、様々な学びがあるリポジトリでした。

React Nativeを使った開発で困ったことがあれば、まずはbluesky-social/social-appリポジトリを見て、参考にできないかチェックするのが良いかもしれませんね。

それでは良いReact Nativeライフを!



Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -