2.6のリリースが計画されています。使った例外の表記方法など,3.0に搭載される一部の機能が追加される予定です。3.0非互換のコードに対する「警告モード」が搭載されます。3.0への橋渡し役となる,とても重要なリリースと位置づけられています。3.0に備えることができます。3.0で予定されている後方互換性を崩す仕様変更の「緩衝材」として,2.6が用意されているわけです。Pythonには,言語のコアとなる実行バイナリの他に,膨大な標準ライブラリが搭載されています。標準ライブラリの多くはPythonで書かれています。3.0で動かすために,標準ライブラリを3.0対応のコードに書き換える必要があります。3.0と並行して開発が進む2.6では,標準ライブラリの3.0対応が進められるのではないかと見ています。移行の最適なタイミングかつては使い捨てのツールを作るための道具だったスクリプト言語も,今日ではWeb開発をはじめ,よりライフスパンの長い開発で活用されています。高度な開発では,プロジェクトが言語や組み込みのモジュールだけに依存するということはほとんどないはずです。プログラミング言語の移行の問題は,言語だけの問題ではないわけです。フレームワークを使っている方であれば,フレームワークが新しいPythonのバージョンに対応するまで,ひと世代前のバージョンを使い続ける,といった経験があるはずです。3.0を使う機会は訪れないかも知れません。3000が広まるには,3.1や3.2のリリースを待つことになるかも知れない」と書いているのには,そういう意図が背後にあるのではないでしょうか。3.0を使うようになるはずです。Guidoが10年ほど前に思い描いた「真にPythonicなPython」の世界が現実のものとなるためには,あと数年かかるのかも知れません。その数年の間は,3.x系の開発と平行して,2.x系の開発とリリースが続けられることが予告されています。3.0に備えるための方法とはいえ,変化は必ず訪れます。今から3.0に備えておけば,よりPythonicなPythonの世界に素早く移行できるはずです。インデントでブロックを表記するなど,Pythonには「開発スタイル」を強要するためにあるような類の機能や文法が多く見受けられます。3.0の変更点のうちいくつかは,より良い開発スタイルを推奨するための変更です。開発のスタイルを3.0で推奨されているスタイルに変更することで,そのような変更点には対応が可能です。「⁠外部からのテキストは生成時にエンコードを指定してUnicode文字列にする」「⁠map()のような関数の返り値がリストであることを期待しない」といった点が代表例でしょうか。3.0の機能の一部は2.6に搭載される予定です。2.6を使うことで,言語コアに近い変更の一部に対応できます。将来的に3.0で動かす可能性のあるコードには,かならずユニットテストを書くべきです。ユニットテストを書いておけば,3.0に移行するときに万が一非互換性が発生した場合にも,問題点を把握しやすくなります。3.0で行われる変更のうち,一部は2.xの段階でも対応可能であるとはいえ,すべての機能に対応することは不可能です。いうUnicode文字列のリテラルは利用できません。Unicodeリテラルを含むコードはエラーになってしまいます。「⁠2to3」と呼ばれるコードコンバータが付属しています。3.0に搭載される予定です。このコンバータを使うと,2.xのコードをある程度3.0対応のコードに変換することができます。このコードコンバータは,正規表現などを使った文字列置換のような単純な作りにはなっていません。Pythonのバイトコードコンパイラから得たAST木を使った構文解析を行い,3.0対応コードの変換を行っています。現状のコンバータの対応範囲を一言で言うと,「バイトコードレベルで判別できる範囲」となります。"~"」は「print("~")」のような関数呼び出しに変換されます。削除されたhas_key()メソッドを迂回したり,例外回りの文法の変更を吸収する,というような比較的高度な変換も行ってくれます。逆に,バイトコードレベルで判別できない類の非互換性は,このコンバータでは吸収できません。Pythonではコードを短く書くために以下のようなコードを書くことがあります。....このように,一度変数に代入したメソッドを呼び出すようなコードは,バイトコードレベルでは非互換性がわからず,実行時にならないと判別できません。setattr(),getattr()などを使ったコードも,同様にコンバータの守備範囲外となります。PythonによるPython実装PyPyの持つ機能を活用すれば,動的なコードも含めてより広い範囲のコードを3.0対応にコンバートできるようになるかも知れません。Hyltonがこのコンバータに関する講演を行っています。このとき,PyPyの開発チームから,動的なコードを3.0対応に変換するための方法について提案を受けていたようです。3.0に付属のコンバータにPyPyの機能が取り込まれるか,またはPyPy派生の独立したコンバータがリリースされるか,2つの可能性があるように思います。3.x系への移行がよりスムーズに進むようになることは間違いないでしょう。Pythonはこれまで,表面的にはゆっくりと,しかし着実に進化を続けてきました。急速な変化を嫌う体質の背後には,Pythonを利用する開発者への配慮があったはずです。後方互換性を崩す3.0への移行方法についても,緻密といえるほどの配慮が見て取れます。「⁠作りっぱなし」ではない,開発者に対して真摯なアティチュードが,Pythonの魅力のひとつと言えると思います。3000についてお伝えする連載も今回で最後となります。数ヶ月後に予定されているβリリース,そして2008年末に予定されている正式リリースを楽しみに待ちつつ,筆を置きたいと思います。Python,Ploneを使ったCMS/システム構築やコンサルティングが主な業務となっています。「みんなのPython」「TurboGears×Python」などの著書があります。日本Pythonユーザ会のほか,日本PostgreSQLユーザ会でも活動。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。