modernize-scientific-stack について
古い Python 2 の科学計算スクリプトを Python 3 へ移行するための指針を提供するスキルです。ファイルやパスの扱い、データ処理の更新と、変更後の検証手順を扱います。
主な機能
- 01Python 2から3への移行方針
- 02UTF-8を明示したファイル操作
- 03pathlibによるパス処理
- 04pandasによるCSV処理
- 05構文・動作の検証
活用シーン
- 01古い科学計算スクリプトの移行
- 02CSV処理コードの更新
- 03文字コードやファイル操作の見直し
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ letta-ai/ skills --skill modernize-scientific-stackインストール後、Claude Code で/modernize-scientific-stackを入力して読み込まれたか確認します。
詳細
科学計算スタックのモダナイズ
このスキルでは、従来の Python 2 による科学計算コードを、最新のライブラリとベストプラクティスを用いて、現代的な Python 3 に移行するためのガイダンスを提供します。
このスキルを使用するタイミング
次の場合にこのスキルを適用します。
- Python 2 の科学計算スクリプトを Python 3 に移行する場合
- 古いパターンを使用しているレガシーなデータ処理コードを更新する場合
- 非推奨のファイル処理、文字列エンコーディング、数値計算ライブラリを使用しているスクリプトをモダナイズする場合
- データ分析のために
csvモジュールを使用するスクリプトを pandas に変換する場合 - パス操作で
os.pathをpathlibに置き換える場合
アプローチ
フェーズ 1:コード全体の調査
変更を加える前に、既存のコードベースを完全に理解してください。
-
すべてのソースファイルを最後まで読む — ファイルの読み取りが途中で切れている場合は、作業を進める前に全内容を要求してください。不完全な読み取りに基づいて、ファイルの内容を推測してはいけません。
-
すべての依存関係を特定する — 次の項目を確認します。
- インポート文(標準ライブラリとサードパーティ製ライブラリ)
- 設定ファイル(JSON、YAML、INI)
- データファイル(CSV、Excel、pickle)
- 環境要件
-
データフローを把握する — 次の点を理解します。
- 入力ファイルの形式とエンコーディング
- 適用されるデータ変換
- 出力形式の要件
- 中間ファイルやキャッシュの有無
フェーズ 2:移行要件の特定
科学計算コードでよく使われる Python 2 から Python 3 への移行パターン:
| レガシーなパターン | 最新の置き換え |
|---|---|
print "text" | print("text") |
unicode() / str() | 明示的なエンコーディングを指定した str() |
open(file) | open(file, encoding='utf-8') |
os.path.join() | pathlib.Path() |
csv モジュール | pandas.read_csv() |
for key in dict.keys() | for key in dict |
dict.has_key(x) | x in dict |
| 手動のファイル反復処理 | コンテキストマネージャー(with 文) |
xrange() | range() |
整数除算 / | 明示的な // または浮動小数点数の除算 |
フェーズ 3:実装方針
-
次の優先事項に従って、モダナイズしたスクリプトを作成します。
- すべてのファイル操作で UTF-8 エンコーディングを使用する
- すべてのファイルパス操作で pathlib.Path を使用する
- CSV/データ処理に pandas を使用する
- 有益な場合は型ヒントを使用する
- リソース処理にはコンテキストマネージャーを使用する
-
設定ファイルを処理する — 読み取る前にファイルの存在を確認します。
config_path = Path("config.json") if config_path.exists(): config = json.loads(config_path.read_text(encoding='utf-8')) -
requirements.txt を作成する — すべての依存関係をバージョン制約とともに含めます
フェーズ 4:検証手順
重要:ファイル操作は必ず検証してください
ファイルを書き込んだ後は、読み戻して次の点を確認します。
- 内容がすべて書き込まれている(途中で切れていない)
- 構文が有効である
- すべてのインポートが含まれている
テストの手順:
-
構文の検証 — Python の構文チェックを実行します。
python -m py_compile script.py -
インポートの検証 — すべてのインポートが解決されることをテストします。
python -c "from script import *" -
機能テスト — スクリプトを実行し、出力を期待される結果と比較します
-
出力の検証 — 出力形式が要件に完全に一致することを確認します
避けるべきよくある落とし穴
-
ファイル内容の切り取り — ファイルの一部しか読み取れていない状態で作業を進めてはいけません。応答に
... [truncated]や不完全な内容が表示されている場合は、作業を続ける前にファイル全体を要求してください。 -
書き込みの未検証 — 書き込み操作を行った後は、ファイルを必ず読み戻し、内容がすべて正しく書き込まれていることを確認してください。
-
エンコーディングの問題 — ファイル操作では常に
encoding='utf-8'を明示的に指定してください。レガシースクリプトでは、ASCII を暗黙に前提としていることがよくあります。 -
パス文字列の連結 — パスに対する
os.path.join()と文字列連結はすべて、pathlib.Pathの操作に置き換えてください。 -
エッジケースへの対応不足:
- 空のデータファイルやデータセット
- 必須ファイルの欠落
- CSV 列の無効なデータ型
- 一致するデータがないステーション/エンティティ
-
環境設定の繰り返し — 環境(venv、PATH)を設定する場合は、コマンドごとに繰り返すのではなく、設定が維持されることを確認してください。
検証チェックリスト
タスクを完了とする前に、以下を確認してください。
- すべてのソースファイルを最後まで読み込んだ(途中で切れていない)
- 書き込んだファイルを読み戻して確認した
- Python 2 のパターンをすべて変換した
- ファイルエンコーディングを明示的に指定した
- すべてのパス操作に pathlib を使用した
- データ処理に pandas を使用した(適切な場合)
- requirements.txt にすべての依存関係を記載した
- スクリプトがエラーなく実行される
- 出力が期待される形式と完全に一致する
- エッジケース(空のデータ、ファイルの欠落)に対応した
出力の検証
タスクで期待される出力形式が指定されている場合は、出力が完全に一致することを確認してください。
- モダン化したスクリプトを実行する
- 出力を取得する
- 必要に応じて、期待される形式と文字単位で比較する
- 以下の点に注意する。
- 数値出力の小数点以下の精度
- 空白と書式
- 出力項目の順序
- 単位とラベル