めのん@ひとりプログラミング同好会

このブログはすべてフィクションであり、実在の人物、団体とは一切関係ありません

Webサーバーはペリフェラル!?

こんばんは、めのんです!

お昼の投稿で予告した通り、がやりたいCとPHPの連携方法について深堀していきたいと思います。

私は普段、マイコンなどを使った組込み機器の開発を行っています。 そうした機器には、LEDやシリアルポートをはじめ、LCDパネル、各種スイッチ類、ロータリーエンコーダー、フェーダーなどなど、さまざまなペリフェラルが接続されています。

場合によってはLANが搭載されることがあって、TCPUDPで外部との通信を行います。 マイコンの場合はプロトコルスタックがあるだけなので、いくつかのAPIを使ってCで直接プロトコルを実装することになります。 もう少し高機能なことをやろうとすると、LinuxWindowsのような汎用のOSを搭載しますので、ApacheやnginxなどのWebサーバーを動かすこともできるようになります。

つまり、LANはペリフェラルの一種ですし、LANを使用するWebサーバーにしても、コアとなるプログラム(Cで書くことが多いです)から見れば、ペリフェラルを制御するためのデバイスドライバのようなものなのです(各プラットフォームの一般的な形態のデバイスドライバとは異なりますが、位置づけとしては同じようなものだということです)。

Webサーバーやその上で動作するPHPのプログラムは、決してそれ自体がメインではありません。 LCDパネルやスイッチの類と同じ扱いなのです。

インターネットに接続することもまれで、ほとんどの場合はローカルなネットワークにしか接続しません。 たとえば、Wi-Fiを使ってタブレットと接続して、タブレットの画面をユーザーインタフェースにするといった使い方です。

こういう使い方なので、データベースの出番もあまりありません。 使うとしても、PHPから直接データベースを操作するより、Cで書いたコアとなるプログラムからSQLiteなどを使うことになるでしょう。

実はこういう使い方って結構あると思うんです。

Webアプリケーションしかやったことがないと、こういうのには抵抗がある方もいらっしゃるようです。 機器の内部では生のソケットや共有メモリでコアとなるプログラムと接続することになりますし、制御システムの基本的な考え方が身についていないとおかしな設計をしてしまうこともあります。

この手の機器組み込みのWebプログラムはこれからどんどん増えていくでしょうし、いろんな可能性があります。 こういうのを守備範囲に入れておくと、Webプログラマーの方々も仕事の幅が広がるのではないでしょうか?

それではまた!!