Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

検討したい実装めも #7

Open
nnnnusui opened this issue Aug 28, 2024 · 0 comments
Open

検討したい実装めも #7

nnnnusui opened this issue Aug 28, 2024 · 0 comments
Labels
thread Notes, chats, etc.

Comments

@nnnnusui
Copy link
Owner

nnnnusui commented Aug 28, 2024

いろいろ。
例として、最近また作りたくなってきた音ゲー関連の観点から始める。

作りたいものの定義

 音ゲーの譜面エディタ。
 特に下記の条件を加味したい。

  • フルスクリーンWebアプリ(トップレベルのスクロールが無い)。

  • スマホなどの小さな画面とタッチ操作で十全にスムーズに扱えること。

    • 各種インタラクションの少なくとも当たり判定は、ある程度の大きさを持つとよい。
    • 一度に出せる情報は少なく、取捨が必要。各種情報へのスムーズなアクセスも実現しづらい。
    • 連打は行いにくい。スライド操作などで代替できる。
    • マルチタッチが行える。正し、タッチ環境以外のために代替手段が必要。
  • PC環境でも扱えること。

    • どちらもそれぞれ実装するか、どちらを優先するかの判断が求められる。
    • 別種の入力機器には、其々に扱いやすい形が生じる。
    • 大きな画面用のUIを小さな画面で扱うのは無理がある。
      小さな画面用のUIは大きな画面でも一応扱える(超野暮ったくはなる)。

検討したい実装

 欲しいもの連想げーむ。

  • 各種インタラクション
     小さな画面でタッチ操作で扱いやすい入力要素。

    • スライド(上下)で値を操作できる数値入力欄
       正確な値入力のためにキーボードを呼び出すインタラクションも備えているべき。ダブルタップとかに。
       下記の検討が必要。

      • 変化量(ステップ)をどう妥当に設定するか。
      • 画面端に配置された際に動かせない方向が生じてしまわないか。
        • 画面端への配置を避ける?
        • 画面中央にインタラクションを呼び出すといったような形にする?
  • 操作ガイド描画
     現在入力を受け付けてるキーと操作のMapとか、ゲームでよく見るやつ実装しようとするとどうなるの。
    フォーカス中要素次第な変動特にどうするのとか、微妙に別件だけど次にフォーカスされる要素のハイライトとか。

  • 履歴管理
     undo, redo, バージョン管理。
    アプリケーションの状態が、ある状態オブジェクト変数(state)から決定的であれば、それの管理を実装するって形で実装できるんじゃねーのっていうのをやりたい。

    • 管理する履歴は1種とは限らない
       undo, redo の対象や粒度が調節できるとベネ。
      コマンド割り当てとか、現在の操作対象の考慮とか、だるそう。やりたい。
  • レイアウトのカスタマイズ
     [手動,自動]のもの。

    • お気に入り
       単純な例。一度に表示できる情報の少なさから階層化が進む中、
      個人によってアクセス頻度の変わるコンテンツに対応する策。

    • よく使うもの
       アクセス頻度の観点から、効率化を自動化したもの。
      ※ 結局頻度で並び順が変わるなどするならあまり効率化には寄与しないかも。

    • 最近使ったもの
       階層が深くなりがちであればあるほど有用。

    • レイアウト編集モード
       行きつく先。結局使わない人のほうが多い。
      これも一種のエディタ。ので当然、履歴管理など行えてほしい。
      レイアウトレンダリングが1層メタ化するので大変手間。やりたい。

  • データの永続化
     ネットワーク越しのDBに保存するなりなんなり。
    ある範囲の状態を持つstateに、後から通信処理を組み込むとかでやれると理想的かも。どうなの。
     大体、バックエンドのRESTにbatchエンドポイントを実装するとか、GraphQL対応をやるとかになりそう。
    GraphQLの場合、DBまでのデータ取得処理を極限まで疎にするとかしないとメリットにならないから辛そう。
    GraphQL備えてるDBなりサービスなりをバックエンドとして1つドンと置くとかでもいいんじゃないかしら、知らんけど。

    • 通信の抽象化
       必要になったら取得。

    • 通信の最適化
       まとめて取得。

    • 通信の軽量化
       必要な分だけ取得。

@nnnnusui nnnnusui added the thread Notes, chats, etc. label Aug 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
thread Notes, chats, etc.
Projects
None yet
Development

No branches or pull requests

1 participant