現在は、高校のカリキュラムで情報Iが用意されていますが、その中でPythonを使うことになります。

 

 情報Iの中では、サーバなども登場するので、必然的にHTMLファイルなどについても知っておいたほうが良いと思いますが、現在のカリキュラムでは、ネットワークの仕組みも含めて学習するようになっています。

 

 とは言っても、中学校の技術のカリキュラムでScratchを使ったネットワークで動くアプリケーションの作成と体験をすることになっていますから、単一のクライアントだけでなく、ネットワークを使った処理についても体験できるようになっています。

 

 小学校のカリキュラムでは、算数で図形を描くプログラミングを、理科のカリキュラムでは電気をマイコンを使って動かすようなプログラムを組むようなカリキュラムがありますから、

 

  ■ ソフトウェアの制御

  ■ デバイス制御

 

の双方を体験し、その違いを理解することができるようになっていますが、義務教育では、WANやLANで使用するプロトコルのTCPやUDPなども学習しますが、サーバの種類などについても学習することになります。

 

 流石に、LAMP環境でサーバを作るようなことはありませんが、URLの仕組みやネットワークの仕組みなどについて学習することになります。

 

 ブラウザを使ってサーバにアクセスして、特定のページを表示する場合、サーバ内のファイルにアクセスをして、その内容をブラウザでレンダリングしているわけですが、WEBブラウザで表示する際にっ使用するファイルがHTMLファイルになります。

 

 この記述には仕様があるので、タグを使用することになりますが、基本的な記述の雛形が存在するので、それを記述して表示する内容を追加していくことになります。

 

 この場合、オフィースソフトを使う際のテンプレートみたいに使用できたほうが良いのですが、通常のテキストエディタではそういった機能は存在していませんし、機能を追加できるVisualStudioCodeでもHTML用の機能の追加を行わないとそういった処理は出来ません。

 

 ただし、こういったテンプレートの管理とファイル製作時にテンプレートを追加した状態で作業を始めるだけだとそれほど難しいことではないので、コードを書くだけでテンプレートを開いてコーディングを始めることが出来ます。

 

 

  処理を行う環境

 

 

 今回は、Linuxの環境を使用しますが、Linuxの場合、どのディストリビューションを選択しても

 

  ■ BASH

  ■ Python

 

はインストール済みですから、この2つを使った処理は実行できます。テンプレートを用意する場合、

 

  ■ 参照元のファイル

  ■ 制作するファイル

 

の2つが必要になりますが、参照したものの内容を制作したものに転写すればいいので、その処理を行って作業を始めることができるようにコードを書くことになります。

 

 この場合、BASHでコードを書くことも出来ますが、高校の情報IでもPythonを使用しますし、折角インストールされているので、Pythonを使ってコードを書くことにします。

 

 

  処理の内容

 

 

 今回の内容は

 

  ■ テンプレートのなようを新規ファイルに

    適応する

 

  ■ エディタで開いて作業をする

 

というものになりますが、Pythonでこれを使用する場合だと、OSモジュールを使うことになります。

 

 ただし、今回は、OSモジュールではなく、BASHの実行が可能な 【 subprocessモジュール 】 を使うことにしました。

 

 subprocessモジュールはシェルが通るので、WINDOWSだとコマンドプロンプトやPowerShellのコマンドを使用できるようになっていますが、Linuxだと標準実装のBASHを使うことが出来ます。

 

 今回の処理で考えると、新規ファイルにテンプレートの内容を適応すればいいので、 【 cp 】 コマンドを使うと新規ファイルを作ることができるのですが、その後、ファイルの編集をするので、エディタを開く必要があります。

 

 BASHの場合だと、 【 vim 】 コマンドがあるので、作成したファイルをファイル名付きでVIMで開けば、テンプレート付きの状態で作業を始めることが出来ます。

 

 今回は、チェック用にターミナル上に 【 cat 】 コマンドで生成直後の内容を表示することにしました。

 

 

 

  使用するもの

 

 

 まず、今回は、

 

 ■ テンプレート : HTMLファイル

 ■ プログラム  : Pythonファイル

 

の2つを用意することになりますが、HTMLファイルには、VIM起動時に表示する内容を記述する必要があるので、

 

 

のような記述を行っておきました。そして、Pythonファイルは、

 

 

のような簡素な記述のものを作ってみました。

 

 

 

  コードの概要

 

 

 このコードですが、今回はsubprocessモジュールを使用するので、最初にインポートを行う必要があります。

 

 

これでsubprocessが使用できるので、処理を実装できるようになります。今回は、

 

  ■ ファイル名の入力

  ■ フェイル名をつけてVIMを開く

 

と言う処理をするので、最初に

 

 

のようにタイトルを用意して、その後に入力待ちを用意しています。

 

 

今回は、変数aに対してinput関数の戻り値を保存するようにしています。そして、今回はhtmlファイルを作るので

 

 

のようにしてファイル名を変数bに格納します。

 

 input関数を使用した場合、格納される値は文字列型になるので、文字列とそのまま結合できます。その為、【+】を使うだけで文字列の結合を行うことが出来ます。

 

 そして、ここからsubprocessを使うことになりますが、subprocessは、

 

 subprocess.run(['コマンド',  コマンドを文字列で指定])

 

のような形で指定できます。最初にテンプレートを記述してるHTMLファイルを複製するので、cpコマンドを実行します。この場合、

 

 cp コピー元のファイル コピー先のファイル 

 

のようになります。その為、

 

  ■ コピー元のファイル : 1.html

  ■ コピー先のファイル : b

 

となるので、

 

 

のような記述になります。これで、bに1.htmlの内容が複製されましたから、【 vim 】 コマンドでbを開きます。

 

 ファイルを指定してVIMを開く場合、

 

  vim ファイル名.拡張子

 

で開くことができるので、

 

 

のようにするとVIMで指定したファイルを開くことが出来ます。そして、最後に、【 cat 】コマンドで、bの内容を確認することにします。これは、処理の後の状態なのでテンプレートと同じものが表示されますが、新規ファイルが書き換わったことを示すログのような物として用意しています。

 

 catコマンドは、

 

  cat ファイル名

 

になりますが、実装すると、

 

 

のようになります。

 

 

 

  コードの実行

 

 

 コードを実行する場合、 【 Python3 ファイル名.py 】 で実行することになるので、

 

 

のようにコマンドw実行すると

 

 

のようにプロンプトが出るので、

 

 

のようにファイル名を指定して実行すると、

 

 

のようにVIMが実行され、エディタにかかれている内容が反映された状態になっています。下部を見ると

 

 

のように指定したファイルが開いてあることが確認できます。この状態で、

 

 

のようにコマンドを入力してVIMを終了させると、

 

 

のように新規作成をしたファイルの内容がそのまま表示されています。

 

 

 

  プログラミング言語の場合、

 

 

 プログラミング言語では、内容の記述を個なう際に最初に雛形を用意してそこからスタートするものがありますが、通常のエディタだとこうした記述をコーディングの段階で追加した状態で書き始めることは出来ません。

 

 VisualStudioでC#などのコードを書くときのように最初から色々と揃っているような物もありますが、基本的ンは拡張機能で追加することになります。

 

 この辺りは、C言語やC++のような関数の構造や、JAVAで必要になる、クラス二関数を包含した構造も含まれますが、こうしたスタート段階でのテンプレートの読み込みは、今回のようにテンプレートとなるファイルを用意しておいて、cpコマンドでコピーを行って、それを任意のエディタで開いて作業をするようにすれば、今回のようにコーディング前にテンプレートを配置してコーディングを行うことが出来るようになります。

 

 

 

  分岐について

 

 通常の処理は順次なので、順番医処理を行っていくことになりますが、この処理の中でループを追加すると処理を繰り返すことができるようになります。これが、一つの処理の内部と外部で繰り返しの実装をする方法になりますが、工程を繰り返す場合でも 【 順次の構造は変わらない 】 ので、工程通りのものが存在していることになります。

 

 この構造は直列回路と同じものになりますが、処理を行う際には、

 

  ■ 実行

  ■ 停止

 

の判定を入れる場合があります。この時に分岐を実装することになります。分岐のイメージは、スイッチなので、

 

 

のような閉回路の構造になりますが、この中のスイッチの部分が 【 分岐 】 に該当します。

 

 これが処理の実行の有無の羽地になりますが、コレとは別に、複数の選択をする場合には、判定用の回路を増やす必要があります。この条件だと並列処理をすれば同時発生も制御できるので、並列回路を組むことになります。

 

 

こうすると、 【 A ∨ B 】 の判定が可能になりますが、これも判定の一種になります。

 

 このような同時進行も可能な状態の分岐だと

 

 

のような構造になりますが、これが、並列回路をスイッチで制御しただけの構造にした場合の判定になります。

 

 これを論理積(AND) の形にする場合には、スイッチを直列回路で繋いで、全てのスイッチが通電状態になった時に動作するようにすれば良いのですが、この判定をpYTHONで書くと

 

if A==0 and B=0:

 

   処理

 

のような形になります。記述を見ると、複数の判定がandで繋がれていますが、これが、 【 A ∧ B 】 の判定になります。

 

 並列回路のように 【 いずれか 】 が選択された条件で動作する場合だと、

 

if A==0 or B=0:

 

   処理

 

のようになります。