PowerShell コードの動作

完了

コードの動作を理解できるように、"プログラム" とは何か、"プログラミング言語" とは何か、およびその言語によってコマンドがコンピューターにどのように伝えられるかについて説明します。

プログラムとは

プログラムとは、コンピューティング タスクを行う命令のセットです。 命令は、コンピューターが認識できる形式にコンパイルされた後、"ユーザー" によって実行されます。 "ユーザー" は、人である場合も、別のプログラムである場合もあります。 命令は、コンピューターによって、実行する行がなくなるまで順番に 1 度に 1 行ずつ、またはプログラムによって明示的に停止するように指示されるまで実行されます。

最も基本的なプログラムでも、次のタスクの 1 つ以上が実行されます。

  • ソースからの入力を受け入れます。 入力には次の情報が含まれます。
    • ユーザーからの入力。キーボードによる入力またはインターフェイス上のコントロールの選択。
    • ファイルから取得したもの。
    • 別のプログラムまたはネットワーク接続からの呼び出し。
  • プロセスの情報。これには、次のものが含まれます。
    • ロジックの実行。
    • 数値計算の実行。
    • 新しいデータを生成するためのデータ入力の操作。
  • 結果を出力します。これには、次の情報が含まれます。
    • ユーザーに対する画面上の表示。
    • ファイルへの保存。
    • 別のプログラムへの送信。

目的が異なると、プログラムの形式も異なる場合があります。 プログラムには次のようなものがあります。

  • ゲーム、テキスト エディター、請求ソフトウェアなどのスタンドアロン アプリケーション。
  • 別のプログラム内で実行され、何らかの機能を自動化する高度なマクロなどのスクリプト。
  • ライブ コード、式、データ視覚化の組み合わせ。

このモジュールの例を含む一部のプログラムで必要なのは、数行のコードのみです。 ただし、オペレーティング システムのような複雑なプログラムでは、数万行、場合によっては数百万行ものコードが必要です。

プログラミング言語とは

プログラミング言語の役割は、人間が判読して理解できる方法でコンピューターに対する命令を人が記述できるようにすることです。 コンピューターは、人間が普段行っている方法とは異なる方法で言語を理解します。 プログラム記述者は、プログラミング言語を使用して、特殊なわかりやすい方法でコンピューターに命令を送ることができます。 プログラミング言語で記述する命令は、"コード" と呼ばれます。

多くのプログラミング言語があり、それぞれに異なる構文があります。 ただし、最初のプログラミング言語を学習した後は、学習する新しい言語にその概念の多くを適用できます。

構文とは

話し言葉や書き言葉と同じように、プログラミング言語には、"構文" と呼ばれる独自の文法規則があります。 プログラミング言語の構文には、"キーワード" と "演算子" に加え、その言語に固有のその他の種類の規則が含まれます。

"キーワード" はプログラミング言語によって予約されている特定の語であり、特別な意味と動作を持っています。 PowerShell では、キーワードの多くを英語のように読むことができます。 たとえば、ifwhilereturn は、PowerShell やその他の多くの言語でコードを記述するために使用できるキーワードです。

"演算子" は、かっこ (()) や等号 (=) などの特殊な文字です。 これらの文字は、特定の算術、比較、または論理演算を実行して結果を生成するよう、コンピューターに指示します。

前のユニットで、Cloud Shell ターミナルにコードを入力したときに、テキストや記号の色が少し変わることに気付いたでしょうか。 この色分けは、"構文の強調表示" と呼ばれます。 構文の強調表示は、コードを読んでいるときに、間違いがあったときにそれを見つけるのに役立ちます。 Visual Studio Code などの多くのコード エディターでは、この機能のさらにしっかりしたものを利用できます。

PowerShell でのコードのコンパイル

コンピューターは、ユーザーが記述したプログラムをそのまま読み取るのは苦手です。 プログラミング言語を、コンピューターが理解できる形に変換する必要があります。 プログラミング言語では、さまざまな方法でこれが行われます。

多くのプログラミング言語では、コードは独立したステップとして "コンパイル" されます。 コードを記述し、コンパイラと呼ばれる特別なプログラムを通してそれを実行すると、実行可能パッケージがコンパイラによって生成されます。

Python などの他の言語には "インタープリター" と呼ばれるものがあります。これによって、コードが一度に 1 行ずつコンピューター用に翻訳されて実行されます。

PowerShell の動作方法には、コンパイラとインタープリターを使用する方法とは異なっている部分と同じ部分の両方があります。

PowerShell では、コードはまずメモリ内に抽象構文ツリー (AST) としてコンパイルされた後、実行されます。 ただし、ここでは、PowerShell の使用方法に深入りする必要はありません。 コンピューターによって最初に AST のコードがチェックされて重大な問題が検出される、ということだけを理解していれば十分です。 その後、何も問題がなければ、コンピューターによってプログラムが実行され、コンパイルされた実行可能プログラムは必要ありません。 この方法が有用なのは、コンピューターによって実行される前にコードが正常に実行されることが保証されるためです。これにより、構文エラーが原因で変更を加えて停止する可能性がなくなります。 これに対し、Python などのインタープリター言語では、構文に誤りが見つかるまでコードが実行されます。

PowerShell の探索

PowerShell の重要な機能は、組み込みのヘルプ システムです。これにより、PowerShell コマンドに関する情報に素早くアクセスできます。 記述中に行き詰まった場合は、Get-Help コマンドを使用して、コマンドや PowerShell の概念のヘルプを参照できます。 たとえば、Write-Output コマンドに関するすべての詳細を表示するには、次のコマンドを入力して実行します。

Get-Help -Name 'Write-Output' -Full

Get-Help は実行するコマンドであり、Write-Output はヘルプを取得するコマンドの名前です。 -Full スイッチは、コマンドの説明、パラメーター情報、例など、指定したコマンドのすべてのヘルプ情報を取得するように PowerShell に指示します。 このヘルプ情報は、Azure Cloud Shell ターミナルを含むすべての PowerShell ターミナルで入手できます。

PowerShell に用意されているすべてのコマンドを探索する場合は、Get-Command * を使用して完全なリストを表示できます。 アスタリスク (*) は、PowerShell の "ワイルドカード" 文字です。 これを使用すると、一致パターンを使用してさらに多くの情報を見つけることができます。 この場合は、* を使用して、使用可能なすべてのコマンドをフィルター処理できます。 たとえば、User が含まれているすべてのコマンドを取得するには、Get-Command *User* を実行します。

PowerShell のもう 1 つの優れた点は、統合シェルが付属していることです。 シェルを使用することで、何かテストしたいことがあるたびにコードを実行することなく、コードをテストして出力を操作できます。 コードが想定どおりに動作することを確かめるために、ターミナルに直接入力できます。