
最近では、AWSなどのクラウドプラットフォームや、Dockerがプロジェクトに取り入れられることが多くなりました。それに応じて、“それらを使えなければならない”という空気がただよっています。たしかに、AWSやDockerは便利ですが、「必須のもの」なのでしょうか。そんな疑問を技術書人気著者が解説します。

AWSやDockerとは何か
そもそも、「AWSやDockerとは何か」と言えば、AWSは、「サーバーなど一式を貸してくれるレンタルのクラウドプラットフォーム」、Dockerは「隔離されたプログラムの実行環境を用意するソフトウェア」です。
そしてどちらも、「サーバーを用意するのに便利だからよく使われるもの」です。
特に大きな共通項の一つが、「サーバーOSや、ソフトウェアのインストールが一瞬でできる」ことです。通常、これらを準備するには、元となるイメージを用意して、それをインストールして……と時間がかかるものですが、クラウドや、Dockerでは、時間がかかりません。
それゆえに、さまざまなプロジェクトで活用されるようになりました。
■AWSとは?
AWS(AmazonWebServices)とは、Amazon Web Services社が提供するクラウドプラットフォーム。サーバーやネットワークなどをインターネット経由で貸してくれるサービスが代表的。ウェブサイト上のコントロールパネルから、クリックで簡単にサーバーが用意でき、変更も可能。AWSの他に、Google社の提供するGoogleCloudやMicrosoft Azureも人気である。
(出典)図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書 p.10より
■Dockerとは?
Docker とは パソコンやサーバー上に、独立したプログラムの実行環境を作れる仕組み。Docker を使うと、サーバー上を細かい部屋に分けられるようになるので、独立した環境に、特定のプログラムを入れられるようになります。この独立した環境をコンテナ(container)と言う。
▲Dockerを使うと、異なるOS間での行き来がしやすくなったり、サーバーの移行などもしやすくなったりする。そのため、人気が高い。クジラのアイコンが有名
■新技術との付き合い方
AWSもDockerも便利なものです。でも「必須なのか」と問われたら、「プロジェクトによる」としか答えようがありません。
この業界では、何かが流行り始めると、一斉に「あれを使わなきゃ、これを使わなきゃ」といった空気になりやすいですが、あまり振り回されてはいけません。
例えば、皆さんが通勤に使っている鞄ですが、電車の中で見回してみると、実にさまざまです。
リュック型の人も居れば、肩にかけるタイプの人も居ます。筆者のように、手ぶらの人だって居るのです。これは、その人の仕事に必要なものや、体型、性格により、必要な鞄が違うからです。
学生時代は、全員が同じ教科書を使い、場合によっては参考書も同じでしたが、仕事を始めれば、そんなことはないですよね。ですから、必要な鞄も違うのです。
同じように、AWSやDockerも、プロジェクトにとって「必要なのか、そうでないのか」によって判断されるべきです。
こうした技術を使ってないと、「時代遅れだ」「よくない現場だ」と言われがちですが、果たして本当にそうであるのか、よく調べ、よく考える必要があります。
「皆が使っているから」で導入しても、うまくいきません。高いスーツは良いものですが、土木作業には不向きです。安くても動きやすい服装が欲しいときがあるように、サーバーもハイスペックなら良いわけではありません。
AWSを導入すれば、便利な分だけ、ランニングコストがかかりますし、Dockerを入れるのはおおげさだという現場もあります。
■だとしたら、学ばなくてもいいんじゃない?
新技術について、まったく学ばなくてよいかというと、そうではありません。
やはり、エンジニアとしての引き出しは多い方がよいからです。ですから、まずは概要を掴んでおき、いざ必要となったら、しっかり学べるような体制にしておくと、スムーズです。
細かいコマンドや、操作方法まで熟知しておかなくてもよいので、「その技術がどんなもので、どんな利点があって、何に使えるのか。デメリットは何か」くらいを押さえておけるとよいでしょう。
また、新技術さえ学んでいればよいというものではなく、多くの新技術は、旧来の技術を前提に成り立っています。
例えば、新しい技術であるかのような印象を持たれているDockerでも、「あればjail(BSD環境での似たような仕組み)だよね」と言うベテランが多くいました。
つまり、技術がしっかりしていれば、新しい概念が出てきても、対応できるのです。
AWSでも同じです。AWSの学習*に苦戦している人の多くは、AWS固有のことがわかっていないのではなく、サーバーやネットワークといった基礎がわからずに、AWSの使い方を掴み損ねているのです。
ですから、まずは、基礎をしっかり学び、その後に少しずつ、引き出しを増やしていけると、よいでしょう。
まとめ:サーバーを学ぶために、必要なこと
さて、全3回にわたり、サーバーについてお話ししてきましたが、最後に「今後、サーバーを学んでいくには、どうしたらよいか」で締めましょう。
サーバーを学ぶのに、最も手っ取り早いのは、何か一つサーバーを作って、動かしてみることです。
最初は、クラウドなどを使って構築してもよいので、WordPressなどを動かせるようにしてみましょう。何もナシに進めるのは、ツライでしょうから、書籍や動画などを参考にして構いません。なんでもよいので「これがサーバーなのか」という体験をしてください。
そして、一度サーバーを作ってみたら、そこから知識を広げましょう。
他の種類のサーバーを立ててみてもよいですし、そのサーバーをカスタマイズしてもよいです。「サーバーを立てること」自体を目的にしても、なかなか身につきづらいので、想定するサービスや、アプリケーションがあると、なおよいですね。
■手を動かすのはハードルが高い…そんなときは?
「ちょっと、実際にサーバーを立てるのはつらいな……」という方は、「妄想のサーバーを立てる」という手もあります。実際にサーバーを立てるつもりで、やり方をさぐっていくのです。
イメージはどこからダウンロードして、ソフトウェアには、どのような設定をして……と考えていくうちに、知識が身についてきます。
実際に手を動かした場合と違って、エラーなどがでないので、あまり意味がないと思われるかもしれませんが、何もしないより、遙かに勉強になります。どんなことでもよいので、まずは第一歩。そこが大切です。
皆さんが思っているよりも、サーバーとはずっとシンプルで身近なものです。また、実際に触ってみると、楽しいものでもあるので、まずは第一歩から挑戦してみてください。妄想だってよいんですよ!!それでは、よきサーバーライフを!!
▼これまでの「ゆるく学ぶサーバー入門~イマイチわかりづらいサーバーの基礎を解説」
・サーバーとは何者なのか
・Linuxはどのくらい勉強すればいいの?
▼あわせて読みたい!「AWS文明開化〜イマイチ掴めないクラウドの正体とメリットを解説〜」
・AWSってなんでこんなにチヤホヤされてるの?
・作っては捨てる時代がやってきた
・AWSとうまく付き合うには?