C言語によるCGIプログラミングの設計入門

表紙画像

C言語の基本文法を学び終えたあと、「次は何を作ればいいんだろう」と感じた人に向けて、コンソールアプリの外に一歩出る題材としてCGIを扱います。

この教材は、C言語とCGI(Common Gateway Interface)を使って、Webアプリケーションの仕組みを低レイヤから理解するための教材です。

CGIは現代のWebアプリ開発で主流の方式ではありません。だからこそ、HTTPレスポンス、環境変数、標準入力、フォーム送信、Cookie、データベース接続といったWebの基本要素が、フレームワークに隠れずそのまま見えます。

本教材では、C言語で小さなCGIプログラムを実装しながら、Webサーバとプログラムの境界、入力値の扱い、HTML生成、ODBCによるDB接続、セッション管理、JSONレスポンスまでを段階的に学びます。

プログラミングスクールのように「短期間で実務スキルを身につける」ことを目的にした教材ではありません。個人VPSや古いPCでも試せる環境で、C言語が好きな学習者が「中身はどう動いているんだろう?」を掘っていくための、少しレガシーで実験的な教材です。

この教材の位置づけ

想定読者

始める前に

この教材では、C言語の基本文法、ポインタ、構造体、ファイル入出力を一通り学んでいることを前提にします。HTML、HTTP、SQL、Apacheは必要な範囲で補足します。

第3章から第6章までは、ApacheとGCCがあれば多くの内容を試せます。MariaDBとODBCは第7章以降で使います。

内容構成

  1. はじめに
  2. CGIとは何か?
  3. 最初のCGIプログラム
  4. フォームからのデータ受信(GET/POST)
  5. フォーム値の構造化とアクセス
  6. HTMLテンプレート生成とレスポンスヘッダ
  7. ODBCを使ったデータベース連携
  8. セッション管理と認証処理
  9. 実践アプリ:簡易CMS(日記投稿アプリを作ってみよう)
  10. API化:JSONレスポンスをつくってみよう
  11. Appendix:開発環境・デプロイTips集
  12. おわりに

サンプルコード

本文のコード片を実際に試すためのサンプルを examples に分離しています。

最初は make core だけで十分です。ODBCを使う make diary は、第7章以降を読むときに試してください。

日記CMS/APIサンプルのビルドには unixodbc-dev が必要です。

実行環境

本文中のサンプルは、Ubuntu Linux、Apache、MariaDB、unixODBC、GCCを前提にしています。環境構築やデプロイ時の注意点はAppendixにまとめています。

ライセンス

本教材の著作権は Shintaro Suzuki に帰属します。詳細は LICENSE を参照してください。