質問するログイン新規登録

Q&A

1回答

271閲覧

卒業制作での疑問点 Reactのコンポーネント洗い出し方法

naruru-1225

総合スコア0

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

0グッド

0クリップ

投稿2026/06/05 01:38

0

0

ただいま最下に記載のシステムを卒業制作で開発しています。
現在UMLで
ユースケース図
ユースケースドキュメント
概念クラス図
画面レイアウト
画面遷移図
を作成しました。
次にコンポーネントの洗い出しのためシーケンス図を書こうとしていますが、どうにも最適な方法が分かりません。
実際にどのような方法を使ったかなど有益な情報をくださるとありがたいです。

回答に際して必要な情報がありましたらその都度付け加えさせていただきます。よろしくお願いします。

---システム要件---
卒業制作として、プログラミング初学後の人が「作りたいもの」から必要な知識や手順を逆算できるようにする、AI活用型の動的教材生成アプリです。
学習者はゴールを設定し、AIがトップダウン/ボトムアップの学習ガイド、教材、進捗支援を生成します。
教材は固定コンテンツだけでなく、利用者の進捗・不足知識・理解度に応じて説明、サンプル、演習、確認観点を個別化します。
主要機能は、認証、プロフィール、学習履歴、教材作成・公開・検索、AIチャット、コード・学習内容のAI評価です。
設計上は React/Vite/Electron、Python/FastAPI、OpenRouter、Supabase、Dev Container、AWS などを候補にしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

blixor

2026/06/06 01:48

あなたの卒業制作だったら まずざっと以下のようなコンポーネントを挙げてみればいい - 認証関係:ログインフォーム、サインアップフォーム - プロフィール:プロフィールカード、アバター画像 - 教材関連:検索バー、教材カード、教材表示エリア、演習問題エリア - AIチャット:チャットウィンドウ、メッセージの吹き出し、コード表示部 - 進捗管理:ダッシュボード(グラフ)、履歴タイムライン 細かくなりすぎないように気をつけて 大きめに始めて、必要なら後で分割すればいい
guest

回答1

0

卒業制作、かなり気合の入った面白そうなシステムですね!「作りたいものから逆算するAI教材」というコンセプト、今のトレンドにも合っていて非常に魅力的です。
さて、画面レイアウトや画面遷移図までできている状態での「Reactのコンポーネント洗い出し(シーケンス図の活用)」ですね。ここで手が止まってしまうのは、実はとても自然なことです。なぜなら、シーケンス図は本来「オブジェクト間の相互作用(バックエンドの処理フローなど)」を得意とするため、フロントエンドのUIコンポーネントをそのまま当てはめようとすると、途端に難易度が上がるからです。
私が実際に開発現場や設計で使っている、スムーズにReactコンポーネントを洗い出すための現実的なアプローチを共有しますね。

  1. シーケンス図は「画面単位」ではなく「ユースケース(機能)単位」で書く
    もし今、「画面Aから画面Bへの遷移」をシーケンス図にしようとしているなら、一度ストップしてみてください。Reactにおけるシーケンス図は、「状態(State)の変化」と「非同期処理(API通信)」の流れを整理するために使うと真価を発揮します。
    シーケンス図に登場させる要素(ライフライン)の例
    User(ユーザーの操作)
    View(Reactコンポーネント例 MaterialDetailPage)
    State / Hooks(状態管理:例 useMaterial)
    API Client(FastAPIへのリクエスト担当)
    Backend(FastAPI / Supabase)
    例「AIが個別化した演習問題を生成する」のシーケンス
  2. ユーザーが「問題を生成」ボタンをクリック
  3. Viewが Hooks の関数を叩く
  4. Hooks** がローディング状態を true にし、API Clientを呼ぶ
  5. API Clientが FastAPI へリクエスト
  6. レスポンスが返ってきたら、Hooksがデータを State に保存
  7. Viewが State の変化を検知して、新しい演習問題を表示
    このように書くと、「あ、この Hooks と State は複数の画面で使い回しそうだな」とか、「この表示部分は独立したコンポーネント(View)に切り出せるな」という境界線が見えてきます。
  8. 最もおすすめ 画面レイアウトから逆算する「コンポーネントツリー」
    シーケンス図と並行して(あるいは先に)、すでに作成済みの画面レイアウトをフル活用する方法が一番確実です。Reactの公式ドキュメントでも推奨されている「Reactの思考法(Thinking in React)」をベースにします。
    手順
  9. 赤ペンで囲む 画面レイアウトの図を印刷するか、デザインツール上で、意味のある塊ごとに四角で囲んでいきます。
    大きな塊(ページ全体、サイドバー、メインコンテンツ)
    中くらいの塊(教材カード、AIチャットウィンドウ)
    小さな塊(ボタン、入力フォーム、アバターアイコン)
  10. 階層構造(ツリー)にする 囲んだ塊を、親子関係のツリー図に書き起こします。

text

1[MaterialPlaygroundPage] (ページ全体) 2 ├── [Sidebar] (進捗ナビゲーション) 3 └── [MainContent] (メイン領域) 4 ├── [ChatWindow] (AIチャット) 5 │ ├── [MessageList] 6 │ └── [MessageInput] 7 └── [CodeEditor] (演習コード・評価) 8

このツリー図ができると、シーケンス図で整理した「State(状態)」をどのコンポーネントに持たせるべきか(親に持たせるか、Hooksに逃がすか)が劇的に見えやすくなります。
3. 今回のシステム特有の「洗い出しのヒント」
今回のアプリは「Electron(デスクトップ)」や「AIチャット」「コード評価」など、リッチなフロントエンド機能が含まれていますよね。コンポーネントを洗い出す際は、以下の視点を持つと設計が破綻しにくくなります。
「ドメイン(業務)コンポーネント」と「UI(共通)コンポーネント」を分ける
AiChatWindow や LearningProgressBar はこのアプリ特有のドメインコンポーネント。
Button や Modal、InputField は使い回す共通UIコンポーネント。まずはドメイン側から洗い出すのがコツです。
AIの「考えている時間(非同期)」を意識する
AIの生成には時間がかかります。シーケンス図を書く時に「Streaming(テキストがパラパラ出るやつ)の処理はどう流れるか?」を意識すると、ChatBubble コンポーネントに必要なProps(プロパティ)が見えてきます。
次に起こすべきアクション
まずは難しく考えず、「一番コアになる画面(例えば、教材を表示してAIとやり取りする画面)」の画面レイアウトを1枚用意し、それをコンポーネントの塊に分解してツリー図を作ってみるのがおすすめです。
そのツリー図を見ながら、「じゃあ、AIチャットの送信ボタンを押した時のデータの流れだけ、シーケンス図で整理してみよう」と進めると、パズルがハマるように設計が進むと思います。
もし「この画面のこの機能、どう切り出せばいい?」という具体的な迷いがあれば、画面のイメージやユースケースを教えてください。一緒に考えていきましょう!応援しています。

投稿2026/06/16 01:54

gjmjmnt

総合スコア8

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.25%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問