139B.Parquet + Polars/最近試したコマンド群 copertina

139B.Parquet + Polars/最近試したコマンド群

139B.Parquet + Polars/最近試したコマンド群

Ascolta gratuitamente

Vedi i dettagli del titolo

A proposito di questo titolo

概要:
巨大データ処理で活躍したParquet+Polarsの話から、開発環境を快適にするzoxideやStarship、そして数学の証明もできるプログラミング言語Leanまで、2026年のはじめに試した技術・ツールについて話しました。

  • Apache Parquet(パルケ/パークエット)とは
  • CSVとの違い(行指向 vs 列指向)
  • カラムごとにデータをまとめることで、必要な列だけを高速に読み出せる構造
  • Row Group/Column Chunkという単位で保存され、並列処理と相性が良い
  • フッターにスキーマ(型情報)を埋め込むことで、型推定不要&圧縮効率アップ
  • ランレングス圧縮・辞書圧縮などにより、CSVよりも小さいサイズ&高速読み込みを実現

  • Parquet+Polarsで1000万〜1400万行をさばいた話

  • 1000万行のCSV処理でI/O待ちがボトルネックになり、CPUコア(32コア)が遊んでいた問題
  • データをParquetに変換+Polarsを利用することで、読み込みが約30倍高速化
  • Polarsの
    • ストリーミングモード:ファイルと接続しつつ少しずつ処理
    • レイジーモード(遅延実行):フィルタやマップをチェインして、最後に一括最適化実行
  • それでも1400万行ではI/Oが張り付き、CSVでもParquetでも厳しい状況に
  • 解決策:メモリを大量に積んだインスタンスを借り、ストリーミングせず全データをメモリ上でイーガー(即時)実行
    • 「金で殴る」戦略で処理が一瞬で終わるように
  • データベースや分散処理(DuckDBなど)が本来向いている領域だが、制約の中でのベストプラクティスとしての選択
  • CSVとParquetの使い分け(ヒューマンリーダブル vs 型付き・高速・大規模向き)、手札を増やすことの大事さ

  • zoxide:次世代CDコマンド

  • cdコマンドの「賢い」代替として使えるツール
  • 一度訪れたディレクトリを学習し、曖昧な入力からジャンプできる
    • 例:cd doc で、どこにいても「documents」的なディレクトリに飛べる
  • 深い階層や長いパスを毎回フルで打たなくてよくなる
  • コマンド自体は z だが、ホストは cd にエイリアスして完全な置き換えとして使用中

  • Starship:リッチなシェルプロンプト

  • ターミナルのプロンプトをカラフルかつ高機能にするツール
  • Gitリポジトリの状態、使用中の言語ランタイムやバージョン(例:UV管理下のPython 3.x)などを自動表示
  • 見た目がきれいになるだけでなく、「今このディレクトリはどんな環境か」を一目で把握できる
  • そこまで意識して凝視はしていないが、入れておくと地味に便利な存在

  • Lean:数学の証明もできる関数型言語

  • マイクロソフト発の定理証明支援・関数型プログラミング言語
  • 数学の証明(定理・公理系の形式化)にも使われる一方、普通のプログラミング言語としても利用可能
  • 現在ホストがやっていること:
    • 四則演算をする簡単な電卓プログラムをLeanで実装(パーサ付き)
    • いずれは本格的な研究にも組み込みたい構想
  • 「証明」とは何か:
    • 例:ペアノの公理系で自然数を定義
    • 0があり、その「次の数(サクセッサ)」として1, 2, 3…を定義する
    • 足し算のルールなどを公理として書き、そのルールから「1+1=2」が導けることを機械的に証明
    • Leanでは、ループや再帰が「必ず停止する」と証明されないと実行できない構造もあり、無限ループを防ぐ
    • ソート関数がどんな入力でも必ず終了し、正しく並び替えることなども数学的に保証できる
  • 数学・論理・型システムを通じて、「AI時代でも残る問題解決力」を鍛える道具としての側面
  • かなり難易度は高めなので、未経験の人はまずHaskellから入るのが良さそう、という話
Ancora nessuna recensione