名
nits: 名はなくてもよさそうです。(あるいは文章のほうに名をつけるか)
名
nits: 名はなくてもよさそうです。(あるいは文章のほうに名をつけるか)
Sentry[1]
nits: 個人的な話ですが、エラーメッセージはデフォルトだと stderrに出力されるため、datadogではstdoutにしないと全てのログがエラーログとして扱われてしまうことがありました。 他のツールで同じことが起こるのかわかりませんが、ログツールによってはstdoutに変更したほうがよいケースがあることも書いてあったらうれしいなと思いました。 (難しいかもしれないので、無理なら不要です)
標準エラー
nits: (stderr)とあってもよさそうです
# {}を書い
ここだけコードの行コメントになっていますが、前と合わせると上でもよさそうです。
>>>
先頭にスペースが入っていて、code-blockが正しく表示されていないようです。
meme
typo: neme
。
公式ドキュメントへのリンクは、他の内容と合わせると先頭にあったがほうがよいと思ったのですが、よくよく考えてみると、この節だけ「一歩進んだ」になっていて、少し粒度が他と違うような気がしてきました。
節にするなら、他と書き方を合わせたい気もしましたが、気にしなくてよいのでしょうかね... ちょっとすぐにアイデアないですが、気になったのでコメントだけしておきます。
返還
ここもtypoでしょうか
返還
typo: 変換
型ヒントさらに
型ヒントを?
Ruturn
typo: ruturn
Python 3.14以外のバージョンではデフォルトのキャッシュの数
Python 3.14以外ということですが、私の環境ではPython 3.14でも以下のようになるようです。
```
import re len(re._cache) 6 ```
Python 3.14ではキャッシュが15 個あるように読めてしまったので、環境依存だというのがわかるように記載したほうが良い気がしました。
戻り値
トルでよさそうです
<re.Match object; span=(0, 3), match='ABC'>
実際に実行してみたら、以下が返ってきました。
<re.Match object; span=(0, 3), match='aBc'>
「pbd」
typo: pdb
unique
verify
UNIQUE
from enum import UNIQUE, verify
verifyがないと NameError: name 'verify' is not defined になると思います。
あるいは@enum.verify(UNIQUE)ですかね
リスト
ここのcode-blockは何と書くのがよいのかわからないですが、一応指摘しておきます
リスト
ここもbashですね
リスト
ここもbashですね
リスト
ここも bash
リスト
ここもcode-blockはbashでよいかとおもいます
リスト
code-blockはpythonではなくて、bashだと思います。
データベースの読み書きを行う際に使うO/Rマッパー
ここのサイトへのリンクがあってもよさそうです。
MySQLのPythonドライバー
どちらかのサイトへのリンクがあってもよさそうです。 - https://github.com/PyMySQL/PyMySQL - https://pypi.org/project/PyMySQL/
入力てから
typo: 入力してから
コマンドを実行します。
同じ内容が繰り返されているようです。
リスト
nitsかもですが、{code-block} pythonになっています。 ここはbashになると思いました。 これ以降にも同じようにpythonになっているものがあるようなので、確認ください。
25.2
25.3が出ていました
DROP TABLE users
念のためですが、drop tableだと悪用できる例をそのまま提示してしまっている危険性もあると思いました。 ここも(悪意のあるSQL)としておくか、wikipediaにあるような OR name = xxxx みたいな感じのほうがよいのかなと。
主なpytestプラグイン
以下を紹介してもよいかもと思いました。 「5 - Production/Stable」とかを選ぶといいよみたいなのがあってもよさそうです。
https://docs.pytest.org/en/stable/reference/plugin_list.html
8.4.2
最新は9.0.0?
デコレーターを利用して、外部APIのShoppingSiteAPIに依存している処理をモックで置き換える
これもcatpionに入れたほうがよさそうです。
モックメソッドが実際に呼び出されたか(または呼び出されなかったか)を確認するテストの例
これはcaptionに入れたほうがよさそうです。
─
ここも罫線になっているようです。(罫線が正解?) 以降も罫線になっているようなので確認してもらったほうがよいかもしれません。
─
これ、たぶんハイフンじゃなくて罫線になっているかもですが、これはわざとなんでしたっけ?
sample
sample_doctest?
そのままだと ModuleNotFoundError: No module named 'sample' になるようです
d
nits: utcnow()が3.12から非推奨になったことは文章として残してもよい気がしました。
^^^^^^^^^^^^^^^^^^^^^^^^^^^
微妙に出力結果が違いました。
```
aware_object > naive_object Traceback (most recent call last): File "<stdin>", line 1, in <module> aware_object > naive_object TypeError: can't compare offset-naive and offset-aware datetimes ```
)
nitsですが、「T以外の区切り文字をサポートしない」、がここに入ってもよさそうです。
先頭のTの有無
Tはありでもなしでも対応しているように見えました。 「先頭のTの有無」部分がちょっとわからなかったです。
```
time.fromisoformat('04:23:01') datetime.time(4, 23, 1) time.fromisoformat('T04:23:01') datetime.time(4, 23, 1) time.fromisoformat('T042301') datetime.time(4, 23, 1) ```
月/日/年と解釈
# をつけたほうがよさそうです
オフセット(UTCからの時差)に何を採用するか
nits: 「何を採用するか」という表現が、少しわかりづらい気もしました。選択肢としては「夏時間」か「標準時」なので、「どちらのオフセットを採用するのか」でもよいのかなと思いました。
。
これもリンクがあるとよさそうです。
https://openpyxl.readthedocs.io/en/stable/api/openpyxl.utils.html#module-openpyxl.utils
ご
トルでよさそうです。
Fontクラス
nits: styles.fontsモジュールの、とあっても良さそうに思いました
PatternFill
nits: これも styles.fills モジュールのと記載してもよさそうです
Excelファイルの書き込みは、Workbookクラスのメソッドを使用します。
この文章は表の上にあったほうが良いように思いました。
評価結果を取得
nits: 再計算されるのかわからないので、「読み込んだ時点で保存された評価結果」としてもよさそうです。
(エラー情報省略)
nitsですが、エラーの最後も提示したほうがよいように思いました。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
yaml.load('none: !!python/none null', Loader=yaml.SafeLoader)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(エラー情報省略)
yaml.constructor.ConstructorError: could not determine a constructor for the tag 'tag:yaml.org,2002:python/none'
in "<unicode string>", line 1, column 7:
none: !!python/none null
任意のコードの実行を回避する
https://realpython.com/python-yaml/?utm_source=chatgpt.com#loading-yaml-documents-in-python
このあたりを見ると「YAML のほぼすべての機能を扱いつつ、「任意のコード実行」を回避する」みたいな表現のほうがよいのかなとも思ったりしました。 nitsです。
読み込む
nitsですが、「指定した Loaderクラスを使って」みたいな補足があってもよい気がしました。
Pythonオブジェクト
load_allはgeneratorを返すようです。
```
yaml.load(file, Loader=yaml.SafeLoader) {'database': {'host': 'localhost', 'port': 3306, 'db': 'test', 'user': 'test'}, 'smtp_host': 'localhost'} yaml.load_all(file, Loader=yaml.SafeLoader) <generator object load_all at 0x10357bca0> ```
json.tool サブモジュール
3.13以前ではjson.toolsを使う必要があるので、こちらに関する内容も抜粋して残しておいたほうが良いように思いました。
--no-ensure-ascii
コマンドオプションについても少し触れたほうが良いと思います。
たり、
nits: 今までがこの表記ですが、「〜たり、〜たり」にしたほうがよいか悩ましいですが、文章の見直しとして一応コメントしておきます。
csv.writer(csvfile, dialect='excel', **fmtparams)
ここも少し違いますね。
。
nits: 違いがわからなかったので、出力結果のサンプルがあってもよいかもと思いました
2025-11-06 07:48:47,078 ERROR ['Traceback (most recent call last):\n', ' File "/Users/kadowaki/example3.py", line 9, in <module>\n tuple()[0]\n ~~~~~~~^^^\n', 'IndexError: tuple index out of range\n']
詳細は後述
後述について、どこに書いてあるのかよくわかりませんでした。
t
私の環境だけかもしれませんが、実行するとプロンプトの前に制御コードが入ってきます。(Linux環境です)
```
t = timeit.Timer('char in text', setup='text = "This is a test."; char = "test"') 633;A>>> 633;A>>> t.timeit() 0.03372933401260525
```
5000万回
nits: 5000万は環境によって変わるので、-nを指定するかコメントを見直したほうが良い気がしました
。
nits: pip install ipdb があったほうが親切な気もしました
--Return--
私の環境では以下になりました. --Return-- って出るのが正解ですか?
``` (Pdb) n
/Users/kadowaki/outhouse/jissen_recipe2/source/17_debug/sample_pdb.py(9)get_system_implementation() -> return result ```
/***/Python sample_pdb_pid.py
このへんの出力はmacとlinuxで違うとは思いますが、私の環境では以下のような感じでした
80446 ttys003 0:00.02 python sample_pdb_pid.py
80792 ttys010 0:00.00 grep sample_pdb_pid.py
pdb.set_trace_async()
これはPython 3.14からというのは書いておかなくてよいでしょうか?
。
この部分、箇条書きのほうが読みやすいように思いました
条件
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.」カラムを使って処理しているのがわかるようコメントがあっても良い気がしました。