【ITニュース解説】Built and Hosted My First Website. Here are My Opinions:
2025年09月30日に「Reddit /r/programming」が公開したITニュース「Built and Hosted My First Website. Here are My Opinions:」について初心者にもわかりやすく解説しています。
ITニュース概要
初心者が初のウェブサイト構築でHTML、CSS、JavaScriptを体験。CSSの難解さやJavaScriptの型ヒント不足に不満を抱いたが、試行錯誤を通じて、これらこそがウェブ開発の重要な基礎であると認識した経験を共有した。
ITニュース解説
あるプログラマーが初めてウェブサイトを構築し公開した経験について、率直な感想を共有した。彼が作成したのはバイナリ数を10進数に変換するシンプルなツールで、ウェブ開発を学び始めたばかりの初心者にとって、その経験は多くの学びと発見があったようだ。
まず、ウェブページの骨組みを作る「HTML」について。彼はこれを非常に単純だと感じ、「Notion」のような文書作成ツールと似ており、キーボードショートカットの代わりにタグを使う点が違うだけだと述べている。HTMLは確かに、ウェブページに表示されるテキストや画像、リンクなどの要素を構造化するための言語である。例えば、見出しには<h1>タグを、段落には<p>タグを、といった具合に、要素の種類を示すタグで内容を囲むことで、ウェブブラウザがその構造を理解し、適切に表示できるようにする。非常にシンプルであるという彼の感想は、その役割が明確で、直感的に理解しやすいというHTMLの特性をよく表していると言える。
次に、ウェブページのデザインや見た目を整える「CSS」について。彼はCSSに対し非常に強い不満を抱いており、「敵にすら学んでほしくない」とまで言い切っている。特に、要素を水平方向に揃えるプロパティが「justify-content」で、垂直方向に揃えるプロパティが「align-items」であることに対し、「誰の認知能力を試しているのか」と疑問を呈し、命名の非論理性を強く批判している。そして、CSSの学習は諦めて「Bootstrap」のようなフレームワークを学ぶ方が良いと結論付けている。CSSは、ウェブページの見た目を自由にカスタマイズできる強力な言語だが、そのプロパティの種類は多く、それぞれの効果や組み合わせ方を理解するには確かに慣れが必要である。彼が指摘した「justify-content」や「align-items」は、ウェブ要素の配置を柔軟に行うための「Flexbox(フレキシブルボックス)」というCSSのレイアウトモジュールで使われるプロパティである。これらは特定の文脈(Flexboxの主軸と交差軸)を理解していると理にかなった命名なのだが、初心者にとっては直感的でないと感じることも少なくない。Bootstrapのようなフレームワークは、あらかじめ用意されたCSSのスタイルやコンポーネントを使うことで、デザインの手間を大幅に省き、統一感のある見た目を簡単に実現できるため、CSSの複雑さに直面した際に有効な選択肢となる。
そして、ウェブページに動きやインタラクティブな機能を追加する「JavaScript」について。彼は、JavaScriptに「型ヒント」がないことに驚きを隠せない様子である。「型ヒントがないのに、どうやって複雑なソフトウェアを作ってきたのか」と疑問を呈し、変数の型や関数の出力結果を確認するために、逐一「console.log」を使ってデバッグする必要があると感じている。さらに、JavaScriptがわずか約12日間という短期間で開発されたことを知り、その背景に納得している。型ヒントとは、プログラミング言語において変数や関数の引数、戻り値のデータ型(例えば、数値、文字列、真偽値など)を明示的に指定する機能である。これにより、コードの可読性が向上し、開発段階で型に関するエラーを発見しやすくなる。JavaScriptはもともと、ウェブブラウザ上で簡単な動きを実装するために作られた「動的型付け言語」であり、変数の型を明示的に指定する必要がない。これは柔軟性が高い反面、大規模な開発では予期せぬ型の不一致によるバグにつながることがある。そのため、現在では、JavaScriptに型ヒントの機能を追加した「TypeScript」という言語が広く使われており、大規模なプロジェクトではTypeScriptが主流になりつつある。JavaScriptが短期間で開発されたという歴史的事実も、その設計の一部が現代の複雑な開発要件と乖離しているように見える理由の一つかもしれない。
しかし、一連の技術に対する厳しい意見を述べた後、彼は自身のプログラミング学習の旅を振り返り、重要な教訓を述べている。彼は過去にもPythonやJavaといった他のプログラミング言語を学び始めた際に、同様の不満や批判を抱いた経験があった。その時、「コンピュータは馬鹿だ」と感じたが、最終的には「自分が馬鹿だった」と気づいたという。もしコンピュータが意図した通りに動かないのであれば、それは自分が十分に明確な指示を与えられていないからだと理解したのだ。
彼は、CSSが「古臭い」と感じられたり、JavaScriptが「おもちゃのようだ」と感じられたり、HTMLが「タグの入れ子だらけ」に見えたりするかもしれないが、これらすべてがウェブ開発の核心を成す基盤であると結論付けている。初めての経験で抱く戸惑いや不満は、新しい技術を学ぶ過程で多くの人が経験する自然な感情である。しかし、そこから「なぜそう感じるのか」「どうすれば理解できるのか」を深く探求し、自身の理解不足を謙虚に受け入れる姿勢こそが、プログラマーとして成長するために不可欠である。この一連の経験は、新しい技術に挑戦する際の難しさや、それを乗り越えて学ぶことの重要性を示唆している。彼のウェブサイトのソースコードも公開されており、実際にどのようなコードでウェブサイトが構築されたのかを確認できるため、初心者にとっては具体的な学習の参考になるだろう。新しい技術との出会いは、時にフラストレーションを伴うが、それを乗り越えた先に大きな成長と喜びが待っているのだ。