投稿者: Kazuhiro Kotsutsumi

1979年札幌市生まれ。 14歳からC/C++をはじめ、MASM、Delphi、ActionScript、PHP、C#、Perlなど多言語を習得。大学在学中にWebシステム開発会社に勤務した後、携帯電話などの組込系プログラミングに従事。 プロジェクトマネージャー、1年間のフリーランスプログラマを経て、2006年3月に株式会社ゼノフィを設立し、代表取締役に就任(現職)。2015年5月13日 株式会社ゼノフィエンターテイメントを設立、代表取締役に就任(現職)、2019年2月5日 スタジオリズ株式会社を設立、代表取締役に就任(現職)
cables connected on server

ネットワークの仕組みをザックリ理解する

教育資料の下書き続き、もう同じこと喋りたくないマン、小堤です。

フロントエンドの開発に至るまで、バックエンドであるPHPなどのサーバーサイドスクリプトの習得を先に行って行くことが多いのですが、最初に引っかかるのが、普段からインターネットを利用しているのにも関わらず、なんでデータが取得できるのか、何が起きているのか、全くわからないという問題です。ウェブ系エンジニアであれば、当然知っているでしょう、ということも、下手をするとPC不慣れな人からすると、とりあえずワイファイ繋げばネット見れる (マジかよ・・・って何度思ったことか) くらいの感覚なわけです。

初学者に合わせる場合、このレベルからちゃんと確認を行う、また10年以上やってる人でも、かなりネットワークの知識が曖昧なエンジニアを多数見かけます。まぁ成り立ってるならそれでいいんですけど、ネットワーク一つとっても沼なので、ここではWEBプログラミングを行うための最低限のネットワーク、通信知識を固めたいと思います。

結果、ネットワークの本見てくれって感じなんですが、全体の構成がイメージできて読むと、全くのゼロ知識でネットワークの入門書みるのは、結構理解できるスピードも違ってきます。なんでもそうだけど、わからないことを理解するときに、細かいことよりも全体的な構成や、流れを知ってから取り組むと全然違います。すごい当たり前のこといってて恥ずかしい///

続きを読む

Laravel / Lumen 9.x 開発環境構築(2)

Laravel / Lumen 9.x 開発環境構築(2)

前回、素のPHP開発環境、Lumenの開発環境を、docker-compose で構築しました。今回は、引き続き Laravel の開発環境にトライします。公式ドキュメントに従って、docker-compose を利用した開発環境を作ります。下記のコマンドを実行しましょう。

curl -s https://laravel.build/laravel-dev | bash

赤字の部分は、任意のディレクトリ名に変更して構いません。しばらくスクリプトが実行されると、任意のディレクトリにLaravelの実行環境が整います。この開発環境をLaravel Sail といい、先程のコマンドで、mysql、php、redis、mailsearch、mailhog、seleniumを docker-compose で構築してくれていて、いきなり使い始めることができるすぐれものです。

続きを読む

Laravel / Lumen 9.x 開発環境構築(1)

Laravel / Lumen 9.x 開発環境構築(1)

ここ最近TypeScriptとPythonばかりで、PHPにあまり触れていなかったのですが、またPHP8.xになってから色々触る機会が増えてきたのと、開発環境構築からVue3も入れたフレームワークの構造を教えなくてはならなったので、資料別途作るならブログにしてしまおうと思いまして、久々の投稿です。

Laravel ? Lumen ?

Laravel は、PHPのウェブアプリケーションフレームワークと呼ばれるものです、ここ見てるような人はとっくに知ってますね。フレームワーク自体説明は、たくさん世の中にでているので割愛します。そして、Lumen は、Laravel から機能を省きREST APIを作るために最適化、高速化されたいる同類のフレームワークです。細かいところでイコールではないのですが、ほぼ一緒です。

機能としては、Lumen < Laravel という関係になります。Laravel から入ってLumenにいくと、意外とない機能がたくさんあったり、デフォルトで無効化されたりしていますので注意が必要です。また、Lumenは、Lumen公式サイトに書かれているように、

Lumenをリリースしてから数年の間に、PHPは様々な素晴らしいパフォーマンスの向上を遂げてきました。このため、Laravel Octaneが利用できるようになったこともあり、新しいプロジェクトをLumenで開始することは推奨されなくなりました。代わりに、新しいプロジェクトは常にLaravelで始めることをお勧めします。

新たなプロジェクトは Laravel で作れ。とのことです。が!いま現在 まだLumenも使ってるんだわ!っていうことがありますね、なのでLumenがシンプルなので、Lumen そして、Laravelの環境を作っていって掘り下げて行ければなと思っています。

続きを読む

データベース自作PCサーバー作成 6

先日、自宅から出ずにずっと作業してて、ソファで寝落ちしてたのですが、起きて5秒後に何を思ったのか、突然まくらを購入した小堤です。

良い睡眠は〜とか、そんなんじゃないんです。まぁ肩痛いのくらい治るかなとは思いましたけど、そもそもがオマエ、ソファーで寝てる時、枕さんは別な部屋にいるし。枕って高いよなぁ・・・毎年買うわけでもないんですけど、いざ買うと。Tシャツにも同じこと言えますが、Twitterでたまに見かける

「だって布だぜ?」

ですよ、ホントと。同じ値段のPCなら即買うのにねぇ。ま、買ったんですけど。

さて、やっとマシンとOSが整った!って感じまできました。どこがデータベースサーバーやねん!っていうのは、ここから払拭していきたいですね。さぁ、マリアちゃんのアザラシしばいていくぜ。

MariaDBのMariaは娘さんの名前らしいですね。そして、ロゴがアザラシなんです、別にマリアちゃんのアザラシではないようですけど。

ともあれ、MariaDBをとりあえず普通にぶち込みます。Bashコンソールの左側(PS1)今回から$にしますが、セットアップ時は基本的に、rootユーザーで作業します。sudo 使って一般ユーザーから操作するのは、セットアップ完了後の運用時からかな?普段は。

続きを読む

データベース自作PCサーバー作成 5

ずっとデスクに向かってると運動不足なんで、EMSくらいやろうかなって思って買ったやつを、背中に貼り付けて低周波マッサージ器として利用して、すぐ気絶することが、特技になりつつある小堤です。

まじですぐ寝落ちしてる、不眠症なら貼れば寝られる。手刀で首元バシッってきな感じ(経験ないけど)

Linuxの勉強・操作に慣れるため、または、今回のように自宅サーバー作ってみようかなってときに、ダメなら安価で捨ててもいいわレベルのマシンを探してたら、こんなのあるんですね。

早速買ってみました、まだ届いてませんけど。6cm x 6cm ってめっちゃ小さいですねぇ、メモリ6GB、容量128GB、何するかによりますが開発用データベースとか、十分何じゃないだろうか?と思って購入です。そもそも、Linuxインストールできなかったらやだな笑 まぁ過去にBMAXって中華ノートにもUbuntuはいったし問題ないやろ(人柱魂)

法人価格にクーポン適用して、14,650 円。中古のPC漁ってくるよりよいのでは・・・速度求めないだろうし・・。

正直これで、Windows 10 Home がついてくることに不安を覚えますが、中華製品あるあるですかね、消しますけど。

さて、本日は、ロードアベレージについてです。ロードアベレージ聞いたこと有りますか?僕は聞いたことあるけど、なにそれ美味しいの?くらいのレベルで、なんとなくサーバーの負荷状況を示していることは知っていたのですが、今回のデータベースサーバー構築にあたり、必要になったので改めて確認しました。

なぜ、ロードアベレージを確認するのか

Windows、Mac、Linux、OS問わず必ず経験したことがあるであろう

「なんか、マシン重い…. 」

さて、このマシンが重いという現象、何が原因でしょうか。CPUの処理がいっぱいいっぱいになっているのか、ディスクの読み込み・書き込みが待ちになっているのか。明確な理由を把握していますか?

続きを読む

データベース自作PCサーバー作成 4

マルちゃん正麺(塩)麺&鍋大陸 濃厚鶏白湯スープの素があれば、まじで飯作るの困らないなって本気で思い始めてる小堤です。鶏肉とキャベツだけ買ってくれば、なんとかなるんよねぇ。もっと早く知りたかったわ、人生損した感ある。

さて、SSDのRAID0構成まで完了しましたが、RAID0は、片側のディスクが壊れたら終わりです。今回、OS領域、データ領域、ともにRAID0構成にしました。流石に、壊れちゃったっ/// では、済まないし、入れ直して再設定するのも面倒なので、まるごとバックアップします。まずは、OSのバックアップを作成します。

ReaR によるOSまるごとバックアップ

ReaR (Relax-and-Recover) を利用することで、OSのまるごとバックアップができます。バックアップ先は、USBメモリ、USB接続ドライブに直接とること、または、NFSサーバー、Windowsファイルサーバー(CIFS接続)でバックアップを取ることができます。

RHEL、CentOS、Fedora、Ubuntuなど、大体のLinuxデストリビューションへパッケージインストールが可能です。

ReaRインストール

[root@localhost]$ dnf -y install rear \
  syslinux-extlinux 
  grub2-efi-x64-modules

上記を実行して、インストールされたことを確認します。

[root@localhost]$ rear -V
Relax-and-Recover 2.4 / Git
続きを読む

データベース自作PCサーバー作成 3

ちょうど、教育を行っているときに、超珍しく久しぶりにみた映画で同じことを言っていて、みな常に様々なことを学んでいるかと思うんですが、頭に入れておくとゼッタイいいと思うんですよね。

“progress, not perfection”
(完璧さは求めるな、前進を求めろ)

映画「イコライザー」(ソニー・ピクチャーズ)

学習を進めている時、その学習は、何かのために行っていることが多いと思うんですが、そのなにかのために焦り、苛立ち、完璧を求めるがゆえに、曖昧さだらけになって、10を求め0に近い結果にしかならないより、1になることを一番最初にしたほうがええよって、何度も教えることをしていて思います、小堤です。

不思議と、自分は完璧にできることが素敵、格好いい、できる、と思ってしまう初心者志向は、なんなんでしょうね、高確率で陥りがちな気がします。その時の完璧さえも定義曖昧だったり、そもそもそれ自体が完璧じゃないじゃんってことは結構あるんですが、そんなにみんな頭も良くなければ、天才でもないんで、1個ずつ積み重ねる人には結果もスピードも負けちゃうんですよ。下手くそでも、1/10でもいいので前進を!

さて、前回の続きで、データベース自作PCサーバー作っていくよ〜。

RAIDの仕組み

OSインストール領域、データ領域ともにRAID0で構築します。

通常RAID1で構築するのが一般的だと思いますし、プロダクション(本番)環境のサーバーとかでは、そうするべきだと思います。片方のディスクおかしくなったときも、保守の人が、こっそり(ではない)ディスク入替えてくれてたりしますから・・・。

もちろん設置しているデータセンターや、サービスによりますけど。

昨今、RAIDは非常に安く、そして一般的になってきた気がします。昔は、専用のボードじゃないとダメだのなんだの、そもそもハードウェアRAIDも(ボードに搭載されているやつ)メーカーによってどこがいいだの、しかもめっちゃ高い10万円超えはザラ。

続きを読む

データベース自作PCサーバー作成 2

知識の棚卸しや、教育として知識を共有していくために、いろいろ考える日々で、自分の仕事がほぼ進まない、小堤です。

前回からの続きです。

Desk Mini X300 を1台購入し、先の構成で組み上げ、ご満悦だったんです。

そしてデータベースサーバー、ウェブサーバーなどを仮想化して入れてみたり、いろいろ試してみて、自分の作ったプログラムを可動させるデプロイ先として問題なく稼働を開始して数日。

「・・・あれ?息してる?」

そうです、処理を開始したときは問題なく、明日も続きがんばるかぁ〜なんて酒でも飲んで寝て起きたら、サーバーが完全に停止、息をしていない(応答がない)んです。

「・・・えっと、電源ボタンを長押しして・・・再起動!おっけ〜!」

はい、オッケーなわけないんです笑

なにが、オッケーじゃ(怒)

わかってるんです、ちゃんと原因突き止めないと、明日も止まってるんだろうな、ってことくらい。

そこで、

  • サーバーリソースがどの様に使われているか?
  • 何が問題で応答がなくなってしまったのか?
  • ログには、何が出力されているのか?

ええ、当たり前の検証をしなくてはいけなかったんですが、

「全部の追跡方法知らん・・・、増やすか、サーバー笑」

はい、物量で押し切ることにしました!!

(その後の反省から、今ブログ書いてるんですけどね)

続きを読む

データベース自作PCサーバー作成

意外と、あっさり投稿できるもんですね、習慣にするつもりもないんですけど、ブログが一番メモ書きにいい感じがしてきてます、小堤です。

前回、MariaDBの複数起動について記事を投稿しましたが、本日は、そのMariaDBを稼働させるサーバーについてです。

昨今、VPN、クラウドサーバーなど実機がなくても、簡単にサーバーを構築できたり、マネージドデータベースを利用すればインストールすら必要なかったりしますよね。

しかし、これまた諸事上で、自宅サーバーでありながら、できるだけ省電力、ハイパワー、そして可能な限り小さいことを目指した自作サーバー作りを行いました。

パーツ選定から、実際に稼働するまでの記録です。

続きを読む

サービスを利用したMariaDB複数起動

ふと機会があり、ブログサーバーを移行したんですが、気がつけば4年くらい放置してたんですねぇ。 時が経つのは、早いもんですね、小堤です。

最近は、すっかりPythonとMariaDBと、機械学習ばかりやっている気がします。 そこで、今後MariaDBの別記事を書こうかなと思っていた一部を先に書いてしまおうと思ったこの投稿です。

MariaDBの複数起動

MySQLも一緒なんですが、MariaDBをインストールした初期状態は、ポート3306で起動し、シングルインスタンスとして起動します。 場合によっては、同じサーバー内で複数のMariaDBを起動したいシーンがあります。

レプリケーション環境のテストとか、MariaDB Galera Cluster(Galera Cluster)の設定とか。 検証のみであれば、今は、VagrantやDockerでいいじゃんっていうのも正直あるんですが、諸問題で直接入れたい場合もあります。 今回は言及しませんが、Linuxのファイルデスクリプター設定をDockerでやる場合、できるんですけど、普通に素でインストールされていたほうがわかりやすいと思います。

触れる場所が多すぎるので、切り出して複数起動に絞りました。

MariaDBの複数起動方法は、いくつかあります。

  • dbdeployerを利用した起動
  • mysqld_safeを利用した起動
  • dockerを利用した起動(コンテナ内部で別々に動いてるんでちょっと違いますけど)
  • サービスを利用した起動

dbdeployerは、phpenvやpython venvみたく複数のバージョンを起動、管理できる便利なツールです。 MySQL Sandboxって名前だったんですかね、最近まで知りませんでした。

mysqld_safeは、mysqldを起動するスクリプトです。 コマンド叩いて起動できるんですが、自動起動設定など頑張ってスクリプト用意しないといけないので手間です。

続きを読む