twisted
twisted
「twisted」とは・「twisted」の意味
「twisted」とは、英語で「ねじれた」や「捻じ曲がった」という意味を持つ形容詞である。また、比喩的な意味として「精神的に異常な」や「道徳的に歪んだ」といった意味も含まれる。例えば、""twisted limbs""(ねじれた手足)や""twisted ankle""(ねじれた足首)など、障害のある状態を表す際にも使われる。一方で、""twisted-wonderland""(歪んだ不思議の国)のように、物語やガジェットの名前にも使われることがある。ただし、「twisted」がスラングとして使われることは少ない。「twisted」の語源
「twisted」は、英語の動詞「twist」の過去分詞形であり、古英語の「twist」に由来する。古英語の「twist」は、「ねじる」や「ねじれる」といった意味を持ち、さらに古ゲルマン語族の言語にまで遡ることができる。この言葉は、時間を経て様々な意味を持つようになり、現在では形容詞としても使用される。「twisted」の発音・読み方
「twisted」の発音は、/twɪstɪd/(トゥイスティド)となる。""tw""の音は「トゥ」と発音し、その後に「イスティド」と続ける。日本語では、「トゥイステッド」と表記されることが一般的である。「twisted」の使い方・例文
「twisted」は、物理的なねじれや精神的な歪みを表す際に使用される。以下に例文を示す。 1. The tree had twisted branches.(その木はねじれた枝があった。)2. He has a twisted sense of humor.(彼は歪んだユーモアのセンスを持っている。)
3. The wire was twisted around the pole.(ワイヤーがポールにねじれて巻かれていた。)
4. She suffered from a twisted ankle.(彼女はねじれた足首に苦しんでいた。)
5. The plot of the movie was twisted and complex.(その映画のプロットは複雑で歪んでいた。)
6. The rope was twisted tightly.(ロープはきつくねじれていた。)
7. His twisted mind led him to commit terrible crimes.(彼の歪んだ心は、彼をひどい犯罪に走らせた。)
8. The artist created a sculpture with twisted metal.(そのアーティストはねじれた金属で彫刻を作成した。)
9. The path through the forest was twisted and difficult to follow.(森を通る道は曲がりくねっていて追跡しにくかった。)
10. The novel featured a twisted love story.(その小説は歪んだ恋愛物語が描かれていた。)
Twisted
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/08/17 03:39 UTC 版)
Twisted は Python で記述されたイベント駆動型のネットワークプログラミングフレームワークで、MIT License でライセンスされている。
Twisted プロジェクトはTCP、UDP、SSL/TLS、IPマルチキャスト、UNIXドメインソケットをサポートし、また、多数のプロトコル (HTTP、NNTP、IMAP、SSH、IRC、FTP など) をサポートしている。
中心的な概念
プロトコルとトランスポートの分離
Twisted は論理的なプロトコル(通常 HTTP や POP3などのストリームベースのコネクションに依存している)と、そうしたストリームベースのセマンティクス[要曖昧さ回避]をサポートした物理的なトランスポート層(ファイル、ソケット、SSL ライブラリなど)との完全な分離を目指して設計されている。論理的なプロトコルとトランスポート層との接続は、情報が論理プロトコル層に渡される最後の瞬間まで行われない。論理的なプロトコルはトランスポートレイヤのインスタンスを通知され、メッセージを送り返したり、相手の識別情報を確認したりするために使用することができる。ただし、プロトコルのコード内で、 トランスポート層にトランスポート層内の問題について問い合わせを行うことが可能である。当然ながら、トランスポート層がそのような方法をサポートしていなければプロトコルのコードは失敗する。
Deferred (遅延評価オブジェクト)
Twisted のアプリケーションモデルの中心は、Deferred (遅延) という概念である。これは一般的なデザインパターンの分野ではFutureとも呼ばれる。Deferred とは、たとえば遠隔地の相手からデータを必要とするなどの理由によりまだ結果が計算されていない値である。Deferred は通常のオブジェクトのように他に渡すことはできるが、値を問い合わせることはできない。各 Deferred はコールバックチェインをサポートしており、Deferred が値を取得すると、コールバックの結果を次の入力として、コールバックチェーンを通じた通知が行われていく。これにより Deferred の値を知ることなく扱うことができる。たとえば、Deferred がリモートの IPアドレス を 4 桁の形式で格納する文字列を返すとき、それを 32 ビットの数値に変換するようコールバックを追加することができる。Deferred のユーザーは、これを 32ビットの数値を返す Deferred として扱えるようになる。この機能、および "エラーバック" (errback; エラーハンドラーとして呼ばれるコールバック) を定義する機能により、イベントドリブンの抽象化を保ったままで、コード上は時系列に書くことを可能にしている。
スレッドのサポート
Twisted はスレッドを Deferred の入力として用いることで、生のスレッドに対する抽象化をサポートしている。すなわち、Deferred は即時に制御を返し、スレッドが終了したときに値を受け取る。メインスレッドで動作するコールバックを定義することができ、これにより複雑なロック処理の必要性を軽減させている。 データベースの呼び出しそのものも外部スレッドとして行われるが、結果はメインスレッドで発生する。
外部イベントループ
TwistedはGTK、QtやCocoa(PyObjC を介して)などの、外部のイベントループと結合することができる。これによりGUIプログラムのネットワークサポート層としてTwistedを用い、Pythonネイティブのライブラリのようにソケットごとにスレッドを持ってしまうオーバーヘッドなしに、すべてのライブラリを使うことができる。このモデルを使うと、たとえば本格的なWebサーバをGUIプログラムと同一プロセス内で結合することができる。
Twisted を使用しているアプリケーション
Twisted を用いたアプリケーションの実装で有名なものとしては、Jaiku がある。また ITA Software が開発したエア・カナダの航空券予約システムは、Twisted を広範囲にわたって使用している。[1].
関連項目
- Perl Object Environment - Perl プログラミング言語のための相当するフレームワーク
- Twisted Lore - Twisted チームが開発したドキュメント生成プログラム
脚注
外部リンク
固有名詞の分類
- Twistedのページへのリンク