📑

【ポートフォリオ 04 検証】ラズパイから動的HTMLを取得して動作検証するまで

に公開

はじめに

前回、擬似観光スポットのHTMLを「DOM操作」「連想配列」「オブジェクト」を使用して、動的HTMLとして実装しました。

詳しくは、以下の記事をご参照ください

https://qiita.com/mabo23/items/f82ec0bb46c128b7e64a

開発中は、VS Code右下にある「Go Live」をクリックすることで、自分のPC上にローカルサーバを設置し、ブラウザ上での表示を確認していました。

今回は、WebサーバをPC外部に構築し、そこからHTMLを取得して、ブラウザに表示していくプロセスを記事にまとめていきます。

前提

  • Ubuntu Server をインストールした Raspberry Pi 4(以下、「ラズパイ」と表記)をセット
  • ラズパイは MacBook・GitHubとSSH連携済み
  • ラズパイ・使用中の MacBook は同じローカルネットワークに所属
  • Frontend のポートフォリオを格納したリポジトリは未クローンの状態

HTML取得の手順

1. ラズパイにリポジトリを配置するまで

2. ラズパイに Web サーバを用意する

3. Pythonモジュールを使用して簡易HTTPサーバを構築するまで

4. ブラウザからサーバにアクセス

1. ラズパイ(OS: Ubuntu Server)にリポジトリを配置するまで

1-1. GitHubからSSHのURLをコピー

Image 2025-08-28 at 10.54.jpeg

1-2. ラズパイにSSH接続

Image 2025-08-28 at 10.53.jpeg

1-3. リモートリポジトリをラズパイにクローン

Image 2025-08-28 at 11.06.jpeg

コマンド実行後
Image 2025-08-28 at 11.07.jpeg

URLを git clone の後に貼ることで、Gitがどこから情報をとってくればいいかを明確にします。

1-4. リポジトリの確認

Image 2025-08-28 at 11.11.jpeg

作成したディレクトリがラズパイに配置されたことを確認

※ 今回のケースでは、クローンしたときには、既に 01_travel_spot ディレクトリを含んだ状態であったため、

2. ラズパイに Web サーバを用意する

Ubuntu Serverをインストールしたラズパイ上に簡易サーバを構築する方法は2つあります。

① Python の簡易HTTPサーバ
② Nginx / Apache を使う

今回のケースでは①を選択しました。

理由

  • 後のプロジェクトでNginx等のWebサーバについて学習する機会があること
  • すでにPythonをインストールしていること

3. Pythonモジュールを使用して簡易HTTPサーバを構築するまで

現在のディレクトリをWebルートとして公開し、ポート8000で待機する簡易サーバを起動します。

実行コマンド
python3 -m http.server 8000

python3 の標準モジュール http.server を使い、現在のディレクトリをルートとして HTTP サーバを起動します。
ポート8000で待機するので、ブラウザから http://<ラズパイのIP>:8000 にアクセスできます。

これで、サーバの準備が完了しました。
実際にブラウザからアクセスしていきます。

Image 2025-08-28 at 11.30.jpeg

4. ブラウザからサーバにアクセス

4-1. ラズパイのIPアドレスを調べて、ブラウザのURL欄に入力

初回アクセス
Image 2025-08-28 at 11.35.jpeg

http//:(コロン)を失念してしまったためにページを出力できませんでした。

もう一度、コロンを入れて再アクセスしていきます。

2回目のアクセス
Image 2025-08-28 at 11.36.jpeg

ここで、作成した「01_travel_spot/」をクリックします。

Image 2025-08-28 at 11.37.jpeg

Image 2025-08-28 at 11.57.jpeg

実際に、自分のPCの外部のサーバにリポジトリを配置し、HTTPリクエストとHTTPレスポンスを通じて、HTMLを取得することに成功しました。

このときのラズパイ(Server)側は以下のようになっていました。

Image 2025-08-28 at 11.37.jpeg

GETリクエストにより必要なHTML、CSS、JSファイル、画像をリクエストしていることがわかります。

4-2. Serverの停止

Ctrl + C コマンドを入力し、サーバを停止します。

Image 2025-08-28 at 11.54.jpeg

「Not Secure」について

今回は、個人情報を含まないHTMLを取得していることを目的としていたため、HTTPを使用しました。
そのため、通信に平文が使われるため、HTTPSより安全性の面で劣ることから、ブラウザのURL欄に表示されました。

今後の課題

今回は、簡易サーバを構築するために、Pythonの標準モジュールである http.server を使用しました。

実際のシステムにおいては、Webサーバとして、NginxやApacheが使用されています。
これにより、HTTPリクエストを効率的に捌くことが可能になります。

したがって、今後の改善点としては、

  • 目的に応じて、Nginx / Apacheの導入を検討すること
  • 通信の安全性を高めるために、HTTPSの導入を検討すること

が挙げられます。

今後の学習スケジュール・プロジェクトとしてこれらの点があるため、しっかり学習して使えるようにしていきます。

まとめ

実際に作成した動的なHTMLを、外部のサーバから取得し、ブラウザに表示できるか検証しました。
結果として、簡易なエラーを発生させながらもHTMLを正常に取得し、ブラウザに表示することができました。
今後の課題に記載した内容について、しっかり学習を進めていき、自分のものにしていきます。

最後までお読みいただき、ありがとうございました。

参考URL

https://note.nkmk.me/python-http-server

https://hatakekara.com/python-http-server-01

https://irohaplat.com/raspberry-pi-local-web-server

Discussion