すべての記事
LLM のハルシネーション(幻覚)— 原因と実務での対策
LLM がもっともらしい嘘を自信満々に生成するハルシネーションを整理します。次トークンの確率予測という動作原理から幻覚が必然的に生まれる理由、事実誤り・出典の捏造・コード API の幻覚といった類型、RAG と引用の強制、ツール利用、構造化出力の検証、評価パイプラインまで実務で幻覚を減らす手段、そして完全にはなくせない前提の上で人間のレビューポイントを設計する運用の視点まで扱います。
Python パッケージング #6 公開 — wheel のビルドと PyPI へのアップロード
受け取る側から作る側へ方向を変え、自分のコードをインストール可能なパッケージにして公開するワークフローを整理します。src レイアウトとビルドバックエンドの役割、sdist と wheel の違い、uv build でビルドして TestPyPI でリハーサルしてから PyPI に上げる手順、GitHub Actions の Trusted Publishing でトークンなしにデプロイする現代の標準、社内専用の配布の選択肢まで扱います。
Python パッケージング #5 依存関係のロック — ロックファイルと再現性
宣言とロックがなぜ分離されるのかから始めて、uv.lock の中身を直接読みます。推移的依存まですべて固定する解決の結果、ハッシュ検証が防ぐサプライチェーンのリスク、CI で --frozen によりロックのとおりに再現する方法、アップグレードを日常の仕事にする戦略、道具の間の移動を開く標準 pylock.toml(PEP 751)まで扱います。
埋め込みとベクトル検索 — 意味で探す検索の仕組み
RAG とセマンティック検索の基盤である埋め込み(エンベディング)とベクトル検索を 1 本で整理します。テキストを数値ベクトルに変換する埋め込みの概念、コサイン類似度で意味の近さを測る原理、全件走査の kNN と近似検索 ANN のトレードオフ、pgvector・専用ベクトル DB・検索エンジン拡張からストレージを選ぶ基準、キーワードの完全一致に弱い埋め込みの限界とハイブリッド検索、モデル変更時の全再インデックスといった運用コストまで扱います。
Python パッケージング #4 uv — 2026 年の標準ワークフロー
仮想環境、依存関係のインストール、ロック、Python バージョン管理を 1 つの道具にまとめた uv の日常ワークフローを整理します。init・add・sync・run の 4 コマンドが前回までの手作業を置き換える過程、Python インタープリター自体を uv がインストールする構造、uvx と uv tool でグローバルツールを分離インストールする方法、既存の requirements.txt プロジェクトを吸収するマイグレーションまで扱います。
トークンとコンテキストウィンドウ — LLM のコストと限界を決める単位
LLM の料金表とスペック表に必ず登場するトークンとコンテキストウィンドウを 1 本で整理します。テキストがどうトークンに分割されるのか、日本語が英語よりトークンを多く消費する理由、入力と出力で単価が異なる料金構造と会話が長くなるほどコストが膨らむ仕組み、コンテキストウィンドウが実際に制限しているもの、長大なコンテキストの性能面の落とし穴、プロンプトキャッシュや履歴管理といった実務での対策まで扱います。
Python パッケージング #3 pyproject.toml — プロジェクト設定の標準
setup.py と散らばった設定ファイルの時代が pyproject.toml という 1 つのファイルに収束した過程を整理します。project テーブルのメタデータと依存関係の宣言、extras と dependency-groups で選択的な依存と開発用の依存を分ける方法、build-system の役割、ruff や pytest の設定まで tool テーブルに集める実践的な構成を扱います。
PySide6でデスクトップアプリを作る #6 スレッドとタイマー — 止まらないUI
ボタンに長い処理をつなぐとウィンドウ全体が応答を停止する理由をイベントループの構造から確認し、QThreadとWorkerパターンでUIを止めない定石コードを完成させます。周期処理を担うQTimerまで扱います。
Python パッケージング #2 pip と requirements.txt — 伝統的ワークフローの限界
pip の動作原理と requirements.txt のワークフローを整理し、この方式がどこで崩れるのかを押さえます。バージョン指定子の読み方、pip freeze が直接依存と推移的依存を区別できない問題、バージョンを固定しないとインストールする日によって結果が変わる再現性の穴、constraints ファイルまで扱い、次世代ツールが生まれた理由につなげます。
PySide6でデスクトップアプリを作る #5 モデルとビュー — リスト・テーブルにデータをつなぐ
ウィジェットにデータを直接入れる方式の限界を押さえ、Qtのモデル/ビュー構造に進みます。QAbstractTableModelの継承実装、データ変更の通知、QSortFilterProxyModelの検索フィルター、選択処理までToDoテーブルで実習します。
Python のサーバーが遅いとき — py-spy で 5 分以内にボトルネックを探す
稼働中の Python プロセスに、コードの修正・再起動なしで取り付くサンプリングプロファイラ py-spy の使い方を整理します。dump で止まったプロセスの正体の確認、top でリアルタイムのボトルネック観察、record とフレームグラフ、--idle で見る off-CPU の待ち、GIL 観点の解釈、コンテナでの使い方まで扱います。