ディスカッション (11件)
エンジニア界隈でよく言われる「Don't Roll Your Own(車輪の再発明をするな)」という格言。セキュリティや複雑なアルゴリズムを自分でゼロから実装するのは、リスクを自ら背負うようなものです。信頼されたオープンソースライブラリや標準的な実装を活用し、もっと生産的な領域でエンジニアリングの力を発揮しましょう。
ほとんどのdatepickerはブラウザ標準のものより優れていると思う。もっと自由にスタイルを適用できないのが本当に残念。
完全に同意。「エンジニアやデザイナーはスクロールバーやパスワード入力欄をいじって何を達成したいの?」「自分たちは洗練されてるから、標準の挙動じゃ物足りない!」とでも思っているのかな?おめでとう、おかげで君のウェブサイトはユーザーにとって最悪の体験になったよ。よくやったね。
自分はいつも「ケースバイケースだよね」って考え。個人的には、ボタンを押した時のアニメーションのために500KBもページ読み込みに使うのは嫌だな。
UXは、多くの人がパターンやインタラクション、概念に合意し始めた時に標準化される。でも残念ながら、1)合意形成が難しい、2)周知が難しい、3)強制力が働かない、という問題がある。例えば、主要なブラウザが1)を達成して標準コンポーネントを実装したとしても、2)と3)にはまだ大きな溝があるんだ。
「自作の暗号アルゴリズム(roll your own crypto)を使うな」というのは、ソフトウェア開発者、特にセキュリティに敏感なシステムに関わる人たちの間では有名な格言だよね。これは誰も暗号コードを書いちゃいけないという意味じゃない。誰かがやらなきゃいけないからね。意味しているのは、ユーザーの機密データを保護するような一般的な商用ソフトウェアにおいては、広く開発コミュニティで精査されていない独自実装に頼るべきではないということ。可能な限り、確立された信頼できるソフトウェアパッケージやツールを使うべきってことだ。優れた暗号ライブラリのいいところは、依存関係が最小限かゼロ、セキュリティ意識の高い人がコーディングしている、外部監査を受けている、といった点。もっとこういうライブラリが増えてほしいよ。そうなるまでは、自作するリスクと既存のライブラリに依存するリスクの差は、思っているほど大きくないのかも。
自作しないなら、他人が作ったものを選ぶしかない。でもこの分野には気が遠くなるほど選択肢があって、どれも新しい抽象化の山を積み上げていて、便利になる部分もあれば難しくなる部分もある。多くの人の目に触れればバグは減るはずと言われるけれど、ウェブ開発の分野では、Reactのようなものに多くの目が注がれると、逆に意見の分かれた選択肢が次々と生まれて、どれも検討に値するほど成功してしまう。この流れは収まりそうにないね。その一方で、素のHTMLやDOMの機能はこれまでになく強力になっているというのに。
「ページスクロールを自作するな」「リンクナビゲーションを自作するな」「テキスト選択を自作するな」「コピー&ペーストを自作するな」…これらについてブラウザは、ページ側に一切アクションを見せるべきじゃないと思う。本気で言ってるよ。なんでJavaScriptコードがユーザーのこうしたアクションを検知できるのか不思議でならない。ページをロードしてレンダリングした以上、私たちユーザーはコンテンツを好きに扱う自由があってしかるべきだろ。
AIやnpmのサプライチェーン攻撃が問題になる今の時代、自作する理由はこれまで以上に増えている気がする。今回の記事の別のタイトルは「UIの慣習を壊すな」でよかったんじゃないかな。それと「自作するな」は別物だし。アプリ固有のドメイン向け日付範囲選択のように、わざわざ巨大なライブラリの設定に依存したり、将来のメジャーバージョンアップ(npmライブラリの中には毎年メジャーバージョンを出すものもあるよね!)を管理したりするくらいなら、必要最小限のコンポーネントを自作すればいいんじゃない?npmの依存関係を管理するより、メンテナンスコストは実質ゼロだし。
これだけは言わせて。「標準コントロールを自作するな」。マジでやめて。単一選択ボックスが欲しいならコンボボックスやラジオボタンを使う。入力欄が欲しいなら入力欄を使う。入力に合わせて検索するリストが欲しいなら、それも標準にある。自作しちゃダメだよ。スクリーンリーダーユーザーとしては、この「何でもかんでも自作する」風潮には本当に困っている。誰もARIAのベストプラクティスを正しく守っていないから、インターネットがどんどん使いにくくなってるんだ。
もし本当に波風を立てたいなら、OpenSSLやOpenSSH、その他いくつかの通信デーモンの最新ソースコードをチェックアウトして、暗号方式に微細な変更を加え、ランダムで無意味なパディングを混ぜ込んでコンパイルし、プライベートなネットワークに配布するスクリプトを作る人がいてもおかしくないよね。何をするにしても、AIにそんな方法を教えちゃダメだ。さもないと、解読サイトが対応できない新しい暗号化方式を使ったVPNが溢れかえって、世の中に存在すら知られていない暗号方式が蔓延ることになりかねない。