情報科学概論
2001.4.24



  1. 本日の作業内容


  2. プログラミングに必要なエディタ

    プログラミングとはコンピュータにさせる処理を記述した手順書を作成することである。そのためには当然手順を記すために使用する「テキストエディタ」が必要になる。テキストエディタ(略してエディタ)とは一般に文字入力を行い、保存する機能だけを有するアプリケーションの総称であり、文書の体裁を整えたり、文字の大きさ、種類などを変更して清書機能を持つ「ワードプロセッサ」とは異なる。

    教室の環境であるVine Linuxには標準でいくつかのエディタがインストールされており、用途や好みで使い分けることが可能である。以下にその代表的なものを示す。

    • Vine Linux 標準 Vedit

      UNIXは一般にコマンドラインと呼ばれるターミナルでの操作が熟練者により行われてきた伝統がある。Vineは初心者がLinuxにすぐに親しめるように重要なアプリケーションに関していくつか独自にVineプロジェクトで開発や改良したものが含まれている。ここで紹介するVeditもその一つで、単純なテキスト表示や編集に手軽に利用できる。

      起動は、タスクバーにある書類と鉛筆のアイコンをクリックすることにより行い、以下のようなウィンドウが現れる。

      ここでは、後で紹介する高機能エディタのXEmacsの動作に関する設定ファイルである.xemacs.elというファイルを表示した例である。図にあるように、外側のウィンドウの上の枠にファイル名が/home/nawate/.xemacs.elとして表示されている。このようなファイル名の表示方法を絶対パスによる表示と呼び、詳しくは「リテラシー」の教科書p.58に説明がある。メニューバーからはファイルを開いたり、保存したりする機能、編集の定番であるコピーやペーストなどが行える。一度に開くことの出来るファイルが一つだけであり、複数のファイルを開いて編集するなどの目的には適さないが、最も簡単なエディタとして利用価値はある。

    • GNOME 標準 gedit

      Veditと同様に初心者に直感的な操作をもたらすエディタとしてGNOME統合環境にマッチしたgeditがある。起動は、GNOMEメニューからプログラム、アプリケーションと選択していくと、geditが見つかるので、そこから行う。以下のようなウィンドウになっている。

      ここでは先ほどの.xemacs.elと.emacsの二つのファイルを同時に開いてその内の.xemacs.elの方を表示している例である。テキスト編集エリアのすぐ上に開いているファイルの一覧がタグとして見えている。veditに比べてメニューが豊富であり、メニューボタンもGNOME標準インターフェイスと統一されたものが用意されている。加えて、「設定」メニューにより細かい環境まで設定できること、印刷機能があることも特徴である。手軽なエディタとして使いやすい仕様となっている。

    • UNIX 標準 vi

      viはVIsual editorの略で、ほぼ全てのUNIX環境に用意されている。Vineにあるのは、viをさらにカスタマイズしたvimというエディタであるが、起動コマンド等はviと同じである。一行ずつ文字を編集していた時代にスクリーン的な編集画面を用意していたために、当時としては使い勝手の良いエディタとして人気を博した。

      viは上記二つのエディタとは異なり、専用のウィンドウを開くことはない。ターミナルの中で使用する。例えば、下のような使い方である。

      やはり、Emacsの動作を決める設定ファイルの.emacs-color.elというファイルを開いたところであるが、ファイル名は相対パスとして上部のウィンドウ枠に表示されている。相対パスについても「リテラシー」教科書のp.58を参考にすること。

      vi(およびそのクローン)の最大の特徴はモードがあることで、ファイルを開いた段階では「編集モード」になっており、文字の削除やコピーなどを行う。入力は別途「入力モード」に移って行う。コピーなども特殊なキー入力により行うので、慣れるまでは使いにくい。

      ただし、viは動作が軽いことに加えて、/binディレクトリにあるために、ディスク不良などで他のパーティションが読み込めない状態でも使用できることが大きな利点であり、システムの設定ファイルの修正などが行えるため、システム管理には必須のエディタである。

    • 万能エディタ Emacs

      以下に示す二つは非常に豊富な機能を有し、Emacs-LISPという言語で拡張が容易なため、高い人気を誇るエディタとその仲間である。単なるエディタにとどまらず、電子メールやネットニュースのツールとして、また、wwwを閲覧することも可能である。プログラミングにおいても、自動の字下げやカッコの整合を調査したり、デバッグと呼ばれるプログラムの不良部分の改良機能などを有しており、ある種の統合環境として利用できる。そのために、この使い方を覚えることがUNIXを使いこなすためには必須であり、これさえあれば他は要らないと言う人も多い。

      Emacsは登場した頃には日本語を扱うことが出来なかった。そのため、多国語拡張を施したMuleというEmacsの改良版が良く用いられたが、いまではMuleの機能もEmacsに取り込まれているので、Emacsとして種々の言語が利用できる。ただし、慣習としてMuleという表記をしてある参考書も多いので注意すること。

      GNOMEメニューから起動する方法と、ターミナルからコマンドにより起動する方法の二つがあり、起動すると以下のような画面が表示される。

      いきなり、メッセージがたくさん入った画面が表示されるが、文字入力を始めるとそれらのメッセージは大部分消える。以下の例はMagicPointと呼ばれるプレゼンテーション用のアプリケーションのためのデータファイルを表示したところである。

      ウィンドウ上部に簡単なメニューバーなどもあるので、マウスによる操作も可能である。

    • 万能エディタその2 XEmacs

      ここまで、種々のエディタを紹介してきたが、この授業では基本的に最後に紹介するこのXEmacsを使用することとする。理由は、Emacsよりもマウスによる操作がより簡単になっていることと、今後使用を予定しているYaTeXと呼ばれるTeXの拡張環境が使用できることである。起動はEmacsと同様であり、起動すると以下のようなウィンドウが現れる。

      ここでもやはり初めにメッセージが表示される。使用方法は今後徐々に紹介していくが、リテラシー教科書の第7章から始まるEmacsの説明がほぼそのまま適用できるので参考にすること。ただし、以下の点には注意すること。EmacsおよびXEmacsの両方とも現在の状態やファイルの保存などの動作がすべて「ミニバッファ」と呼ばれる画面の最下段にある一行に表示される。そのため、他のウィンドウなどで画面の下が隠れると操作に支障を来す。ミニバッファとその上の「モードライン」と呼ばれる行に常に注目しながら操作をする必要がある。

      また、授業における使用方法はディレクトリ内のファイル操作などを考えて、ターミナルからのコマンド起動を推奨する。また、複数のファイルを表示する際にはそれぞれXEmacsを起動するのではなく、一つのウィンドウでファイルを切り替えて表示すること。ファイル間の整合が取れなくなって自動保存ファイルが増える結果になるので、同時に複数のウィンドウを起動することは望ましくない。

  3. プログラミング開始

    古今東西プログラミングの練習の最初は"Hello, world!"という文字を画面に表示させるところから始まるのが通例である。ここでも、それに従って行うが、そのためにはまずスクリプトを作成するところから始まる。スクリプトとなるテキストファイルを何処にどのように作成するか、自分で作業しながら進めていく。

    • ディレクトリについて

      コンピュータにデータを保存する場合には補助記憶装置と呼ばれるハードディスクの特定の場所を選択して保存する。場所に相当する番地はあらかじめ決まっているが、人間はそのような番地を直接知るよりも、もっとわかりやすいイメージの方が理解しやすい。そこで、ディレクトリという概念が出てくる。

      Macintoshにおいて、パソコンの画面をデスクトップ(机の上)に置き換えるメタファーが初めて採用され、現在でもそれが初心者に最も理解しやすい物とされている。その際、ディレクトリに相当する物は「フォルダ」として置き換えられた。今ではWindowsにおいてもフォルダという概念が使用され、一般的になっている。LinuxではUNIXの伝統に従いディレクトリという文字ベースの整理の仕方が広く使用されるが、フォルダとして視覚的に見やすい表示も可能である。例えば、デスクトップの左上の方にある「ホームディレクトリ」というフォルダのアイコンをダブルクリックすると、下図のようなWindowsのExplorerのような画面が現れる。

      これはGNU midnight commander(略してgmc)というファイルマネージャであり、二分割された左側がディレクトリの階層構造、右側が選択されているディレクトリにあるファイルを表示している。ディレクトリはフォルダとして表示され、ファイルは書類のアイコンになる。「..」で示されるディレクトリは親ディレクトリであり、今いる階層の一つ上のディレクトリのことである。この辺のことは「リテラシー」教科書のp.55から詳しく説明してあるが、階層構造についてはウィンドウ左側の表示が理解しやすい。/usrなどのディレクトリの中を見てみるといくつもの階層があることに気づくだろう。

    • ディレクトリ作成

      今後スクリプトを書いていくと、スクリプト本体や関連のファイルがどんどん増えていくことになるが、そのような関連ファイルを一カ所にまとめておく方が後から見直すときに楽である。ディレクトリの目的はそのように関連するファイルをひとまとめにすることである。早速、授業用のディレクトリを作成しよう。

      gmcが起動すると、通常は自分の「ホームディレクトリ」の中身を表示する。ホームディレクトリとは複数のユーザが同じ端末を利用する際に、勝手に他人のファイルにアクセスできると問題があるので、ユーザ個人個人の作業領域としてあらかじめ作成されている物である。通常は/homeディレクトリの下にユーザ名で作られるが、教室の場合にはNISを利用してNFSマウントしたホームディレクトリを /virtual/homeとしてあるので、その後にユーザ名が続く形式になっている。

      gmcの「ファイル」メニューから「新規」を選択すると何を作成するかを聞かれるので「ディレクトリ」を選択する。そうすると、ディレクトリ名を入力するウィンドウが開くので、scriptとキーボードから入力して「OK」をクリックする。これにより、ホームディレクトリの中にscriptというディレクトリが作成された。

      上記の方法はターミナルからコマンドで作成することも出来る。タスクバーからターミナルを開くと初めは自分のホームディレクトリにいる。ここで、

      $ mkdir script2

      と入力すると、script2というディレクトリが作成される。mkdirというコマンドの前にある$はコマンドプロンプトと言い、ターミナルがコマンド入力を受け付ける準備が出来ていることを示す記号であり、自分で入力する必要は無い。

      $ ls -F

      とすると、ホームディレクトリにあるファイルを表示するが、-Fというオプションにより、ディレクトリはファイル名の末尾に/がついて表示される。ディレクトリの削除は基本的にその中にファイルが何もない状態で可能であり、

      $ rmdir script2

      とすると、削除できる。lsはLiStを略したコマンドで現在いるディレクトリのファイルを表示する。オプションにより種々の表示形式が可能であるが、別の機会に説明する。なお、コマンドに関しては簡単な紹介のページも適宜参考にすると良い。

    • エディタ起動

      先に紹介したようにエディタの起動はメニューから可能であるが、ここではコマンドベースで行う。まずは、ターミナルにおいて、

      $ pwd

      を入力してみる。pwdとはPrint Working Directoryの略で、今いるディレクトリを表示するコマンドである。結果が

      /virtula/home/b01**

      であれば、自分のホームディレクトリにいるので、次に、

      $cd script

      とする。cdはChange Directoryの略でディレクトリ間の移動に使用する。pwdをもう一度行うと、/virtual/home/b01**/scriptとなって、scriptディレクトリの中へ移動したことが分かる。この状態で、XEmacsを起動するのなら、

      $ xemacs hello.rb &

      とする。xemacsが起動のコマンド名であり、hello.rbはこれから作成するスクリプトのファイル名、末尾の&はXウィンドウシステムにおいてアプリケーションを起動する際に大事なバックグラウンド処理を示す。&を付けないで起動するとxemacs起動後は元のターミナルにコマンドプロンプトが戻ってこない。

      geditの方を利用したいのなら

      $ gedit hello.rb &

      とすると同様にhello.rbと言う名前のファイルをgeditで編集する準備が出来る。

    • 始めの一歩

      教科書のp.8からのスクリプト練習を実際に行う。教科書は表示される結果や説明文までが例の中に記述されているので、分かりにくい部分もあるかもしれないが基本的には#で始まっている行や行の途中に現れる#以降の部分は入力しなくても結果は同じである。p.10の上から3/4くらいまでのputsとgetsを利用した例について自分で動作を確認してみよう。

  4. 本日の課題

    本日の授業時間中の課題は上記教科書のスクリプト練習である。各自、エディタにスクリプトを記述して動作させてみること。動作の確認は教科書にあるようにターミナルから行うこと。なお、教科書とはファイル名は異なっても構わない。また、スクリプトに間違いや問題があるときにはrubyはエラーメッセージを表示する。簡単な英語で指摘するようになっているので、エラーメッセージが出たときには良く読むこと。

  5. 宿題

    授業の終わり頃に次回までに提出する課題を発表するのでアナウンスに注意すること。

目次ページに戻る