何千台ものコンピューターをずっと見張る⁉ プログラムの大仕事
GMOインターネットグループには「レンタルサーバー事業」という仕事があります。みなさんがインターネットでウェブサイトを見られるようにするための「サーバー」という名前の特別なコンピューターを貸し出すサービスです。
例えば学校のホームページや、お店の通販サイトなど、たくさんのウェブサイトがサーバーの上で動いています。そして、サーバーを自分で準備するのは大変です。そこで、GMOインターネットグループのレンタルサーバーを使うと、自分でサーバーを持たなくても、ウェブサイトを公開できるのです。駅ビルやスーパーマーケットが他のお店に場所を貸し出すように、インターネット上の“土地”を貸し出すようなイメージです。
このレンタルサーバー事業では、お客さんのウェブサイトがいつでも見られる状態にしなくてはなりません。もしサーバーが止まってしまうと、お客様のウェブサイトも見られなくなってしまいます。ですから、GMOインターネットグループでは、何千台ものサーバーを24時間365日ずっと動かし続けるために、サーバーを見守る「監視システム」が働いています。この監視システムがサーバーの状態を24時間365日チェックし、もし問題があればすぐに対応できるようにしているのです。
例えばサーバーの「温度」や「メモリ」の使用量を常にチェックし、少しでも異常があればすぐに対応します。
温度はサーバーの動きに影響します。例えばゲーム機やスマートフォンを長く使っていると熱くなることがありますよね? そして熱くなりすぎると、動きが遅くなったり、一時的に止まってしまったりすることがあります。サーバーも同じで、温度が上がりすぎると、動作が遅くなったり、最悪の場合、止まってしまうことがあるのです。
そしてメモリとは、コンピューターが作業をするための「机」のようなものです。机が広ければ、ノートや本をたくさん広げてスムーズにいろんな作業ができます。でも、机が狭いと、すぐにゴチャゴチャになって、わかりにくくなって、作業が遅くなってしまいますよね。サーバーも同じで、メモリを使いすぎると動きが遅くなり、ウェブサイトがうまく表示できなくなることがあるのです。
ですから「メモリが足りなくなっていないかな?」「温度が上がりすぎていないかな?」とサーバーを見守ることは、インターネットを快適に使うために大切なことなのです。
では、もし人間がサーバーを見守る作業をすべて行うとしたら、どうなるでしょうか。
何千台ものサーバーを24時間ずっと監視し続けるのは、おそらく人間には不可能でしょう。ずっと画面を見ていると目が疲れたり、眠くなったりして、異常を見落としてしまうかもしれません。そして対応が遅れると、サーバーが止まり、お客さんのウェブサイトが見えなくなるかもしれません。
例えば学校のホームページや、お店の通販サイトなど、たくさんのウェブサイトがサーバーの上で動いています。そして、サーバーを自分で準備するのは大変です。そこで、GMOインターネットグループのレンタルサーバーを使うと、自分でサーバーを持たなくても、ウェブサイトを公開できるのです。駅ビルやスーパーマーケットが他のお店に場所を貸し出すように、インターネット上の“土地”を貸し出すようなイメージです。
このレンタルサーバー事業では、お客さんのウェブサイトがいつでも見られる状態にしなくてはなりません。もしサーバーが止まってしまうと、お客様のウェブサイトも見られなくなってしまいます。ですから、GMOインターネットグループでは、何千台ものサーバーを24時間365日ずっと動かし続けるために、サーバーを見守る「監視システム」が働いています。この監視システムがサーバーの状態を24時間365日チェックし、もし問題があればすぐに対応できるようにしているのです。
例えばサーバーの「温度」や「メモリ」の使用量を常にチェックし、少しでも異常があればすぐに対応します。
温度はサーバーの動きに影響します。例えばゲーム機やスマートフォンを長く使っていると熱くなることがありますよね? そして熱くなりすぎると、動きが遅くなったり、一時的に止まってしまったりすることがあります。サーバーも同じで、温度が上がりすぎると、動作が遅くなったり、最悪の場合、止まってしまうことがあるのです。
そしてメモリとは、コンピューターが作業をするための「机」のようなものです。机が広ければ、ノートや本をたくさん広げてスムーズにいろんな作業ができます。でも、机が狭いと、すぐにゴチャゴチャになって、わかりにくくなって、作業が遅くなってしまいますよね。サーバーも同じで、メモリを使いすぎると動きが遅くなり、ウェブサイトがうまく表示できなくなることがあるのです。
ですから「メモリが足りなくなっていないかな?」「温度が上がりすぎていないかな?」とサーバーを見守ることは、インターネットを快適に使うために大切なことなのです。
では、もし人間がサーバーを見守る作業をすべて行うとしたら、どうなるでしょうか。
何千台ものサーバーを24時間ずっと監視し続けるのは、おそらく人間には不可能でしょう。ずっと画面を見ていると目が疲れたり、眠くなったりして、異常を見落としてしまうかもしれません。そして対応が遅れると、サーバーが止まり、お客さんのウェブサイトが見えなくなるかもしれません。

人間がたくさんのサーバーを監視することは難しい
そこでプログラミングの出番なのです。この監視システムでも、プログラミングの3つの基本が大切な役割を果たしています。
まず「繰り返し」について説明しましょう。例えば「1分」などの決められた時間ごとに、プログラムがサーバーの状態を確認し続けます。人間が常に見張っているわけではありません。プログラムが休むことなく、繰り返しチェックを続けているのです。
次に「分岐」を見てみましょう。分岐は、サーバーに問題があるときだけ活躍します。例えば、サーバーの温度が高すぎて動きが遅くなったり、メモリの使用量が多すぎてウェブサイトがうまく表示できなくなったりしたときだけ、通知を送るようにします。問題がないときは、静かに見守り続けるのです。
最後に「順次」です。これは、サーバー監視で何か問題が見つかったときの対応の流れで使われます。例えばサーバーの温度が上がりすぎたり、メモリが足りなくなったりなどの問題が起こると、まず担当者に「問題が発生しました!」と通知を送ります。次にバックアップシステムを動かします。バックアップシステムとは、もしものときのために準備しておく“予備のサーバー” のことです。サーバーが止まってしまっても、すぐに別の予備サーバーが代わりに働いてくれるので、ウェブサイトが見えなくなるのを防げます。最後に、復旧作業を進めて、元のサーバーを直します。このように、決められた順序で作業が進められます。
まず「繰り返し」について説明しましょう。例えば「1分」などの決められた時間ごとに、プログラムがサーバーの状態を確認し続けます。人間が常に見張っているわけではありません。プログラムが休むことなく、繰り返しチェックを続けているのです。
次に「分岐」を見てみましょう。分岐は、サーバーに問題があるときだけ活躍します。例えば、サーバーの温度が高すぎて動きが遅くなったり、メモリの使用量が多すぎてウェブサイトがうまく表示できなくなったりしたときだけ、通知を送るようにします。問題がないときは、静かに見守り続けるのです。
最後に「順次」です。これは、サーバー監視で何か問題が見つかったときの対応の流れで使われます。例えばサーバーの温度が上がりすぎたり、メモリが足りなくなったりなどの問題が起こると、まず担当者に「問題が発生しました!」と通知を送ります。次にバックアップシステムを動かします。バックアップシステムとは、もしものときのために準備しておく“予備のサーバー” のことです。サーバーが止まってしまっても、すぐに別の予備サーバーが代わりに働いてくれるので、ウェブサイトが見えなくなるのを防げます。最後に、復旧作業を進めて、元のサーバーを直します。このように、決められた順序で作業が進められます。
インターネットの住所「ドメイン」でもプログラミングが活躍!
GMOインターネットグループには「ドメイン事業」という仕事もあります。ドメインとは、インターネット上の住所のようなものです。例えば、この記事が載っているi4Uなら「i4u.gmo」のような名前がドメインです。スマートフォンやパソコンでウェブサイトを見るとき、このドメインを入力すれば、目的のサイトにアクセスできます。

ドメインはインターネットの住所です
ドメインの世界にはたくさんのルールがあります。
例えば使える文字の種類や長さにも制限がありますし、同じドメイン名は世界中で1つしか登録できません。これを人間が管理しようとすると、たくさんのルールを確認し、手続きを進めていかなければならず、とても大変です。時間もかかりますし、ミスが出るかもしれません。
そこでプログラミングの3つの基本が活躍します。
「順次」は、例えばドメインの登録手続きで使われます。「このドメインを登録したいです」という申請を受け付け、世界のどこかにすでに同じドメインがないかをチェックし、ドメインの名前に使える文字や長さなどのルール確認をし、登録を完了するという手順を、1つずつ正確に進めていきます。
「分岐」は、ドメインの種類によって登録ルールを変えるためにも使われています。例えばドメインには「.com」や「.jp」など、いろいろな種類があります。そして、それぞれ登録できるルールが違うのです。そこでプログラムは、申請内容に合わせてそれぞれ「これは.comだからこのルール!」「これは.jpだからこっちのルール!」 と、自動で判断して正しく処理してくれます。
「繰り返し」は、登録済みのドメインが正しく使われているかを定期的にチェックする作業で使われたりします。ドメインが登録されたあと、詐欺や迷惑行為などの悪いことに使われていないかを監視したり、ちゃんとサーバーにつながるかどうかの確認(これをDNSサーバーの応答確認と呼びます)を行ったりと、定期的な確認作業を自動的に行います。
このように、プログラミングの基本はインターネットのさまざまなところで活躍しています。
例えば使える文字の種類や長さにも制限がありますし、同じドメイン名は世界中で1つしか登録できません。これを人間が管理しようとすると、たくさんのルールを確認し、手続きを進めていかなければならず、とても大変です。時間もかかりますし、ミスが出るかもしれません。
そこでプログラミングの3つの基本が活躍します。
「順次」は、例えばドメインの登録手続きで使われます。「このドメインを登録したいです」という申請を受け付け、世界のどこかにすでに同じドメインがないかをチェックし、ドメインの名前に使える文字や長さなどのルール確認をし、登録を完了するという手順を、1つずつ正確に進めていきます。
「分岐」は、ドメインの種類によって登録ルールを変えるためにも使われています。例えばドメインには「.com」や「.jp」など、いろいろな種類があります。そして、それぞれ登録できるルールが違うのです。そこでプログラムは、申請内容に合わせてそれぞれ「これは.comだからこのルール!」「これは.jpだからこっちのルール!」 と、自動で判断して正しく処理してくれます。
「繰り返し」は、登録済みのドメインが正しく使われているかを定期的にチェックする作業で使われたりします。ドメインが登録されたあと、詐欺や迷惑行為などの悪いことに使われていないかを監視したり、ちゃんとサーバーにつながるかどうかの確認(これをDNSサーバーの応答確認と呼びます)を行ったりと、定期的な確認作業を自動的に行います。
このように、プログラミングの基本はインターネットのさまざまなところで活躍しています。
まとめ
プログラミングを学び始めると「覚えることがたくさんあって大変だな」と感じるかもしれません。プログラムの書き方はたくさんあって、難しそうな単語も出てきます。
でも、大丈夫! プログラミングで1番大切なことは、私たちが学んできた3つの基本の順次・分岐・繰り返しなのです。
実は、世の中のあらゆるプログラムは、全部この3つの組み合わせでできていることが証明されています。この考え方は「構造化定理」といい、プログラマたちには「構造化プログラミング」というとても大切な言葉として知られています。
だから、まずは順次・分岐・繰り返しの3つの基本をしっかり理解することが大切です。この3つの基本の考え方がわかれば、どんなに難しくて複雑なプログラムでも、少しずつ作れるようになります。
コンピューターの活用によって便利になっているアレやコレの背後には必ずプログラムが存在しています。それらの根底には今回の連載で解説していた基本が使われています。どんなに難しく思えても、少しずつ積み重ねれば、みなさんのアイデアはきっと実現できるはずです。少しでも楽しめたのなら、ぜひこれからも挑戦を続けてください!
でも、大丈夫! プログラミングで1番大切なことは、私たちが学んできた3つの基本の順次・分岐・繰り返しなのです。
実は、世の中のあらゆるプログラムは、全部この3つの組み合わせでできていることが証明されています。この考え方は「構造化定理」といい、プログラマたちには「構造化プログラミング」というとても大切な言葉として知られています。
だから、まずは順次・分岐・繰り返しの3つの基本をしっかり理解することが大切です。この3つの基本の考え方がわかれば、どんなに難しくて複雑なプログラムでも、少しずつ作れるようになります。
コンピューターの活用によって便利になっているアレやコレの背後には必ずプログラムが存在しています。それらの根底には今回の連載で解説していた基本が使われています。どんなに難しく思えても、少しずつ積み重ねれば、みなさんのアイデアはきっと実現できるはずです。少しでも楽しめたのなら、ぜひこれからも挑戦を続けてください!

成瀬 允宣
【GMOインターネットグループ デベロッパーエキスパート / GMOインターネットグループ アプリケーション開発本部 所属】
テックリードとしてWebアプリケーションプロダクト開発に従事するほか、大学講師やKids VALLEY プロジェクトにおける小学校プログラミング教育に携わる。また、カンファレンスなどでソフトウェア開発・設計を主軸に講演活動を行っている。
著書『ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本』
X:@nrslibi