。
この部分、箇条書きのほうが読みやすいように思いました
。
この部分、箇条書きのほうが読みやすいように思いました
条件
nitsですが、 ルール or 条件 は統一してもよさそうです。
ge は以上、lt は未満
念のためちゃんと書いておきたい気がしました。
ge は “greater than or equal to” の略で、「以上」を意味し、lt は “less than” の略で、「未満」を意味
とかでしょうか?
BaseModel
BaseModelは基本部分になるので、ドキュメントのリンクがあってもよさそうです。 https://docs.pydantic.dev/latest/api/base_model/
の
トルでもよさそうと思いました
customer1.0 タスクが restaurant タスクをawaitしていることが分かります。
この部分、というのがわかるようにしてあると理解しやすいと思いました
customer1.0
出力は「sleep -> restaurant」になっていますが、customer1.0が〜わかります。という表現でsleepとcustomer1.0のつながりがわかりにくい感じがしました。ので、少し補足があっても良い気がしました
await関係
ここもawait状態のオブジェクト?でしょうか?
asyncio.capture_call_graph() で FutureCallGraph オブジェクトを取得し、
説明を少し書き足しても良いきがしました。
より柔軟に扱いたいときはasyncio.capture_call_graph() 関数?を使います。この関数では、FutureCallGraph オブジェクト (ref url) を返し、以下の情報を個別に参照できます。
みたいな感じとかはどうでしょうか?
連鎖関係
この例では、awaiter chain自体、出力には出てないですか? 出てないなら、どんな感じで表示されるのか知りたいです。
重要になる
なぜでしたっけ?
await関係
ざっくりしていてピンとこなかったのです。表示されているのはawaiter、つまり待機オブジェクトということだと思います。 await状態のオブジェクト情報など、みたいな書き方でしょうか...
PyCon US 2025セッション「Zoom, Enhance: Asyncio’s New Introspection Powers」で取り上げられていたのが、本機能です。
この文章、「従来のプロファイラは...」の後にしたほうが読みやすい気がしました。 背景の説明 -> PyConUSでもこの取り上げられてたよ、資料もあるよ みたいな流れがよいとおもいました
機能の背景
nits: 機能追加の背景、のほうがよいかもです。 後段の見出しは機能追加の経緯となっているので、合わせてもよいかもですね
ASGIでテスト対象のアプリケーションと通信するため、httpより高速です。
nitsですが、間違いではないもののASGIがhttpを代替する意味とも捉えられそうで、少し誤解を生みそうな表現な気もしました。
テスト対象のアプリケーションをASGIで直接呼び出すため、ネットワークを介したhttpによるテストより高速です。
のような、HTTP通信経由ではないから速いという表現にしてはどうでしょうか?
WSGI(またはASGI)
知らない人のためにリファレンスがあるとよいと思いました。
hypothesis
hypothesisについても軽く説明があったほうがよいと思いました
LangGraph
nitsですが、ここも念のため https://www.langchain.com/langgraph
LangChain
リンクくらいはあってもよいかと思いました。
数ドルから
最初のスタートは$5ですね
requirements.txt ├── images # チャットで表示する画像 │ ├── m_.jpeg │ └── robo.jpg
requirements.txtの内容がどこにもないので、なくても良いのかもと思いました。 あと、robo.jpgなどは、参考までにどのくらいのサイズで用意しておくとよいなどの情報くらいあっても良い気がしました。
アプリの実行
アプリだけだと曖昧な感じがしたので、「チャットボットアプリの実行」としたほうがよいと思いました。
各処理の詳細に関しては、後述します。
コードが大きく、説明とかなり離れてしまうので、 1つのソースであることを説明として入れた上で、 ①〜④単位に分割して説明してくれたほうが読みやすい気もしました。
ひととおりのコード説明をした後に、全ソースを改めて掲載するでもよい気がします。 (できるのかわかりませんが、全ソースの表示はトグルスイッチ的なもので表示/非表示できればなお良いかもです。技評さんにお願いしたらやってくれませんかね。)
@mcp.resource や @mcp.prompt
リファレンスがあってもよさそうです。
主な処理の流れ
図の中に「MCPクライアント」っていう言葉がないのは少し気になります。
MPC
typo: MCP
認証
LLM と外部システムを安全に接続するためにも「認証/認可」が不可欠だという説明があっても良い気がしました。 そのためにローカルの環境変数にクレデンシャルを設定する必要があるよ、みたいな説明があってもよさそう。
MCP Server
表記揺れ: MCP Server or MCPサーバー
stdio
最初は、Standard Input/Output (stdio) と書いたほうが良い気がしました。
MCP Server の機能
Typo: Promppt
そして、他と合わせるなら複数形にしたほうがよいでしょうか?
標準化され
MCPは業界標準ですので、標準化と言い切るのは少し微妙な気もしました。 「LLMと外部サービスの連携方法が標準化されつつあり、..」 とか?
で
「で」はトルでよさそうと思いました。
GitHub
ここもGitlabですかね
needs:合わせる
これってTypoですか?
Pythonのパッケージ作成に関するワーキンググループが作成したGitHub Action
下記へのリンクがどこかにあっても良い気がしました。
GitHub
Gitlab?
プライベートな署名をするための情報にアクセス
nitsですが、少し読みにくかったので、以下ではどうでしょうか
プライベートな署名情報にアクセス(する|できる)必要があるため
。
FastAPI側のレスポンスがJSONなので、Starletteのサンプルも
from starlette.responses import JSONResponse として同じ結果のほうがわかりやすいように思いました。
。
サンプルコードに from werkzeug.routing import Map があったほうがよいと思いました。
数少ない
nitsですが、「数少ない」というと「数」が気になってしまうように思ったので、「(必要)最小限の」(必要はあってもなくてもよさそう)という表現はどうでしょうか?
ヴェルズオイグ
カタカナにすると「ヴェルクツォイク」だと思ってました。Werkのkの子音がある気がしました(個人の感想)
name = form.get("name", "名前なし")
リクエストからここまでの簡単なサンプルスクリプトを1つくらいここにまとめて書いても良い気がしました。
インターフェス
タイポ
統一の規格があることで、規格に沿った Python アプリケーションを作ることで、
「〜ことで」が2回続くので、最初のほうを「統一の規格があるため、」とかにしてはどうでしょうか
Python アプリケーションと Web サーバーの
nits:
standard interface between web servers and Python web applications
とあるので、「PythonウェブアプリケーションとWebサーバー間の」としたほうが良い気がしました。
ルーティング機能も Web ツールキットで機能を提供していますが、Web フレームワーク側で機能拡張していることがあります。
上で指摘ルーティングのことを指摘したこともあり、気になってしまいましたが、WebObとPyramidの部分とかスプレッドシートと内容が合ってないところは確認してもらったほうがよいかと思いました。
Web システム全体像
この図は後段の「Webツールキットの紹介」の前あたりにあったほうが良い気がしました。
最初に入れるのは
Webアプリケーション
Webアプリケーションフレームワーク(flask, pyramid, fastapi)
Webツールキット (werkzeug, WebOb, Starlette)
くらいの違いが読み手に伝わるくらいでよい気がした次第です。(インデントで表現していますが、それぞれ四角枠で囲むイメージです。)
FastAPI のドキュメントの随所に
〜の〜のが続いているので、以下ではどうでしょうか。
「FastAPIでは、ドキュメントの随所に...」
次の
次に?
シンプルな構成できる
シンプルに構成できる or シンプルな構成にできる
どちらかと思います。
使ってる
nits: 使っている
対し、「Web フレームワーク (Framework)」は、データ管理やアプリケーション実装を助けるなど、より広範な機能と構造化されたアプローチです。
「Webツールキットとは」の説明で、
「Web ツールキット (Toolkit)」は、(〜省略〜)に対し、 というのが最初にくるのは少し違和感がありました。
そして、Webフレームワークの説明が続くのも確認が必要そうと思いました。
URL のルーティング機能や認証・認可機能、テンプレート機能、データベースとの接続管理などさまざまなものが準備
ここの説明はWebツールキットの内容も入っている気がしており、気になりました。 URLルーティング機能はStarletteやWerkzeugの機能ではないかなと。
Immortal objects
immortal objectsの説明か参照がほしいと思いました。
freethreading にマルチプロセスによる処理は、小さなスクリプトでは影響がないことがわかりました。
少し読みにくかったので、以下のようにしてはどうでしょうか?
「マルチプロセスを利用しても小さなスクリプトではfree threadingの効果が現れにくいことがわかりました。」
走らず
「走らず」は俗語っぽい表現なので、「動作しないため」とか「動作せず」などの表現のほうが良い気がしました
uv run コマンド
uv run使ってなくないですか?
並列処理を実現
並列処理の実現
スレッド間の競合を回避
アトミック参照カウントカウントとスレッドの関係が分かりづらい気がしました。
以下のようにすると少しわかりやすいですかね?
「...原子的に操作することで、オブジェクトの整合性を保ちながらスレッド間の競合を回避」
するため
nits: トルでよい?
GILの利点
後段に「GILの制約」という見出しがあるので、ここも見出しを分けたほうがよいと思います。 それぞれ見出しレベル3くらいになるのかな?
Pythonで多くの方が、並列処理での制約として認識しているのが
nitsですが、少し読みにくかったので、以下のようにしてはどうでしょうか?
Pythonの並列処理で、多くの方が制約として認識しているのがこのGIL...
df["No."]
nits: 年度は「イベント」カラムにあるので、「No.」カラムを使って処理しているのがわかるようコメントがあっても良い気がしました。