pss-aileen / TIL

📚 I record my study logs and what I learn every day to build my study habits.
1 stars 0 forks source link

セキュリティとフロント、次勉強すべきこと #74

Open pss-aileen opened 3 weeks ago

pss-aileen commented 3 weeks ago

まず、VercelでReactプロジェクトをデプロイし、サーバーレス関数でAPIにアクセスできるようにしたのは、大きなステップです!お疲れ様でした。ここからさらに進むために、セキュリティ面の考慮とフロントエンド開発の両方をバランスよく進める必要があります。

次に何をすべきか、具体的なステップを提示します。


1. サーバーレス関数のセキュリティ強化

Vercelのサーバーレス関数は便利ですが、セキュリティを確保することが非常に重要です。まずは、APIに対して行うべきセキュリティ対策をいくつか確認しましょう。

やるべきこと:

  1. APIキーのセキュリティ対策

    • 現状はサーバーレス関数でAPIキーを隠していると思いますが、次の対策も重要です。
    • 環境変数を使ってAPIキーを管理:Vercelのプロジェクト設定で、APIキーなどのシークレット情報を環境変数として設定し、コードに直接書かないようにしましょう。
    • IPアドレス制限:もしAPI側で対応しているなら、特定のIPアドレス(VercelのサーバーIPなど)からのみアクセスできるように設定する。
  2. 認証の導入

    • JWT(JSON Web Token)などを使って、ユーザーが認証された場合にのみAPIを利用できるようにします。これにより、誰でもAPIにアクセスできる状態を防ぎます。
    • フロントエンド側で、ログイン機能を実装し、サーバーレス関数にリクエストを送る際にJWTトークンをヘッダーに含める方法を学びましょう。
  3. Rate Limiting(リクエスト制限)

    • 悪意のあるユーザーがAPIに大量のリクエストを送る「DoS攻撃」を防ぐために、リクエスト数を制限する機能を導入します。
    • 例えば、IPごとに一定時間内のリクエスト数を制限するライブラリをVercelのサーバーレス関数内で使うことができます(例: express-rate-limitなど)。

学習リソース:


2. フロントエンドの継続的な強化

並行して、フロントエンド開発も続けるべきです。Reactのスキルをさらに強化し、状態管理やパフォーマンスの最適化に取り組みましょう。

やるべきこと:

  1. Reactの状態管理を深く学ぶ

    • 状態管理の複雑さが増してきたら、ReduxZustandなどの状態管理ライブラリを導入してみましょう。複雑なアプリケーションでのデータの一貫性を保ち、コンポーネントのレンダリングを効率化します。
    • 特に、複数のAPIコールやユーザーインタラクションが絡むアプリケーションでは、グローバル状態管理が有効です。
  2. パフォーマンス最適化

    • Reactでは、再レンダリングの最小化メモ化がパフォーマンスの向上に繋がります。以下のテクニックを使って、アプリのパフォーマンスを測定・最適化しましょう。
      • React.memouseMemo/useCallback を使って、不要なレンダリングを防ぐ。
      • Lazy Loading を導入して、必要な部分のみを遅延読み込みする。
  3. UI/UXを意識した開発

    • ユーザーインターフェース(UI)の改善に目を向けるのも大切です。特にレスポンシブデザインを取り入れて、どんなデバイスでも見やすいデザインを目指します。
    • Tailwind CSSやMaterial UIなどのUIフレームワークを使うことで、開発スピードを上げつつ、クリーンでモダンなUIを実現できます。

作成するアプリ:

学習リソース:


3. 最終的なプロジェクトの目標設定

現在、ReactプロジェクトをVercelにデプロイし、APIと連携できているので、これをベースにプロジェクトをさらに進化させていきましょう。次の目標は、フルスタックのアプリケーション複数のページを持つアプリを作成し、実際の採用活動で評価されるポートフォリオを完成させることです。

次に作るべきアプリのアイデア:

  1. ブログプラットフォーム(Next.js + MongoDB + JWT認証)

    • ユーザーがログインしてブログ記事を投稿できるプラットフォーム。記事はサーバーサイドで管理し、APIを通じてデータをやり取りする。
    • JWTを使ってセキュアな認証を導入し、ログインしたユーザーのみが記事の投稿や編集ができるようにする。
  2. プロジェクト管理アプリ(React + Redux + REST API)

    • チームでプロジェクトを管理するアプリ。プロジェクトの進行状況やタスクのアサインなどを行い、リアルタイムで更新できるようにする。
    • WebSocketを使ってリアルタイム更新機能を実装。

次に集中すべきポイント:


今の段階では、セキュリティ対策をしっかり行いながら、並行してフロントエンドのスキルを伸ばしていくのがベストです。問題解決能力を強化しつつ、具体的なプロジェクトに取り組むことで、着実に成長できるはずです!