Twisted Introduction というブログの連載を日本語に翻訳しました。
http://skitazaki.appspot.com/translation/twisted-intro-ja/index.html
初回の記事は 2009年7月で、自分が翻訳を始めたのが2010年4月。 連載が終わったのが2010年11月で、翻訳が終わったのが2011年4月。 始めは2ヶ月もあれば終わるだろう、と思っていましたが、そもそもオリジナルの連載も長くなっており、 翻訳には1年もかかってしまいました。
途中でエストニア人とロシア人もそれぞれの言語に翻訳を始めたようで、ロシア人には 追い越されて しまいました。 最近は 中国語 もあります。 みんなそれぞれの方法で翻訳文書を作成しており、本家の英語とエストニア語はブログ (Wordpress)、 ロシア人 は Latex、自分の場合は Sphinx を使いました。 ドキュメントのソースコード管理には github を使いました。
翻訳を始めたきっかけは、非同期プログラミングに詳しくならないと!と思ったことです。 ここ数年で急激な成長を見せている「クラウドコンピューティング」は様々な側面を持っており、 クラウドと仲良くなっていくためには様々な知識や経験が必要になりますが、 そのひとつがネットワーク越しに受け渡すデータを効率的に扱うことだと思います。
通信が発生すると、通信経路で遅れが発生したり、そもそも通信路が途中で切断されてしまうこともあります。 いくつかの解法があるでしょうが、そのひとつが非同期処理とコールバックだと思います。 通信が完了あるいは失敗したら、そのときにコールバックを呼び出してくれれば良いのです。 とはいえ、このパラダイムにフラッと立ち入ってしまうとコールバック地獄に陥ってしまい、 最初の実装はなんとかできたとしても、その後の機能改善や保守は難しくなってしまうでしょう。 また、いくつかのコールバックを連動させたときに、その内のひとつが失敗したら大変です。 場合によっては、どこで何が起こったのか判断不能になりかねません。 あと、ソフトウェアのテストが大変、という側面もあります。
この問題を解決するサポートをしてくれるのが、シリーズの中心となる Deferred でした。 自分の日本語訳として遅延オブジェクトを当ててしまったのは失敗だった気がしますが (英語のままの方が良かった)、 この Deferred を使うと、コールバックの正常系と異常系のチェーンを管理しやすくなるはずです。 Deferred は Twisted に限らず jQuery などでも扱われる考え方なので、 身に付けておいて損はないスキルセットだと感じます。 (jQuery だと単発のコールバックで、チェーンにはならないのかも)
連載の中盤ではテストやプラグインの作り方もあり、最後の方では、リリースされて間もない cancel 機能も取り上げられています。 さらに、他のプログラミング言語との比較、ということで Erlang と Haskell も登場します。 同じ機能を別々のプログラミング言語で実装する好例と言えます。
個人的に印象に残ったのは次のフレーズです。 ひとつの問題を解決するといっても考え方によって複数のアプローチがあることを表現していると思います。
What would, in Twisted, be solved by using a callback would, in Erlang, be solved by sending an asynchronous message from one Erlang process to another.
これはまだまだ "introduction" なので、何事につけても先は長そうです。 とはいえ、これから Twisted を使って新しくアプリケーションを構築するか、という部分には疑問もあるでしょう。 その場合は、既存のアプリケーションで出会わないとも限りませんので覚えておくと良いかも、というくらいにて。
その他のリンク
その他にいくつか関連するリンクです。
- 本家 Twisted
- Twisted のドキュメント
- an introduction to Twisted for the Launchpad development team
- Deferred Reference - 現行ドキュメント (改定中のもの)
- Using zc.buildout in a Twisted project
- Twisted Web in 60 seconds (連載の最後にもリンクがあります)
- WSGI (Twisted Documentation)
- Store an instance of a connection - twisted.web (Stack overflow)
- Twisted RDBMS support (Twisted Documentation)
- Twisted adbapi : asynchronous database access
- American Airline のバックオフィスシステムも Twisted を使うそうです。ITA という会社が有名なので。 (American Airlines Selects ITA Software for Next-Generation Availability Engine)
- リストには記載されていませんが、Xen や TweetDeck も Twisted を使っている (いた?) そうです。 (Project Using Twisted)
終わりに
英文を読んでいると、その時は分かったつもりになっても後になってみると説明できない、ということが多々あります。 そもそも内容を理解できていない場合もありますし、英語だとぼんやりとしか思い出せないこともあります。 要するに英語力が足りないわけですが、もうひとつ、丹念に読んでいないことも挙げられます。
改めて日本語で記述してみると、接続詞なども細かく考える必要がありますし (そこを間違っている部分も多々ありそう...)、 関係代名詞の扱いには四苦八苦します。 それでも、テクニカルな部分だけでなく、考える幅が広がるように思います。 特に、文化/教養の違いに関してはこれが顕著で、今回の翻訳では詩人と詩そのものに関して調べる必要がありました。 もちろんこれは本論ではありませんから、調べなくとも次に進むことはできます。もののついでに、という感じです。
自分でやってみて、内容が適切かどうか、規模が大きすぎないか、など、いくつかの判断基準はあるでしょうが、 とりあえずブログ記事の翻訳は無理なく始められる範囲なのかな、と思いました。
参考: 技術系ブログの書き方 (Digital Romanticism)
勉強と結びつけながらブログを続けていくためのプラクティスについて整理する。
さておき、一番難しいのは適度なネタを見つけることだったりしますけど...
0 件のコメント:
コメントを投稿