Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

PC を便利にするWindows の標準的なテクノロジー

More than 3 years have passed since last update.

はじめに

メモ帳さえあれば何とかなる技術を思いつくだけ書き散らかします。

bat

いわゆるバッチファイルです。
ほとんどのパソコンで同じように使えます。
バッチファイルはコマンドを順番に実行していくことが得意なので、他のプログラムを呼び出すエントリーポイントとして利用されることが多いです。
一方でループや複雑な条件分岐が必要な処理をするのであれば、後述する技術を使う方が良いでしょう。

Windows Script Host(WSH)

バッチファイルと同じく、ほとんどのパソコンで利用できます。
WSH は名前の通りスクリプト実行ホスト(いわゆる処理系)であり、具体的には cscript.exe または wscript.exe と呼ばれるプログラムを指します。

基本的なファイル入出力から IE や Excel の自動操作といった、バッチファイルよりも多様な処理を実現することができます。またバッチファイルよりも高度な構文体系を持つため、複雑な処理を容易に記述することができます。ただしファイルや標準入力/標準出力の取り扱いはバッチファイルよりもやや手間がかかります。

スクリプト言語としては VBScript か JScript を選ぶことができます。どちらを選ぶべきかは議論の余地はありますが、Excel や XML を扱う場合は VBScript をお勧めします。VBScript の持つ多次元配列や For each 構文は、Excel や XML を扱うのに相性が良いと思われます。その他の用途には JScript を使用すると良いでしょう。JScript のオブジェクト指向やクロージャなどの機能は、純粋にプログラミング言語として高機能であると言えます。

どちらのスクリプト言語を選ぶ場合でも、WSF 形式を使うことで再利用可能なプログラム(モジュール)を作成することができます。

WSH を使う場合は、基本的に文字コード Shift-JIS か UTF-16LE しか扱えないため、UTF-8 などを扱う場合は別の技術を検討する必要があるでしょう。

VBA for Excel

厳密には標準技術ではありませんが、実質的に標準技術なので取り上げます。

VBA for Excel(以下 VBA) を使うメリットは Excel の機能・速さを利用できることにあります。多くの場合、自力でアルゴリズムを実装するよりも Excel の計算速度に頼った方が良いパフォーマンスが出るでしょう。また、Excel は処理方法も豊富に用意されているため、新機能の実装を検討するよりも Excel のマニュアルを熟読する方が良い選択かもしれません。

また、Excel を利用すると手軽に GUI を構成することができます。GUI ツールがコマンドよりもユーザフレンドリーであることに議論の余地はありません。一方で、Excel で作成したツールは誰でも書き換えができるため、意図せずツールの破壊が起こりうることを常に念頭に置く必要があります。GUI に由来する機能(シート保護や色による区別など)を多用したツールは、変更や拡張に支障を及ぼす場合があるため、それらの利用は慎重に検討する必要があります。

Hyper Text Application(HTA)

Windows Script Host と同じく VBScript か JScript を使う技術です。

基本的にできることは WSH と代わりませんが、HTA はウェブ技術(HTML/CSS)を利用して GUI を構成することができます。
HTML/CSS を用いた GUI は、意図せずユーザ書き換えてしまうリスクがなく Excel ツールよりも堅牢であると言えます。
また、HTML/CSS を用いた GUI はプログラム的に扱いやすいため GUI の動的な書き換えやデータの取得が容易です。

Excel ファイルと違って、HTA ファイル自身にデータを格納しておくことはできません。

Powershell

コマンドプロンプトや WSH に代わる技術として登場したコマンドライン環境またはスクリプト言語です。
Windows 7 から標準で使用できます。

.NET 資源を利用できるなど非常に高機能であり Unix シェル環境と比較しても遜色ない機能を持ちます。
標準状態ではスクリプトの実行が制限されていますが、起動オプションを指定することで、管理者権限が無くとも制限を回避することができます。

Powershell が標準的に扱うデータは複雑(オブジェクト)であるため外部とのデータ連携には手間がかかりますが、一度 Powershell 内部にデータを取り込んでしまえば快適にデータを扱うことができます。

スクリプト言語としても、begin, process, end といったフィルタ処理に便利な構文が用意されていたり、後発だけあって十分な機能が備わっているようです(あまり使い込んだことが無いので印象ですが。。。)。ただし Powershell は高機能である反面、メモリ効率や処理速度が WSH に劣る場合があるようです。

コマンド一発で CSV 解析ができることや、Shift-JIS 以外の文字コードにも対応している点が WSH よりも優れている点と言えるでしょう。また、ISE という開発ツールが使用できる場合があります。

C#, VB.NET

前述の全ての技術を以てしても実現できない処理を実装するためには C#, VB.NET を使うことになります。

両者共にコンパイルが必要なプログラム言語ですが、.NET Framework が搭載されている全てのパソコン(Windows Vista以降)にコンパイラが同梱されています。故にメモ帳さえあればプログラムを書くことができます(Visual Studio 無しでプログラミングすることは現実的ではありませんが)。

終わりに

具体的な使用例を用意できれば良かった。眠い。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away