|
今年初め、ソーシャルメディア上で大きな科学的出来事が話題となりました。重力波の発見です。LIGOが重力波を直接検出し、2つのブラックホールの衝突と合体を観測したのです。検出された重力波は、13億光年離れた2つのブラックホールの合体過程で発生しました。13億光年もの時空を旅した後、重力波は米国のレーザー干渉計重力波観測所(LIGO)の2台の重力波検出器によって検出されました。
後に「重力波の単一検出」に疑問を呈する声もありましたが、ITの世界では、この発見はPythonという一つのものを普及させました。今日は、GitHubなどのオープンソースウェブサイトで最も人気のあるPythonオープンソースフレームワークをいくつか見ていきましょう。 1. ジャンゴ Djangoは、Pythonで書かれた、モデル・ビュー・コントローラ(MVC)アーキテクチャパターンに準拠した、無料かつオープンソースのPythonウェブアプリケーション開発フレームワークです。非営利のDjangoメンテナーソフトウェア財団(DSF)と3条BSDライセンスの下で提供されており、迅速な開発と実用的な設計を促進します。
Djangoは、データベース機能、バックエンド機能、行末システム、URLマッチング、キャッシュシステムといった点で、本質的な利点を持つオープンソースフレームワークです。わずか数行のシンプルなコードでウェブサイト用の強力なバックエンドを構築し、コンテンツ管理を容易にします。強力で拡張性に優れたテンプレートシステムは設計が簡単で、コードとスタイルが個別に設計されているため管理が容易です。また、memcachedなどのキャッシュシステムと併用することで、優れたパフォーマンスと高速な読み込み速度を実現します。 同時に、Django は任意の Oracle Java EE アプリケーション サーバー上の Jython とともに実行することができ、管理機能の点で特に優れています。 2. ねじれた Twistedは、TCP、UDP、SSL/TLS、HTTP、IMAP、SSH、IRC、FTPといった多くの一般的なトランスポート層およびアプリケーション層プロトコルをサポートするイベント駆動型ネットワークプログラミングフレームワークです。また、Unixドメインソケットもサポートしており、MITライセンスの下で使用されています。 Twisted には Web サーバー上で実行できる WSGI が付属しており、開発者は他の Python Web アプリケーション用に HTTP サービスをカスタマイズできます。
Twistedは2000年代初頭に開発されました。当時、オンラインゲーム開発者は、プログラミング言語を問わず、スケーラビリティとクロスプラットフォーム互換性を両立できるネットワークライブラリを持つことはほとんどありませんでした。現在でも、Twistedはイベント駆動型のネットワークエンジンであり、プログラムの実行フローは外部イベントによって決定されます。 3. 竜巻 「竜巻」を意味するTornadoは、スケーラブルなノンブロッキングWebサーバー、アプリケーション開発フレームワーク、そして非同期ネットワークライブラリです。元々はFriendFeed(2009年にFacebookに買収)で開発されました。Tornadoは非常に柔軟性が高く、開発者やサードパーティツールベンダーにオープンな環境を提供することを目的として設計されています。複数のアプリケーションプログラミングインターフェース(API)に加え、開発環境インターフェースから接続実装までを網羅した参考文献も用意されています。さらに、WSGIサーバーも搭載されているため、他のWSGI Pythonアプリケーション(およびフレームワーク)から使用できます。オープンソースのApache 2.0ライセンスの下で利用可能です。
一部の開発者は、Tornado は Web サーバーであると同時に Web フレームワークでもあると考えています。Web サーバーとして、Tornado は効率性に優れた非同期 I/O ネットワーク モデルを採用しています。また、Web サーバーとして、Web フレームワーク用の API も提供しているため、ユーザーは独自の Web アプリケーションを直接構築できます。 2009年9月10日のリリース以来、Tornadoはコミュニティから大きな支持を得ており、様々な場面で活用されています。FriendFeedやFacebookに加え、Quora、Turntable.fm、Bit.ly、Hipmunk、MyYearbookなど、多くの企業がTornadoを本番環境に導入しています。 上記の3つ以外にも、機械学習アプリケーション向けのオープンソースフレームワークは数多く存在します。例えば、Diesel、Flask、Cubes、Kartograph、Pulsar、Web2py、Falcon、DPark、Buildbot、Zerorpc、Bottle、webpy、Scrapyなどです。ここでは一つ一つ紹介することはしません。 |