Tornadoとは?基本情報やメリット、導入方法も初心者向けに解説

AIブームの中、Pythonは人気が高いプログラミング言語です。Pythonのフレームワークにはさまざまなものがありますが、その中の一つにTornadoがあります。DjangoやFlaskなどよりも認知度は低いですが、同時接続が可能でWebSocketが使用できます。
この記事ではこれからTornadoを活用していきたいという方に向けて、Tornadoの基本情報から特徴、メリット・デメリット、導入方法を解説します。
Tornadoの概要
TornadoはPython向けのフレームワークおよび非同期ネットワークライブラリです。ここでは、Tornadoの基本情報や人気度について説明します。
Tornadoの基本情報
Tornadoは2009年にFriendFeed社によって開発されました。同年、Facebook社(現Meta)に買収され、オープンソースソフトウェアとして公開されています。
ノンブロッキングI/Oを使用することで、数万のオープン接続に拡張できるためユーザへの長時間の接続が必要なアプリケーションに向いています。
Tornadoの人気度
Tornadoは他のPythonのフレームワークのDjangoやFlaskには認知度が劣りますが、非同期フレームワークで、処理が高速なので人気があります。
Python Software Foundationと JetBrains が実施したPython開発者のアンケートでは、Pythonのフレームワークの中でもTornadoの使用度は4位でした。

Tornadoは求人数こそ少ないものの、後述するようにWebSocketが利用できて高速なことからリアルタイムのサービスに使用されています。
Tornadoの特徴、強み
次に、Tornadoの特徴とできること、メリットデメリットを説明します。
Tornadoの特徴
Tornadoには、下記のような特徴があります。
非同期通信
Tornadoは非同期ネットワークライブラリです。
非同期通信とは、コンピュータで送信者の送信タイミングと受信者の受信タイミングを合わせずに通信することです。データの送受信に両方がオンラインの必要がなく、片方が接続していなくても通信できるため、LINEなどのチャットアプリに活用されています。
同時接続処理
Tornadoはノンブロッキングであることから数千の同時接続ができます。
ノンブロッキングとは、コンピュータに入力して反応が帰ってくるまでに並行して別の処理を行うことです。従来であれば、処理をして反応が返ってくるまで待ち時間が生じますが、ノンブロッキングの場合は同時に複数の処理を行え、大量アクセスにも対応できます。
Tornadoでできること
TornadoではWebAPIやWebアプリケーションを作成することができます。ここでは、Tornadoでできることを紹介します。
WebSocket
Tornadoでは、WebSocketプロトコルがサポートされています。
WebSocketとは、ブラウザとWebサーバの間で双方向の通信をおこなう通信規格で、サーバ側とクライアント側が常にオンラインになることによって双方向の通信を実現しています。
WebSocketは、リアルタイムのチャットサービスやオンラインゲームなどに活用されています。
ユーザ認証
Tornadoのユーザ認証では、Google OAuthのようなサードパーティ認証をサポートしています。Facebook認証やTwitter認証も可能です。
Tornadoのメリットとデメリット
PytohonのフレームワークにはDjangoやFlaskなど有名なものもたくさんありますが、その中でもTornadaoのメリットとデメリットにはどのようなものがあるのでしょうか。詳しく解説します。
メリット
Tornadoのメリットは、WebSocketを利用したリアルタイムのサービスに有効であることです。送信した直後に誰とでも共有することができる通信方法のため、チャットアプリはもちろん、アクセス解析サイトや、ビデオ通話と並行した資料の送付など並行作業もできます。
また、シンプルなコードで読みやすいため処理が高速です。
デメリット
Tornadoのデメリットは、日本語の情報が少ないことです。
公式のドキュメントは充実していますが、日本語の情報は少なく公式ドキュメント以外の情報は英語で収集する必要があります。
Tornadoの使い方
Tornadoはシンプルで高速なフレームワークで、リアルタイム通信などに活用されることを説明しました。それでは、どのような手順で使用できるのでしょうか。実際にTornadoの使い方について説明します。Tornadoでの開発手順
Tornadoの開発手順を説明します。
Pythonのインストール
Tornadoを使うために、まずはPythonをインストールします。下記公式サイトからPythonをダウンロードしましょう。
Python公式サイト
ダウンロードが完了したら、インストーラーを起動してPythonをインストールしましょう。
Pythonのインストールが終われば、バージョンを確認します。コマンドプロンプト(ターミナル)を開き、「python -V」と入力します。
$python -V Python 3.x.x
Pythonのバージョンが3であることを確認します。(2022年4月現在)
仮想環境を作成
次に、仮想環境を作成しましょう。パッケージのバージョン管理ができます。
仮想環境を作成したいフォルダの下で「python -m venv .venv」を入力します。「.venv」は仮想環境名です。
$python -m venv .venv
venvで仮想環境を有効にするには、Activateをします。
【macの場合】 $source .venv/bin/activate
【Windousの場合】 $.venv¥Scripts¥activate
仮想環境を使用することにより、仮想環境ごとにPytonやパッケージのバージョン管理ができるようになります。
Tornadoのインストール
Tornadoのインストールにはpipコマンドを使用します。
$pip install tornado
これでTornadoのインストールが完了です。
Tornadoと関連する知識やツール
ここではTornadoで開発する時に役立つ知識を紹介しましょう。
Python
Pythonとは、1991年にオランダのグイド・ヴァンロッサムというプログラマーによって開発されたプログラミング言語です。特徴として、少ないコードでわかりやすいプログラムが書けること、機械学習などの専用のライブラリが豊富なことが挙げられます。
代表的なフレームワークには「Django」「Flask」「Tornado」などがあり、Webサービスの他にもAIやディープラーニングで使用されています。
ライブラリ
ライブラリとは、アプリ開発などに使用するプログラムの一部を誰でも使用できるように切り離したもののことです。
ライブラリ単体ではプログラムは動きませんが、ライブラリを組み込んだプログラムを作成することで様々な機能が実装できます。例えば、数値計算のライブラリ、画像認識のライブラリなどがあります。
非同期通信
非同期通信とは、要求をしてから相手の応答を待たずに次の処理を実行する通信のことです。
同期通信では、クライアント側からサーバ側に要求を出してから、サーバ側のレスポンスが返ってくるまでは他の処理ができず、応答を待たないといけませんが、非同期通信では、応答を待っている間に別の処理ができます。
操作性やパフォーマンスの向上のメリットがある反面、サーバが重くなるというデメリットもあります。
ノンブロッキングI/O
ノンブロッキングI/Oとは、入出力結果を待たずに他の処理を行えるI/Oのことです。これに似た入出力として、「ブロッキング」や「非同期」があります。
「ブロッキング」は「同期処理」のことで、処理を順に実行し、入出力が終わるまで他の処理をしない通信方式です。
「非同期」は前述の「非同期通信」と同じですが、ノンブロッキングとの違いは、「処理が終わった後に通知が返ってくるか」という点です。非同期の場合は、処理が完了するまで他の処理ができ、処理が完了すると通知が届きます。一方、ノンブロッキングの場合は処理完了の通知はありません。
ノンブロッキングは複数の処理に対応が可能な反面、技術的に実装が難しいという側面もあります。
まとめ
TornadoはPythonのフレームワークの一つで、非同期通信、高速な処理が可能なマイクロフレームワークです。使いこなすことで、より高速なサービスの開発ができるでしょう。またPythonはTornadoに限らず、需要の高いプログラミング言語で高収入も期待できます。Tornadoを用いた開発に興味がある方は、ぜひ参考にしてみてください。