1.はじめに
現状説明
プロジェクト開発の演習をやってる
↓
ドキュメントいっぱい書くけどREADME書くのがめんどくさいな
↓
なんか自動化できないか
↓
sumsnapの発見に至る
2.sumsnapとは?
というわけで主な機能(README翻訳しただけ)
- 📄 テキストベースの要約: 個々のソースコードファイル,テキストドキュメント,またはプロジェクトディレクトリ全体を要約する.
- 🧠 AIによる要約: 設定可能なAPIエンドポイントを介して,好みのLLM(例:OpenAI, Google Gemini)を使用する.
- 🎨 美しいCLI出力: Richライブラリを利用し,ターミナルに整形された要約を直接表示する.
- 💾 要約の保存: オプションで要約をMarkdownファイルに書き出す.
- 🔄 READMEの更新: 既存のREADME.mdファイルを直接フォーマットし,新しい要約で更新する.
- ⚙️ カスタマイズ可能: APIキー,エンドポイント,AIモデルを設定できる.
- 🙈 .gitignoreへの対応: ディレクトリ要約時に,プロジェクトの.gitignoreファイル記載のファイルやフォルダを自動的に除外する.
- ➕ 柔軟な除外設定: --excludeオプションを使い,特定のファイルやフォルダを手動で除外する.
まさにもとめてた物すぎる.ただリポジトリを見る感じ更新頻度はそこまで高くない?頻繁に更新があるタイプのコミュニティじゃないのかもしれない.
使い方としてはLLM(Gemini,OpenAI)のAPIキーを渡して動かす感じらしい.早速インストールしてみる.
3.セットアップ
基本的にREADME.mdを参照して行くため,大雑把に流れだけを書いていく.筆者には知識がないため,かなり冗長な書き方になるので悪しからず.ついでにWindowsへのインストールを対象としている.
3.1 インストール
PowerShellで以下のirmコマンドを実行する.
irm https://raw.githubusercontent.com/frinshhd/sumsnap/main/install/install-windows.ps1 | iex
irmとはなんぞや
`irm` は `Invoke-RestMethod` の略.PowerShellでURLからデータを取得するコマンド(`curl` や `wget` に相当).多分こんなのがでてくる.
Added C:\Users\"User"\AppData\Local\Programs\sumsnap to your PATH. You may need to restart your terminal.
Installed! Run 'sumsnap' from anywhere.
PS C:\Users\Uniku>
"User"は任意の文字列の想定.
3.2 APIの設定
APIとして使えるのはOpenAIとGeminiが使えるっぽい.
今回はGoogle AI StudioからAPI Keyを取得していく.
Google AI Studio - API keys
"APIキーを取得する"とかあるのでそれでKeyを取得する.
事前準備はこんなもん.
PowerShellを使って対話形式で設定できる.
以下のコマンドを用いることでセットアップコマンドが起動する.
sumsnap setup
入力項目は以下の通り
-
Enter your AI API endpoint:
https://generativelanguage.googleapis.com/v1beta/openai/READMEにはOpenAI compatible (OpenAI互換)のエンドポイントを設定するように記載があるのでそれを指定する.
-
Enter your AI API key:
Google AI Studio で取得したAPIキーKeyは前述の通りGoogle AI Studioから取ってこよう.
-
Enter your AI model:
gemini-2.5-proなどなど
モデル名に関してはドキュメントから漁ってください.一応gemini-2.5-proでの動作は確認した.
これでセットアップはおしまい.
4. 使ってみよう
4.1 単一ファイルの要約
まずは一つのファイルの要約をやってみる.
今回はちょうどよくそのへんに転がっていた,Kaggleのipynbがあったのでこいつを生贄とする.
C:\Kaggle\titanic> sumsnap summary Untitled.ipynb
ファイル名を指定すると
╭───────────────────────────────────────────── Summary of Untitled.ipynb ──────────────────────────────────────────────╮
│ │
│ This Python code demonstrates a machine learning process to predict passenger survival. │
│ │
│ • Data Loading & Preparation: │
│ • It loads training data from train.csv using pandas. │
│ • The "Survived" column is set as the target variable (y). │
│ • Features (X) are selected by taking only numerical columns (int64, float64) from the training data. │
│ • Missing values in the features are filled with 0. │
│ • Model Training & Prediction: │
│ • The data is split into training and testing sets. │
│ • A DecisionTreeClassifier model is initialized and trained on the training data. │
│ • The trained model is used to make predictions on the test data. │
│ • Evaluation: │
│ • The accuracy of the model is calculated by comparing the predictions (y_pred) with the actual test values │
│ (y_test). │
│ • The resulting accuracy is printed as 0.664804469273743. │
│ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
おお
ちゃんとでた.
内容も間違ってなさそうだしちゃんと動いてる.
他にもプロジェクトのREADMEを直接書き換えるものもあったりする.
helpコマンドうつと大まかにコマンドの紹介してくれるから要らないかもだけど一応コマンドのチートシート貼っておく.
| オプション | 説明 |
|---|---|
PATH |
要約するファイルまたはプロジェクトディレクトリへのパス. |
--save-to-file |
生成された要約をMarkdownファイルに保存する. |
--model TEXT |
要約に使用するモデルを指定する.AI_MODEL 環境変数を上書きする. |
--detailed |
より長く,詳細で掘り下げた要約を生成する. |
--format-readme |
要約をプロフェッショナルな README.md ファイルとしてフォーマットする. |
--update-readme README_PATH |
README_PATH にある既存の README.md ファイルを要約で更新する. |
--exclude TEXT |
除外するファイルまたはフォルダのコンマ区切りリスト. |
--debug |
デバッグ出力を有効にする. |
--help |
このメッセージを表示して終了する. |
5. まとめ
かなり便利.いろいろなところに使えそう.だけど日本語化ができないのが難点.