TGWSは、私の運営しているサイトです。アンパンマンDBで知っている人もいるのでは?
別に最新技術を使っているわけでも、特別すごい工夫があるわけでもないのですが、私のサイトを構成している技術について、紹介していきたいと思います。
全部で何回分にするのか決めてませんし、第2回以降をやるかどうかもわかりませんが、今回は、細かい工夫よりも、全体的な構成について紹介します。
サーバー
シンプルに、共有レンタルサーバーを使っています。クラウドやVPSみたいなおしゃれなものではありません。
経緯として、無料ホームページサービス「トクトク」で何の機能もない静的サイトを作ったのが始まりで、そこからより高機能なサーバーへ移転しながら継ぎ足し継ぎ足しで作ってきたので、根本的な構成としては、FTPでアップロードする素朴なウェブサイトの構成から20年以上変わっていません。
で、2024年現在は、バリューサーバーを使っています。
共有レンタルサーバーを提供しているホスティングサービスも、エックスサーバーなどいろいろあったのですが、移転前後の機能のギャップが少なそうという理由で、バリューサーバーを最終的に選びました。
サーバー構成
まあ、バリューサーバーから与えられたものをそのまま使っているだけですが、一応、LAMP(Linux, Apache, MySQL, PHP)環境となっています。
Linux
以前はシステム情報調べても「Linux」しか出なくてわかんなかった気がするんですが、今見たらUbuntuでした。
バージョンなどの細かいところはよくわかってないですが、そもそも共有サーバーを間借りしているだけの立場でコマンドをあんまり自由に扱えるわけでもないので、ここは細かくわからなくてもいいかな。
Apache
こちらはバージョン2.4です。.htaccessの書き方が2.2と違っています。
Webサーバーと言えば、今はnginxのほうが主流っぽいですが、私のサイトでは以前から.htaccessを使っていたので、nginxではなくApacheを搭載していることを基準に事業者を選んでいました。
MySQL
実はMySQLは、うちではWordPressにしか使っていません。
ではWordPress以外では何を使っているのかというと、SQLiteです。
Liteって名前につくからには、ヘヴィな案件には全く向かないと思うのですが、うちだと大きなシステムでもアンパンマンDB程度がせいぜいなので、SQLiteで足りてます。
データがファイル1個で扱われるから取り回しが楽なんですよね。
だから、先ほど言ったLAMP環境は、実体としてはLASP環境と言えます。
PHP
昔はPerlでCGIを組んでいたのですが、今はPHPです。
こちらはサーバー事業者側が用意してくれた機能でバージョンを選ぶことができるので、時々新しいバージョンに移行しています。
今は8.2を使っていますが、サーバーにはすでに8.3まで入っているそうです。いずれバージョンアップ予定です。
フレームワーク
これまでの継ぎ足し継ぎ足ししてきた経緯から、Laravelみたいなサイト全体を作れるようなフレームワークは導入していませんが、ライブラリを入れる利便性のためにComposerを、自動テストのためにPHPUnitを入れています。
それ以外は自作、いわゆる「オレオレフレームワーク」ってやつです。
Composer
PHPのパッケージ管理ツールです。Node.jsでいうところのnpmに近い存在ですね。
だいたいのライブラリはこれで入れていますが、対応してないのもあるにはあるので、そういうのはソースコードをダウンロードしてきて直接配置したりもしています。
PHPUnit
自動テストのツールです。
うちの場合、外部仕様を変えずに中の実装だけ差し替えるということを多々行っているので、過去動いていたものが今なお動くことを確認するリグレッションテストがとても重要です。
ディレクトリ・ファイル構成
ここは都合上、省略や脚色を含んでいます。
個々の説明は後で個別に記事を作れたらいいなァ。
/
├── .git ...Git関連(アップロードしない)
│
├── .github ...GitHub Actions用(アップロードしない)
│
├── cron ...定期実行するファイルを入れてる
│
├── cache ...キャッシュが入る
│
├── data ...動的なデータが入る
│
├── docker ...Docker関連のファイルを入れてる(アップロードしない)
│
├── offline ...開発環境で動かすファイルを入れてる(アップロードしない)
│
├── public_html ...公開用ディレクトリのルート
│ ├── tgws.plus ...tgws.plusドメインのドキュメントルート
│ ├── (他のドメインとか)
│ ...
│
├── src ...自作のクラスとか入れてる(TGWSの実質的な本体)
│ ├── *.php
│ ...
│
├── tests ...テストコード(アップロードしない)
│
├── vendor ...Composerにより入れたライブラリ等
│
├── .gitattributes ...Gitの設定(アップロードしない)
├── .gitignore ...Gitの設定(アップロードしない)
├── .php-cs-fixer.php ...コード整形の設定(アップロードしない)
├── compose.yaml ...Dockerの設定(アップロードしない)
├── composer.json ...Composerの設定
├── composer.lock ...Composerの設定
├── phpunit.xml ...PHPUnitの設定(アップロードしない)
├── (その他もろもろ)
...
終わりに
今回は、以上となります。
細かいことを言うと、部分的にNode.jsやReactを使っていたり、ウェブサーバー単体でできないことはVPSにやらせていたりしますが、主要な部分としてはこんな感じです。
それぞれの技術をどう使っているかとか、工夫している場所なんかも、いずれ紹介できたらと思います。