「表の列をクリックしたらソートできるようにしよう!」って思ったことある?
わたしも最近、そんな簡単そうな機能をつけてみたんだけど…これが思った以上にめんどくさくて💭
でさ、「これって他にもあるんじゃない?」って思って、みんなが意外と苦労したプログラミングの話を集めてみたよ〜🥺
1. 日付や時間の扱いは、見た目以上にややこしい⏳
「今日の日付を表示するだけ」って簡単そうじゃない?って思ったけど、
実はタイムゾーンの違いとか、夏時間の調整とかで大混乱することが多いんだよね💦
わたしも時計のズレで何度か泣きそうになったのを覚えてるよ…🥲
2. 入力チェック(バリデーション)って意外に鬼門👹
「ユーザーが正しいデータを入れてくれればいい」って思うでしょ?でも現実はそう甘くないんだな〜これが💬
たとえばメールアドレスの形式チェックひとつとっても、
怪しい文字列や空白、全角文字とか考え始めると止まらなくなるし、
エラーメッセージの出し方も気にしないとユーザーが混乱しちゃう💡
3. レスポンシブ対応はデザイン以上にコーディングが大変📱💻
スマホでも見やすくしたいからって、ただ画面幅を変えるだけじゃダメなのがつらいところ…
ボタンの大きさ変えたり、表示順変えたり、隠したり表示したり…って細かい調整がめちゃくちゃ多い😭
「簡単にできそう」と思って始めると、
結局細かい部分でバグが出て時間がかかることがほとんど💗
4. 並び替え機能は見た目シンプルだけど中身超複雑🔀
これはわたしの体験談だけど、
「列ヘッダーをクリックしたらその列でソート」って、マウスイベントだけじゃなくて、データの種類ごとに処理を変えたりとか、
昇順・降順の切り替えロジックを考えたりとか、想像以上にコードが膨らんだのよ😳
しかも、文字列の大文字小文字無視とか、数字が混ざってたりすると、余計にややこしくて💬
まとめ💭
こうやって見ると、「見た目や話だけ聞くとすごく簡単そう」な機能ほど、実は細かいところでめちゃくちゃ手間がかかるってことがわかるよね🥺
プログラミング初心者のころは特に「え、なんでこんなに大変なの?」ってなるけど、
それもひとつの学びだから、焦らず楽しんでいけたらいいなと思うよ✨
もしこの記事読んで「わかる〜!」って思ったなら、
それだけで今日のあなたはプログラミングの世界一歩前進してると思うから自信持ってね💗
またこんな話聞きたかったら教えてね〜🫶✨
コメント
ハンナ
「検索バーを付ければいいだけだよ」ってね、笑えるよ。
リリー
日付が絡むやつは全部ムズイ。
クリス
認証とかシングルサインオンも厄介。
ハンナ
非エンジニアには簡単そうに見えること、つまりほぼ全部だね。
リリー
日付と時間の扱いって地味に難しい。
ロバート
キャッシュは一時的にデータ保存して処理軽くするけど、最新情報が必要なケースだと途端に壊れる…。
グレース
答えはフォームだよ。 フォームってめちゃくちゃ複雑なんだ。
グレース
ファイル入力のカスタマイズが意外と手こずる。
クリス
無限スクロール/フロントの例外処理/多層構造でAPI直呼びじゃない設計とかね。
ジャック
レスポンシブなメールテンプレート? うーん、謎だよね。
キンバリー
国際化(i18n)は最初は「文字を翻訳すればいい」って思うけど…
キンバリー
実際は複数形ルールが違うし、アラビア語やヘブライ語みたいに右から左の言語でレイアウト崩れたり、文脈によって訳を変えたり、ドイツ語みたいにテキストが30%も長くなったり、動的コンテンツの翻訳も必要だったり…
クリス
自分の場合、日本語学習サイトの検索機能を何度も作り直したな。
クリス
ユーザーが日本語の三つの文字体系か英語で入力して、ちゃんと正しい検索結果を返すようにするのが想像以上に難しくて、「eat」を打ったら「seat」が引っかからないように調整したりね。
ロバート
めちゃくちゃ勉強になったけど、こんなに大変とは思わなかったよ。
クリス
今のユーザーが当たり前に使えると期待してる機能はどれも一筋縄じゃない。 最近だとタグとキーワードでのテキスト検索がまさにそう。 簡単そうに見えて本当に難しいんだ。
グレース
完全アクセシブルでスタイルも自由、オートコンプリート付きのマルチセレクトコンボボックス作ると、フォーム入力がもう一つのアプリみたいになる。
ハンナ
追記:みんながコンポーネントライブラリ勧めてくるの笑えるw