Expo Animated Sticky Header - React Native向け滑らかでレスポンシブなパララックスヘッダー

Mobile

概要

「expo-animated-sticky-header」は、React Nativeアプリケーション向けに設計されたパララックスヘッダーコンポーネントです。Reanimated 3を用いることで、パフォーマンスに優れた滑らかなアニメーションを実現。Spotifyのような画像が拡大縮小しながらヘッダーがスティッキーになる動きを簡単に導入可能です。主にアーティストプロフィールやストリーミング系のUIに適しており、モバイルユーザーにリッチな視覚体験を提供します。glow-ui.xyzの一部として開発されているため、既存のUIライブラリとの親和性も高く、拡張やカスタマイズも容易です。

GitHub

リポジトリの統計情報

  • スター数: 30
  • フォーク数: 0
  • ウォッチャー数: 30
  • コミット数: 4
  • ファイル数: 15
  • メインの言語: TypeScript

主な特徴

  • Reanimated 3をベースにした高性能なパララックスヘッダーアニメーション
  • Spotify風の画像拡大・縮小とスティッキーヘッダーの実装が可能
  • React Native Expo環境に最適化され、スムーズな動作を保証
  • glow-ui.xyzのUIコンポーネント群との統合が容易

技術的なポイント

本リポジトリの最大の技術的特徴は、React Nativeのアニメーションライブラリ「react-native-reanimated」の最新バージョン(v3)を活用している点にあります。ReanimatedはJSスレッドに依存せずネイティブ側でアニメーションを処理するため、スクロールやインタラクションに対して非常にスムーズなパフォーマンスを発揮します。特に、パララックスヘッダーのようなスクロール連動型UIでは、動きの滑らかさがUXに直結するため、Reanimatedの採用は大きなメリットです。

このコンポーネントは、上部に大きな画像を表示しつつ、ユーザーがスクロールすると画像が縮小しヘッダーが固定されるというSpotifyのアーティストページのような動きを模倣しています。パララックス効果を出すために、スクロール位置に応じて画像のスケールや位置を動的に調整。また、ヘッダーのタイトルやアイコンの表示状態もスクロール連動で切り替わるため、視覚的に自然でダイナミックなUIとなっています。

さらに、Expo環境に対応しているため、React Nativeの初心者でも簡単に導入可能です。TypeScriptで記述されているため型安全性も高く、メンテナンスや拡張がしやすい設計です。glow-ui.xyzというUIコンポーネントライブラリの一部としてメンテナンスされているため、今後のアップデートや他のコンポーネントとの連携も期待できます。

また、コンポーネントは柔軟なカスタマイズが可能で、ヘッダーの高さや画像、タイトルのスタイルなどをプロパティで制御できます。これにより、アプリのデザインガイドラインに合わせて調整が容易です。ソースコードは約15ファイルとコンパクトながら、最新のReact Native開発手法を取り入れたモダンな構成となっています。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: Git管理から除外するファイルの指定
  • .vscode: VSCodeエディタ設定ディレクトリ
  • README.md: プロジェクト概要や使い方を記載
  • app.json: Expoプロジェクト設定ファイル
  • app: ソースコードを格納する主要ディレクトリ
  • package.json: npm依存関係およびスクリプト定義
  • tsconfig.json: TypeScriptコンパイラ設定
  • assets: 画像などのリソースフォルダ
  • components: パララックスヘッダーのUIコンポーネント群
  • hooks: アニメーションやスクロール制御用のカスタムフック
  • utils: ユーティリティ関数群
  • styles: スタイルシートやテーマ定義
  • index.tsx: アプリエントリーポイント

これらの構成により、機能ごとにコードが整理されており、開発者が理解しやすい構造となっています。特にアニメーションロジックはフック化されており、他コンポーネントへの応用も容易です。

まとめ

React Nativeで洗練されたパララックスヘッダーを簡単に実装できる優れたコンポーネントです。

リポジトリ情報: