Sublime Textを「ただのテキストエディタ」で終わらせるな:Python APIでCSVを料理する究極のデータ処理術
多くのエンジニアがSublime Textを「軽量なメモ帳」や「コードのチラ見用」として使っている。だが、それはフェラーリで近所のコンビニに買い物に行っているようなものだ。
Sublime Textの真髄は、その極限まで最適化されたレンダリングエンジンと、OSの深層にアクセス可能なPython APIにある。特に数万行におよぶ不整形なCSVやログファイルを扱う際、Excelを立ち上げるのは時間の無駄であり、Pandasでスクリプトを書くほどでもない「隙間のデータ処理」において、Sublime Textは最強の武器となる。
今日は、私が現場で「データクレンジングの神」と崇められる理由である、Sublime Textを本格的なデータ処理プラットフォームに変貌させる手法を伝授する。
—
1. Column Selection:脳内モデルをエディタに直結させる
マウスでドラッグする時代は終わった。Column Selection(列選択)は、データの構造を可視化し、一括で操作するための必須スキルだ。
- Windows/Linux: `Shift` + `Right Click` (または `Alt` + ドラッグ)
- macOS: `Option` + ドラッグ
これに加えて、`Ctrl + D`(次を検索して選択)を組み合わせる。例えば、CSVの特定のカラムだけを抽出したい場合、まずキーとなるカラムの先頭にマルチカーソルを置き、`Ctrl + D`で全行の該当箇所を選択すれば、数秒で加工が可能だ。
現場の秘訣:
カラムがタブ区切りや特定の記号区切りであれば、`Ctrl + A` で全選択し、`Ctrl + Shift + L` を叩く。これで全ての行末にカーソルが並ぶ。ここから`Home`や`End`、`Ctrl + Left/Right`を駆使すれば、数万行のレコードを一瞬で定型化できる。
—
2. Python APIによる「動的データクレンジング」
外部ツールにデータを渡すのはオーバーヘッドが大きい。Sublime Textのコンソール(`Ctrl + ` `)から直接Pythonコードを実行し、バッファ内のテキストを即座に書き換えるのが、真のエンジニアの流儀だ。
以下は、読み込んだCSVの特定カラム(例:2列目)を正規化し、トリムして値を置換するスクリプトだ。
import sublime
現在アクティブなビューに対して操作を行う
view = sublime.active_window().active_view()
編集用のアクションをグループ化(Undoで一括元に戻せるようにする)
view.run_command(“insert_snippet”, {“contents”: “— Processing —“})
全テキストを読み込み、行ごとに処理する
content = view.substr(sublime.Region(0, view.size()))
lines = content.splitlines()
new_lines = []
for line in lines:
cols = line.split(‘,’)
if len(cols) > 1:
# 2列目(index 1)をクリーンアップ:空白削除と全角英数を半角へ
cols[1] = cols[1].strip().lower()
new_lines.append(“,”.join(cols))
編集内容を反映(バッファ全体の置換)
view.replace(sublime.Edit, sublime.Region(0, view.size()), “\n”.join(new_lines))
これを`User/Packages`ディレクトリに保存し、`Keymap`でショートカットを割り当てれば、「特定のプロジェクト専用のデータ整形ツール」が完成する。
—
3. チームの生産性を底上げする「設定共有化」の流儀
Sublime Textの設定はJSONで完結する。チーム開発において、個人の好みで設定がバラつくのは「技術的負債」だ。リポジトリのルートに`.sublime-project`ファイルを配置し、設定をプロジェクト単位で厳格に管理せよ。
`project.sublime-project` のベストプラクティス
{
“folders”: [
{ “path”: “.” }
],
“settings”: {
“tab_size”: 4,
“translate_tabs_to_spaces”: true,
“trim_trailing_white_space_on_save”: true, // 保存時に行末空白を全削除(diff汚染を防ぐ)
“ensure_newline_at_eof_on_save”: true, // ファイル末尾の改行を強制(Gitの基本)
“default_line_ending”: “unix” // チーム全員の改行コードを統一
}
}
このファイルをGit管理下に入れることで、メンバー全員の編集環境が自動的に同期される。
—
4. 導入すべき「神プラグイン」厳選3選
膨大なパッケージの中から、実務で「これなしでは生きられない」ものを絞り込んだ。
1. Package Control: 必須中の必須。これがないと始まらない。
2. LSP: VS Codeのような強力な補完環境をSublimeで実現する。特にPythonの型チェックやRustのコンパイルエラーをリアルタイムで検知できる。
3. AdvancedNewFile: `Ctrl + Alt + N` でファイル作成。パスを入力するだけで階層構造まで一括生成する。ディレクトリをポチポチクリックする時代は終わりだ。
—
最後に:アーキテクトからの提言
Sublime Textが愛される理由は、その「軽さ」ではない。「エンジニアの思考を妨げないレスポンス」にある。データ処理をする際、重厚長大なIDEを開くことは、思考のコンテキストスイッチを発生させる。
今すぐ設定ファイルを開き、自分の作業フローを自動化するスクリプトを一行書いてみてほしい。その数秒の投資が、1年後には数千時間の節約となってあなたに返ってくるはずだ。
Sublime Textをただのエディタにするな。君だけの最強のツールボックスへと進化させろ。