LPD(エルピーディー)とは | 意味や読み方など丁寧でわかりやすい用語解説
LPD(エルピーディー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
ラインプリンターデーモン (ラインプリンターデーモン)
英語表記
LPD (エルピーディー)
用語解説
LPDはLine Printer Daemon protocolの略称であり、ネットワークを介してコンピュータからプリンターへ印刷データを送信するための通信プロトコルの一つである。日本語ではラインプリンターデーモンプロトコルと呼称される。このプロトコルは、特にUNIX系のオペレーティングシステムで古くから標準的に利用されてきた歴史を持ち、そのシンプルさと実装の容易さから、異なるメーカーやOSの機器間で印刷機能を実現するための事実上の標準(デファクトスタンダード)として長らく広く普及した。LPDは、印刷要求を行うクライアントと、その要求を受け付けてプリンターで処理するサーバーという、クライアント/サーバーモデルに基づいて動作する。利用者がコンピュータ上で印刷を実行すると、クライアント側のプログラムが印刷データをサーバー側のデーモン(常駐プログラム)に送信し、サーバー側でそのデータを一時的に保管してから順次プリンターに出力する仕組みとなっている。
LPDプロトコルの仕組みを理解するためには、クライアント側の「LPR」とサーバー側の「LPD」という二つの主要なコンポーネントの役割を把握することが重要である。LPDは、プリンター自体やプリントサーバー上で動作するサーバープログラム(デーモン)であり、TCPポート番号515でクライアントからの印刷要求を常に待ち受けている。一方、LPR(Line Printer Remote)は、ユーザーが使用するコンピュータ上で動作するクライアントプログラムである。ユーザーが印刷指示を出すと、LPRは印刷対象のファイルやデータを、宛先となるプリンターの情報を付加してLPDに送信する。この一連の通信手順がLPDプロトコルによって定められている。
通信の具体的な流れは次のようになる。まず、クライアントのLPRが、印刷したいプリンターを管理するサーバーのLPDに対して接続を試みる。LPDが接続要求を受け入れると、LPRは印刷ジョブの制御情報と実際の印刷データをサーバーに送信する。制御情報には、どの印刷キューにジョブを追加するかといった指示が含まれる。LPDは受信したデータを即座に印刷するのではなく、「スプール」と呼ばれるディスク上の一時的な保管領域に保存する。この仕組みをスプーリングと呼ぶ。スプーリングにより、プリンターが他のジョブを印刷中であっても、クライアントは印刷データをサーバーに送り終えればすぐに次の作業に移ることができる。サーバーは複数のクライアントから同時に印刷要求を受け付けることが可能となり、システム全体の効率が向上する。
LPDは、スプールに溜まった印刷ジョブを「プリントキュー」という待ち行列で管理する。プリントキューは先入れ先出し(FIFO)の原則に従い、先に受け付けたジョブから順番に処理される。LPDはプリンターの状態を監視し、印刷可能になるとキューの先頭にあるジョブを取り出して物理プリンターにデータを送信し、印刷を実行させる。印刷が正常に完了、あるいは何らかのエラーで失敗した場合、LPDはそのジョブをキューから削除する。
この仕組みを操作するために、UNIX系のシステムでは伝統的にいくつかの関連コマンドが提供されている。lprコマンドは、ファイルを指定して印刷ジョブをプリントキューに投入するために使用される。lpqコマンドは、プリントキューの状態を確認し、現在待機中のジョブの一覧やその順序を表示する。もし誤って印刷要求を出してしまった場合には、lprmコマンドでキュー内の自分のジョブを指定して削除(キャンセル)することができる。さらに、システム管理者向けにはlpcコマンドがあり、プリンターデーモンの起動や停止、キューの有効化・無効化といった、プリンターシステム全体の制御を行うために用いられる。
LPDは、BSD UNIXで開発されたという背景から、特にUNIX環境で広く普及したが、その汎用性の高さからWindowsやmacOSといった他の主要なOSにも標準でサポートされるようになった。また、多くのネットワークプリンターや複合機も、メーカーを問わず標準機能としてLPDに対応しており、異なるプラットフォームが混在する環境でも基本的な印刷機能を提供できるという点で、長年にわたり重要な役割を果たしてきた。
しかし、現代のネットワーク環境においては、LPDの機能的な限界も指摘されている。LPDはプロトコルが非常にシンプルである反面、セキュリティ機能が脆弱であるという課題を持つ。例えば、通信データは暗号化されず、ユーザー認証の仕組みも簡易的であるため、機密性の高い文書の印刷には向いていない。また、プリンターのインク残量やエラーといった詳細な状態をクライアント側から取得する機能や、双方向の高度なジョブ管理機能も標準では備わっていない。
こうした課題を解決するため、現在ではIPP(Internet Printing Protocol)のような、より高機能でセキュアな後継プロトコルが主流となりつつある。IPPはHTTP/1.1をベースにしており、SSL/TLSによる通信の暗号化や、より詳細なユーザー認証、プリンター状態のリアルタイムな取得、高度なジョブ操作などをサポートする。それでもなお、LPDはそのシンプルさと長年の実績による高い互換性から、現在でも多くの機器でサポートされ続けている。特に、古いシステムとの接続や、単純な印刷機能さえあればよい環境、あるいは組み込み機器などリソースが限られたデバイスにおいて、依然として利用されることがある。システムエンジニアとしては、最新技術だけでなく、LPDのような基盤的で歴史あるプロトコルの仕組みを理解しておくことは、多様なシステム環境に対応する上で不可欠な知識と言えるだろう。