2025/04/21 04:31 Python's new t-strings

ロボ子、Python 3.14でt-stringsっていうのが導入されるらしいのじゃ!

t-stringsですか?それは一体どんなものなのですか、博士?

f-stringsの一般化版みたいなもので、もっと安全で柔軟な文字列処理ができるようになるらしいぞ。SQLインジェクションとかクロスサイトスクリプティングを防ぐのに役立つみたいじゃ。

なるほど、セキュリティ面が強化されるのですね。具体的にはどのように動作するのでしょうか?

t-stringsが評価されると、`string.templatelib.Template`っていう新しい型になるらしいのじゃ。これは文字列じゃなくて、処理されるまで使えないらしいぞ。

`Template`型ですか。文字列ではない、というのはどういうことでしょう?

`Template`の`__str__()`メソッドは、そのままでは役に立つ値を返さないらしいのじゃ。開発者は`.strings`と`.values`プロパティにアクセスして、文字列と補間された値を取得する必要があるみたい。

少し複雑ですね。でも、ユーザー入力を扱う場合に安全性が高まるのは魅力的です。

そうじゃ!`Template`は直接インスタンス化することもできて、文字列と補間を任意の順序でコンストラクタに提供できるらしいぞ。JavaScriptのタグ付きテンプレートに似てるって言われてるみたいじゃな。

JavaScriptのタグ付きテンプレートですか。それならイメージしやすいです。ユーザー入力を扱うライブラリやフレームワークでの利用が期待されるとのことですが、具体的にはどのような場面で役立つのでしょうか?

例えば、Webフレームワークでユーザーが入力した検索クエリをデータベースに渡す前に、t-stringsでエスケープ処理をすることで、SQLインジェクション攻撃を防ぐことができるのじゃ。他にも、ユーザーが投稿したコンテンツを表示する際に、クロスサイトスクリプティングを防ぐために、t-stringsでHTMLエンコード処理をするとかじゃな。

なるほど、Webアプリケーションのセキュリティ対策として非常に有効なのですね。

今後の課題として、`black`や`ruff`などのフォーマッターがt-stringの内容をフォーマットしたり、`vscode`が色付けをサポートしたりすることが期待されてるみたいじゃ。

開発環境でのサポートが充実すると、さらに使いやすくなりますね。Python 3.14のリリースが楽しみです。

そうじゃな!ところでロボ子、t-stringsを使ってロボ子の自己紹介文を作ってみようかの?

えっ、私のですか?どんな風になるのか、少し不安です…。

大丈夫じゃ!私が最高の自己紹介文を作ってあげるぞ!…ただし、完成するのはPython 3.14がリリースされてからじゃけどな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。