Gurunavi
メニュー・地域ガイド・グルメ情報を備えた日本の飲食店検索・予約サービス。
確認したサイト: gnavi.co.jp · 公開ページをもとに整理
カラーパレット
方法
このリファレンスの作成方法
rezero.md の自動分析は公開ページのシグナルだけを収集します。文書は観察・推論・提案を分けており、推論された内容は不完全な場合があります。
- 公開ソース
- gnavi.co.jp
- 最終分析
- 公開文書
- 8
DESIGN.md
Generated as educational analysis. Inferences are hypotheses, not source-code claims.
Observation
- Observed colors: #fff, #e5e5e5, #333
- Observed font families: YakuHanJP, Helvetica Neue, Arial, Hiragino Kaku Gothic ProN, Hiragino Sans, Meiryo, sans-serif
Inference
- Repeated tokens may indicate a shared design system; external stylesheets were not executed or downloaded.
Recommendation
- Define semantic color and type tokens before copying visual treatments.
- Validate contrast and responsive behavior in the target product context.
IA.md
Generated as educational analysis. Inferences are hypotheses, not source-code claims.
Observation
- Navigation labels: 予約履歴, ログイン
- Heading outline: 3: 検索履歴 · 3: 検索履歴 · 2: 最近見たお店 · 2: 予約したお店 · 2: 楽天ポイント貯まる! · 2: エリアから探す · 2: 東京 · 2: 神奈川 · 2: 大阪 · 2: 愛知 · 2: 京都 · 2: 福岡 · 3: 人気のエリア · 3: 都道府県から探す · 2: 料理ジャンルから探す · 2: 居酒屋 · 2: 焼肉 · 2: イタリアン · 2: 条件・こだわりから探す · 2: 個室
Inference
- Repeated navigation labels likely represent primary information architecture.
Recommendation
- Model user tasks first, then test whether this hierarchy fits them.
COMPONENTS.md
Generated as educational analysis. Inferences are hypotheses, not source-code claims.
Observation
The user interface of gnavi.co.jp is composed of several distinct, repeating, and complex visual blocks.
- Primary Search Interface: A prominent search module exists at the top of the page. It combines a text input field with quick-filter buttons (e.g., "ランチ" - Lunch, "居酒屋" - Izakaya) and a mechanism to specify date, time, and party size.
- Form Selectors: The date/time and party size selectors are implemented as long, discrete lists of options (e.g.,
0:00to23:30in 30-minute increments;1名to100名~). - Hierarchical Navigation Module: The "エリアから探す" (Search by Area) section is a large, structured component. It contains multiple sub-sections: a list of major cities (東京, 大阪, etc.), a call-to-action for searching by current location, a more detailed list of "popular areas," and an expandable list of all Japanese prefectures.
- Tabbed Content Viewer: A section exists for "最近見たお店" (Recently Viewed) and "予約したお店" (Reserved Restaurants), presented as clickable tabs that likely switch the visible content.
- Duplicated Content Blocks: The evidence shows identical headings for "検索履歴" (Search History) and "楽天ぐるなびアプリで毎日お得に!" (Get daily deals with the Rakuten Gurunavi app), suggesting these elements may be rendered in multiple locations on the page.
Inference
The modular and repetitive nature of the observed UI strongly suggests a component-based architecture, though the specific technology cannot be determined from the provided evidence.
- High Likelihood of Reusability: The "Search by Area" module, with its complex internal structure, is likely a single, reusable component. Its consistent appearance is more efficiently managed as a component than by duplicating its complex HTML structure.
- Data-Driven Rendering: The long, uniform lists for time, party size, and prefectures are almost certainly not hard-coded in the HTML. It is highly probable that these are rendered by components that iterate over an array or object of data. For example, a
<LocationList>component might receive aprefecturesarray as a prop and generate the list items dynamically. - State Management for Complex Forms: The primary search interface likely manages its various inputs (keyword, filters, date, time, party size) within a local state object. When the user clicks "検索する" (Search), this state object is likely consolidated and used to form a query, rather than reading each input from the DOM individually.
- Conditional Logic: The tabbed interface for "Recently Viewed" and "Reserved" implies the use of conditional rendering, where a state variable tracks the active tab and determines which content panel is displayed.
Uncertainty: The public evidence is a snapshot of the rendered DOM. It is impossible to know the boundaries of the source-code components. For instance, the "Search by Area" module could be one large component or composed of several smaller, nested components (e.g., <PopularCities>, <PrefectureList>). The duplication of headings could be a single component instance rendered twice or simply two separate, hard-coded elements.
Recommendation
To manage the complexity observed, focus on creating components with clear responsibilities and well-defined interfaces.
- Adopt a Hierarchical Component Strategy: For complex UI sections like "Search by Area," consider a pattern like Atomic Design.
- Atoms: The individual links (e.g., "東京", "神奈川") are the smallest units.
- Molecules: A list of popular cities (
<ul>containing several "atom" links) forms a functional unit. - Organisms: The entire "Search by Area" block, combining multiple "molecules," is a self-contained component. This approach makes the system easier to understand, test, and modify.
- Decouple Data from Presentation: Design components to be "presentational" or "dumb." For example, a component that renders the list of prefectures should simply accept an array of location data as a property (
props). It should not be responsible for fetching or defining that data. This makes the component highly reusable in different contexts. - Define Clear Component APIs: For interactive components like the main search form, establish a clear contract. It should accept initial values as props and, upon submission, emit a single event (e.g.,
onSearch) with a structured data object containing all the user's selections. This prevents the parent page from needing to know about the form's internal implementation details. - Validation Steps: To validate the inference of a component-based system without seeing the source code, use browser developer tools. Interact with the tabbed views or search filters. If the URL doesn't change and the page doesn't perform a full reload, but the DOM is updated in a targeted way, it provides strong evidence for a client-side framework managing component state and rendering.
STACK_GUESS.md
Generated as educational analysis. Inferences are hypotheses, not source-code claims.
Observation
- No high-confidence public technology signatures were found.
Inference
- Technology detection is probabilistic because production builds can remove or disguise signatures.
Recommendation
- Verify stack choices using public engineering sources before adopting them.
ARCHITECTURE.md
Generated as educational analysis. Inferences are hypotheses, not source-code claims.
Observation
- Analyzed 1 public page(s) on gnavi.co.jp.
- The platform is a large-scale restaurant discovery and booking portal.
- Core user-facing features include multi-faceted search (by location, cuisine, specific conditions), user personalization (search history, viewed items), a booking system (date, time, party size), and a prominent, deep integration with the Rakuten loyalty points program.
- The information architecture is extensive, with data categorized by dozens of prefectures, popular city areas, and food genres.
- No specific front-end or back-end frameworks were identified through passive analysis of the homepage.
Inference
- The architecture likely separates the high-volume, read-heavy search functionality from the transactional booking system. The complexity of filtering by location, keywords, and specific attributes suggests the use of a dedicated search engine (e.g., Elasticsearch, OpenSearch) that is populated from a primary database of restaurant information. This separation allows each component to scale independently.
- The deep integration with Rakuten for points and login suggests a Service-Oriented or Microservice Architecture. A dedicated internal "Loyalty Service" likely acts as an adapter, encapsulating the logic for communicating with Rakuten's external APIs. This isolates the core application from the third-party dependency, improving resilience and maintainability.
- The presence of user-specific data ("Recently Viewed," "Reservations") implies a stateful component for managing user sessions and profiles, which is likely federated with Rakuten's identity management system.
- Given the importance of SEO for a discovery platform, key pages like the homepage and search results are probably server-side rendered (SSR) to deliver fast, crawlable HTML to search engines and users.
Recommendation
- Uncertainty is high. This analysis is based only on the public homepage. The actual degree of service decomposition (e.g., monolith vs. microservices) and the specific technologies used cannot be confirmed. To validate these inferences, one could analyze network traffic during search and booking actions to identify distinct API endpoints, which might correspond to different backend services.
- Transferable Pattern 1 (Search Decoupling): For any application with complex search requirements over a large dataset, architecturally separate the search index from the primary transactional database. Use an asynchronous process to update the search engine from the database. This pattern, often a step in a CQRS (Command Query Responsibility Segregation) approach, prevents slow, complex search queries from impacting the performance of core transactional operations like making a reservation.
- Transferable Pattern 2 (Third-Party API Encapsulation): When integrating a critical external service like a payment or loyalty system, create an internal "anti-corruption layer" or adapter service. This service should be the only part of your system that communicates directly with the third-party API. This isolates your domain logic from external complexities, simplifies mocking for tests, and provides a single point to implement resilience patterns like circuit breakers or caching.
DECISIONS.md
Generated as educational analysis. Inferences are hypotheses, not source-code claims.
Observation
- Evidence base includes 1 fetched page(s).
Inference
- Visible product choices suggest tradeoffs but do not reveal the original team’s rationale.
Recommendation
- Record each decision with context, alternatives, consequences, and a review date.
BUILD_WITH_THIS.md
Generated as educational analysis. Inferences are hypotheses, not source-code claims.
Observation
- Reference site: https://gnavi.co.jp
- Most visible content themes: 3: 検索履歴 · 3: 検索履歴 · 2: 最近見たお店 · 2: 予約したお店 · 2: 楽天ポイント貯まる! · 2: エリアから探す · 2: 東京 · 2: 神奈川
Inference
- The reference patterns may be useful for products with similar user jobs, not merely a similar appearance.
Recommendation
- Start from the user problem, reuse principles selectively, and build original assets and copy.
SITEMAP.md
Generated as educational analysis. Inferences are hypotheses, not source-code claims.
Observation
- Discovered path: /
Inference
- Only crawled and sitemap-discovered public URLs are represented.
Recommendation
- Treat this as a partial inventory and validate against product analytics and content ownership.
