自己紹介がてら「自分を紹介するホームページでも作ってみない？」1日目

# 自己紹介
はじめましての人は初めまして。お久しぶりの方はお久しぶりです。
今年もアドベンドカレンダーの季節がやってきて、今年は何を書こうかなと考えていましたが、まぁまずは自己紹介でもしようかなと。
というわけでホームページを作りましょう。（？？？）

# そもそもホームページとは？
皆さんがみてるこれです。
ブラウザを開いて、なんか検索したりURLを開いて表示されるページのことです。
つまり今回作るのは、ブラウザで自己紹介が見れるみたいな感じのものです。

# 材料
ホームページはHTML(`HyperText Markup Language`)という言語で書かれています。
これは、「ブラウザに対してこんな感じで表示してね～」という指示書みたいなものです。
HTMLファイルをダウンロードしたブラウザ君は、「あーここは太字ね...あーここの文字は色を変えるのね～...」みたいな感じでやって、最終的に私たちに完成形を見せてくれるというわけです。[^renderer]
この世には色々な種類のブラウザがありますが、ブラウザの種類によっては表示される内容に違いが出ることがあります。
それは、ブラウザによって指示書の解釈の仕方が違うからです。
まぁよくわからん解説はここまでにしておきます。今回はそこまで重要ではありません。

[^renderer]: 実際にHTMLを解釈して画面描画しているのはブラウザというよりかはレンダラーと呼ばれるものです。ChromeであればBlink、FireFoxであればGeckoなどが使われています。

# 作り方
まずはフォルダを作りましょう。名前は何でもいいです。
そしたらそこに`index.html`というファイルを作ります。
`index.html`というのは、ブラウザが最初に見るファイルのことで、とりあえず魔法の呪文として覚えておけば大丈夫です。

そしたらそこに以下の内容を書き込みます。

```html:index.html
こんにちは！
```

そしたらブラウザで開いてみましょう。
ファイルをご自身が利用しているブラウザで開いてみましょう。
Windowsなら右クリックで「プログラムから開く」ですよ！

![1700657699846.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1107984/3043c601-ece3-c4d4-6404-b3213725915d.png)

そしたらこんな感じになると思います。

今はアドレスバーの左に`ファイル`と書いてあったり、アドレスが`file:///`から始まっていると思いますが、これのファイルをサーバーにアップロードして、そのサーバーのアドレスを開いても同じようになります。
つまり実質完成ですね。
...と、終わらせるにはあまりにも自己紹介もしてなければホームページも作れていないのでもう少しちゃんとやりましょう。
ですが、基礎はこれだけです。

# HTMLの基礎
HTMLは`HyperText`というその名の通り、テキストがあって、それを装飾するようなイメージです。
そのため、普通に文字を書いただけでも文字は表示されます。
しかしそれだけではHTMLであることを何も生かせていませんので、HTMLっぽいものを書いてみましょう。

HTMLでは`タグ`と呼ばれるものを使用することで文字を装飾したり色々な機能を付けることができます。

早速ですが`<br>`というタグを使ってみましょう。

```html:index.html
こんにちは！<br>私の名前はnattyan-tvです！
```

内容をこのように変更してまたファイルを開いて（もしくは更新して）みましょう。

![1700658224255.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1107984/c4bc22bb-9ce7-90d3-3a28-14de368a13b9.png)

なんと、改行されました！
というわけで、`<br>`とは改行を表すタグです。（改行を現す`BReak`の略で`BR`です。）

このようにHTMLでは`<タグ名>`という形で、なんかよくわからんかっこに囲まれたものをタグと呼びます。

# タグ？
タグには、__始まり__ と __終わり__ があります。

え？
> `「何あほなこというとんねん、さっきの<br>とかいうやつに始まりとか終わりとかあるんか？」`

だって？

しょっぱなから`<br>`を持ってきた私も悪いのですが、`<br>`のように始まりとか終わりではなく、そのタグ単体で機能するものもあります。
これは空要素と呼ばれているらしいですが私も知らなかったので皆さんも知らなくていいです。

では、始まりと終わりがあるタグを見てみましょう。

```html:index.html
<p>こんにちは！<br>私の名前はnattyan-tvです！</p>
```

今回は`<p>`というタグを追加しました。
まぁまずは一回ブラウザで開いてみましょうや。

![1700658883998.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1107984/d5d66fe0-1a47-af99-f76e-b4dd47fce4e9.png)

...うーん？
なんか変わった？

![1700659123350.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1107984/5bb8286d-8024-e4fa-d2eb-57b3361b8a35.png)

Copilotに聞いたらあまりにふざけた回答を返してきたので、AIはまだまだだなぁと思いました（小並感）

というわけで、この`<p></p>`というタグは、「段落」を表すタグです。
どこがその「段落」かというと、`<p>`と`</p>`に囲われた`こんにちは！<br>私の名前はnattyan-tvです！`の部分です。
ではもう一つ段落を増やしてみましょう。

```html:index.html
<p>こんにちは！<br>私の名前はnattyan-tvです！</p>
<p>ねこちゃんだいすき！！！</p>
```

![1700659276476.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1107984/cfe2b1e6-86ea-4d11-4bf5-5d36353a79f1.png)

お、`<br>`を使っていないのになんか改行されてる！
みたいな感じで、`<p>`と`</p>`で囲まれた部分は段落となり、一つのまとまり～みたいな感じになります。

# タグの種類
で、プログラミングと同じようにタグを覚えていかなければホームページは書けません。
いやまぁ都度調べればいいんだけどさ。

んじゃあそのタグって何種類あるの？って話なんですが、大体100種類近くあるそうです。

https://developer.mozilla.org/ja/docs/Web/HTML/Element

こちらに一応全部(?)載っていますが、まぁ多いですよね。
じゃあ「これ全部使うんですか！？」というわけでもなく、覚えておくべきなのは割とそんなに多くはありません。

というわけで覚えておくべきだったり、まぁ使うべきなタグを紹介するの...は明日にしましょう。
前作と同様、1つの記事が長くなってしまうと読みにくいし、普通にネタ切れまっしぐらなのでね。

# まとめ
次回、HTMLでまぁなんか覚えておいてもいいかもねぇ～ってタグ編へつづく！

あとねこちゃんはほんとに大好きだよ！！！！

# あとがきという名のサンプル
```html:index.html
<html>
    <head>
        <meta charset="utf-8">
        <title>NattyanTV</title>
        <script>
            window.addEventListener("load", (() => {
                const userNameElement = document.querySelector(".user-name");
                if (userNameElement !== null) {
                    userNameElement.innerHTML = "NattyanTV"
                }
                setInterval((() => {
                    document.getElementById("deeply-world").insertAdjacentHTML("beforeend", "!");
                }), 1000);
            }));
        </script>
    </head>
    <body>
        <h1 class="user-name">Loading...</h1>
        <div id="deeply-world">Welcome to 深淵!</div>
        <style>
            body {
                background: #d3d9db;
            }

            .user-name {
                max-width: 80%;
                width: 50rem;
                margin: 0 auto;
                font-family: serif;
            }

            #deeply-world {
                max-width: 80%;
                width: 50rem;
                margin: 0 auto;
                font-family: sans-serif;
            }
        </style>
    </body>
</html>
```
![IMG_6455.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1107984/5275f829-aa55-08ef-0a2e-9e54048a06d6.png)