ターミナルはおもにOSの機能を呼び出すシェルのコマンドを組み合わせるプログラミングやシステム管理領域のツールであったが、クラウドやSaaSに加えてAIというツール層も拡大するなかで、ターミナルの活用の幅は広がりそうだ。
テキストを編集・表示させる機能を持つターミナルでは、APIでクラウド側にある機能を呼び出し表示させたり、データをJSON形式で取得してそこから意味のある情報を正規表現で抽出したりといった使い方はもちろん、通常使っているSaaSの情報を効率的にローカルで扱えるように工夫することもできる。また。資料をローカルに置いておくことで早朝の一定時間に集中するネットワークボトルネックの緩和にも役立つ気もする。
Word(.docx)ファイルを解凍してみる
たとえば、Wordである。多くのひな型や情報資産を持つWordはローカルにもクラウドにも保存しているケースが多いだろう。Wordの拡張子.docxは通常のままではcat(Get-Content)ではテキストをPowerShellターミナル上では開けない。ZIPアーカイブであるため文字化けして表示される。
これをzip解凍のexpand-Archiveコマンドで開くと
同名フォルダが解凍される。XMLなど複数のファイルの情報でWordが構成されていることがわかる。
PowerShellスクリプトで手軽に本文を表示させる
解凍後のhinaフォルダの直下wordフォルダにのdocument.xmlをテキストエディタで開くと、本文が書き込まれたエリアがあるので、これを正規表現等でスプレイピングのように抜き出す方法もありそうだが、PowerShellでComオブジェクトを扱ったほうがスクリプトは簡単になる。
ファイルのパスをパラメータで入力、New-Object -ComObject Word.ApplicationでWordの情報をComオブジェクト経由で取得するには以下のようにする。
function wo
function wo {
param([string]$FileName)
$path = Join-Path $PWD $FileName
$word = New-Object -ComObject Word.Application
$doc = $word.Documents.Open($path)
$text = $doc.Content.Text
$text
$doc.Close()
$word.Quit()
}
これをnotepad $PROFILE で開いたプロファイルに記述しPowerShell上で. $PROFILEと入力して反映して関数コマンド化する。Wordオープンコマンドwoを入力してファイル名を渡すと
こうしておけば、PowerShellから移動せずに確認できるようになるのでコマンドを使ってコピーしたり必要な文面を自分のローカルDBにストックして別のSaaSで使ったりと使いまわせる。過去の資産が必要なのはAIだけではない。そうおもうた。


