1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

開発者とユーザー間でギャップを生じやすいこと=使いにくくなる要素について

Last updated at Posted at 2020-06-06

自分の実績で直感的ではないな使いにくくなってるなと感じたものを記述。

序数の扱い

  • 開発者は0はじまりしたがるけど
  • 一般ユーザーは1はじまりがふつう

開発者の立場からすると序数を0から始めたくなるのは理解できる(UIで指定された序数をそのままプログラムに投入できるため)。
だが一般の感覚からするとまず第一に慣れないので違和感しかない(優しくない)。

  • 1番目(日常で「0番目のお客様〜」とか聞いたことない)
  • ビルの階数(1F〜)

コンサート会場なんかだと1列目よりも前の特別感を表すために0列目 なんてのもあったりするけど(笑)

なので日常では先頭は「1」なわけで、UIで序数を指定させる場合には**「1」はじまりが優しい**と言える。

というかUIで指定する際の序数をプログラム内部のインデックスに変換する程度を面倒くさがるのどうなの、と個人的には思う。

自由な表現のさせ方について

  • 開発者は正規表現を使わせたがるけど
  • *一般ユーザーは(ワイルドカード)**がせいぜい

正規表現が使えると便利ではあるが、それを使わせる対象と必須/任意は慎重に選ぶべき。

  • 正規表現はプログラム要素であること
    シンタックスエラーや無限ループの原因にもなる。
    予想外の負荷がかかるケースも。

  • 一般ユーザーはおろかシステム管理者であっても知らない場合がある

  • テストする機能が欲しい(対象がeメールの宛先などは確認できないため)

  • 否定が意外と難しい
    「?!」などでできる場合もあるがやはり難しい。

  • 日常的な運用で正規表現を編集させるような場合は、そもそもその運用を疑ったほうがいい

正規表現を使いたくない状況

  • ネットワークアドレス
    ネットワークアドレス(xx.xx.xx.0/24)とかも専門的(非一般ユーザー向け)であるが、クラスAとCはともかくクラスBやCIDR、またIPv6に至ってはもはや正規表現には無理がある。
  • DNS(FQDN)
    サブドメイン名とか意味のある指定の仕方ができるようになってて欲しい。

チェックボックスのON/OFF

  • 開発者はコード中の分岐に関わる変数(True/False)をそのままチェックボックスにしたがる
  • 一般ユーザーはONなら目的の機能が動く
    (有効なことを)期待し、 OFFなら動かない(無効なこと)を期待する

よくあるのは**「無効にする」というチェックボックス**。

間違ってないんだろうけど、基本的には否定の否定は直感的ではないので、ONなら目的の機能がONで、OFFなら目的の機能がOFFになるようにするべき。

ファイルパスの指定方法

  • 開発者は¥(バックスラッシュ)などはエスケープするか/に置き換えて指定することを暗黙に期待している
  • 一般ユーザーはエスケープする必要性も/に置き換えることも、知る由もない

Javaで開発されているソフトウェアとかで設定ファイルフォーマットに「*.propetiesファイル」をそのまま採用している場合なんですが。

Javaなら*.properties、.NETなら*.configあたりだけど、あれをそのままユーザー向けの設定ファイルとして採用するのかどうかは一考するべき。
(受託開発なんかだとこういう部分の非機能要件は全く見向きもされないので、なおさら放置される傾向にある。)

  • 半角スペースを含む場合は""で括らないといけない

のも、(一般ユーザーからすると)暗黙のルールすぎて使い勝手を下げている。

そもそも設定ファイルベースである時点で、設定変更(編集)時にシンタックスチェックが行われず、シンタックスの妥当性責任がユーザーに委ねられてるため優しいとは言いづらい。

ディレクトリパスの末尾に¥(あるいは/)をつけさせるかどうか

  • 開発者はプログラムコードが期待する形式を強制させたがる
  • 一般ユーザーは末尾の¥(あるいは/)がついてるついてないぐらいの違いで動かなくならないで欲しい

要するに

example.js
let any_path = user_input + "¥¥hoge.txt";

//user_input には C:¥Users¥foo などを期待している。
//C:¥Users¥foo¥ としてしまうと動かない可能性がある。

あるいは

example2.js
let any_path = user_input + "hoge.txt";

//user_input には C:¥Users¥foo¥ などを期待している。
//C:¥Users¥foo としてしまうと意図しない出力されてしまう。

など
(実際にはNode.jsなどの場合、¥(や/)の有無を意識せずにパスとして連結する機能があるけど)

こういうのは手順や設定例に書いてあれば試行錯誤せずに済むが、やってみないとどういう結果になるか分からない、というのは非常に優しくない

CSVファイルの空行を読み飛ばしてくれない

  • 開発者はユーザーはきっちり指定のフォーマットでCSVを用意すると思ってる
  • 一般ユーザーは多少の空行などはうまく読み飛ばしてくれると思ってる

一見して気づかない空行や改行コードの違い、ファイル先頭のBOM(バイトオーダーマーク)ぐらいは、うまく処理して(読み飛ばして)欲しいと思う。

というか、自分が使う時にきっちり過ぎたら不便とは思わないのだろうか??

ユーザーにとって使いやすいアプリケーションって、仕様どおりであることも大事なんだけど、こういったちょっとした柔軟性(許容性)だと思っている。

日本のITをとりまく環境の悪さは、ビジネスオーナーが開発オーナーではないこと、に由来していると思う。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?