プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Webサービス開発
  • 【Web開発】「無限スクロール」、「確認画面」、「登録画面」、「CSVインポート機能」、「…
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Web開発】「無限スクロール」、「確認画面」、「登録画面」、「CSVインポート機能」、「メール送信機能」、「ランキング機能」、「メンテナンスページ」の設計

12.09

  • miyabisan2
  • コメントを書く

この記事は3分で読めます

無限スクロールの設計

最近はスマホの普及で無限にサイトの下までスクロールができるレイアウトが増えています。なので、サイトにページネーションやが必要なくなってきつつあります。(スマホでページネーションをするのはめんどくさいという時代になってきつつあります。)

フッターは?

フッターはPCサイトであれば、右サイドバーのした部分に存在させているサイトが多いです。(yahoo、facebookなど)

例

  • Twitter

最近では

従来からあるyahooなどでも聖杯レイアウトなのですが、無限スクロールなどが導入されるようになってきています。

確認画面の設計

通常のWebアプリケーションでは新規登録時は確認画面を実装することが多いですが一概に下記のようにメリットばかりではありません。

確認画面のデメリット

  • 登録画面に新しい属性を追加した時に確認画面にも新しい属性を表示させる必要があり手間
  • 属性名を変更した際は登録画面と追随して修正する必要がある。
  • エンドユーザーが確認画面が表示された段階で登録が完了されたと思い操作をやり直すことになりえる。

なので、確認画面が一概にあった方が良いとは言えないケースもあるのです。実際に使われるケースを想定して本当に確認画面があった方が良いと判断した場合のみ実装するようにしましょう。

画像アップロード機能の確認画面

Webアプリではたびたび画像等のファイルをサーバにアップロードして保存や活用したいという要望はあります。

画像登録をする際に確認画面を挟む場合は「ファイルデータを一時的にどこかに保存する」という少し複雑な処理を実装する必要があります。

登録画面の設計

登録画面作成時の注意点

何も注意せずにフォームの送信ボタンを押して、ブラウザのF5を押すと「フォーム再送信の確認」が表示されてしまう。(「続行」を押すと再度同じ内容を送信する。)

場合によってそれほど問題にはなりませんが、以下のようなケースでは重大な問題になります。

  • ECサイトでの商品購入
  • モバイルバンキングでの振り込み処理

これを解決するためには「完了ページへのリダイレクト」を使用します。完了ページを別に作成しておいて再読み込みしても完了ページが再読み込みされるだけで再送信がされないようにすることが可能です。

昨今のトレンド

一つの画面に複数項目を入力させるのではなく複数画面に分けてデータを登録更新させるケースが多い。

データの持たせ方

「セッション方式」か「Hidden方式」のどちらかを利用して一時的なデータを持たせる必要がある。

メンテナンスページの設計

あるページがメンテナンス中の場合はメンテナンス中のページにリダイレクトさせます。

CSVインポート機能の設計

csvの不備のチェックポイント

  • ファイルを選択していない状態でのインポートをエラーにする。
  • 重複データがあった場合は登録を中止する。
  • csvの形式チェックをする。

メール送信機能の設計

メール送信機能の用途

Webアプリケーションでは下記のようにメールを送信したい用途が生じる場合が多いです。

  • サインアップ
  • パスワード忘れ対応
  • 通知機能

メール送信機能の一般的な仕様

  • 送信元は固定する場合が多い
  • テンプレートを用意する。
  • HTML形式とテキスト形式どちらも送れるようにする。
  • HTML形式を採用する場合は受信者の環境に配慮してテキスト形式の情報も合わせる「multipart/alternative形式(マルチパート形式)」が一般的

メールの形式について

マルチパート形式

不特定多数の方にメールを配信するメルマガでは重宝される配信形式です。受信者の環境に合わせてHTML形式かテキスト形式か切り替えて表示させることが可能です。環境とは、受信者のメーラーの設定によってはHTML形式のメールが展開させない設定になっている場合があるのでその場合はテキスト形式で送信します。

メリット

迷惑メールとして判定されにくくなる。

HTML形式

写真や文字をメールの中に組み込みます。メルマガを使ったマーケティングでは主流となりつつあります。

メリット
  • 開封率が高くなる。
デメリット
  • セキュリティで弾かれる可能性もある。

テキスト形式

メリット
  • 環境に依存しない。
  • セキュリティで弾かれる可能性が低くなる。
デメリット
  • 開封率が低くなる。

Ruby on Railsでは

Action Mailerという仕組みでメール送信機能を提供しています。

「ランキング機能」の設計

ランキングの特徴

  • ReadよりもWriteの割合が圧倒的に多い

RDBで実装

MySQLでスコアのカラムにインデックスを貼ればReadは早くできるが、Write時のindexのツリーを更新するのに時間がかかるため、ランキングのようなWriteが圧倒的に多い処理ではあまり適さないです。

Redisで実装

RedisのSorted SetはSkip Listというデータ構造を採用している。この構造では、登録時に乱択アルゴリズムを使用するので、MySQLのB-treeのようにインデックスツリーのバランシングをする必要がないため平均的に高速になる。

また、ランキングは「ユーザー+スコア」という簡単なデータ集合なのでKVSであるRedisがまさに適している。

注意点

Redisを用いた場合は、データが消えてしまうという可能性も大いにあるためランキング追加時にはMySQLとRedisの両方にデータを追加するなどデータ消失時に対応できるような対策が別途必要になる。

スポンサーリンク
  • 2019 12.09
  • miyabisan2
  • コメントを書く
  • Webサービス開発
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2021 12.20

    【Web開発】「Socket.IO」の基本、実装方法、sticky-session

  2. 2020 12.31

    【AWS】「アーキテクチャ」の種類(モノリシック、SOA、マイクロサービス、サーバレス)

  3. 2019 11.30

    【Web開発】ユーザー管理機能の設計や実装、認証設計の種類

  4. 2019 12.08

    【Web開発】「戻る」操作について

  5. 2018 07.15

    【Web開発】「REST-API(RESTful)」とは?

  6. 2020 11.29

    【SEO】SEOとURLの関係、サイトマップ、OGP

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Web開発】「子画面」について

【BootStrap】概要的な知識、基本的なクラス

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー