Raspberry Pi のセットアップを試みる

# はじめに

この記事は、[SLP KBIT Advent Calendar 2019] (https://adventar.org/calendars/4214) の10日目の記事です。

最近 Raspberry Pi を手に入れたので、セットアップを行います。
その後、実際に少しだけさわってみようと思います。

# まずは Raspberry Pi について調べてみよう

「ラズパイ手に入れたぜ！ 遊んでみよう！」
と思ったのはいいけれど、Raspberry Pi について何も知らないなあ…
ということで、まずは Raspberry Pi について調べてみようと思います。

## Raspberry Pi について
生産しているのは、イギリスを拠点とする Raspberry Pi Foundation という慈善団体です。
彼らは、人々がコンピューティングパワーとデジタル技術を活用して、需要な問題を解決し、
創造的に自分自身を表現できるようにするために、活動しています。

Raspberry Piとは、人々が学習し、問題を解決し、楽しむために使用する
低コストで高性能なコンピュータのことなのです。

ちなみに、初代 Raspberry Pi の発売は2012年2月29日であり、
来年2020年の2月29日で2歳（8周年）を迎えるそうです。

# Raspberry Pi をセットアップしよう

## 用意したもの
- Raspberry Pi 4
- microSDカード 32GB
- マウス
- モニター
- キーボード

![Raspberry_Pi4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548179/5d50f046-9799-409e-6c26-c307b1c68a74.jpeg)

## SDカードのセットアップ
まずは、下記のURLから NOOBS の ZIPファイルをインストールします。
ダウンロードページ : https://www.raspberrypi.org/downloads/noobs/
![NOOBS ダウンロードページ] (https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548179/efb3ecd8-0d2b-9db1-dd46-10389301ac9d.png)
Raspbian Buster の方がはやくできるようですが、
今回は初心者向けの NOOBS を利用して Raspbian をインストールします。
※ Raspbian は、公式にサポートされている Raspberry Pi の OS です。

ZIPファイルのインストールが完了したら、解凍してファイルをすべてSDカードにコピーします。

## Raspberry Pi のセットアップを完了させよう
Raspberry Pi 4 にSDカードを差し込み、モニターやキーボード、マウスを取り付けます。
電源は最後に入れます。

起動が完了すると、NOOBS のウィンドウが立ち上がります。
「Wifi networks」からインターネットに接続した後、**Raspbian Full** をインストールします。
インストールが完了すると、デスクトップ画面が表示されます。
その後、言語選択やログインに使用するパスワードの設定、セットアップ画面の設定を行い、
最後にソフトウェアのアップデートが行われます。
ソフトウェアのアップデートが完了したら、再起動をして、セットアップ完了です。

デスクトップ画面はこんな感じです。
![Raspbian Desktop画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548179/2e6e8f81-b16f-e47e-17df-7edd4a9e9f95.png)

# すこーしさわってみる

## Node.js でサーバーを立ててみる
最新のバージョン（Raspbian ver4.19）では Node.js と npm が標準でインストールされていたので、
Express だけインストールします。

```terminal:LXTerminal
$ npm install express
```

Expressを利用してサーバを立てます。

```js:sample.js
var express = require('express');
var app = express();
const port = 3000;

app.get('/', (req, res) => {
    res.send('Hello world!!');
});

app.listen(port, () => {
    console.log('server listening:' + port);
});
```
LXTerminalを開いて実行します。

```terminal:LXTerminal
$ node ./sample.js
server listening:3000
```
*localhost:3000* にアクセスすると…
![実行結果1] (https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548179/7547e0e0-7962-6a54-6aed-79621cda21ef.png)
*Hello world!!* と表示されます。

次は、簡単なHTMLファイルを送信してみます。

```js:sample.js
app.get('/', (req, res) => {
    res.sendFile(__dirname + '/sample.html');
});
```

```html:sample.html
<!DOCTYPE html>
<html lang="ja">
    <head>
        <title>sample</title>
    </head>
    <body>
        <h1>ようこそ</h1>
        <p>こんにちは。<br>Raspberry Pi のセットアップが完了しました。</p>
    </body>
</html>
```

先ほどと同様に実行して、*localhost:3000* にアクセスします。
![実行結果2] (https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548179/3fce1b09-7eff-5d05-6bcd-38b5515bad51.png)
ちゃんとHTMLファイルが送信されましたね。
結果は同じになるので割愛しますが、他のPCからのアクセスでも問題なく動作することが確認できました。

# おわりに

自宅の通信環境があまりよろしくないため、COOBSのインストールに膨大な時間がかかりました。
有線を使えば少しはマシだった気がしなくもないですが、達成感があるので悪い気はしません。
OSのインストール完了後に、デスクトップ画面が表示された時は感動しました。

Raspbian では、あらかじめ様々な開発環境が整えられていて、とても便利だと思います。
今回は、Raspberry Pi の魅力のほんの一部に触れただけなので、
これからもっと魅力を知っていけたらと思います。

作成中のゲームも、Raspberry Piでサーバを立てて遊んでみたいな。

# 参考サイト

>Teach, Learn, and Make with Raspberry Pi - Raspberry Pi
https://www.raspberrypi.org/

>Setting up your Raspberry Pi
https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up