「ヘッドレス」って物騒な名前ですよね
初めてこの単語を見たとき、正直「頭がない環境?」とギョッとした人もいると思います。ここでいう「ヘッド(head)」は人間の頭ではなく、画面や入力装置といった、人が直接触るための部分のことです。つまりヘッドレス環境とは、モニタもキーボードも、マウスでポチポチするウィンドウもない状態でプログラムが動く環境を指します。
身近な例えで言うと、自動販売機の中身に近いかもしれません。私たちが見ているのはボタンと商品の並んだ「表の顔」ですが、その裏では在庫を数えたりお金を計算したりする処理が黙々と動いています。仮にボタンとランプを全部外してしまっても、中の計算機能そのものは動けます。それがヘッドレスの状態です。
「画面がある環境」と「ヘッドレス環境」
画面がある環境
ウィンドウが開き、ボタンやメニューがあり、人がその場で見て操作する。エラーが出たらダイアログで教えてくれる。
ヘッドレス環境
画面もダイアログもない。指示はあらかじめ文字(コマンドや設定)で渡し、結果はログやファイルとして受け取る。
大事なのは、ヘッドレスだからといって機能が減るわけではない、という点です。減っているのは「人がその場に立って操作する前提」だけです。
どんなときに出てくる言葉?
よく登場するのはサーバーの中です。データセンターに置かれたコンピュータには、そもそもモニタが挿さっていないことがほとんどです。管理する人は手元のパソコンから文字ベースで接続して操作します。この時点でサーバーはヘッドレスで動いていることになります。
もうひとつよく聞くのが「ヘッドレスブラウザ」です。普段のブラウザは画面にページを描画しますが、ヘッドレスブラウザは描画せずにページを読み込み、中身を取り出したり自動テストをしたりします。人が見るための絵を描く工程を省くぶん、速くて自動化しやすいわけです。
ヘッドレスで動かすと何がうれしいのか
いちばん大きいのは自動化と相性がいいことです。人がクリックしないと進まない処理は、夜中に自動で回すことができません。逆に、最初から画面を必要としない作りにしておけば、決まった時刻に勝手に実行したり、同じ処理を何十件も並べて流したりできます。
それに、画面を描く処理は意外と重たいものです。表示をやめるだけで動作が軽くなり、少ないメモリでも動くようになります。クラウド上のコンピュータのように、画面を持つ必要のない場所で動かすときに効いてきます。
逆に、つまずきやすいところ
ヘッドレス環境で最初にハマるのは、たいてい「何が起きているか見えない」ことです。画面がある環境なら、エラーのポップアップを見て「ああ、ここか」と気づけます。ヘッドレスではその手がかりがないので、ログ(処理の記録)を残すことが命綱になります。
もうひとつは、人に何かを尋ねる処理です。「よろしいですか? (y/n)」のように入力を待つ作りになっていると、誰も答える人がいないまま止まってしまいます。自動で動かす前提の処理では、こういった確認をあらかじめ設定で済ませておく必要があります。
- エラーが画面に出ない → ログを残して後から読む
- 途中で入力を求められると止まる → 事前に答えを渡しておく
- 「目で見て確認」ができない → 結果をファイルや数値で受け取る形にする
覚え方
「ヘッドレス = 人が見る顔がないだけで、体は元気に動いている」くらいのイメージを持っておけば十分です。開発の話の中で「これヘッドレスでも動く?」と聞かれたら、それは「人が画面の前に座っていなくても、自動で最後まで走り切れる作りになってる?」という質問だと思えばだいたい合っています。
このページは役に立ちましたか?