AIで知識ゼロからアプリ開発1000時間 #3

3:Reactの壁と日付の罠

Reactで「日付」と「使い始めて何日目か」を表示させだくて四苦八苦した話だばって、書ぎ方ひとつ間違えるだけで全部表示されねぐなるのさ。returnの中の構造、Hooks(useStateとかuseEffect)のお作法、HTMLのカタチ――最初は全部「なんでダメなんず?」って感じだったばって、少しずつ意味が見えてきて、最後はちゃんと表示されで感動したんず。やっぱし、ひとつひとつ乗り越えでいげば、アプリ開発もなんとかなるもんだなって思った日だったじゃ。

my app

…と、その前によ、これが1000時間かげでようやぐ完成させだアプリの画面だ。知識ゼロのおらが、どんげしてここまで作れるようになったが、みんなさ共有したぐてぇな!

ウェブアプリ版

アンドロイド版

「なして表示されねんず?」
朝から晩までそうブツブツ言ってたこの日、やっとReactの“文法の罠”に気づいた。やりたかったのは単純なこと。「今日の日付」と「アプリを使い始めてからの経過日数」を表示するだけ。…だったはずなのに。

最初は useStateuseEffect っちゅうの使えば表示できるってAIが教えてくれた。書いでみだ。

jsコピーする編集するconst [currentDate, setCurrentDate] = useState(new Date());
const [daysSinceStart, setDaysSinceStart] = useState(0);

useEffect で日数計算して setDaysSinceStart に入れる――まではよかった。

でも表示するために return の中に <p>{daysSinceStart}</p> って書いたら、画面が真っ白に。
「なんでじゃーーー!」

何回ビルドしなおしても、エラーは出てねえのに、なーんも表示されね。ここから地獄の「divタグとの戦い」が始まった。


JSXはやさしくない

Reactでは return の中に「複数の要素」は並べられねえらしい。普通に <div> ふたつ並べると、

Adjacent JSX elements must be wrapped in an enclosing tag.

って怒られるんず。要するに「全部ひとまとめにしろ」って話だった。それで <></> ってやつでくるんだら、ようやく表示された。


CSSが効がねくなった理由

さらにもうひとつ問題が。今度はCSSが効がね。透明背景や文字の位置が全部無視される。なんでだ?と思ったら、div の閉じ忘れ。HTML構造を壊したまんまで return しようとしたせいだった。まさが、1行の書き忘れでデザイン全滅するとは…。


日付のフォーマットも一工夫

currentDate.toLocaleDateString() だと「2024/5/6」みたいに表示される。でも「2024/05/06」ってちゃんと2桁にしたくて、format関数を導入。

jsコピーする編集するconst formatDate = (date) => {
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, '0');
  const day = String(date.getDate()).padStart(2, '0');
  return `${year}/${month}/${day}`;
};

こうしてやっと表示された、2024/11/17 + 〇 days の文字。
「おぉぉぉ……表示されたぁぁぁぁ!!」


地味だけど大きな一歩

日付表示なんて、普通の人から見れば超どうでもいい部分かもしれね。でも、アプリ作ってる側にとっては「毎日続けてる」ってのを見せる重要な演出なんず。
この1行の積み重ねが、自分の成長の証でもある。


まとめ

  • Reactのreturnには「構造ルール」がある
  • useStateとuseEffectはReactの心臓みたいなもん
  • CSSが効かない時は、HTML壊れてないか確認
  • AIに頼っても、結局は自分で何度も確かめるしかねぇ

まだまだ先は長いばって、今日も一歩前進したんず。アプリ開発って、こういう積み重ねなんだべな。

●次の記事
AIで知識ゼロからアプリ開発1000時間 #4

●ホームページ
アプリ制作1000時間の知識を使って作ったHPも見てほしいべさ

ゲームに見えるかもしんねぇけんども、これ、ホームページなんだべ。アプリ制作1000時間、めっちゃしんどがったけんども、そのおかげで色んなことできるようになったべさ。これからもどんどん更新していぐがら、応援よろしく頼むべ!

ちなみに、このHPのコンセプトは「日本人の勤勉さを取り入れだ、世界一ストイックな方法で、世界中の人たぢの夢の設定がら到達までを総合サポートすること」なんだべさ。学習×運動×睡眠×栄養×時間、この5つの軸を使っていぐど。おらも今、これを実践中だべ!

んでもってな、このHPを通じて夢を叶えだ人たぢと一緒に、いずれ世界をひっくり返すような仕事をしたいと思ってんだべ!ただの応援で終わりじゃねぇ。ここで鍛えた力で、みんなと一緒にとんでもねぇことを仕掛けていぐ。

一緒にでっかい夢、つかまねぇが?

コメント