SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Pythonで学ぶバックエンド開発

【Pythonから出力した情報を表示する方法】サーバサイドで出力したHTML5ファイルをWebページで表示しよう!

Pythonで学ぶバックエンド開発 第3回


お絵描きのWebページを表示する

 「Page 1」の「.htaccess」ファイルがあるものとして話を進めます。「index.py」ファイル[1]と「.htaccess」ファイル[2]を「xampp」→「htdocs」→「BezierBBS」フォルダ内に配置します。macOSやLinuxではindex.pyファイルにパーミッションで実行権限を与えます。

 「XAMPP」の「Apache」を「Start」して「http://localhost/BezierBBS/BezierBBS_samplecode_03/index.py」をWebブラウザで開くと次の図のように表示されます。Webブラウザを終了する時にはApacheを「Stop」するのを忘れないように。

サンプルコード「index.py」を開いたところ
サンプルコード「index.py」を開いたところ

 「js」→「main.js」と「css」→「pc.css」と「css」→「mobile.css」は第1回の「Page 2」で解説した通りです。第1回で解説したものをそのままPythonからWebブラウザに出力するだけのサンプルコードです。

 もうベジェ曲線によるお絵描きはできるので、既に完成形に近いものができたように見えますが、まだデータベースを使ってデータをやり取りしていません。それについては次回以降解説します。

サンプルコード「index.html」
#!C:\Users\ユーザー名\AppData\Local\Programs\Python\Python312\python.exe

import sys
import io

#日本語があってもエラーにならないように
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

print('Content-Type: text/html; charset=utf-8\n\n')

print('''
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>一筆書きBBS</title>
  <link href="css/pc.css" rel="stylesheet" type="text/css" />
  <link href="css/mobile.css" rel="stylesheet" type="text/css" media="only screen and (max-width:1023px)" />
  <script type="text/javascript" src="js/main.js"></script>
</head>
<body>

<div id="left">
  <header>
    <h1>一筆書きBBS</h1>
    <nav>
      <a href="?page=home">HOME</a>
      <a href="?page=draw">DRAW</a>
      <a href="?page=about">ABOUT</a>
    </nav>
  </header>
  <h2>記事</h2>
  <ul>
  <h2>メニュー</h2>
  <ul>
    <li><a href="?page=home">HOME</a></li>
    <li><a href="?page=draw">DRAW(お絵描き)</a></li>
    <li><a href="?page=about">ABOUT</a></li>
  </ul>
</div>
<div id="right">
  <canvas width="760" height="500"></canvas>
  <footer>
    <h3>このサイトは2025年から<a href="http://vexil.jp" target="_blank">VexilJp</a>がテストしています。</h3>
  </footer>
</div>

</body>
</html>
''')

サンプルコードの解説

 1行目の「ユーザー名」はお使いのパソコンに合わせて変更してください。またLinuxやmacOSでは「#!/usr/local/bin/python3.12」などのパスになります。

 システム関係と入出力関係のモジュールを読み込みます。

 デフォルトではLinuxはUTF-8エンコーディングしますが、WindowsではUTF-8エンコーディングに対応していないことがあるので、UTF-8エンコーディングにセットします。

 コンテンツへのエンコードが適用される前の、リソースの元のメディア種別をテキスト形式のHTMLフォーマットにセットします。

 「print('''」~「''')」の間に第1回の「Page 2」で解説した「index.html」のソースコードをそのまま書き写します。

おわりに

 今回はシンプルにPythonからHTML5文書を出力するだけしてみました。ベジェ曲線でお絵描きもできるようにしました。

 次回はPythonは使わず、「Visual Studio Code」上から「SQLite3」のデータベースを扱う解説をします。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Pythonで学ぶバックエンド開発連載記事一覧

もっと読む

この記事の著者

大西 武(オオニシ タケシ)

 1975年香川県生まれ。大阪大学経済学部経営学科中退。プログラミング入門書などを30冊以上商業出版する作家。ドコモでグランプリなどコンテストに20回以上入賞するアーティスト。オリジナルの間違い探し「3Dクイズ」がTVで約10回出題。プロフィールサイト:https://profile.vixar.jp

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営する開発者のための情報メディアです。日々の開発に取り組むエンジニアやテクノロジーを学びたい方に向けて、プログラミングやAI活用、開発ツール、エンジニアの学びとキャリアに関する記事をお届けしています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/21526 2025/07/04 18:21

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー