Software Design 202506
アクセシビリティ
アクセシビリティとは全ての人々にとっての利用しやすさのこと。 対して、ユーザビリティは限定的な文脈での利用しやすさのこと。
法的側面でいうと、障害者から申し出があった時に個別対応するのが「合理的配慮」にあたり、これは義務である。 さらに、努力義務として「環境の整備」、たとえば Web サイトの根本的な改修などが求められている。
ガイドラインとして WCAG(Web Content Accessibility Guidelines)がある。 ここには満たすべき 4 つの柱が書かれている一方、具体的な実現手段は規定されていない。
- 知覚可能
- 代替テキスト、字幕、コントラストの確保など
- 操作可能
- キーボード操作できる、激しい点滅を避ける、スキップリンクなど
- 理解可能
- 一貫性のある UI、親切なエラーメッセージ、送信前の確認など
- 堅牢
- 特定ブラウザや特定バージョンに依存しない
- 標準仕様に従う(セマンティック HTML、WAI-ARIA など)
ハピネスチームビルディング
中途採用したらこれをやれ
- 即戦力として期待しすぎず、ゆっくり慣れてもらう
- 十分な教育期間を設ける
- ペアプロ・モブプロをやる
- 既存メンバーとのコミュニケーションを十分にとる
- 貢献できていることを伝える
つまみ食い関数型プログラミング
関数型プログラミングは、「データを別のデータに変換していくプログラミング手法」といえる。
このため、関数は必ず値を受け取り、値を返す。
複雑な処理を実現するときは、関数をたくさん定義して組み合わせていく。 個々の関数は簡素なので、問題を容易に分割できる。
関数はデータを変換して返却することに徹しなければならず、副作用は禁物である。 副作用とは、たとえばグローバル変数やファイルへのアクセスなど、 返り値に現れない、目に見えない状態の変化を伴う処理のことを指す。
くわえて、ある値を受け取ったときに常に同じ値を返す性質である参照透過性も重要である。 例えば現在時刻を返す関数は、副作用はないものの参照透過性は満たしていない。
この 2 つを満たす関数を「純粋関数」という。
関数型プログラミングの特徴としてよく挙げられるもの:
- 変数やデータ構造の不変性
- 式指向の構文 (e.g.
if
やmatch
など、全てが式として値を返す) - ラムダ式と高階関数 (関数を引数に取る)
- パターンマッチング
- 型システムと型推論 (結果に型がつく)
- Optional や Result などの型
- リストやストリームの処理 (e.g. JS の配列メソッドでチェーンするなど)
データベースリファクタリング / カスタムフィールド
ユーザーが自由に項目を定義できるカスタムフィールドは、RDB と相性が悪い。 JSONB よりは、EAV モデルの方が多くの場合よりマシ。 いずれにせよバリデーションは必要である。