アラサーからのプログラマー生活

アラサーの新米PGが必死に頑張る成長記録です。あとは旅行とか。

Apache Tomcat(アパッチ トムキャット)ってなんだろう?そもそもサーバもよく分からないぞ

f:id:hollage0214:20210602220606p:plain



こんばんは、堀井です。

現在会社から指示があってJavaの勉強をしているのですが、課題として「Tomcatサーバの作成」が出たのですが、単語自体初耳ですね??一体何ですか???

となったので、調べた結果を個人用に残そうと思います。

サーバの概念も正直分かっていないので、プログラマー初心者でも理解できるくらいにまで用語を噛み砕いていこうと思います。

また、情報は基本的にwikipediaから引っ張ってくるので部分部分で間違っている可能性もあります。

早速行くぞ。



Apache Tomcatって一体何なんだ

まずはこれが何なのか。

とりあえず日本語に直しましょう。

Apache
(パリなどの)暴力団、ならず者
※weblioより
apacheの意味・使い方・読み方 | Weblio英和辞書


Tomcat
オス猫
女の尻を追い掛け回す男
※英辞郎on the webより
tomcatの意味・使い方・読み方|英辞郎 on the WEB

とのこと。随分と俗物的な名前ですね。

Apache Tomcat® - Welcome!

公式ページはこちら。

英語です。難しいね。


そもそも一つの言葉じゃないんですね

調べていて分かったんですけれど、見出し通りApacheとTomcatは別物のようです。

まずはApacheとは何ぞや、と言うところから始めます。


webサーバなんだってさ

Apache HTTP Server(アパッチ エイチティーティーピー サーバ)は、世界中でもっとも多く使われているWebサーバソフトウェアであり、
大規模な商用サイトから自宅サーバまで幅広く利用されている。
単にApacheとも称されている。


※wikipediaより
Apache HTTP Server - Wikipedia

Apache自体はソフトウェア財団の名前なんですね。

で、Apache HTTP ServerのこともApacheと略すからその時々の語感で理解しなければいけないということですか。

まだまだ理解できない単語だらけです。


じゃあwebサーバって?

「サーバが落ちた」とかよく聞きますし、何なら使うこともあります。

ただ、概念的な理解しかできていないので、自分の言葉を使った説明ができるかと言えば???です。

Webサーバ(ウェブサーバ、英:Web server)は、HTTPに則り、クライアントソフトウェアのウェブブラウザに対して、HTMLやオブジェクト(画像など)の表示を提供するサービスプログラム及び、そのサービスが動作するサーバコンピュータを指す。
広義には、クライアントソフトウェアとHTTPによる通信を行うプログラム及びコンピュータ。


※wikipediaより
Webサーバ - Wikipedia







難解な単語を説明するときに難解な単語を使わないって教わらなかったのか!!!!??

サーバの説明をするのにサーバの単語を持ち出すとかいたちごっこか???

文句を言っても仕方がないのでサーバを調べましょう。


そもそもサーバとは?

「ここまで分からないならそれ以前の問題だろ」と言われてしまう可能性もありますが、仕事なんだからしょうがない

サーバあるいはサーバー(英: server)は、サービスを提供するコンピュータである。
コンピュータ分野のクライアントサーバモデルでは、クライアントからの要求に対して情報や処理結果を提供する機能を果たす側のコンピュータやソフトウェアを指す。本稿ではこの意味で記載する。
サーバにはファイルサーバ、メールサーバ、Webサーバなど多数の用途や種類がある。
更にサーバ用のコンピュータ機器(ハードウェア)などもサーバと呼ぶ場合がある。


※wikipediaより
サーバ - Wikipedia

ここまで来たらふわっふわだけど理解できる気がする。

サービスと言う単語自体もかなり意味が広い気がしますが・・・。


再・じゃあwebサーバって?

これまでのwikipediaの情報を読み込んだ上で、それでも間違っているかもしれない自身の理解ですが、

webサーバとは

クライアント(自分)がHTTP(通信を行う方法)を介して通信を行うコンピュータのこと

を指す、と読み取りました。


Apache HTTP Serverはソフトウェア

ここまでの知識を元にApacheとは何だろうかと考えてみましょう。



どうですか?



私としては

"他の人がHTTPを介して通信を行うコンピュータ" を作り上げるためのソフトウェア

であると認識しました。

でもHTTP、よく分からん。いっつもhtmlと間違えるけれど言語じゃなくてプロトコルなんだよね。

ちなみに理解しようとこちらの本を読んでいますが途中で眠くなります。


Apache Tomcatの話をしよう

さて本題です。

ここまで理解できればTomcatくらい余裕で分かるでしょ!!

Apache Tomcat(アパッチ トムキャット)は、Java ServletJavaServer Pages (JSP) を実行するためのWebコンテナ(サーブレットコンテナ、サーブレットエンジン)である。
Apache License 2.0を採用したオープンソースソフトウェア。


※wikipediaより
Apache Tomcat - Wikipedia



うん、わからん!!!

すみません、盛大にフラグボケかましました。

ここからは真面目に説明します。


Java Servletはみんなも使ったことあるよ!

流石に聞いたことがある単語でした。というか

基本情報技術者試験で問われる知識なので覚えよう!!

セットで CGI とか覚えておくといいですね。

Java Servlet(ジャバ サーブレット)とは、サーバ上でウェブページなどを動的に生成したりデータ処理を行うために、Javaで作成されたプログラム及びその仕様である。
単にサーブレットと呼ばれることが多い。
Java EEの一機能という位置づけになっている。
この機能を用いてショッピングサイトやオンラインバンキングなどをはじめとする多種多様な動的なWebサイトが構築されている。


※wikipediaより
Java Servlet - Wikipedia

簡単に言えば サーバ上で動くJavaプログラム です。

JSP Model 2.svg
Libertyernie2 - 投稿者自身による作品, CC 表示-継承 3.0, リンクによる

また、 MVCアーキテクチャで言うControllerにあたる部分 です。



私は触った経験がないので説明はできないのですが、サイト上で動くプログラムと言えばjavascriptやPHPもよく聞きますよね。

それぞれどういった特長があるのでしょうか??


JavaServer Pages(JSP)って技術のことなんだ!?

Java Servletの説明を読むと サーブレットの技術の延長としてJSPがある と書かれていましたのでそのまま調べていきます。

どんどん情報が枝分かれしていきますが、この記事はTomcatの説明です。

頑張ってついてきてください。

JavaServer Pages (JSP) は、HTML内にJavaのコードを埋め込んでおき、Webサーバで動的にWebページを生成してクライアントに返す技術のこと。


※wikipediaより
JavaServer Pages - Wikipedia

先の画像にもありましたが、 MVCアーキテクチャで言うViewにあたる部分 です。

ページを開いた先でJavaプログラムが動いて動的なコンテンツを表示する、と言った感じですね。


webコンテナって?入れ物?

コンテナ(container)ってhtmlでclass命名のために使った記憶がありますが、本当に入れ物でしょうか??

Webコンテナ(ウェブコンテナ、Web container)とは、Java Platform, Enterprise Edition (Java EE) アーキテクチャのWebコンポーネント規約を実装するソフトウェア
Java Servletの実行環境となることからServletコンテナ(サーブレットコンテナ、Servlet container)とも呼ばれる。


※wikipediaより
Webコンテナ - Wikipedia

念のため英単語の訳を補足しておきます。

アーキテクチャ(architecture)は、英語で「建築学」、「建築術」、「構造」を意味する語である。


コンポーネント(component)または、構成要素とは特定の機能を果たす単位で、特に再利用を考えて汎用に開発されたもの。ソフトウェアコンポーネント、ソフトウェア部品とも。


※wikipediaより
アーキテクチャ - Wikipedia
コンポーネント - Wikipedia

一言で言えばwebコンテナもソフトウェアと言うことになるようです。


改めて、Apache Tomcatって何だろう?まとめ。

さて、ここまでくれば分かるでしょうか?

途中に同じ内容を引用していますが、もう一度載せますね。

Apache Tomcat(アパッチ トムキャット)は、Java ServletJavaServer Pages (JSP) を実行するためのWebコンテナ(サーブレットコンテナ、サーブレットエンジン)である。
Apache License 2.0を採用したオープンソースソフトウェア。


※wikipediaより
Apache Tomcat - Wikipedia

かなりかみ砕いた説明を用いて説明すると・・・・・・。



Apache Tomcat(アパッチ トムキャット)は、(サービスを提供する)コンピュータ上で動くJavaプログラムなどを実行するための実行環境である。



となります!!!

ここまで来れば何となく分かる・・・分かるぞ・・・!!

少しだけ難しくします。



Apache Tomcat(アパッチ トムキャット)は、"サーバ上でウェブページなどを動的に生成したりデータ処理を行うために、Javaで作成されたプログラム""Webサーバで動的にWebページを生成してクライアントに返す技術"を実行するための"Webの構成規約を実装するソフトウェア"である。


となりますね!!!


おわりに

私は調べながら書いているので概ね理解が及びましたが、皆さんはどうでしょうか??

繰り返し読んでいただき、少しでも理解の一助になるのであれば幸いです。

それではまた次回。