Railsで、Webサーバがpumaというパターンが増えています。他のWebサーバにはthin、unicorn、などがありますが、後から出てきたpumaの人気が上昇しているイメージです。そこでこのページでは、pumaの特徴や使ってみた感想を紹介します。Rubyのフリーランス案件をチェックサーバの概念や用語の理解pumaの特徴の前に、各種サーバの概念や用語の説明をざっくりとしておきます。理解されている方は読み飛ばしていただければ良いかと思います。先に基本概念の説明をするかというと、これを把握しておかないとpumaの特徴やメリットがいまいちよくわからなず、導入する価値がなくなってしまうからです。理解していなくてもpumaの恩恵を受けることはある程度可能なのですが、意味がわからず使っているとWebサーバの機能を無視したコーディングになる可能性があります。そこで、先に基本概念をざっくり把握しておきましょう。重要なのが、Webサーバ、アプリケーションサーバ、Rackといった仕様や概念と、WEBrick、Unicorn、pumaといった個々のツールについて知ることです。なかでも特に知っておかないと環境構築に不都合が生じるのはWebサーバとアプリケーションサーバの違いです。WebサーバとはWebサーバとは、ユーザーからリクエストを受け取り、受け取ったリクエストに対して何かの処理を行って返すものです。今回紹介しているpumaはWebサーバなので、このWebサーバの基本概念と役割を把握しておく必要があります。アプリケーションサーバとはアプリケーションサーバは、アプリケーションを動かすためのサーバです。Railsで実装している場合、それを動かす場所がアプリケーションサーバになります。ユーザーが何かしらの操作をした際の動きとしては以下のようになります。以上の流れで、ユーザーが送ったリクエストに対する処理が返ってきます。アプリケーションサーバとアプリケーションを分けましたが、アプリケーションサーバ上にアプリケーションがあるので分けずに考えてもどちらでも良いかと思います。Webサーバとアプリケーションサーバの違い結局Webサーバとアプリケーションの違いと関係性がどうなっているのかは上記の通りですが、まとめるとWebサーバはアプリケーションサーバの手前でユーザーとのやり取りをするイメージです。システムによってはアプリケーションサーバのみでカバーするケースも多いのですが、Webサーバがあることでユーザーからのリクエストの処理やアプリケーションの処理が速くなります。pumaについてもこの観点で導入を検討したり使用する必要があるのです。ユーザーとアプリケーションサーバの仲介をいかに高速化、効率化するかということなので、そこに意義を感じないのであれば導入の必要もないということです。RackとはRackはWebサーバとアプリケーションサーバのやり取りをスムーズにするためのツールです。Webサーバともアプリケーションサーバとも異なります。その他WEBrick、Unicorn、pumaなどはWebサーバの一種です。pumaの特徴pumaと他のWebサーバを比較してどのような違いがあるかですが、抽象的に言うとpumaはスピードと並列性を追求しており、ユーザーからのリクエスト受け取りとアプリケーションサーバへ処理を投げるのが速いです。具体的な仕組みについては後述します。スポーツブランドにpumaというブランドがあるかと思いますが、そんな感じのイメージでWebサーバのpumaも速そうなイメージで、実際に速いです。スポーツブランドのpumaをイメージして名づけられたかどうかはわかりません。pumaの大きな特徴としては、処理をスレッド単位で溜めて、それをマルチに実行することです。スレッドはプロセスなどよりもさらに小さい処理の単位で、たとえば掲示板サービスなどでよく耳にするかと思います。スレットは掲示板のページのような意味合いで使われることが多いですが、実際は処理の単位です。掲示板サービスでも同時にスレッドを作ることができるため、マルチスレッドといった意味合いでスレッドと呼ばれていたのかもしれません。それがそのうち派生し、掲示板のページをスレッドと呼び始めた、といった流れが想像できます。Webサーバによってはスレッドを同時ではなく順番に処理するものもありますが、マルチスレッドで処理した方が速度は速いです。スレッドではなくより大きな単位であるプロセス単位で処理しているWebサーバもあり、その場合も同じプロセス内のスレッドは同時に実行されません。要するに、pumaは処理を小さな単位で分けて同時実行しているから速いということです。pumaの使い方Webサーバの概要やpumaの特徴がわかったところで、次にpumaの使い方を説明します。起動のコマンドpumaの起動コマンドは以下です。単純なコマンドですが、ケースによって微妙にコマンドが異なります。Railsの場合こちらでも可)を実行する。config/puma.rb」となる。停止のコマンドpumaはサーバのソケットを開いたままリスタートできます。要するに、ユーザーに対してサーバを開放したままサーバのリスタートができるということです。ユーザーを待たせることがないため、pumaを速くすることに貢献しています。restartと呼びますが、それを実行するコマンドは以下のようになります。restart」です。設定ファイルについて設定ファイルはpumaのgithubレポジトリからサンプルを入手することが可能です。Pool」「bind」などです。それぞれの詳細は今ではなく実際に設定ファイルを作る際に確認すれば良いかと思いますが、今用語だけなんとなく頭の片隅に置いておくと良いかと思います。今見たものをなんとなく覚えておくだけでも、次に用語を見た際に理解がかなり早くなります。所見の用語が多いとそれだけで混乱しがちですが、意味を押さえていなくても用語を聞きかじっているだけでもいざ必要になって情報収集する際にかなり役立ちます。