はじめに:なぜ自作?
ここでは、何故、自分で作るのか、を説明します。 説明が不要な方は、以下を読む必要はありません。
本稿では、 Apache2, PHP8, Smarty5, PostgreSQL17, JavaScript を使って、 WEB アプリを自作する方法を説明していきます。
さて、 仕事や、サークルなど、複数のメンバーがいる場合、 データの管理、作業の割り振り、進捗管理などを、 WEB 上で行えると、とても便利です。 Excel やテキストファイルでも不可能ではありませんが、 人数や作業が多いと、かなり面倒です。 誰もが考えることは同じようで、 Wiki や Redmine など、便利なツールが、既にいくつも世に出ています。 これらのツールは、とても高機能で見栄えもよく、 無料で使えるのが不思議です。 が、 高機能過ぎて、使い方を学ぶのに時間がかかったり、 一方で、自分たちが望むカスタマイズをするには、 それなりのプログラム・コードを書かなければいけなかったりします。 何でもそうなのですが、 いわゆる「こなれた」状態に持っていくには、それなりの苦労が必要です。 また、 自分が働いている会社の WEB サーバーで使う場合、 セキュリティなどの理由でサーバーの運用規定が厳しく、 そもそも既存の WEB ツールを入れられない事もあります。 # 既に環境が固定されていて、そう簡単に変えられない。 とすれば、 その与えられた環境で、 WEB アプリを自作したほうが速かったりします。 自作というと敷居が高そうですが、 仲間内で使うだけでしたら、 見た目を拘る必要もないでしょうし、 サポートするブラウザも限定できるでしょう。 よほど凝ったものを作らない限りは、何とかなります。 # もちろん、定型処理なんかは、 # 便利な既存のライブラリを使います。 # 何でもかんでも自作するわけではありません。 既存の WEB ツールを使う場合も、 これらの知識は、きっと役に立ちます。 ということで、 ちょっと無理矢理感はあるかもしれませんが、 自作してみよう!ということです。 ただ、ここで気にすべきは、セキュリティです。 私自身、イントラネット内で、 仲間内で使うツールだけしか作った事が無いので、 広く一般に公開するにはセキュリティ的に脆弱なのだろうと思います。 仲間内の WEB アプリが簡単に作れたとしても、 それで、一般に公開できるアプリが作れるわけでは ないのだと考えています。 その点、重々ご承知の上、でお願いします。
既存のサーバーに自作アプリを入れる場合に、 サーバー側の環境が、自身が想定しているものと かけ離れている場合があります。 たとえば、 Apache が無くて、IIS しかないとか、 Postgres や MySQL が無くて、ODBC の JET しかないとか、 php.ini が素のままの古い PHP があるだけとか... こうなると、驚くほど大量の罠が、あなたを待っています。 セキュリティ管理が厳重な会社であれば、 そうそう環境を好きに変えられないでしょうし、 新しいサーバーを立てるのも容易ではないでしょう。 サーバー管理の原則は、 「動いているものは変えない」だと聞きます。 厳重に管理されているサーバーほど、 古い環境に留まっている可能性が高い。 # というか、厳重でない会社では、 # WEB アプリの自作なんか、逆に怖いですけど。 結局のところ、与えられた環境で 必要な機能を実現するしかないので、 自作による自由度の高さを活かして乗り切りましょう。
既存のサーバーに自作アプリを入れる場合に、
サーバー側の環境が、自身が想定しているものと
かけ離れている場合があります。
たとえば、
Apache が無くて、IIS しかないとか、
Postgres や MySQL が無くて、ODBC の JET しかないとか、
php.ini が素のままの古い PHP があるだけとか...
こうなると、驚くほど大量の罠が、あなたを待っています。
セキュリティ管理が厳重な会社であれば、
そうそう環境を好きに変えられないでしょうし、
新しいサーバーを立てるのも容易ではないでしょう。
サーバー管理の原則は、
「動いているものは変えない」だと聞きます。
厳重に管理されているサーバーほど、
古い環境に留まっている可能性が高い。
# というか、厳重でない会社では、
# WEB アプリの自作なんか、逆に怖いですけど。
結局のところ、与えられた環境で
必要な機能を実現するしかないので、
自作による自由度の高さを活かして乗り切りましょう。
を自分でする、ということです。
市販のホームページ作成ツールや、
WordPress などの既存の WEB アプリの使い方などは、
一切出てきません。
また、
イントラネットでの運用を想定しているため、
レンタル・サーバーへの Upload などにも触れていません。